三菱FX PLC編程口通信協議詳解

因工程須要,須要瞭解三菱PLC編程口通信協議,覺得後續的上位機串口通信打下相關基礎……html

畢竟首次接觸此類通信,對其原理不甚瞭解,致使走了很多彎路,故記下之,以避免忘記。編程

 

須要工具與資料:ide

  1. GXDeveloper
  2. 串口通信助手
  3. 編程口通信協議手冊(小子只僅找到繁體版本,且爲影印版;若誰有文字版的原版,請留下相關資料,以利廣大工控人學習)

能找到此文章的,軟件各位應該都是備齊了,若沒有,請自行查找;工具

 

通信協議  下載地址(放兩個,以避免失效):學習

  1.   http://www.ymmfa.com/read-gktid-1564754.html
  2. https://wenku.baidu.com/view/ff3415eab8f67c1cfad6b8e4.html

 

通信實戰連接: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讀取測試詳情(寫與此相似,詳細參考手冊),其餘軟元件與此相似並注意如下事項:

  1. 該軟元件的首地址
  2. 須要讀取幾個軟元件值,各軟元件須要幾個字節存儲(D爲2個字節;C多是2個,也多是4個;T爲2個  詳細見手冊)
  3. 校驗和,不能計算錯,不然只會返回錯誤15,以下將D10的取值02 30 31 30 31 34 30 32 03 35 42的42改成41後,其只會返回15,即PLC回覆:沒法瞭解……

    

 

源碼下載地址:https://www.haolizi.net/example/view_18794.html

相關文章
相關標籤/搜索