MonitoredItemとSubscription
OPC UAはポーリングではなく、より洗練されたサブスクリプションを提供します。Clientは選択したNodeをServerを監視するために、MonitoredItemに指定します。MonitoredItemはすべてのNodeが指定できますが、Eventを監視できるのは、EventNotifier AttributeのSubscribeToEventを1に変更したObjectもしくはViewだけです。MonitoredItemに指定されたNodeは、Serverにより監視され、値や状態データなどに変更があった場合、ClientにData Change Notification(データ変更の通知)を、Eventが発行された場合はEvent Notification をPublishします。変更の通知を受けたClientは、次のアクションを判断します。このメカニズムにより転送されるデータの量が大幅に削減されます。Subscriptionの目的は、NodeをMonitoredItemにグループ化し、MonitoredItemがNotificationを生成し、SubscriptionがNotificationをPublishすることです。
Server側の設定
MonitoredItemは、すべてのNodeが監視対象になりますが、Eventの監視対象はObjectまたはViewです。ObjectまたはViewのEventNotifier Attributeの「SubscribeToEvents」を初期値の0から1に変更されたNodeが監視対象です。Eventの監視対象に変更するのはClientの役目です。
Data Change Notification
AddressSpaceでMonitoredItemにグループ化されたVariable Nodeで値(Value)や作成者など(State)に変更があった場合、ServerからClientに発行されるNotificationをData Change Notificationと言います。Clientは、 Data Change Notificationを受けて次の動作、例えば、変更された値を取得しそれをデータベースに保存するなどの判断をします。
Event Notification
ClientがMethodをCallした場合、VariableのValueの値が閾値が超えた場合など、SeverからClientに発行される通知はEvent Notificationと言います。Event NotificationはMethodやVariableが帰属するObjectから発行されます。