主题:[求助]EM9160 ModBus Master通信问题 共有27133人关注过本帖 |
---|
匿名 |
1楼 |
![]() |
[求助]EM9160 ModBus Master通信问题 ![]()
我正在调试EM9160 的ModBus Master,能否发份MODBUS的RTU例子程序作为参考?,邮箱 :gxshun @ sina.com
目前出现以下问题: 1:设置ModBus通讯的超时时间:
int timeout;
timeout=mbusMaster_SetTimeout(hPort,100);
这里设置的为100ms,但不管我设置超时时间为多少timeout都为1000 2:EM9160 定义的ModBus错误代码是否和标准的一致?我在读取ModBus从机设备多个寄存器值时返回0x84 [此贴子已经被作者于2013-7-19 11:23:47编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
2楼 |
![]() |
![]()
请问是Linux版本还是CE版本?
|
单帖管理 | 引用 | 回复 ![]() |
zhl |
3楼 |
![]() |
![]()
1、我们所提供的库的确有这个问题,需要更新mbus_Master.lib文件,已经发到你的邮箱,请查收!
2、 所返回的错误代码遵循Modbus协议,0x84 表示Reply time-out错误。
|
单帖管理 | 引用 | 回复 ![]() |
客人 |
4楼 |
![]() |
![]() 你好,邮件已收到,是CE版本,设置ModBus通讯的超时时间已解决,谢谢! 现另一个问题是,若读取1号从机,从第5个开始的3个寄存器,发送如下命令: UINT16 regArr[20]; mbusMaster_ReadMultipleRegisters( hPort, 1, 5, regArr, 3 ); 串口接收为:01 03 00 04 00 03 05 CB 其中串口接收的第4个字节为4(被5减了1),是否应该是5?而后面的CRC16是以01 03 00 04 00 03计算的。
|
单帖管理 | 引用 | 回复 ![]() |
zhl |
5楼 |
![]() |
![]()
的确是这样,函数mbusMaster_ReadMultipleRegisters( ... ) 中的参数
startRef: 需要读取寄存器的起始值,其范围为: 1~0x10000,是从1开始。内部在处理为:startRef--。你可将函数改为:
mbusMaster_ReadMultipleRegisters( hPort, 1, 6, regArr, 3 );
|
单帖管理 | 引用 | 回复 ![]() |