Qt 快速水泵
与 OPC UA 服务器交互以构建简单水泵机器的基于 QML 的人机界面。
Qt 快速水泵 示例展示了如何使用 Qt OPC UA QML API 与 OPC UA 服务器交互以构建简单机器的基于 QML 的人机界面。
构建服务器
在使用 Water Pump 示例之前,您需要构建水泵模拟服务器。您可以使用 QtCreator 或者从终端以通常方式打开和构建。
模拟
本示例中包含的 OPC UA 服务器运行一个包含两个水箱、一个水泵和一个阀门机器的模拟。可以通过打开阀门将水从第一个水箱泵入第二个水箱,然后从第二个水箱中排出。这两个操作都有一个用户可配置的设定点,它控制向第二个水箱泵入或从第二个水箱排出的水量。
服务器上存在以下节点:
节点 ID | 功能 |
---|---|
ns=2;s=Machine | 包含机器方法和变量节点文件夹 |
ns=2;s=Machine.State | 机器的状态 |
ns=2;s=Machine.Tank1.PercentFilled | 第一个水箱的当前填充状态 |
ns=2;s=Machine.Tank2.PercentFilled | 第二个水箱的当前填充状态 |
ns=2;s=Machine.Tank2.TargetPercent | 泵入和排水的设定点 |
ns=2;s=Machine.Tank2.ValveState | 第二个水箱阀门的状态 |
ns=2;s=Machine.Designation | 为显示目的的人可读的机器名称 |
ns=2;s=Machine.Start | 调用此方法以启动泵 |
ns=2;s=Machine.Stop | 调用此方法以停止泵 |
ns=2;s=Machine.FlushTank2 | 调用此方法以冲洗第二个水箱 |
ns=2;s=Machine.Reset | 调用此方法以重置模拟 |
实现
本示例使用 QML 项目来读取和写入值以及方法调用。所有操作都是异步的,并在 QML 背景中处理。
一个 QML 项目表示机器及其组件。此项目没有图形界面,仅提供对机器属性的访问。它有两个水箱,是单独的 Tank
组件的实例。
属性
机器项目将所有属性和子项作为属性公开。
... readonly property alias tank1: tank1 readonly property alias tank2: tank2 readonly property alias state: machineState.value readonly property alias tank2PercentFilled: tank2.percentFilled readonly property alias tank2valveState: tank2.valveState readonly property alias designation: designation.value property alias resetMethod: resetMethod property alias startMethod: startMethod property alias stopMethod: stopMethod property alias flushMethod: flushMethod ...
异步处理程序
API 的异步部分自动由 QML 处理,因为默认情况下,对于每个属性更改都会发出信号。
例如,只有当后端连接到服务器、机器处于空闲状态并且罐内液体液位高于设定点时,清除第二个罐的按钮才可用。单击后,在服务器上调用 flushTank2()
方法。
Tank2Unit { flushButtonEnabled: connection.connected && machine.state === Machine.MachineState.Idle && machine.tank2.percentFilled > machine.tank2.targetPercent percentFilled: machine.tank2.percentFilled valveState: machine.tank2valveState
用法
服务器由 HMI 应用程序自动启动。通过单击 连接 按钮连接到服务器后,拉动滑动条设置设定点,然后单击 开始 以从第一个罐抽取水至第二个罐。设置低于第二个罐当前值的设定点后,点击 冲洗 打开阀门。
如果没有剩余的水,单击 重置模拟 以重新填充第一个罐。
文件
另请参阅 水泵。
© 2024 The Qt Company Ltd. 本文档中的贡献文档的版权归其各自的拥有者。本文档是在 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 的 terms下提供的。Qt 及其相应标志是芬兰和/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。