Qt Quick ウォーターポンプ
OPC UA サーバーと対話し、シンプルなウォーターポンプ機の QML ベースの HMI を構築します。
Qt Quick Water Pump の例では、Qt OPC UA QML API を使って OPC UA サーバとやりとりし、シンプルな機械の QML ベースの HMI を構築する方法を示します。
サーバーの構築
Water Pump のサンプルを使用する前に、Water Pump Simulation Server をビルドする必要があります。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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。