打印

freemodbus的调试问题

[复制链接]
3329|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bearfw|  楼主 | 2024-11-6 16:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bearfw 于 2024-11-6 17:03 编辑

最近在使用freemodbus的时候遇到了些问题与大家分享

freemodbus的波特率问题
在移植完freemodbus之后,尝试了一下进行通讯,发现上位机先是显示Timeout error,根据网上的建议,将#define RT_TICK_PER_SECOND这个值调整到1000,但是依旧没有效果(这里的CPU主频是72Mhz)。
在看到一篇帖子说可能是usTimerT35_50us的问题时间过快导致来不及判断于是我将他调大,直接给了350,上位机显示Checksum error,这个是校验错误
然后又看了一个帖子,说在vMBPortSerialEnavle(BOOL xRxEnable ,BOOL xTxEnable)这个函数中,切换485控制引脚的时候要进行时间延时,我添加了rt_hw_us_delay();这个函数进行延时,发现可以读到寄存器了,但是这时候我将读取寄存器的个数变成10个,马上又变成了Checksum error。
在后面突然灵感一闪,怎么只有写的时候有延时,读的时候没有延时,要切换引脚,两个都要有延时

加完之后,把之前的usTimerT35_50u调回来,不需要延迟那么多,然后10个寄存器也能读写了。

39897672b2f292a6ed.png (13.78 KB )

39897672b2f292a6ed.png

使用特权

评论回复
沙发
tpgf| | 2025-1-4 15:52 | 只看该作者
FreeModbus是一个开源的Modbus协议栈,专门针对嵌入式系统设计,提供免费且可自由使用的通用Modbus通信解决方案

使用特权

评论回复
板凳
Zuocidian| | 2025-1-5 09:13 | 只看该作者
FreeModbus遵循BSD许可证,允许用户将其应用于商业环境中

使用特权

评论回复
地板
Puchou| | 2025-1-5 12:09 | 只看该作者
它支持接收缓冲区满和发送缓存区空中断

使用特权

评论回复
5
Xiashiqi| | 2025-1-5 15:40 | 只看该作者
它支持接收缓冲区满和发送缓存区空中断

使用特权

评论回复
6
小海师| | 2025-1-6 12:59 | 只看该作者
它仅需一个基本的事件队列或在操作系统支持下创建一个独立的任务来管理Modbus通信周期

使用特权

评论回复
7
Haizangwang| | 2025-1-6 16:26 | 只看该作者
能够产生RTU传输所需的t3.5字符超时定时器的时钟

使用特权

评论回复
8
两只袜子| | 2025-2-24 15:03 | 只看该作者
根据波特率和字符位数重新计算usTimerT35_50us的值。

使用特权

评论回复
9
jcky001| | 2025-2-24 15:03 | 只看该作者
在切换485控制引脚时,在发送和接收方向上都添加了适当的延时。延时的具体值可能需要根据实际硬件和通信速率进行调整。

使用特权

评论回复
10
cr315| | 2025-2-24 15:03 | 只看该作者
检查硬件连接和配置

使用特权

评论回复
11
guijial511| | 2025-2-24 20:34 | 只看该作者
freemodbus和标准modbus什么区别呢?

使用特权

评论回复
12
xdvca| | 2025-2-27 13:22 | 只看该作者
如果你的 CPU 主频为 72 MHz,时钟周期为 13.89ns,那么 50 微秒的延迟需要适当调整时钟和定时器配置。

使用特权

评论回复
13
xdvca| | 2025-2-27 13:32 | 只看该作者
你做得对,应该根据实际需要适当增加延时。

使用特权

评论回复
14
gouguoccc| | 2025-2-27 21:42 | 只看该作者
为什么不用标准modbus协议呢?

使用特权

评论回复
15
bearfw|  楼主 | 2025-2-28 14:09 | 只看该作者
gouguoccc 发表于 2025-2-27 21:42
为什么不用标准modbus协议呢?

emm,freemodbus也是标准的协议啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

0

粉丝