這篇文章要探討的是多個連續單點狀態讀取命令,永宏把這裡分成2個命令,一個是讀取多個連續單點抑能/致能的狀態,一個是讀取多個連續單點的ON/OFF狀態

 

 

讀取多個連續單點抑能/致能的命令說明如下:

20081016-10  

 

讀取多個連續單點ON/OFF狀態的命令說明如下:

20081016-01

 

從上面的說明文件可以看出這2個命令除了命令碼不同外,寫入和讀回的命令字串結構是相同的

 

命令寫入字串的組成:起始碼+站號+命令碼+個數+起始單點號碼+偵誤碼+結束碼

 

要注意的是個數是由2個16進制的數值組成,範圍是00~FF,換算成10進制數值是0~255,而永宏把00當成是10進制數值256,因此實際個數的輸入範圍是1~256


起始單點號碼就是要控制的多個連續單點頭1個編號,要注意的是單點類型後面的數值編碼一定是4位數


另外要注意的是接點的數量有固定範圍,當起始單點號碼+個數超過接點有效範圍是會通訊錯誤的


PLC回應字串的組成:起始碼+站號+命令碼+錯誤碼+多個連續單點狀態+偵誤碼+結束碼

多個連續單點狀態的字串是由左至右以低位元往高位元排列


讀取抑能/致能的狀態時,0代表致能,1代表抑能


讀取ON/OFF的狀態時,0代表OFF,1代表ON

 

 

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


讀取抑能/致能狀態的面版:

20081016-02  

 

讀取ON/OFF狀態的面版:

20081016-03  

 

從圖上可以看出架構完全相同


PLC回應字串是方便觀察用,可以刪除不要


多個連續單點狀態改成由LED陣列顯示,亮燈表示抑能或ON,熄燈表示致能或OFF

 

 

完成的程式架構如下圖:

20081016-04  

 

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

 

 

第1格寫入命令的部份

20081016-05  

 

先把起始碼+站號+命令碼+個數+起始單點號碼合成單一字串算出偵誤碼,最後再把所有字串組合寫入PLC


另外要把個數的16進制數值字串轉換成10進制數值,這數值要傳到第3格內,用來拆解多個連續單點狀態的字串

 

如果不知道0~255如何換算成2個文字的16進制數值,那也可把面版那個個數的文字輸入元件改成用數值輸入元件,直接輸入10進制數值

20081016-08  

 

當然第1格程式的內容也要改正過

20081016-09  

 

首先要限定輸入的數值一定落在1~256之間,數值除以256在取餘數,這樣做的好處是數值等於256時要轉換的數值會自動變成0,然後把餘數轉換成2個16進制的數值文字


接下來就是比照辦理把所有字串和已算好的偵誤碼組合寫入PLC內

 

 

第2格延遲時間同樣設定在120~200ms即可,但讀取的點數非常多時,設定時間還要再增加,才能完整讀回所有字串

20081016-06  

 

 

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

20081016-07  

 

再來用Replace Substring元件從PLC回應字串中取出代表多個連續單點狀態的字串,取出的範圍是PLC回應字串的第7個(編號6)開始加上第1格傳來的個數數值,然後用For Loop迴圈把多個連續單點狀態字串一一分解,分別轉成Boolean狀態,再輸出成LED陣列顯示

, ,

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