這篇文章要探討的是多個任意單點狀態或暫存器資料混合寫入命令,這個命令因為有近乎無限多種的單點狀態或暫存器資料混合形式,實際上程式要兼顧各種可能組合形式是不可能的。但經過適當的安排,這個命令可以更簡單的寫入大量混合資料

 

多個任意單點狀態或暫存器資料混合寫入的命令說明如下:

20081118-04  

 

命令寫入字串的組成:起始碼+站號+命令碼+個數+元件號碼1+元件號碼1的狀態或資料+...+元件號碼N+元件號碼N的狀態或資料+偵誤碼+結束碼


個數如說明圖上所寫是2個16進制數值字串組成,超過指定範圍時會通訊錯誤,而PLC回應的字串會有錯誤碼。而指定範圍01~40是參考值,若寫入的元件有大量的16或32位元資料範圍會減少


元件號碼如說明圖上所寫可以是單點也可以是16或32位元暫存器資料,實際使用時寫入單點沒有效率,常用的是寫入16或32位元暫存器資料


PLC回應字串的組成:起始碼+站號+命令碼+錯誤碼+偵誤碼+結束碼


寫入的元件資料若有經過適當安排,則程式處理可以較簡單

 


程式控制面版的構成如下列圖面:

20081118-01  

 

程式的重點是把要寫入的資料統一為16或32位元,16位元和32位元可交錯排列


這個範例是寫入1組M接點和5組暫存器資料,M接點的號碼是指定為16位元或32位元格式,不是指定為單點格式

 

 

完成的程式結構如下圖:

20081118-02  

 

同樣是3格流程控制,起始碼、結束碼、通訊參數和關閉通訊埠等不能更改的部份照慣例寫到格子外

 


第1格寫入命令的部份

20081118-03  

 

這個範例M接點的號碼是指定為WM0000開頭,表示要寫入的是16位元資料,寫入的範圍是M0~M15


再來是分別把元件號碼和狀態資料分別合成陣列,用迴圈去一一比對元件為16或32位元,再把相對應的狀態資料轉換為4或8個字的16進制數值字串


然後把元件號碼和轉換後的數值字串依順序交叉編排,在和其他字串合成算出偵誤碼,最後是把所有字串和已算好的偵誤碼組合寫入PLC內

 

 

第2格因為要寫入的資料稍多,所以設為200ms

20081101-04  

 

 

第3格同樣用Property Node元件設定為Bytes at Port接收判定PLC回應字串長度

 

同樣從PLC回應字串的錯誤碼中可以看出是否通訊成功

20081030-09    

, ,
創作者介紹

LabVIEW & PLC還未出師的小工程師部落格

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()