Qt Quick 水泵

与 OPC UA 服务器交互,为一台简单的水泵机器构建基于 QML 的人机界面。

Qt Qml API 在 Qt 6.9 中已被标记为废弃,并将在未来版本中移除。

Qt Quick 水泵示例展示了如何使用 QML API 与 OPC UA 服务器交互,为简单的机器建立基于 QML 的人机界面。Qt OPC UA

构建服务器

在使用水泵示例之前,您需要构建水泵模拟服务器。你可以在 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=机器名称用于显示的机器名称,可由人工读取
ns=2;s=Machine.Start调用此方法启动泵
ns=2;s=Machine.Stop调用此方法停止泵
ns=2;s=Machine.FlushTank2调用此方法冲洗水箱 2
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

使用方法

服务器由人机界面应用程序自动启动。单击Connect 按钮连接服务器后,拖动滑块设置设定点,然后单击Start 开始将水从第一个水箱抽到第二个水箱。设置的设定点低于第二个水箱的当前值后,点击Flush 即可打开阀门。

如果没有水了,点击Reset simulation 为第一个水箱注水。

文件:

另请参阅 水泵

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.