modbustcprtu协议
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MBAP 组成字节个数说明
事物处理
标识2
可以理解为报⽂的序列号,⼀般每次通信后就要加1以区别不同的通信数据报⽂;由客户端⽣成;应答时复制该值
协议标识200 00:表⽰ModbusTCP 协议;由客户端⽣成;应答时复制该值长度
2
表⽰该字节后⾯的数据长度,单位为字节;单元标识
符1
设备地址;由客户端⽣成;应答时复制该值
MBAP 地址 功能码 数据 CRC16校验Modbus RTU ⽆ 1字节 1字节 n 字节 2字节Modbus TCP
7字节
⽆
1字节
n 字节
⽆
MBAP
从机地址功能码寄存器地址寄存器个数CRC modbus rtu 发送
01
01
00 23
00 17
XX XX
modbus tcp 发送
00 01 00 00
00 06 01
01
00 23
00 17
MBAP
从机地址功能码返回字节数data1data2data3CRC modbustcprtu 协议
1.ADU
Application Data Unit:应⽤数据单元;2.PDU
Protocol Data Unit:协议数据单元;由功能码+数据组成。
功能码是⼀个字节,数据长度不定,由具体功能码的具体功能决定。
3.MBAP
报⽂头,长度7个字节。
4.modbus tcp 和modbus rtu 协议格式
modbus tcp 数据帧(ADU)由MBAP+PDU 组成;物理层为以太⽹接⼝。
modbus rtu 数据帧(ADU)由地址+PDU+校验组成;物理层为串⼝,RS232、RS422、RS485。
modbus tcp 和modbus rtu 数据帧中的PDU 部分是相同的。
5.⽰例
以下表格中的数据都是⼗六进制。
1)01H-读线圈
含义:读从机线圈寄存器,位操作,可读单个或者多个。
返回数据中⼀个地址的数据为1位,data1的最低位代表最低地址的线圈状态。
例:从机地址01,寄存区开始地址0x23,总共读取21个线圈:
modbus rtu 响应010103a5d418XX XX modbus tcp 响应
00 01 00 0000 06 01
01
03
a5
d4
18
MBAP
从机地址功能码寄存器地址寄存器个数CRC modbus rtu 发送01
0300 3200 02XX XX
modbus tcp 发送
00 01 00 0000 06 0103
00 32
00 02
MBAP
从机地址功能码返回字节数data1H data1L data2H data2L CRC modbus rtu 响应01
0304a5d41812XX XX
modbus tcp 响应
00 01 00 0000 07 0103
04
a5
d4
18
12
MBAP
从机地址功能码寄存器地址寄存器个数CRC modbus rtu 发送01
0500 32ff 00XX XX
modbus tcp 发送
00 01 00 0000 06 0105
00 32
ff 00
MBAP
从机地址功能码寄存器地址寄存器个数CRC modbus rtu 发送01
0600 3212 34XX XX
modbus tcp 发送
00 01 00 0000 06 0106
00 32
12 34
2)02H-读离散输⼊状态
含义:读离散输⼊寄存器,位操作,可读单个或多个,协议类似功能码01H 协议。
3)03H-读保持寄存器
含义:读保持寄存器,字节指令操作,可读单个或者多个;例如:从机地址01,起始地址为0x32,读2个保持寄存器:
4)04H-读输⼊寄存器
含义:读输⼊寄存器,字节指令操作,可读单个或者多个。
协议格式同03指令。
5)05H-写单个线圈
含义:写单个线圈,位操作,只能写⼀个;值为0xff00表⽰设置线圈状态为ON,写0x0000表⽰设置线圈状态为OFF;例如:设置0x0032线圈为ON 。
响应指令同发送指令⼀样。
6)06H-写单个保持寄存器
含义:写单个保持寄存器,字节指令操作,只能写⼀个;例如:写0x0032保持寄存器为0x1234
响应指令同发送指令⼀样。
MBAP从机地址功能码寄存器地址寄存器个数data1data2CRC modbus rtu发送010f04 a500 0d0c02XX XX
modbus tcp发送00 01 00 00
00 08 01
0f04 a500 0d0c02 MBAP从机地址功能码寄存器地址寄存器个数字节数CRC
modbus rtu响应010f04 a500 0d02XX XX
modbus tcp响应00 01 00 00
00 07 01
0f04 a500 0d02
MBAP从机地址功能码寄存器地址寄存器个数字节数data1H data1L data2H data2L CRC
modbus rtu发送011000 3400 02040c021245XX XX
modbus tcp发送00 01 00 00
00 0B 01
1000 3400 02040c021245 MBAP从机地址功能码寄存器地址寄存器个数CRC
modbus rtu响应011000 3400 02XX XX
modbus tcp响应00 01 00 00
00 06 01
1000 3400 02
07)0FH-写多个线圈
含义:写多个线圈寄存器;若数据区对应的位值为“1”表⽰设置线圈状态为ON;若值为“0”,则状态为OFF;例如:线圈地址为0x04a5,写12个线圈:
08)10H-写多个保持寄存器
含义:写多个保持寄存器,字节指令操作,可写多个;
例如:稀释地址为0x0034,写2个寄存器4个字节的数据:。