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


因工程需要,需要了解三菱PLC編程口通訊協議,以為后續的上位機串口通訊打下相關基礎……

畢竟首次接觸此類通訊,對其原理不甚了解,導致走了不少彎路,故記下之,以免忘記。

 

需要工具與資料:

  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

 

下述圖文為小子理解時的一些細節。

 

下述圖片為通訊協議中最重要的兩面截圖:

 

 

 

從上看出,所有發出的命令都為11個兩位數(如:02 30 31 30 31 34 30 32 03 35 41,數與數之間有一個空格,並且這些兩位數必須為16進制(H)的ASCII碼(在串口調試軟件中,發送與接收最好都設置為16進制狀態)……

 

如果要讀取 D10的值,那命令如下(下圖與協議中有細微區別,為方便理解):

請求: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM