MQTT 使用 TC3_IoT_Communication;与 MQTT 代理没有连接,但没有错误
MQTT using TC3_IoT_Communication; no connection with MQTT broker but there is no error
我的电脑上有一个 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
希望有人能帮我找出问题所在,以及如何解决这个问题。
确保您的 Beckhoff 运行时具有激活的 mqtt 许可证和配置。
尝试连接到 public broker。如果有效,那一定是你的服务器。
它对我有用,我正在使用您的相同代码。
仔细检查您的 mqtt 许可证并确保它没有过期。
Screenshot of my connection to public server with your code
问题出在服务器防火墙,问题已解决。我仍然无法连接 public MQTT 代理,但我可以连接服务器上我自己的 MQTT 代理,这正是我真正想要的:)。
我的问题是由于安装了 squid。我是为另一个项目安装的。也许防火墙会导致这样的问题。
我的电脑上有一个 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
希望有人能帮我找出问题所在,以及如何解决这个问题。
确保您的 Beckhoff 运行时具有激活的 mqtt 许可证和配置。
尝试连接到 public broker。如果有效,那一定是你的服务器。
它对我有用,我正在使用您的相同代码。 仔细检查您的 mqtt 许可证并确保它没有过期。
Screenshot of my connection to public server with your code
问题出在服务器防火墙,问题已解决。我仍然无法连接 public MQTT 代理,但我可以连接服务器上我自己的 MQTT 代理,这正是我真正想要的:)。
我的问题是由于安装了 squid。我是为另一个项目安装的。也许防火墙会导致这样的问题。