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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。