Qt Modbus with TCP/IP 连接

在这篇博客中,我想提供一个小型的Qt Quick应用程序(qml)作为通过TCP / IP的Modbus连接的示例。 在Qt示例中,我只找到了Modbus连接的QWidget示例,在最近为此创建了一个Qt Quick应用程序之后,我想提供它的精简版本作为示例。

实验室

为了能够测试应用程序,您需要一个 Modbus 服务器或“模拟”此类服务器的程序。为此,我使用了 http://www.apphugs.com/modbus-server.html 的“Modbus Server Pro”。这使您可以运行所需的所有方案。

Qt应用程序

首先:由于在这里发布所有代码太过分,我将以 ZIP 文件的形式提供整个代码(见下文)。

设置

首先,我创建了一个包含连接选项的简单 SettingsDialog 类。在简化的示例中,这只是“modbusServerUrl”,“responseTime”和“numberOfRetries”。

    struct Settings {
        QString modbusServerUrl = "192.168.2.86:1502";
        int responseTime = 1000;
        int numberOfRetries = 3;
    };

我认为这些名称是不言自明的。

  • modbusServerUrl = TCP/IP 号码加上 Modbus 服务器端口,例如 192.168.2.86:502
  • 响应时间 = 等待来自服务器的响应的最长时间(毫秒)
  • 重试次数 = 将接受的失败尝试次数。

申请

onConnectButtonClicked()

onConnectButtonClicked() 函数从设置文件中读取连接数据,并建立与 Modbus 服务器的连接。

onReadButtonClicked()

使用onReadButtonClicked(),然后启动各种readRequests,并从Modbus服务器读取相应的寄存器。返回的值通过发射信号作为Q_PROPERTY传递给 qml,并在用户界面中更新。

写入函数

函数onWriteButtonClicked(int writeregister)用于写入Modbus服务器寄存器。这里设想可以通过变量“writeregister”在Modbus服务器上写入不同的寄存器。

您可以在此处下载该应用程序 ix-modbus-tcp-example.zip