1. 功能码

modbus定义了4种基本数据类型:可读可写数据,只读位,只读16位数据,可读写16位数据。 这些数据分别被称为线圈状态,输入状态, 输入寄存器,保持寄存器。

功能码对应的数据类型

2. 报文实例

modbustcp报文举例

(1)读取点位

00 16 00 00 00 06 00 01 00 00 00 0B

00 16 交互标识

00 00 协议标识

00 06 报文长度

00    设备地址

01    功能码

00 00 起始地址

00 0B 数量 11个遥信

(2)返回点位

00 16 00 00 00 05 00 01 02 46 05

00 16 交互标识

00 00 协议标识

00 05 报文长度

00    设备地址

01    功能码

02    数据长度

46    01000110  最末尾是0号遥信的值,往高位是1, 2, 3到7的值

05    00000101  最末尾是8的值,然后是9, 10

(3)异常响应

00 16

00 00

00 05

00   //设备地址

81   // 01功能码前面 + 8 = 响应01功能码异常

03   // 故障码 

故障码列表

01 非法功能

对于服务器(或从站)来说,询问中接收到的功能码是不可允许的操作。这也许是因为功能码仅仅适用于新设备而在被选单元中是不可实现的。同时,还指出服务器(或从站)在错误状态中处理这种请求,例如:因为它是未配置的,并且要求返回寄存器值。

02 非法数据地址

对于服务器(或从站)来说,询问中接收到的数据地址是不可允许的地址。特别是,参考号和传输长度的组合是无效的。对于带有100个寄存器的控制器来说,带有偏移量96和长度4的请求会成功,带有偏移量96和长度5的请求将产生异常码02。

03 非法数据值

对于服务器(或从站)来说,询问中包括的值是不可允许的值。这个值指示了组合请求剩余结构中的故障,例如:隐含长度是不正确的。并不意味着,因为MODBUS协议不知道任何特殊寄存器的任何特殊值的重要意义,寄存器中被提交存储的数据项有一个应用程序期望之外的值。

04 从站设备故障

当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。

05 确认

与编程命令一起使用。服务器(或从站)已经接受请求,并切正在处理这个请求,但是需要长的持续时间进行这些操作。返回这个响应防止在客户机(或主站)中发生超时错误。客户机(或主站)可以继续发送轮询程序完成报文来确定是否完成处理。

06 从属设备忙

与编程命令一起使用。服务器(或从站)正在处理长持续时间的程序命令。张服务器(或从站)空闲时,用户(或主站)应该稍后重新传输报文。

08 存储奇偶性差错

与功能码20和21以及参考类型6一起使用,指示扩展文件区不能通过一致性校验。服务器(或从站)设法读取记录文件,但是在存储器中发现一个奇偶校验错误。客户机(或主方)可以重新发送请求,但可以在服务器(或从站)设备上要求服务。

0A 不可用网关路径

与网关一起使用,指示网关不能为处理请求分配输入端口至输出端口的内部通信路径。通常意味着网关是错误配置的或过载的。

0B 网关目标设备响应失败

与网关一起使用,指示没有从目标设备中获得响应。通常意味着设备未在网络
 

3. 其他报文举例

01读取线圈状态

02读取输入状态

03读取保持寄存器

04读取输入寄存器

05遥控开

06遥调

15多遥控

16多遥调

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐