RT-Thread-packages / wiznet

WIZnet TCP/IP chips (such as W5500/W5100..) SAL framework implement.
Apache License 2.0
49 stars 35 forks source link

W5500+libmodbus系统不稳定,运行一段时间后断开就再也无法连接上了 #44

Closed zhigangbox closed 4 years ago

zhigangbox commented 4 years ago

1 RTT的SAL说明里面“目前 SAL 组件支持的协议栈或网络实现类型有:lwIP 协议栈、AT Socket 协议栈、WIZnet 硬件 TCP/IP 协议栈。”,但是关于怎么具体对接没有说明。 2 经过自己一些痛苦摸索,程序可以进行mdobusTCP采集,但过一段时间就出现无法再连接上。各种方法都试了还不行,和libmodbus作者也沟通了,人家说人家的系统已经跑了几个月了没任何问题。 3 那么这块究竟是什么问题?希望wiznet软件包作者看到能沟通一下,不然这个项目真要黄了,项目进入小批,发现这个大一个bug,真不知道该咋弄了,看到请联系我,谢谢18100336192或2730122869

aozima commented 4 years ago

不敢联系你哈,自己的项目都做不完,实在没多的精力。 另外也没用过libmodbus和W5500。

说下如果我遇到这样的问题,该怎么查哈。

.再也无法连接上了

  • 谁连接谁?
  • W5500是以太网,那此时以太网上面的数据包是怎样的?
  • 如果是PC连接过来,那PC上面直接Wireshark抓就行了
  • 如果是其它设备连接过来,可能要串个抓包交换机
  • W5500是内置协议栈,那有新连接又连接不上时,此时dump出所有寄存器逐个位分析。结合数据手册。
  • 百度了下,W5500和MCU是SPI通讯吧?那SPI给接上逻辑分析仪,还有中断脚。
  • 比如连接时看看INT引脚和SPI上面有没通讯? 数据是什么?这又代表什么?

再来看软件的问题

以上仅是举个例子,相信楼主做好了这些分析,能得到不少的收获,或是发问题时,列了这些数据和分析,也能引起别人的共鸣。别人来回你的贴子帮你分析,也是希望能共同学习。而不是帮你把项目给做了。

xiangxistu commented 4 years ago

一段时间,是多久的时间?

winzet 的软件包已经实现了 DHCP 功能,路由器一般会对连接时间有限制。不知道这个连接一段时间就会断开,这段时间是多久?

w5500 是硬件协议栈,对可以连接的 socket 数量有限制。连接不上的情况,具体是出现在 socket 建立阶段,还是连接阶段?返回的错误连接,追踪到 w5500 返回的错误,以便加以解决。

Sal 层是对 socket 加以抽象,方便进行lwIP 协议栈、AT Socket 协议栈、WIZnet 硬件 TCP/IP 协议栈三者之间的切换,这里问题倒是不大。

主要是考虑,过一段时间,是什么时间?winzet 使用时,用得是静态 IP 还是 DHCP 的方式?

zhigangbox commented 4 years ago

WINET用的是静态IP,网页客户端以短连接形式每分钟采集一次,最大客户端熟练设置为2,超时10s,客户端存活时间timeval是1s,,这样大概10多分钟后串口日志报DFS fd new is failed! Could not found an empty fd entry的错误。后面就连不上了 。 所以对这个问题很是苦恼,真不知道该咋办了