0

我的计算机上运行了一个 mqtt 代理,我可以使用 twincat 连接到它。我将 mqtt 代理移动到同一网络上的服务器。

我可以使用 Node-RED 连接它(因此主机名、主机端口、用户名和密码必须正确),但 TwinCAT 无法连接到它。这是我用来连接到我的 MQTT 代理的代码。

我的变量:

fbMqttClient    : FB_IotMqttClient; // MQTT client
bSetParameter   : BOOL := TRUE; // set parameters once at start up
bConnect    : BOOL := TRUE; // if TRUE it will trigger MQTT client cyclically

我的代码:

// set parameters once when connecting to the mqtt broker
IF bSetParameter THEN
    bSetParameter               := FALSE;
    fbMqttClient.sHostName      := '172.16.1.51';
    fbMqttClient.nHostPort      := 1883;
    fbMqttClient.sTopicPrefix   := ''; 
    fbMqttClient.sUserName      := 'User';
    fbMqttClient.sUserPassword  := 'TopSecret'; 
    fbMqttClient.ipMessageQueue := fbMessageQueue;
END_IF

// MQTT client must be triggered cyclically
fbMqttClient.Execute(bConnect);

我希望在我的代理和 TwinCAT 之间建立联系。相反,我没有连接,我从 fbMqttClient 获取这些数据:

bError = FALSE <br>
hrErrorCode = 16#00000001 <br>
eConnectionState = MQTT_ERR_NO_CONN

我希望有人可以帮助我找出问题所在以及如何解决此问题。

4

5 回答 5

0

确保您在 Beckhoff 运行时具有激活的 mqtt 许可证和配置。

于 2019-05-24T13:48:23.250 回答
0

尝试连接到公共代理。如果它有效,它必须是您的服务器。

于 2019-05-24T14:12:59.887 回答
0

它对我有用,我正在使用您的相同代码。仔细检查您的 mqtt 许可证并确保它没有过期。

我使用您的代码连接到公共服务器的屏幕截图

于 2019-05-24T14:40:12.007 回答
0

问题是服务器上的防火墙,问题已解决。我仍然无法连接公共 MQTT 代理,但我可以连接服务器上我自己的 MQTT 代理,这正是我真正想要的 :)。

于 2019-05-29T07:49:35.763 回答
0

我的问题是由于安装了鱿鱼。我是为另一个项目安装的。也许防火墙会导致这样的问题。

于 2020-06-06T14:24:28.337 回答