2

OPC UA クライアントを作成するために、Milo プロジェクトを使用して OPC UA プロジェクトを開始しました。私はまだOPC UAの初心者です。現在、特定のノードのデータ変更後に複数のノードから値を読み取るためのベスト プラクティスを探しています。

情報モデルは次のようになります

私のサーバーには、この RfidSensorType のオブジェクトがいくつかあります。クライアントは、CurrentAtTag ノードでサブスクリプションを作成して、データの変更をリッスンします。

私の質問: CurrentAtTag の値が変更されると、UaMonitoredItem と CurrentAtTag の DataValue を含むコールバック関数がクライアントで呼び出されます。私のアプリケーションでは、その時点で変更される Station、IOLPort、および CurrentValue の値も (同時に) 処理する必要があります。CurrentAtTag からのコールバック内でこれらの値にアクセスするにはどうすればよいですか?

私の唯一の解決策は、そのコールバック内で同期読み取り要求を使用することです->それは正当なアプローチですか?

私の調査: 1) TriggeringService TriggerigService が存在することを確認しました。これは、特定のノードが値を変更した場合にのみアイテムを監視してレポートを送信します。問題: これにより、複数のコールバックが呼び出され、1 つだけ noz が呼び出されます。それらをさらに処理するには、すべての情報が同時に必要です。

2) イベント監視 イベント監視では、イベント通知ごとに返される「イベント フィールド」を選択できます。CurrentAtTag、Station、IOLPort、および CurrentValue を選択できるかどうかわかりません...

4

1 に答える 1

1

サーバーの ServerStatus (ノード ID "i=2256") をサブスクライブできるように、「RfidSensor_Station1」に対応するノード ID をサブスクライブできるはずです。サーバーは、ExtensionObject としてエンコードされたタイプ「RfidSensorType」のデータを含む PublishResponse を送信します。秘訣は、ExtensionObject をデコードすることです。

Kevin が修正したように、「RfidSensor_Station1」はノード クラス「Variable」ではないため、値属性がなく、ノードのデータ変更を監視できません。PLC を使用している場合は、センサーのすべてのプロパティを文字列またはバイト配列に結合することがあります。次に、新しい変数を監視し、クライアントで文字列を解析します。

または、説明したように ReadRequest を作成することもできます。それはうまくいきます。

于 2016-10-13T23:54:46.803 に答える