Modbus功能码及错误码说明
有效功能码说明(十进制)
功能码 | 说明 |
---|---|
01 | 读取线圈状态 |
02 | 读取输入状态 |
03 | 读取保持寄存器 |
04 | 读取输入寄存器 |
05 | 强置单线圈 |
06 | 预置单寄存器 |
07 | 读取异常状态 |
08 | 回送诊断校验 |
09 | 编程(只用于484) |
10 | 控询 |
11 | 读取事件计数 |
12 | 读取通信事件记录 |
13 | 编程(184/384/484/584等) |
14 | 探寻 |
15 | 强置多线圈 |
16 | 预置多线圈 |
17 | 报告多寄存器 |
18 | 可使主机模拟编程功能 |
19 | 重置通信链路 |
20 | 读取通用参数 |
21 | 写入通用参数 |
22 | 屏蔽写寄存器 |
23 | 读/写多个寄存器 |
43 | 读设备别识码 |
22-42,44-64 | 保留作为扩展功能 |
65-72 | 保留以备用功能所用 |
73-119 | 非法功能 |
120-127 | 保留,留作内部作用 |
128-255 | 保留,用于异常应答 |
异常码说明
ExceptionCode: Function Code的最左边Bit设定为 1
举例:86 01,功能码06最左边Bit设定为1,即为86
ErrorCode参照下表
Modbus错误码(10进制)
功能码 | 说明 |
---|---|
01 | 非法功能。对于服务器(或从站)来说,询问中接收到的功能码是不可允许的操作,可能是因为功能码仅适用于新设备而被选单元中不可实现同时,还指出服务器(或从站)在错误状态中处理这种请求,例如:它是未配置的,且要求返回寄存器值。 |
02 | 非法数据地址。对于服务器(或从站)来说,询问中接收的数据地址是不可允许的地址,特别是参考号和传输长度的组合是无效的。对于带有100个寄存器的控制器来说,偏移量96和长度4的请求会成功,而偏移量96和长度5的请求将产生异常码02。 |
03 | 非法数据值。对于服务器(或从站)来说,询问中包括的值是不可允许的值。该值指示了组合请求剩余结构中的故障。例如:隐含长度是不正确的。modbus协议不知道任何特殊寄存器的任何特殊值的重要意义,寄存器中被提交存储的数据项有一个应用程序期望之外的值。 |
04 | 从站设备故障。当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。 |
05 | 确认。与编程命令一起使用,服务器(或从站)已经接受请求,并且正在处理这个请求,但是需要长持续时间进行这些操作,返回这个响应防止在客户机(或主站)中发生超时错误,客户机(或主机)可以继续发送轮询程序完成报文来确认是否完成处理。 |
06 | 从属设备忙。与编程命令一起使用。服务器(或从站)正在处理长持续时间的程序命令。张服务器(或从站)空闲时,用户(或主站)应该稍后重新传输报文。 |
08 | 存储奇偶差错。与功能码20和21以及参考类型6一起使用,指示扩展文件区不能通过一致性校验。服务器(或从站)设法读取记录文件,但是在存储器中发现一个奇偶校验错误。客户机(或主方)可以重新发送请求,但可以在服务器(或从站)设备上要求服务。 |
10 | 不可用网关路径。与网关一起使用,指示网关不能为处理请求分配输入端口至输出端口的内部通信路径。通常意味着网关是错误配置的或过载的。 |
11 | 网关目标设备响应失败。与网关一起使用,指示没有从目标设备中获得响应。通常意味着设备未在网络中。 |
转载于:https://my.oschina.net/robin3d/blog/2245715