STM32 用free modbus,多从机会出现串口只发5个字节数据的情况。
STM32 用free modbus,多从机会出现串口只发5个字节数据的情况。调试了两天,没找到原因。将这个串口的中断优先级改到0了,其他优先级都改成1了,用的轮询接受发送模式。 问题可能找到了,哎,如果是真的,就太搞笑了。 分享下,让别人少走弯路。 储小勇_526 发表于 2024-6-5 10:56分享下,让别人少走弯路。
还在验证中。几个小时不出错,不一定就好了。 储小勇_526 发表于 2024-6-5 10:56
分享下,让别人少走弯路。
本来以为堆栈加倍,是改善了问题呢,但是后续程序添加进循环后,还是出现这个问题。 难道是主程序里的循环程序太长了吗?执行一次要几百毫秒。MODBUS是1秒读一次。两个从机。 如果一个从机循环里程序少,就都不会出现问题。 mbutterfly 发表于 2024-6-5 15:22
难道是主程序里的循环程序太长了吗?执行一次要几百毫秒。MODBUS是1秒读一次。两个从机。 如果一个从机循环 ...
我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。 储小勇_526 发表于 2024-6-5 17:11
我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。 ...
多个从机吗?一次发送多少字节? 储小勇_526 发表于 2024-6-5 17:11
我最近也开发了Modbus TCP/IP,不过我负责的是内部总线CAN部分,用的freeRTOS,没出现类似的问题。 ...
几个从机,一次发送多少字节? 走的啥总线,485还是纯uart? 32021724 发表于 2024-6-6 08:51
走的啥总线,485还是纯uart?
STM32的UART口,接的485芯片SP3485EN,之后板子差不多是走差分线吧,板子上线路很短。之后是双绞线,3个板子的从站最后并到一起。 你是串口中断接收从机数据吗?是第一次发送数据出错还是接收从机数据再次发送出错 呐咯密密 发表于 2024-6-12 10:07
你是串口中断接收从机数据吗?是第一次发送数据出错还是接收从机数据再次发送出错 ...
数据发不全的原因,最后发现,至少有一部分原因是因为上位机软件用的LABVIEW,遇到0x0A就截止不收了。这种情况用MODBUS POLL就能接收。至于MODBUS POLL接收不全,为什么只接收5个字节,不多不少,估计还是MODBUS POLL和硬件匹配的问题,据说换个USB转485的线就会好。 mbutterfly 发表于 2024-6-7 16:20
STM32的UART口,接的485芯片SP3485EN,之后板子差不多是走差分线吧,板子上线路很短。之后是双绞线,3个 ...
可以尝试在485线上挂一根USB转485,分析一下485线上到底在发生什么,比如是不是有2个设备同时在发数据,或者数据正好在5字节的时候停了,还是说数据其实发完了,但是正好5字节后485电平变低了,导致末端收不到数据,这种串口和485的通信问题,先抓数据,从线上的实际现象分析问题,因为等数据过了mcu的uart再过freemodbus,往往看到的就不是真相了 32021724 发表于 2024-6-26 08:55
可以尝试在485线上挂一根USB转485,分析一下485线上到底在发生什么,比如是不是有2个设备同时在发数据, ...
嗯,可以说,我走了弯路。没有从根本上去解决问题。以为靠猜测和百度就很好解决。这个看到别人有说用一个分析波形的工具的。你说的线上挂一根USB转485,怎么挂呢,这个USB转485要接到电脑上?
页:
[1]