Filtering on Event Transitions|OPC UA Standard|Forum|OPC Foundation

Avatar
Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
sp_Feed sp_PrintTopic sp_TopicIcon
Filtering on Event Transitions
Avatar
Solve Raaen
New Member
Members
Forum Posts: 1
Member Since:
03/27/2018
sp_UserOfflineSmall Offline
1
01/06/2022 - 00:29
sp_Permalink sp_Print

We in Kongsberg Maritime has om question about OPC UA Alarms and Events i.e. Part 9 and Part 4. Not sure if you are the right destination for these questions but expect that you can find someone that can give us some advice.

As you might know we are using OPC UA as a front end in our new Server implementation. We are struggling with the functionality of the OPC UA Alarms and Condition functionality. Currently we send to much information to our clients and perform extra filtering on the client side. The event management on the clients then becomes a bottleneck.

 

Our intention:

We would like to use the server side OPC UA Event filter to create an Event stream for the Clients. The Client should then just show the stream of events provided by the server and spend less processing time creating an Alam/Event list.

Of cause a Condition Refresh on a client shall give the same content in the alarm as the other clients with the same filter living on the live stream.   

 

Part 9 OPC UA Alarms and Condition example B.1.4:

B.1.4 Server current-State Model with Suppression

This example adds additional fields to the model illustrated in B.1.2. This example does not use acknowledge or confirm – it assumes that the alarm is automatically acknowledged (and does not support confirm). It does add OutOfServiceState and SuppressedState.

Figure B.3 shows an Alarm as it becomes active, is suppressed or is placed out of service and then inactive. Table B.1 lists the values of the state Variables. All Events are coming from the same Condition instance and therefore have the same ConditionId. The Client subscription includes an event filter that excludes suppressed or out of service conditions (i.e. SuppressedState = True or OutOfServiceState = True). The events shown in green are delivered to the Client.

 

Figure B.3 – SuppressedState and OutOfServiceState example

 

Table B.3 – Example of a Condition that is Suppressed / OutOfService

EventId Active SupressedState OutOfServiceState Retain Event Deliver with Filter Description
-*) False False False False - Initial state of Condition.
1 True False False True Yes Alarm goes active.
2 True False True True Yes Placed OutOfService
3 True True True True No Alarm Suppressed; No event since OutOfService
4 False True True False No Alarm goes inactive; No event since OutOfService
5 False False True True No Alarm not Suppressed; No event since not active
6 True False True True No Alarm goes active; No event since OutOfService
7 True False False True Yes Alarm no longer OutOfService; Event generated
8 False False False False Yes Alarm goes inactive
9 False True False False No Alarm Suppressed; No event since not active
10 True True False True No Alarm goes active; No event since Suppressed
11 False True False False No Alarm goes inactive; No event since Suppressed
12 False False False False No Alarm no longer Suppressed
13 False False True False No Placed OutOfService
14 True False True True No Alarm goes active; No event since OutOfService
15 False False True False No Alarm goes inactive; No event since OutOfService
16 False False False False No Alarm no longer OutOfService

 

We think that the information in the filter will not produce this table and the if a Condition Refresh is applied at different times the Event list will not be equal to the one that just uses the live stream.

The first challenge is Event ID 2, since the filter act on OutOfService this event will never be sent. To solve this, we need to consider the Event transitions.

 

How shall Event Transitions be solved?:

 

Since most of the states are modeled as TwoStateVariableType there is no Transition information available.

Should the Time stamp of the State be compared with the Time stamp of the Event record (from the BaseEventType defined in part 5).

 

EventID 2 might be fund using this filter:

(OutOfServiceState=True) OR (OutOfServiceState/TransitionsTime = Time)

Is this the intended way of finding transitions or is the intention to include Transitions Information for each State in the Event record also for the variables modeled with TwoStateVariableType?

 

Lot of information to come to a simple question, but we would like to know the idea behind before we make any decisions.

We think that example B 1.4 need to be corrected to show the intended strategy here.

Forum Timezone: America/Phoenix
Most Users Ever Online: 510
Currently Online:
Guest(s) 35
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1341
Posts: 4545