這次要探討的是讀取PLC機種型號代碼指令MM
首先是命令字串組成:起始碼+機號+指令+偵誤碼+結束碼
而PLC回應的字串組成:起始碼+機號+指令+結束代碼+機種代碼+偵誤碼+結束碼
每一機種代碼代表各種型號的PLC系列,這裡只有日文版的操作手冊較新有涵蓋全機種型號,中文版的已是過期資料,如下圖:
程式面板的配置如下:
因為沒有寫入字串,所以輸入的部份只有機號和指令
輸出的偵誤碼由程式自動計算,機種代碼由程式處理直接顯示機種名稱
整體完成的程式如下:
一樣是3格結構的順序控制,通訊參數和關閉通訊埠寫在格子外
第1格由起始碼+機號+指令合成單一字串,單一字串再調用偵誤碼計算程式算出偵誤碼,最後單一字串+偵誤碼+結束碼合成命令字串,寫入PLC中
第2格等待延遲時間要設定稍微長一點,這裡設200。為何要長一點呢?因為這次要讀取PLC的DM系統記憶體通道,要有足夠的時間給PLC回應。正常情況下這指令會回傳13個字的字串,若時間少於100會有只收到8個字以下的狀況,算是讀取失敗
第3格就是要把回應的字串取出機種代碼,然後把機種代碼轉換成機種型號。為了這個目的要先把機種代碼和機種型號的對照表做成2D陣列的機種名稱列表(如下圖),下圖是展開狀態,寫程式時要收起來免得太佔空間
PLC回應的字串組成:起始碼+機號+指令+結束代碼+機種代碼+偵誤碼+結束碼。在這裡會讀到的字串是@00MM001140*(ASCII碼13)等13個字,這裡要做的是略過前面起始碼+機號+指令+結束代碼幾碼,直接擷取機種代碼那2個字,然後從機種名稱列表去找出機種型號顯示出來
※*(ASCII碼13)是看不到的,所以查看回應字串的話只會看到@00MM001140*
留言列表