[工业自动化] GD32F450 实现 Modbus‑TCP,以太网报文丢包偶发通信超时

[复制链接]
27|5
初级工程渣 发表于 2026-11-4 16:01 | 显示全部楼层 |阅读模式
用 GD32F450 内置 ETH 外设做 Modbus‑TCP 工业从站,短数据包通信稳定,大数据量连续读写寄存器时偶发丢包,上位机报通信超时。硬件 PHY 电路、差分阻抗检查完毕。
LWIP 使用官方移植 demo,未做裁剪。怀疑 ETH DMA 描述符配置、LWIP 内存池大小不足。有没有工程实际调参经验?是否需要调整接收缓冲区、TCP 窗口大小?
中国龙芯CDX 发表于 2026-11-4 21:33 | 显示全部楼层
Modbus-TCP丢包先查接收缓冲和中断优先级,再确认RMII时钟与PHY配置,重传和超时阈值也要优化。
OKAKAKO 发表于 2026-11-4 22:33 | 显示全部楼层
丢包多与接收缓冲不足或中断优先级有关,建议加大DMA接收环形缓冲,UDP广播风暴时按端口过滤,超时重试机制也要加上。
OKAKAKO 发表于 2026-11-4 22:33 | 显示全部楼层

丢包偶发建议重点查TCP窗口与重传参数,Modbus轮询间隔与超时要匹配,接收缓冲适当加

本帖最后由 OKAKAKO 于 2026-11-4 22:44 编辑

丢包偶发建议重点查TCP窗口与重传参数,Modbus轮询间隔与超时要匹配,接收缓冲适当加大,广播报文多时按IP过滤。
小夏天的大西瓜 发表于 2026-11-4 22:43 | 显示全部楼层
偶发丢包先查DMA描述符回收和缓冲深度,再看ARP老化与重传超时设置,多半是缓冲不够。
szt1993 发表于 2026-11-4 23:14 | 显示全部楼层
大包丢多是描述符和内存池不够,把PBUF_POOL_SIZE和TCP发送窗口调大,描述符改成接收优先。另外收包别在中断里拷贝整帧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

853

帖子

1

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