0

我编写了一段代码来设置 MQTT 通信,非常类似于https://infosys.beckhoff.com/english.php?content=../content/1033/tf6701_tc3_iot_communication_mqtt/54043198920281355.html&id=并使用虚拟可编程逻辑控制器。它完美地工作。现在我试图在 Beckhoff PLC(CX5010)上运行相同的代码。在这个 PLC 上运行 windows 嵌入式 CE 6.0。

我遇到的第一个问题是,当我激活配置并在运行模式下重新启动 TwinCAT 时,它仍然处于配置模式。我在我的主程序中取消了我的 MQTT 程序的注释,然后它在激活配置后确实以运行模式启动。当评论 MQTT 程序时,我在主程序中只有一个计数器(用于测试 PLC 是否正在运行)。

因此,我尝试的下一件事是在运行模式下重新启动 PLC,同时注释 MQTT 程序。当 PLC 在运行模式下重新启动时,我在 main 中取消注释 MQTT 程序并通过下载登录我收到错误“'TcSysSrv' (10000): Error started TCIOTDRIVERSW32.dll server. Win32 Error(0x0000007e).”。我的 MQTT 程序的代码如下所示。

PROGRAM PrgMqtt
VAR
    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
END_VAR

// 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.ipMessageQueue := fbMessageQueue;
END_IF

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

最奇怪的是,代码在登录后实际上运行(它没有连接到 MQTT 代理,但它仍然运行)。我现在很困惑。如何更新 IoT 驱动程序?

4

1 回答 1

0

我通过更新 Windows Embedded 和 TwinCAT 3 解决了这个问题。

于 2019-06-04T13:55:10.837 回答