2017年1月9日 星期一

HMI(人機介面)沒有的通訊協議,該怎麼使用?

HMI(人機介面)在工控(自動化業)常使用,
當成操作介面在使用。
所以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原廠,
他們也可以寫好一個協議,讓你載入在軟體內,就可以直接使用了。

沒有留言:

張貼留言