yanxinyue 发表于 2019-1-9 12:12:57

ModbusRTU使用串口调试工具发报文格式

1、读参数(16#03)
下例请求帧表示:从通讯地址为 01 中读取以40222参数为起始的 2 个
字数据。
请求帧格式:

Slave Adr:通讯地址,从站地址值需转换为十六进制数。
CMD:功能码,16#03 即为读功能码操作。
Start Adr H/L:参数起始地址高/低位,起始地址值需转换为十六进制数,例如此例中 40222
号参数转换为十六进制为 16#00DD,故高位为 16#00、低位为 16#DD。
No.of Regs H/L:读参数的数量高/低位,起始地址值需转换为十六进制数,例如此例中为
两个参数(即 16#0002),故高位为 16#00、低位为 16#02。
CRC:CRC 校验字。
如果读取成功,应答帧格式:


Slave Adr:驱动器通讯地址。
CMD:功能码,16#03 即为读操作。
Data Length:数据字节长度,等于读参数的数量(No.of Regs)× 2。
Data0/Data1/…/Data n×2-1:读出起始参数值高 8 位/起始参数值低 8 位/…/读出最后参数
值低 8 位。
CRC:CRC 校验字。 2、写单个参数(16#06)
下例请求帧表示:往通讯地址为 01的单个参数40325中写入新值 500。
请求帧格式:


Slave Adr:通讯地址,从站地址值需转换为十六进制数。
CMD:功能码,16#06 即为写单个参数操作。
Reg Adr H/L:需写入参数号起始地址高/低位,起始地址值需转换为十六进制数,例如此
例中 40325 号参数转换为十六进制为 16#0144,故高位为 16#01、低位为 16#44。
Preset Data H/L:需写入数据高/低字节,写入数据值需转换为十六进制数。
CRC:CRC 校验字。
如果写入单个成功,应答帧格式:


Slave Adr:通讯地址。
CMD:功能码,16#06 即为写单个参数操作。
Reg Adr H/L:被写入参数号起始地址高/低位。
Preset Data H/L:被写入数据高/低字节。
CRC:CRC 校验字。
3、写多个参数(16#10)

下例请求帧表示:往通讯地址为 01两个参数 40114/40115中连续写入新值 200 和 300。
请求帧格式:


Slave Adr:通讯地址,从站地址值需转换为十六进制数。
CMD:功能码,16#10 即为写多个参数操作。
Start Adr H/L:需写入参数号起始地址高/低位,起始地址值需转换为十六进制数,例如此
例中40114 号参数转换为十六进制为 16#0071,故高位为 16#00、低位为 16#71。
No. of Regs H/L:写参数的数量高/低位,参数数量值需转换为十六进制数,例如此例中
为两个参数(即 16#0002),故高位为 16#00、低位为 16#02。
Data Length:数据字节长度,等于写参数的数量(No. of Points)× 2,起始地址时需转
换为十六进制数。
Data0/Data1/…/Data n×2-1:写入起始参数值高 8 位/起始参数值低 8 位/…/写入最后参数
值低 8 位。
CRC:CRC 校验字。
如果写入多个成功,应答帧格式:


Slave Adr:通讯地址。
CMD:功能码,16#10 即为写多个参数操作。
Start Adr H/L:被写入参数号起始地址高/低位。
No. of Regs H/L:被写入参数的数量高/低位。
CRC:CRC 校验字。
4、错误码
从站接收到主站的 Modbus 通信报文,没有传输错误,但从站无法正确执行主机命
令或无法作出正确应答,从站将采用异常响应报文给予回答。
下例请求帧表示:主站读地址为 01 的从站的40281 参数时,从站的异常响应。
异常响应帧格式:


Slave Adr:通讯地址。
CMD:功能码,异常响应帧中将主站功能码最高位(第 7 位)置 1,例如此例中主站请求
帧功能码下写入单个参数为 16#06,异常响应帧将主站功能码最高位置 1 后,即为 16#86。
Error:错误码,具体错误码名称及说明如下表:


CRC:CRC 校验字。
功能码定义如下:














页: [1]
查看完整版本: ModbusRTU使用串口调试工具发报文格式