Modbus的功能码

ModBus 功能码与数据类型对应表:

RTU 方式读取整数据的例子:

解析一下:主机发送指令,访问从站地址为1,使用功能码03(读保持寄存器),起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为38,十进制为:56。寄存器数量高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为1个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。错误校验为CRC校验。
从站应答:设备地址和命令号和上面的相同。返回的字节数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了1个模拟量的数据,因为一个模拟量需要2个字节所以共2个字节。数据高低字节:41和24代表返回的1个模拟量的值,即十进制的16676。错误校验为CRC校验。