這次要探討的是讀取PLC機種型號代碼指令MM


首先是命令字串組成:起始碼+機號+指令+偵誤碼+結束碼


而PLC回應的字串組成:起始碼+機號+指令+結束代碼+機種代碼+偵誤碼+結束碼

20080914-06  

 

每一機種代碼代表各種型號的PLC系列,這裡只有日文版的操作手冊較新有涵蓋全機種型號,中文版的已是過期資料,如下圖:

20080914-07  

 

程式面板的配置如下:


因為沒有寫入字串,所以輸入的部份只有機號和指令


輸出的偵誤碼由程式自動計算,機種代碼由程式處理直接顯示機種名稱

20080914-02  

 

 

整體完成的程式如下:


一樣是3格結構的順序控制,通訊參數和關閉通訊埠寫在格子外

20080914-03  

 

 

第1格由起始碼+機號+指令合成單一字串,單一字串再調用偵誤碼計算程式算出偵誤碼,最後單一字串+偵誤碼+結束碼合成命令字串,寫入PLC中

20080914-04  

 

 

第2格等待延遲時間要設定稍微長一點,這裡設200。為何要長一點呢?因為這次要讀取PLC的DM系統記憶體通道,要有足夠的時間給PLC回應。正常情況下這指令會回傳13個字的字串,若時間少於100會有只收到8個字以下的狀況,算是讀取失敗

 

 

第3格就是要把回應的字串取出機種代碼,然後把機種代碼轉換成機種型號。為了這個目的要先把機種代碼和機種型號的對照表做成2D陣列的機種名稱列表(如下圖),下圖是展開狀態,寫程式時要收起來免得太佔空間

20080914-01  

 

PLC回應的字串組成:起始碼+機號+指令+結束代碼+機種代碼+偵誤碼+結束碼。在這裡會讀到的字串是@00MM001140*(ASCII碼13)等13個字,這裡要做的是略過前面起始碼+機號+指令+結束代碼幾碼,直接擷取機種代碼那2個字,然後從機種名稱列表去找出機種型號顯示出來

 

※*(ASCII碼13)是看不到的,所以查看回應字串的話只會看到@00MM001140*

20080914-05  

, ,

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