主题:[求助]EM9160 ModBus Master通信问题 共有38005人关注过本帖 |
---|
匿名 |
1楼 |
[求助]EM9160 ModBus Master通信问题 Post By:2013-7-17 14:38:00 [只看该作者]
我正在调试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楼 |
Post By:2013-7-18 15:53:00 [只看该作者]
请问是Linux版本还是CE版本?
|
|
单帖管理 | 引用 | 回复 |
zhl |
3楼 |
Post By:2013-7-18 17:06:00 [只看该作者]
1、我们所提供的库的确有这个问题,需要更新mbus_Master.lib文件,已经发到你的邮箱,请查收!
2、 所返回的错误代码遵循Modbus协议,0x84 表示Reply time-out错误。
|
|
单帖管理 | 引用 | 回复 |
客人 |
4楼 |
Post By:2013-7-19 11:21:00 [只看该作者]
你好,邮件已收到,是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楼 |
Post By:2013-7-19 12:08:00 [只看该作者]
的确是这样,函数mbusMaster_ReadMultipleRegisters( ... ) 中的参数
startRef: 需要读取寄存器的起始值,其范围为: 1~0x10000,是从1开始。内部在处理为:startRef--。你可将函数改为:
mbusMaster_ReadMultipleRegisters( hPort, 1, 6, regArr, 3 );
|
|
单帖管理 | 引用 | 回复 |