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. 的商标。所有其他商标均为其各自所有者的财产。