0

OPC-UA .NetスタックでOPC-UAを学んでいます。サブスクライブとデータ送信の例は、サーバー側で 1 秒の更新サイクルで明示的に作成されます。つまり、変数の値が 1 秒ごとに更新され、残り (通知クライアント) は OPC-UA スタックによって処理されます。ループは手動で作成されるため、サブスクリプションがまったくなくても機能します。

Ok。しかし、私はそれを少し逆にしたいと思います-変数に静的な値を設定しないでください、この手動更新サイクルに依存しないでください。クライアントに。

変数にハンドラーを追加OnReadValueし、クライアントがその値をサブスクライブすると、トリガーされ、値が計算されて返されます。私が望んでいたこととほとんど同じです。問題は、それが一しか行われないことです。

クライアントが一定の間隔で更新を要求したため、サーバーではそのような間隔でループが発生していると思います。(ハンドラーをトリガーするために) サーバーに変数を再度読み取るように指示するにはどうすればよいですか?

4

1 に答える 1

0

提供された OPC UA-.Net スタックのソースを読んだ後、データ転送がどのように構成されているかを見逃していたことがわかります。レポート間隔は「できるだけ多くのデータを提供する」ためではなく、「できるだけ少ないデータを提供する」ためのものです。これは、サーバーが時間駆動型 (または要求駆動型) ではなく、変更イベント駆動型であるためです。つまり、変数の値の変更が通知され、レポートのために喜んでキューに入れられる可能性がありますが、間隔は次の役割を果たします。ブレーキ -- 変更の時間が間隔よりも小さい場合、キューには何も追加されません (したがって、報告されません)。

ただし、クライアントは継続的なレポートを要求できます -- interval=0 およびキューのかなりのサイズ。

于 2016-08-29T11:38:36.187 に答える