這篇文章要探討的是多個任意單點狀態或暫存器資料混合寫入命令,這個命令因為有近乎無限多種的單點狀態或暫存器資料混合形式,實際上程式要兼顧各種可能組合形式是不可能的。但經過適當的安排,這個命令可以更簡單的寫入大量混合資料
多個任意單點狀態或暫存器資料混合寫入的命令說明如下:
命令寫入字串的組成:起始碼+站號+命令碼+個數+元件號碼1+元件號碼1的狀態或資料+...+元件號碼N+元件號碼N的狀態或資料+偵誤碼+結束碼
個數如說明圖上所寫是2個16進制數值字串組成,超過指定範圍時會通訊錯誤,而PLC回應的字串會有錯誤碼。而指定範圍01~40是參考值,若寫入的元件有大量的16或32位元資料範圍會減少
元件號碼如說明圖上所寫可以是單點也可以是16或32位元暫存器資料,實際使用時寫入單點沒有效率,常用的是寫入16或32位元暫存器資料
PLC回應字串的組成:起始碼+站號+命令碼+錯誤碼+偵誤碼+結束碼
寫入的元件資料若有經過適當安排,則程式處理可以較簡單
程式控制面版的構成如下列圖面:
程式的重點是把要寫入的資料統一為16或32位元,16位元和32位元可交錯排列
這個範例是寫入1組M接點和5組暫存器資料,M接點的號碼是指定為16位元或32位元格式,不是指定為單點格式
完成的程式結構如下圖:
同樣是3格流程控制,起始碼、結束碼、通訊參數和關閉通訊埠等不能更改的部份照慣例寫到格子外
第1格寫入命令的部份
這個範例M接點的號碼是指定為WM0000開頭,表示要寫入的是16位元資料,寫入的範圍是M0~M15
再來是分別把元件號碼和狀態資料分別合成陣列,用迴圈去一一比對元件為16或32位元,再把相對應的狀態資料轉換為4或8個字的16進制數值字串
然後把元件號碼和轉換後的數值字串依順序交叉編排,在和其他字串合成算出偵誤碼,最後是把所有字串和已算好的偵誤碼組合寫入PLC內
第2格因為要寫入的資料稍多,所以設為200ms
第3格同樣用Property Node元件設定為Bytes at Port接收判定PLC回應字串長度
同樣從PLC回應字串的錯誤碼中可以看出是否通訊成功
留言列表