高级会员

- 积分
- 501
- 金钱
- 501
- 注册时间
- 2014-12-8
- 在线时间
- 104 小时
|
发表于 2016-10-10 20:30:55
|
显示全部楼层
第一,你需要注意你的代码中输入寄存器的起始地址:
#define REG_INPUT_START 0x0001
#define REG_INPUT_NREGS 8
第二、你需要注意FreeModbus源代码中的一个小问题
eMBException eMBFuncReadInputRegister( UCHAR * pucFrame, USHORT * usLen )这函数中的这句:
usRegAddress = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_ADDR_OFF] << 8 );
usRegAddress |= ( USHORT )( pucFrame[MB_PDU_FUNC_READ_ADDR_OFF + 1] );
usRegAddress++;实际协议中是将你的地址加1了,也就是你发送的地址为0,实际协议认为的地址是1,
第三、我的测试结果是:
Tx:648-0A 04 00 00 00 01 30 B1
Rx:649-0A 04 02 80 01 BC F1
是正确的。 |
|