You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TwinCAT与Mosquitto MQTT无法连接问题求助

TwinCAT FB_IotMqttClient 无法连接 Mosquitto 2.0.18 Broker 排查方案

问题背景

已部署 Mosquitto 2.0.18 broker,配置了listener 1883和allow_anonymous true;此前通过WS协议跨PC实现TwinCAT与broker的消息收发正常,但使用FB_IotMqttClient功能块无法建立连接,且无报错提示,操作已参照Beckhoff官方教程第13-15页执行。


基础配置校验

  • 确认Mosquitto配置生效:

    1. 重启Mosquitto服务后,执行mosquitto_sub -h <BrokerIP> -p 1883 -t "#"订阅所有主题,同时用mosquitto_pub -h <BrokerIP> -p 1883 -t "test" -m "hello"发送测试消息,验证broker的1883端口是否正常收发。若此步骤失效,优先排查防火墙拦截、端口占用问题。
    2. 查看Mosquitto日志(Windows默认路径:C:\Program Files\Mosquitto\logs\mosquitto.log),搜索New connection条目,确认TwinCAT端IP是否发起过连接请求——若无相关记录,说明TwinCAT的连接请求未到达broker。
  • TwinCAT侧网络与参数校验:

    1. 验证TwinCAT运行PC与broker的网络连通性:执行ping <BrokerIP>,再用telnet <BrokerIP> 1883测试端口是否可达。
    2. 检查FB_IotMqttClient核心参数:
      • sBrokerAddress:格式需为tcp://<BrokerIP>:1883(使用TCP协议,而非WS),同一PC部署broker可填tcp://localhost:1883
      • sClientId:需保证唯一,避免与其他MQTT客户端重复
      • bConnect:需持续置为TRUE,功能块依赖此信号触发连接
      • udiKeepAliveInterval:建议设为60秒,不要设为0

功能块状态与日志排查

  • 查看FB_IotMqttClient的eState状态码:对照Beckhoff文档确认当前状态,若始终停留在CONNECTING,可能是协议版本不兼容。
  • 启用TwinCAT IoT日志:在工程中依次打开PLC -> Properties -> IoT -> Logging,开启Debug级别日志,运行程序后查看日志文件,搜索MQTT连接相关细节,可能找到隐藏错误信息。

权限与兼容性检查

  • Mosquitto 2.x权限补充配置:
    Mosquitto 2.0+默认访问控制严格,即使开启allow_anonymous true,也需确保listener配置无IP限制。修改配置文件:
    listener 1883 0.0.0.0
    allow_anonymous true
    
    保存后重启Mosquitto服务。
  • MQTT协议版本匹配:检查FB_IotMqttClient的eMqttVersion参数,设为MQTT_V3_1_1(Mosquitto 2.x默认支持),除非明确配置broker支持MQTTv5。

程序逻辑检查

  • 确认FB_IotMqttClient的调用周期:需放在循环OB(如OB1)中每个周期调用,不能仅单次触发。
  • 查看变量表细节:检查bConnected、eError、sErrorInfo的实时值,sErrorInfo可能包含功能块未显性抛出的错误描述。

内容的提问来源于stack exchange,提问作者UpSiLoN Dog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:12:51