5 基于w5500的libmodbus复位后modbusTCP的监听一直失败

发布于 2020-09-17 10:58:06

基于W5500的libmodbus在用一个wlan&4个LAN的网关上使用没问题(设备和WEB程序的电脑都连接到LAN,一条网线从路由到WLAN)。但经理要拿给客户展示,希望设备直接和电脑用网线连接,但不成功;都直接接到网关(与前面不同的是没有从路由到WLAN的网线)也不行。

后来我将//INIT_ENV_EXPORT(wiz_init);注释掉在modbusTCP线程前显示调用wiz_init(),也不成功(现象与上面相同:可以ping通设备,但是串口一直打印[如图一)下面日志信息,所以modbusTCP网页客户端无法访问)。猜想原因有2个:1 eerom写通讯参数不成功(但是可以ping通啊)2 因为w5500和modbusTCP的初始化和线程优先级的关系导致,在modbusTCP建立socket时w5500还没初始化好,所以一直报错;但后面W5500初始化好了,所以可以ping通。

问题:
1 为何有路由才行,直接接交换机或和电脑直通modbutcp就不成功?
2 是不是真的是以为这个初始化顺序问题导致此种情况?
3 只要前端有路由器都能成功(都直接接到路由器的LAN后;或者都接到二层交换机上;或者接到三层交换机上),没有路由器就不行(modbusTCP可以通讯,重启后进入boot,网络通讯就失败)
4跟踪发现创建sokcet的状态,为何一开始就是0x22
image.png

查看更多

关注者
0
被浏览
844
6 个回答
aozima
aozima 2020-09-17
拒绝白嫖,拒绝键盘侠!

路由器里面有DHCP服务器

和 5500 及 modbus 没关系

CrisJay
CrisJay 认证专家 2020-09-18

你所说的日志应该指的是 Mb_TCP_thread restart for listen server_fd<0 说明你的modbus tcp服务没有起来,而且是失败在modbus_tcp_listen上。你可以去modbus_tcp_listen里看看为什么没有监听成功。

杰瑞鼠
杰瑞鼠 2020-09-21

image.png

跟踪发现重启后创建socket失败,但为何加在路由器上没问题?

xiangxistu
xiangxistu 2020-09-25
  1. syswork 这个是一个社区小伙伴提供的系统软件包 -> 软件包地址。应该是线程运行状态不符合规范导致的系统复位。
  2. 网线分为直通线与交叉线;现在很多设备都能自动识别线序了,不过仍然有设备应该不支持。路由,联网设备,交换机三者直接的连线规则可以参考如下规则
  3. winzet 在最新的 master 中已经实现了网线热插拔。wiz_init 初始化时间比较长,感觉可以优雅的避过这段初始化时间。另外,我记得初始化时间长,是因为开启了DHCP, 不过看你的描述使用得静态 IP ;又有点不符合描述。

希望对你帮助,有问题,还可以加 QQ 群: 749347156

haitianshenyun
haitianshenyun 2020-09-27

我怀疑是否是初始化判断网卡是否可以是up状态时,创建udp没正常关闭

adminmin
adminmin 2021-03-23

wiznet这个软件包直接让我崩溃,项目卡着走不动

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览