三菱FX系列PLC编程口通讯协议实例
三菱FX系列PLC編程口通訊協議實例
一、協議介紹
通過編程口通訊協議,計算機可以通過串口或USB接口向PLC讀寫數據,以及置位或復位軟元件,但PLC不能主動向計算機發送信息。具體可操作的軟元件有:X/Y/M/S/T/C/D。
由于只需要PLC主機和一根編程線纜即可簡單通訊,無需另外購置如232-BD等通訊板,因此編程口通訊實際上非常實用。可惜的是,三菱的官方手冊《FX通訊用戶手冊》卻根本沒有介紹這個通訊協議,網絡上能找到的資料也很少。僅找到的一篇如下,其中也有很多語焉不詳的地方,埋了不少坑。本文通過實際操作,簡單總結一下該協議的使用方法和注意點。
鏈接: 三菱PLC編程口協議.
二、通訊設置
必須設置為:波特率9600,偶校驗,7位數據位。否則無法通訊。
三、
讀寫操作時數據的基本格式:
注意:
通訊協議中的所有字符是用它們的十六進制ASCII碼表示。如果有十進制數據,要先轉化為十六進制數,再把十六進制數的每個字符用它相應的十六進制ASCII碼表示。以下有詳解。
參數詳解:
STX: ASCII碼,含義為Start of Text,十六進制代碼為02H;
CMD:讀操作時為0,即十六進制代碼30H;寫操作時為1,即十六進制代碼31H;
ADDR:要操作的軟元件的起始地址,查表可得,如下。注意是起始地址,例如要查詢D0、D11寄存器的數據,寫入D0的地址即可。ADDR為4個十六進制ASCII碼。如D0查表地址為1000,每個字符均用十六進制ASCII碼表示,即為:31 30 30 30。
NUM:字節數,用兩個十六進制ASCII碼表示,取值范圍為01H-40H。這個數據是比較tricky的地方,一定要注意。理論上它是指“要操作的所有軟元件對應的字節數”,比如:
要讀D0中的數據,因為D軟元件是用2個字節表示的,則NUM為02,十六進制ASCII碼為 30 32;
要讀D0、D1兩個D軟元件中的數據,則NUM為04,十六進制ASCII碼為 30 34;
如果是讀Y0-Y7這8個位軟元件的狀態,因為8個位為一個字節,所以NUM為01,十六進制ASCII碼為 30 31;
如果是寫數據,比如寫十六制數122F到D0中,則NUM一樣為02,寫數據到D0、D1中,則NUM為04。注意:
這里NUM和要寫的數據大小或是幾位數無關。 比如寫十進制1(十六進制0001)或寫十進制65535(十六進制FFFF)到D0,NUM都是02;
寫的數據是十六進制ASCII碼,不能直接寫十進制數;
規定寫數據時NUM必須為偶數(讀的時候NUM為奇數或偶數均可),所以就有例外情況:如果是寫數據到Y0-Y7中,NUM數不是01,而是02。
數據DATA:讀操作時無此項。寫操作時該值必須以4個字符為一組,且低位2個在前,高位2個在后。比如:要寫十進制10到D0中,10的十六制表示為A,要4個字符表示所以前面補0為000A;又要求低位在前高位在后,則表示為0A00,把每個字符都用十六進制ASCII碼表示,即為:30 41 30 30。
ETX:ASCII碼,含義為End of Text,十六進制代碼為03H;
累加和SUM: SUM = CMD + ADDR + NUM + DATA1+DATA2+…+ETX,注意不包括開始字符STX. 結果超過兩位數取后兩位,低于兩位前面補0. 注意十六進制數的累加計算方法:逢16進1.比如:35+38+45,先個位相加:5+ 8+5=18>16,進1位剩2,2即是結果的個位數;十位相加:3+3+4+1(進位)=11,十六進制表示為B,所以相加結果就是B2。再把這兩個字符用十六進制ASCII碼表示即為:42 32 .
四、舉例
1、計算機要讀PLC的D0中的值:STX為02,CMD為30,ADDR為1000即31 30 30 30,NUM為02即 30 32,ETX為03,SUM為30+31+30+30+30+30+32+03=156,取后兩位56即為35 36,所以計算機向PLC發送的數據為:02 30 31 30 30 30 30 32 03 35 36
2、計算機要寫十進制4660 到PLC的D0,十進制22136到D1 :STX為02,CMD為31,ADDR為1000即31 30 30 30,NUM為04即 30 34,十進制4660轉為十六進制為1234,換位后即:33 34 31 32,22136轉為十六進制為5678,換位后即:37 38 35 36,ETX為03,SUM=31+31+30+30+30+30+34+33+34+31+32+37+38+35+36+03=2FD,取后兩位FD即為 46 44,所以計算機向PLC發送的數據為:02 31 31 30 30 30 30 34 33 34 31 32 37 38 35 36 03 46 44
五、實測結果
另外還有置位和復位指令,格式相對簡單些,下次再介紹。實際同樣也可以通過上述讀寫指令實現。以上指令在FX2N下實測通過。第一次寫文,如有錯誤,歡迎指正;如有疑問,歡迎留言。
總結
以上是生活随笔為你收集整理的三菱FX系列PLC编程口通讯协议实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (私人收藏)配色宝典
- 下一篇: 软件测试知识体系图谱