功能3读取单个或多个保持寄存器(V存储器中的字)的内容,最多可以读120个字。
请求帧格式:
站地址(字节)/03(字节)/首字地址(字)/字数(字)/CRC(字)
响应帧格式:
站地址 (字节)/03 (字节)/数据字节数2N(字节)/数据字1/……/数据字N/CRC(字)
例如用功能3读取18号站中以VW20开始的两个字(VW20和VW22),
站地址18对应的十六进制数为16#12,VW20对应的Modbus地址为000010,
对应的十六进制数为16#000A,
则请求帧为12 03 00 0A 00 02 E6 AA(十六进制数),
假设VW20=16#1234,VW22=16#ABCD,
响应帧为12 03 04 12 34 AB CD 22 E1(十六进制数)。
可以用串口软件向PLC发请求帧,站地址,端口设置等一定要正确,然后就能返回V区数据,串口软件就能收到V区数据。
上面是我在论坛中,按照别人的提示,一步步的做下来的,当我用MODBUS调试软件,发送了一组数据(12 03 00 0A 00 02 E6 AA),没有收到返回,此时,我再用编程电缆连至PLC监视时,发现MBS_SLAVE的ERR的值为“10”,请问这是怎么回事啊?
错误代码 说明
0 无错误
1 内存范围错误
2 非法波特率或奇偶校验
3 非法从属地址
4 非法Modbus参数值
5 保持寄存器与Modbus从属符号重叠
6 收到奇偶校验错误
7 收到CRC错误
8 非法功能请求/功能不受支持
9 请求中的非法内存地址
10 从属功能未启用