STM32 用free modbus,多从机会出现串口只发5个字节数据的情况。

[复制链接]
 楼主| mbutterfly 发表于 2024-6-4 12:40 | 显示全部楼层 |阅读模式
STM32 用free modbus,多从机会出现串口只发5个字节数据的情况。调试了两天,没找到原因。将这个串口的中断优先级改到0了,其他优先级都改成1了,用的轮询接受发送模式。
 楼主| mbutterfly 发表于 2024-6-5 10:31 | 显示全部楼层
问题可能找到了,哎,如果是真的,就太搞笑了。
储小勇_526 发表于 2024-6-5 10:56 | 显示全部楼层
分享下,让别人少走弯路。
 楼主| mbutterfly 发表于 2024-6-5 11:50 | 显示全部楼层
储小勇_526 发表于 2024-6-5 10:56
分享下,让别人少走弯路。

还在验证中。几个小时不出错,不一定就好了。
 楼主| mbutterfly 发表于 2024-6-5 14:47 | 显示全部楼层
储小勇_526 发表于 2024-6-5 10:56
分享下,让别人少走弯路。

本来以为堆栈加倍,是改善了问题呢,但是后续程序添加进循环后,还是出现这个问题。
 楼主| mbutterfly 发表于 2024-6-5 15:22 | 显示全部楼层
难道是主程序里的循环程序太长了吗?执行一次要几百毫秒。MODBUS是1秒读一次。两个从机。 如果一个从机循环里程序少,就都不会出现问题。
储小勇_526 发表于 2024-6-5 17:11 | 显示全部楼层
mbutterfly 发表于 2024-6-5 15:22
难道是主程序里的循环程序太长了吗?执行一次要几百毫秒。MODBUS是1秒读一次。两个从机。 如果一个从机循环 ...

我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。
 楼主| mbutterfly 发表于 2024-6-6 08:16 | 显示全部楼层
储小勇_526 发表于 2024-6-5 17:11
我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。 ...

多个从机吗?一次发送多少字节?
 楼主| mbutterfly 发表于 2024-6-6 08:17 | 显示全部楼层
储小勇_526 发表于 2024-6-5 17:11
我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。 ...

几个从机,一次发送多少字节?
32021724 发表于 2024-6-6 08:51 | 显示全部楼层
走的啥总线,485还是纯uart?
 楼主| mbutterfly 发表于 2024-6-7 16:20 | 显示全部楼层
32021724 发表于 2024-6-6 08:51
走的啥总线,485还是纯uart?

STM32的UART口,接的485芯片SP3485EN,之后板子差不多是走差分线吧,板子上线路很短。之后是双绞线,3个板子的从站最后并到一起。
呐咯密密 发表于 2024-6-12 10:07 | 显示全部楼层
你是串口中断接收从机数据吗?是第一次发送数据出错还是接收从机数据再次发送出错
 楼主| mbutterfly 发表于 2024-6-14 09:47 | 显示全部楼层
呐咯密密 发表于 2024-6-12 10:07
你是串口中断接收从机数据吗?是第一次发送数据出错还是接收从机数据再次发送出错 ...

数据发不全的原因,最后发现,至少有一部分原因是因为上位机软件用的LABVIEW,遇到0x0A就截止不收了。这种情况用MODBUS POLL就能接收。至于MODBUS POLL接收不全,为什么只接收5个字节,不多不少,估计还是MODBUS POLL和硬件匹配的问题,据说换个USB转485的线就会好。
32021724 发表于 2024-6-26 08:55 | 显示全部楼层
mbutterfly 发表于 2024-6-7 16:20
STM32的UART口,接的485芯片SP3485EN,之后板子差不多是走差分线吧,板子上线路很短。之后是双绞线,3个 ...

可以尝试在485线上挂一根USB转485,分析一下485线上到底在发生什么,比如是不是有2个设备同时在发数据,或者数据正好在5字节的时候停了,还是说数据其实发完了,但是正好5字节后485电平变低了,导致末端收不到数据,这种串口和485的通信问题,先抓数据,从线上的实际现象分析问题,因为等数据过了mcu的uart再过freemodbus,往往看到的就不是真相了
 楼主| mbutterfly 发表于 2024-6-26 09:08 | 显示全部楼层
32021724 发表于 2024-6-26 08:55
可以尝试在485线上挂一根USB转485,分析一下485线上到底在发生什么,比如是不是有2个设备同时在发数据, ...

嗯,可以说,我走了弯路。没有从根本上去解决问题。以为靠猜测和百度就很好解决。这个看到别人有说用一个分析波形的工具的。你说的线上挂一根USB转485,怎么挂呢,这个USB转485要接到电脑上?

评论

[url=home.php?mod=space&uid=1168118]@32021724[/url] :这个设备一直在用。听说有分析波形的工具的,其实示波器看波形,应该能找到原因。  发表于 2024-7-12 08:10
485总线允许一根总线上有多个设备的,网上有卖USB转485的,485那端接在你的modbus主从机通信额485总线上,USB插电脑就出来一个串口,开个串口调试助手就能看到主从机之间的通信数据了  发表于 2024-7-11 17:35
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

5296

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部

74

主题

5296

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部