1. 程式人生 > >與三菱Q系列PLC通訊(tcp-ip)協議

與三菱Q系列PLC通訊(tcp-ip)協議

舉例子說明讀寫方法:
      1.讀D100開始的連續的20個數據塊,也就是讀D100~D119的資料;
電腦讀命令:  50 00 00 FF FF 03 00 0C 00 10 00 01 04 00 00 64 00 00 A8 14 00 (23:19:46:937)
PLC反饋:  D0 00 00 FF FF 03 00 2A 00 00 00 86 F1 00 00 C9 01 00 00 D6 02 00 00 68 02 00 00 2E 02 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (23:19:46:937)


下面解析一下:
電腦讀命令: 50 00(命令)  :表示發起指令,固定50 00;
         00(網路編號) :上位訪問下位,固定00;


         FF(PLC編號) : 上位訪問下位,固定FF;
         FF 03(請求目標模組IO編號) : 值要從小到大看,也就是反過來看,三菱所有的協值都是這樣,所以這裡是03FF,十進位制是1023; 也是固定的;
         00(請求目標模組站編號) : 上位訪問下位,固定00;
         0C 00 (應答資料物理長度): 也要反過來,值是000C,也就是12;表示後面的報文內容的長度是12(手工數一下,後面報文長度真的是12)

         10 00 (cpu監視定時器)  : 表示等待PLC響應的timeout時間;這裡 值是0010,十進位制是16 ;相當與最大等待時間250ms*16=4秒;實際上PLC一般2,3個毫秒內就響應了;
         01 04 (命令)  :   值是0401(所有值都要反過來看,再說就囉嗦了,後面不說了);表示批量讀取;如果是1401就是隨機讀取;
         00 00 (子命令) : 值是0表示按字讀取(1個字=16位),如果值是1就按位讀取;

         64 00 00(首地址):地址因為跨度比較大,所以用了3個位元組;這裡的值是000064,十進位制就是100
         A8 (軟元件)         : 表示讀取PLC暫存器的型別:  這裡的A8表示D點;其他常見的有: 90-M點;9C-X點;9D-Y點;B0-ZR外部儲存卡
         14 00(讀取長度)  :值是0014,十進位制就是20;


PLC反饋: D0 00 (響應) :表示反饋資訊,固定D0 00;
               00  (網路編號 ): 與上同
               FF  (PLC編號) : 與上同
               FF 03 (請求目標模組IO編號) : 與上同
              00 (請求目標模組站編號): 與上同
              2A 00 (應答資料物理長度):值是002A; 十進位制是 42;也就是說後面的:結束程式碼(2個位元組)+值=42;所以值是40個位元組;2個位元組=1個字;所以值是20個字;
              00 00(結束程式碼) :可以理解成異常程式碼,如果正常的話,就是0000
               86 F1 00 00 C9 01 00 00 D6 02 00 00 68 02 00 00 2E 02 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (反饋的值);這裡正好40個位元組;
               再囉嗦一下,值要反過來看,所以地址D100=F186;D101=0000,D102=01C9......


    2.寫D100這一個點的值為13,D101這個點的值為14,D102這個點的值為15;


        電腦寫命令: 50 00 00 FF FF 03 00 12 00 10 00 01 14 00 00 64 00 00 A8 03 00 0C 00 0D 00 0E 00 (00:14:55:188)
        PLC反饋: D0 00 00 FF FF 03 00 02 00 00 00 (00:14:55:188)


下面解析一下:
     電腦寫命令:
                50 00 (命令)  :意義和讀一樣
                00(網路編號 ) :意義和讀一樣
                FF(PLC編號)    :意義和讀一樣
                FF 03 (請求目標模組IO編號) :意義和讀一樣
                00(請求目標模組站編號) :意義和讀一樣
               12 00(請求資料物理長度) :
                           值是0012,也就是十進位制18;表示後面的報文內容的長度是20;
                        也就是後面的:cpu監視定時器+命令+子命令+首地址+軟元件+長度+值=18;前面有12個位元組;所以值是6個位元組;也就是3個字;
               10 00(cpu監視定時器):同上
               01 14(命令):跟讀的差別是:讀是0104,寫是0114 ;就是04和14的差別;
              0000(子命令):值是0表示按字讀寫入1個字=16位),如果值是1就按位寫入;
              640000(首地址) :意義和讀一樣,10進位制100;表示從D100這個首地址寫入;
              A8(軟元件)  :意義和讀一樣  
              0300(長度): 值是0003 表示連續寫入3個長度;
              0C00 0D00  0E00(寫入的值): D100=13 ,D101=14,D102=15;



    PLC反饋(所有正常的寫入,反饋的資訊都固定為這個):
          D0 00(響應) :表示反饋資訊,與讀取反饋一樣,固定D0 00;
          00(網路編號 ):同上
          FF(PLC編號)  :同上
          FF 03 (請求目標模組IO編號) :同上
          00(請求目標模組站編號) :同上
          02 00(應答資料物理長度): 就是後面的 00 00 正好兩個位元組,所以這裡值=2;
          00 00(結束程式碼)  :可以理解成異常程式碼,如果正常的話,就是0000

 

連結:http://www.itpub.net/thread-2051324-1-1.html