FreeModbus在STM32103上移植一直回复同一个数据

2019-07-21 08:23发布

本帖最后由 笨鸟想飞 于 2017-8-11 16:24 编辑

最近参考了 八度空间 的FreeModbus在STM32上移植  http://openedv.com/forum.php?mod=viewthread&tid=69081&extra=&highlight=modbus&page=4
进行在STM32103ZE(战舰版)移植,在八度哥的原版程序进行串口配置修改,移植后,用串口调试助手和Modbus Poll  上测试
发现一直回复同一个数据,
修改过从机地址后,回复的数据从机地址会改变并符合。
求有做过STM32103系列移植FreeModBUS的好心人,解答一下。
源码如下: V3.0裸机移植.rar (6.94 MB, 下载次数: 420) 2017-8-11 16:24 上传 点击文件名下载附件



以下为在Modbus Poll  上的测试测试结果
B0TPP8UCAH`QI)6AQ3[Y]~X.png

EC~%H`GCWO4~]XU2RJXQYJA.png

6NXIXYREABBPB1138XE]0TQ.png @八度空间
[img]file:///C:UsersAdministratorAppDataRoamingTencentUsers505017069QQWinTempRichOleB0TPP8UCAH`QI)6AQ3[Y]~X.png[/img]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
49条回答
jiutianshenjian
2019-07-25 06:48
本帖最后由 jiutianshenjian 于 2017-8-26 17:10 编辑
564646396 发表于 2017-8-25 11:18
usRegHoldingBuf[0]  代表站号  usRegHoldingBuf[1] 功能码    usRegHoldingBuf[2]起始地高  usRegHoldingB ...

不对。
站号、功能码跟这个保持寄存器缓冲区usRegHoldingBuf没关系。这个0代表保持寄存器起始地址REG_HOLDING_START。
例如你REG_HOLDING_START是100,101地址的值就在usRegHoldingBuf[1]里存放。以此类推。


你说的是协议格式,第一帧发从机地址,也就是你说的站号,第二帧发功能码,等等。
假如你功能码06,寄存器地址101,数据123.
发完CRC后从机接收到,就把usRegHoldingBuf[1]的值改为123.

一周热门 更多>