【玩轉(zhuǎn)485】18.modbus RTU報文格式1
林慧玲
發(fā)布于2015-03-05 11:16
28
0
標(biāo)簽:通訊
之前在自由口的文章中我已經(jīng)通過自定義的通訊協(xié)議向大家講解了什么是報文,以及如何使用報文發(fā)送和接收數(shù)據(jù)。從本文開始我就一起剖析一下。modbus RTU協(xié)議的具體結(jié)構(gòu),幫助大家徹底掌握modbus RTU協(xié)議。
1、地址分類 modbus RTU協(xié)議中將數(shù)據(jù)地址類型分成4種,分別是離散量輸入,線圈,輸入寄存器和保持寄存器,下面我們一起來看看這些地址類型的特點。
這里大家需要注意的是0和1開頭的地址每個通道都是1個位的大小,3和4開頭的地址每個通道都是16位也就是1個字的大小??赡芸吹竭@里大家還是對這種地址的表達方式?jīng)]有概念,那我們來看一下當(dāng)S7-200PLC做modbus RTU從站時S7-200PLC中的地址是如何與上面的地址類型對應(yīng)的。
線圈:對應(yīng)S7-200中Q區(qū),地址00001 =Q0.0
離散量輸入:對應(yīng)S7-200中I區(qū),地址10001 = I0.0
輸入寄存器:對應(yīng)S7-200中AI區(qū),地址30001 =AIW0
保持寄存器:具體對應(yīng)地址可以進行設(shè)定,一般對應(yīng)V區(qū)。
2、功能碼01
功能碼01的作用是讀取線圈狀態(tài),下面我們來看看具體的報文格式。
主站請求報文:
圖2-1
從站應(yīng)答報文:
圖2-2
下面我們先將從站庫指令下載到S7-200PLC中讓S7-200PLC成為modbus RTU 從站具體從站參數(shù)設(shè)定可以參看圖 2?3。
圖 2-3
將S7-200PLC設(shè)定成從站后我將S7-200PLC中Q0.0和Q0.2置位為1,Q0.1保持為0然后用調(diào)試軟件發(fā)送報文查詢Q0.0、Q0.1、Q0.2的狀態(tài)。
圖 2-4
圖 2-4所示我們向從站發(fā)送03 01 00 00 00 03 7D E9其中03是從站地址,01是功能碼,00 00是指起始地址是Q0.0, 00 03是指讀取3個線圈,7D E9是前面數(shù)據(jù)的crc校驗碼。
注: 這里需要注意我們按照crc校驗算出來的校驗碼的順序應(yīng)該是E9 7D,而modbus RTU中crc校驗計算出來后需要高低字節(jié)進行交換所以是7D E9
圖 2-5
圖 2-5PLC返回數(shù)值是03 01 01 05 90 33,其中03是PLC站地址,01是功能碼,01是返回給主站的數(shù)據(jù)小于或者等于1個字節(jié),05的二進制代碼是101表示Q0.0 = 1、Q0.1 = 0、Q0.2 = 1,90 33是前面數(shù)值的crc校驗碼。
以上就是01功能碼的含義和用法,下一篇文章我們繼續(xù)介紹其他功能碼。
作者:馬樂
版權(quán)為技成所有,盜取必究!