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条回答
笨鸟想飞
1楼-- · 2019-07-21 10:40
今天这个问题,我自己找到原因所在了。很感谢@jiutianshenjian  的作答这个是STM32103ZE战舰版移植好的模版: FreeModbus裸机移植成功版.rar (6.95 MB, 下载次数: 754) 2017-8-14 16:14 上传 点击文件名下载附件
出现这个情况其实主要是以下原因1、Modbus Poll 设置没弄清楚
2、移植的FREEMODBUS库用的是官方库,八度哥的库是更改过的,具体体现在:mbfuncinput.c,mbrtu.c等
3、串口配置有一些语句,漏改了


以下是修改过的配置图和效果图
QQ图片20170814161808.png

QQ图片20170814161848.png




jiutianshenjian
2楼-- · 2019-07-21 16:35
本帖最后由 jiutianshenjian 于 2017-8-12 11:10 编辑

#define REG_HOLDING_START                        (USHORT)0x0005  //保持寄存器
#define REG_HOLDING_NREGS                        (USHORT)4  //保持寄存器个数
你程序中起始地址为5,个数4.你看看你用modbuspoll读的时候设置对吗?
你设置是从1开始,个数10。
应该是0A 03 00 04 00 04 04 B3
jiutianshenjian
3楼-- · 2019-07-21 21:15
 精彩回答 2  元偷偷看……
jiutianshenjian
4楼-- · 2019-07-21 22:59
我只打开portserial.c看了下,这里有点问题:
        if(USART_GetITStatus(USART1, USART_IT_TXE) == SET)
        {
                prvvUARTTxReadyISR();
                //TXE pending bit is cleared only by a write to the USART_DR register (USART_SendData()).
                USART_ClearITPendingBit(USART1, USART_IT_RXNE);  
        }
笨鸟想飞
5楼-- · 2019-07-22 02:54
jiutianshenjian 发表于 2017-8-11 17:15
我只打开portserial.c看了下,这里有点问题:
        if(USART_GetITStatus(USART1, USART_IT_TXE) == SE ...

感谢回答,这里改回USART_ClearITPendingBit(USART1, USART_IT_TXE);
情况依旧,我晚点上传keil4版本
笨鸟想飞
6楼-- · 2019-07-22 07:54
自顶,该问题仍未解决,或者有做过103系列移植FREEMODBUS的模版吗,我参照以下定时器那里的配置

一周热门 更多>