主題:[求助]EM9160 ModBus Master通信問題 共有43018人關注過本帖 |
---|
匿名 |
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 );
|
|
單帖管理 | 引用 | 回復 |