當成操作介面在使用。
所以HMI為了對應眾多廠牌的PLC、或設備,
通常會把各家的協議寫好,放在軟體內。
如下圖:可以選定你的控制器是什麼。
就可以輕鬆的連結控制器了。
但如果HMI廠商沒有寫的協議該怎麼辨呢?
所以今天就是要來教各位,並解開通訊協議的問題。
1.首先我們選定台達DVP PLC的協議,並抓出通訊碼來分析。
1.1控制器機型,先選DVP PLC,通訊PORT選RS485(圖中沒擷取到)
1.2 選一個數值顯示,並讀取D1
1.3電腦透過USB轉RS485,來接到HMI的RS485,並打開軟體來收集。
會得到以下的圖
HMI會一直送出:(因為沒有實際接PLC,所以HMI會重覆發送)
3A 30 31 30 33 31 30 30 31 30 30 30 31 45 41 0D 0A
雖然跟我們之前介紹的MODBUS RTU不同,
但其實這就是MODBUS ASCII的通訊碼:
ASCII 開頭碼=03
結束字元=0D 0A
16進制 與ASCII碼對應表:
所以
3A 30 31 30 33 31 30 30 31 30 30 30 31 45 41 0D 0A
可以解讀為:
3A =開頭碼
30 31 =站號=01
30 33 =功能碼=03
31 30 30 31=位址=1001
30 30 30 31=資料量=0001
45 41 = LRC檢查碼 <<這不是RTU的CRC!!
0D 0A =結束碼
接下來,來看PLC的手冊 MODBUS位址1001是什麼,
我們查到手冊1001裝置通訊位址就是D1,
跟我們HMI設定該數值要顯示的D1是一致的。
=====================================
2.利MODBUS來複制讀取 PLC D1的數值
HMI通訊設定為ASCII Hex Address(Mater) <<因為剛剛是讀到ASCII值
設定一個讀取數值的位址=1001,
然後再透過USB轉RS485,來讀取HMI發送的值,
會發現,跟剛剛選擇DVP PLC發送的值是一樣的。
===================
3.差別
當HMI選擇DVP PLC 跟 ASCII Hex Address(Mater)的差別在那裡?
DVP PLC,可以很直覺得選擇要讀取D值
ASCII Hex Address(Mater) 需要自已去查手冊,才知道D1是位址1001,然後再填入。
所以協議,就是方便的讓使用者可以直覺的操作,不必再去麻煩的查表。
如果PLC 有 X Y Z,就直覺使用,而不是填入難記的位址。
註:當然不是所有的PLC都是MODBUS!也有其他通訊格式。
4.如果HMI協議內沒有寫,我要通訊的設備怎麼辨?
就自已查手冊,看是否有支援MODBUS...等通訊格式,再查通訊位址,
還是可以使用的,只是比較麻煩。
當然也可以回覆給HMI原廠,將手冊、通訊資料給HMI原廠,
他們也可以寫好一個協議,讓你載入在軟體內,就可以直接使用了。
沒有留言:
張貼留言