主题:[求助]EM9160 ModBus Master通信问题

  共有27140人关注过本帖    
匿名
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 );


  单帖管理 | 引用 | 回复 回到顶部

返回首页

[求助]EM9160 ModBus Master通信问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: