Qt クイックウォーターポンプ

OPC UA サーバーと対話し、シンプルなウォーターポンプマシンの QML ベースの HMI を構築します。

Qt Quick Water Pump の例では、Qt OPC UA QML API を使って OPC UA サーバとやりとりし、シンプルな機械の QML ベースの HMI を構築する方法を示します。

サーバーの構築

ウォーターポンプの例を使用する前に、ウォーターポンプシミュレーションサーバをビルドする必要があります。QtCreator で開くか、通常通りターミナルからビルドしてください。

シミュレーション

このサンプルに含まれるOPC UAサーバーは、2つのタンク、水ポンプ、バルブを含む機械のシミュレーションを実行します。水は1つ目のタンクから2つ目のタンクに汲み上げられ、バルブを開くことで2つ目のタンクから流されます。どちらの操作にも、ユーザーが設定可能なセットポイントがあり、2 番目のタンクに水を汲み上げたり、2 番目のタンクから水を流したりする量を制御します。

サーバーには以下のノードが存在する:

NodeId機能
ns=2;s=Machineマシンのメソッドノードと変数ノードを含むフォルダ
ns=2;s=Machine.Stateマシンの状態
ns=2;s=Machine.Tank1.PercentFilled最初のタンクの現在の充填状態
ns=2;s=Machine.Tank2.PercentFilled(充填率2つ目のタンクの現在の充填状態
ns=2;s=Machine.Tank2.TargetPercentポンピングとフラッシングの設定値
ns=2;s=Machine.Tank2.ValveState第2タンクのバルブの状態
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 コンポーネントのインスタンスである2つのタンクを持っています。

プロパティ

マシンアイテムは、すべてのプロパティとサブアイテムをプロパティとして公開します。

    ...
    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によって自動的に処理されます。

例えば、2つ目のタンクを洗浄するボタンは、バックエンドがサーバーに接続され、マシンがアイドルで、タンクレベルが設定値を超えている場合にのみ有効になります。クリックすると、flushTank2() メソッドがサーバーで呼び出されます。

    Tank2Unit {
        flushButtonEnabled: connection.connected && machine.state === Machine.MachineState.Idle
                            && machine.tank2.percentFilled > machine.tank2.targetPercent
        percentFilled: machine.tank2.percentFilled
        valveState: machine.tank2valveState

使用方法

サーバーは HMI アプリケーションによって自動的に起動されます。Connect ボタンをクリックしてサーバーに接続した後、スライダーをドラッグして設定値を設定し、Start をクリックして最初のタンクから 2 番目のタンクへの送水を開始します。第二タンクの現在値より低い設定値を設定した後、Flush をクリックするとバルブが開く。

水が残っていない場合は、Reset simulation をクリックして最初のタンクに水を補給する。

ファイル:

ウォーターポンプも参照してください

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。