您當前的位置:首頁 > 攝影

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

作者:由 老王的工控筆記 發表于 攝影時間:2020-09-16

西門子PLC的TCP通訊(不同專案下)①——TSEND_C指令

本期說一下,不同專案下的,連個西門子1200的TCP通訊,這次我們用TSEND_C和TRCV_C組合使用,這次先了解下TSEND_C指令是大概啥樣的

1。0 從右邊指令欄——通訊——開放式使用者通訊——其他,選擇TSEND_C拖動到程式1中,如下圖

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

2。0 下面說下具體這個指令塊的引數設定

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

REQ:指的是上升沿觸發,傳送作業,跟建立通訊無關,這個就是跟之前TSEND的區別!

ID:是指向已分配連線的指向

CONT:當為0時斷開通訊連線,當為1時建立並保持通訊連線

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

LEN:需要傳送的最大位元組長度,如果這個值設為0就會發送DATA指定的所有資料,如果LEN的值大於DATA定義的待發送資料的長度,比如DATA裡面設定資料長度10個位元組,LEN就不能大於10,不然指令引數STATUS會輸出錯誤程式碼8088,當資料塊是最佳化訪問許可權的結構化變數時,LEN=0,可傳送最大位元組數65534

DATA:指向傳送區的指標,該傳送區包含要傳送資料的地址和長度,傳送結構時,傳送端和接收端的結構必須相同,這邊要特別說明下指標,如下圖,我們的指標是這樣寫的P#DB2。DBX0。0 BYTE 10,這句話的意思是指標指向DB2資料塊,從DB塊地址0。0開始的10個位元組的資料,這樣傳送區就包含了資料的地址DB2的地址0。0,資料的長度10個位元組,當頭那個P指的是ANY資料型別的表示方式,ANY資料型別實際是80位指標型別資料

DONE:狀態引數,為0時作業未啟動或扔在執行,為1時作業已執行,且無任何錯誤,完成後會自動復位,需要自己鎖存狀態,來判斷連線情況

BUSY:狀態引數,為0時作業未啟動或已完成,為1時作業執行中,無法開始新作業

ERROR;錯誤引數,為0時無錯誤,為1時有錯誤報警

注意:TSEND是非同步執行的,所有需要在引數DONE或者引數ERROR的值變為1之前,傳送區的資料要保持一致不要改動

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

STATUS:指令的狀態

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

這裡在說下一個檢查連線的指令T_DIAG,這個是透過ID來檢測通訊連線情況,如下圖,這裡先簡單說下,後面測試的時候再試試,引數大多數都差不多,這裡就說一個引數

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

如下圖,RESULT這個引數是用來儲存連線狀態的,

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

這個引數要用特定的系統資料引數結構,TDiag_StatusExt和TDiag_Status,T_DIAG: 檢查連線 (S7-1200, S7-1500),

TDiag_Status”結構只包含有關連線端點的最重要資訊,例如,使用的協議、連線狀態和傳送或接收的資料位元組數。

“TDiag_StatusExt”結構不僅提供最重要的資訊,還提供連線嘗試的次數、連線中止的原因等資訊

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

西門子PLC的TCP通訊(不同專案下)①--TSEND_C指令

標簽: 連線  TSEND  傳送  引數  10