在这篇博客中,我想提供一个小型的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 。