ModBus功能码异常和功能码错误代码
前言
仅供自己学习记录
Modbus功能码异常功能码错误码
-
Modbus协议主要构成是地址码/标识码,功能码,寄存器地址,数据报文等内容。由于modbus协议是请求/应答通信协议,其其中功能码
主要用于表述该数据报文执行的功能,当服务器对客户机进行响应时,它使用功能码域来指示正常响应(无差错)或者异常响应(即出现某
种差错),其中的modbus协议的功能码众多,在此我们一-列出与大家分享。
功能码表
-
其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/0系统改变离散量输入和输入寄存器的数值,而上位机程序
不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器(保持寄存器)则是上位机应用
程序可以改变的数据类型,在数据读写上表现为可读可写。
错误代码表
-
我们以Modbus RTU协议为例,地址码为0x01, 写操作0x 10,寄存器地址为0x018E,CRC校验。如寄存器可读写的话,返回正常,如寄
存器只读,返回异常。
下发指令: 01 1001 8E 0001 02 00 00 69 BE (向寄存器0x018E写入一个数值为0的数据)
正确回应指令: 01 10 01 8E 000160 1 E(向寄存器地址0x018E写操作-一个寄存器)
错误回应指令: 01 90 01 8D C0 (写操作非法功能,可能是向输入寄存器写数据)