上一篇文章我們介紹瞭如何獲取LCom通訊庫、如何將其新增到專案中及LCom庫檔案的介紹,其中詳細介紹了函式塊LCom_Communication的引數。今天這篇文章,我們主要介紹LCom的使用方法,包括怎樣建立通訊連線及怎樣斷開連線,這其中我們會介紹資料型別:typeLCom_Config。關於資料的傳送和接收將在下一篇文章介紹。
本文包括兩個主題:
建立通訊連線;
斷開通訊連線;
在介紹之前,我們先記住LCom_Communication的指令初始狀態,如下圖所示:
1、建立通訊連線
要想與通訊夥伴建立連線,需要配置引數“configuration”,它的資料型別是LCom庫的自定義型別:typeLCom_Config。為此,我們新建立一個全域性資料塊:DBLCom,在其中新增一個變數,名稱為“LComConfiguration”,其資料型別設定為“typeLCom_Config”。如下圖所示:
可以看到,typeLCom_Config由三部分組成:connection、sender和timeSync,我們來分別介紹下:
1。1、typeLCom_Config的connection
connection的各元素的含義如下面的表格所示:
註解①:上一篇文章我們介紹過,LCom通訊庫可用標準的開放式TCP通訊協議,同時它又自定義了一個稱為“LCom”的協議。我們在使用函式塊時,透過引數comService來確定採用哪種通訊協議。comService有兩種取值:1=LCOM_TCP_CONNECTION,即使用開放式TCP通訊協議;2=LCOM_LCOM_CONNECTION,即使用LCom協議;預設設定為後者。
註解②:用來設定通訊的角色。我們知道,TCP通訊協議有兩種角色:伺服器(Server)和客戶端(Client)。伺服器總是被動等待連線,而客戶端則主動進行連線。如果作為伺服器,則只需要設定本地IP和埠號,上表中的引數partnerPort(通訊夥伴埠號)和partnerIP(通訊夥伴IP)可以不設定的;如果作為客戶端,則需要主動連線伺服器。因此,必須設定通訊夥伴的埠號和IP地址(當然,本地的也要設定);
註解③:當IsClient設定為FALSE,即作為伺服器的角色時,用來設定是否允許任何通訊同夥的連線。預設為TRUE,即任何通訊夥伴的連線請求都接受。如果設定為FALSE,則同時還需要設定“partnerIP”引數,這種情況下伺服器僅接受該IP地址的通訊連線請求;
註解④:僅在LCom協議下使用,用來設定心跳訊號的週期。在LCom協議下,如果通訊夥伴之間沒有啟動資料傳輸,則以該週期傳送心跳訊號,用於判斷通訊是否正常;
1。2、typeLCom_Config的sender
sender包括cycleTime和ackTimeout,具體含義見下面的表格:
註解⑤:當啟動資料傳送後,透過該引數設定週期性傳送資料的時間間隔。取值範圍:T#0ms。。。T#24d20h31m23s647ms,預設T#1s;
註解⑥:該引數僅在LCom協議下使用,用來設定確認超時的時間。當在該時間內沒有收到通訊夥伴的確認訊號,則關閉當前連線,並嘗試重新建立連線;
關於資料傳送我們將在下一篇文章詳細介紹;
1。3、typeLCom_Config的timeSync
timeSync用來與通訊夥伴進行時間同步,僅在LCom協議下使用。各元素的含義如下表所示:
註解⑦:傳送模式包括三種:
0=LCOM_NO_TIME_SYNC,即不傳送,這是預設設定;
1=LCOM_CYCLE_TIME_SYNC,以週期性方式傳送同步時間戳,同步週期在引數“cycleTime”中設定;
2=LCOM_TIME_OF_DAY_TIME_SYNC,以時鐘方式傳送同步時間戳,時鐘設定在引數“sendAtTimeOfDay”;
註解⑧:當傳送模式設定為“1”(LCOM_CYCLE_TIME_SYNC)時,用來設定迴圈傳送的週期,取值範圍:T#1ms 。。 T#24d20h31m23s647ms,預設T#1s;
註解⑨:當傳送模式設定為“2”(LCOM_TIME_OF_DAY_TIME_SYNC)時,用來設定傳送的時鐘,預設為:TOD#05:00:00。000;
到這裡,我們詳細介紹了configuration的結構。當引數已經正確配置好後,給“enable”引數一個上升沿,將會嘗試與通訊夥伴建立連線。此時“busy”輸出位TRUE,表示正在建立連線;當成功建立連線後,“connected”變為TRUE;“status”的值也在不同的過程發生變化,如下圖所示:
如果使用LCom協議,不同版本(V1和V2)之間的第一次通訊協商會發生錯誤,之後會從新建立連線,直至“connected”變為TRUE;
2、斷開通訊連線
“enable”引數的下降沿會將通訊連線斷開,“connected”變為“FALSE”,“busy”和“status”也會發生變化,如下圖所示:
好了,關於LCom通訊庫使用方法——建立/斷開通訊連線就先介紹到這裡。
我的微信影片號分享一些工控小知識,歡迎觀看: