因工程須要,須要瞭解三菱PLC編程口通信協議,覺得後續的上位機串口通信打下相關基礎……html
畢竟首次接觸此類通信,對其原理不甚瞭解,致使走了很多彎路,故記下之,以避免忘記。編程
須要工具與資料:ide
能找到此文章的,軟件各位應該都是備齊了,若沒有,請自行查找;工具
通信協議 下載地址(放兩個,以避免失效):學習
通信實戰連接:https://baijiahao.baidu.com/s?id=1580866577419831498&wfr=spider&for=pc測試
下述圖文爲小子理解時的一些細節。.net
下述圖片爲通信協議中最重要的兩面截圖:3d
從上看出,全部發出的命令都爲11個兩位數(如:02 30 31 30 31 34 30 32 03 35 41,數與數之間有一個空格),而且這些兩位數必須爲16進制(H)的ASCII碼(在串口調試軟件中,發送與接收最好都設置爲16進制狀態)……調試
若是要讀取 D10的值,那命令以下(下圖與協議中有細微區別,爲方便理解):htm
請求:02 規定如此,不管讀取仍是寫入,此都爲02
命令:30 30爲從PLC讀取數據,31爲寫入數據;0的ASCII碼16進製表示爲30,1的ASCII碼爲31,見下圖
元件首地址:31 30 31 34 D10查表可得其地址的首地址爲1014(行爲1010,列4,1010+4=1014 16進制的加法),詳見下圖,1位數字對應1位ASCII碼的16進製表示,1014即爲31 30 31 34(1爲31,0爲30,4爲34,注意中間的空格,在串口調試時必定不要忘記了中間的空格)
BYTE數:30 32 即02 因在三菱PLC中數據寄存器D爲兩個字節的存儲,因此讀取時必須爲2個字節,即02,0對應30,2對應32,即30 32
結束:03 協議如此,不管讀寫都如此
校驗和:35 42 按照前述照片協議校驗和爲 30+31+30+31+34+30+32+03=15B(16進制加法),取15B後邊兩位即5B,5對應ASCII中對應16進製爲35,B爲42
將「02 30 31 30 31 34 30 32 03 35 42」 填入發送區文本框,點擊發送後,在接收區接收到 「02 33 30 37 35 03 44 32 」
02:開始符,即請求開始
33 30 37 35:這四位爲D10存儲數據 前兩位爲數據爲37 35 ,37對應的ASC碼對應16進製爲7,35爲5,即75;後兩位數據爲 33 30 ,33爲3,30爲0,即30 (必定注意,此處的數據順序) 33 30 37 35 轉化爲ASCII中16進製爲7530,10進製爲30000
在PLC中經過監視,D10確實爲30000
03:命令結束符
44 32 :校驗和 33+30+37+35+03=D2 D的ASCII 16進製爲44,2爲32
以上爲D10讀取測試詳情(寫與此相似,詳細參考手冊),其餘軟元件與此相似並注意如下事項:
源碼下載地址:https://www.haolizi.net/example/view_18794.html