|
<< 点击显示目录 >> 主页 MQTT使用助手 > 20_贝加莱AR作为订阅者与发布者 > 21_基于libemqtt的客户端 > 10_本地局域网下多设备实现MQTT > 00_ mosquitto中介服务器本地搭建异常处理方式 |
目录
•现象
•解决方式
•诊断方法
▪PC 的 1883 端口是否打开
▪Mosquitto 的调试信息输出
现象
在 10_本地局域网下多设备实现MQTT 文档中,存在使用一台电脑,在电脑上搭建mosquitto中介服务器,但其他设备连不上此电脑的问题
PLC 无法 ping 通 MQTT 服务器 1883 端口的问题,并给出把 PLC 和 PC 都接入公司网络的方案,但在实际测试过程中,即使 PLC 和 PC 都接入公司网络,但是,PLC 无法 ping 通 MQTT 服务 器 1883 端口的问题依然存在,导致和 MQTT 服务器的通讯无法建立
此时 AS 程序监控 TcpClientFub 的 status 值为 32608,和 MQTT server 无法建立 TCP 连接。
在 PC 机上打开 cmd 执行 netstat 命令,执行的结果里面没有看到本机的 TCP 协议的 1883 端口建立的结果。
解决方式
提示要在 mosquitto 的配置文件里面去配置端口号以及设置无需用户名和密码登录 mosquitto 服务器。具体修改如下:
首先在 PC 机上找到安装 mosquitto 的安装目录,如下图找到 mosquitto.conf 文件。

接下来拷贝这个文件到 C 盘之外的其它地方,使用记事本或者写字板去打开拷贝出来的 mosquitto.conf 文件,然后如下图二和图三图示说明去修改配置文件里面的 Listeners 段和 Security 段的相应行内容并保存。


修改好后,再把修改后的 mosquitto.conf 文件去覆盖 mosquitto 安装目录下的相同文件名即可。
之后,再 如下图去重启 mosquitto broker 的服务,这样 PLC 和 PC 之间的端口为 1883 的 TCP 连接就能建立起来。

诊断方法
如果做了上面的修改,但是在 AS 程序里面先设置 step=5 建立手动连接后,再去设置 doConnect=1,理 论上此时 MQTT_Connected 值就会自动从 FALSE 变成 TRUE。不行的话,可以通过下面几种方法去辅助判 断问题。
要查看 mosquitto 服务的 1883 端口是否打开,可以通过命令 netstat 去查看结果,如下图五,如果 1883 端口打开,会有下图五红色圈选的这一行结果。没有这一行,那说明 1883 端口没有打开,需要去检查 mosquitto.conf 配置文件端口设置这里是否修改正确。

对于 mosquitto 服务端,建议通过命令行的方式去启动 mosquitto 服务并打印相应的信息,这样有助于问 题的判断和调试。建议如下图进入到 mosquitto 的安装目录去执行相应的命令。
下图为 PLC 和 mosquitto 服务建立连接的过程。

下图为 PLC 端进行订阅和循环发布时的输出信息
