The ConditionTypedefines all general characteristics of a Condition. All other ConditionTypesderive from it. It is formally defined in Table 9. The False state of the EnabledStateshall not be extended with a sub state machine.

Table 9– ConditionType definition

Attribute

Value

BrowseName

ConditionType

IsAbstract

True

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the BaseEventTypedefined in OPC 10000-5

HasSubtype

ObjectType

DialogConditionType

Defined in Clause 5.6.2

HasSubtype

ObjectType

AcknowledgeableConditionType

Defined in Clause 5.7.2

HasProperty

Variable

ConditionClassId

NodeId

PropertyType

Mandatory

HasProperty

Variable

ConditionClassName

LocalizedText

PropertyType

Mandatory

HasProperty

Variable

ConditionSubClassId

NodeId[]

PropertyType

Optional

HasProperty

Variable

ConditionSubClassName

LocalizedText[]

PropertyType

Optional

HasProperty

Variable

ConditionName

String

PropertyType

Mandatory

HasProperty

Variable

BranchId

NodeId

PropertyType

Mandatory

HasProperty

Variable

Retain

Boolean

PropertyType

Mandatory

HasComponent

Variable

EnabledState

LocalizedText

TwoStateVariableType

Mandatory

HasComponent

Variable

Quality

StatusCode

ConditionVariableType

Mandatory

HasComponent

Variable

LastSeverity

UInt16

ConditionVariableType

Mandatory

HasComponent

Variable

Comment

LocalizedText

ConditionVariableType

Mandatory

HasProperty

Variable

ClientUserId

String

PropertyType

Mandatory

HasComponent

Method

Disable

Defined in Clause 5.5.4

Mandatory

HasComponent

Method

Enable

Defined in Clause 5.5.5

Mandatory

HasComponent

Method

AddComment

Defined in Clause 5.5.6

Mandatory

HasComponent

Method

ConditionRefresh

Defined in Clause 5.5.7

None

HasComponent

Method

ConditionRefresh2

Defined in Clause 5.5.8

None

The ConditionTypeinherits all Propertiesof the BaseEventType. Their semantic is defined in OPC 10000-5. SourceNode Property identifies the ConditionSource. See 5.12for more details. If the ConditionSourceis not a Nodein the AddressSpace,the NodeIdis set to NULL. The SourceNodeProperty is the Node,which the Conditionis associated with, it may be the same as the InputNodefor an Alarm, but it may be a separate node. For example, a motor, which is a Variablewith a Valuethat is an RPM, may be the ConditionSourcefor Conditionsthat are related to the motor as well as a temperature sensor associated with the motor. In the former the InputNodefor the High RPM Alarmis the value of the Motor RPM, while in the later the InputNodeof the High Alarm would be the value of the temperature sensor that is associated with the motor.

ConditionClassIdspecifies in which domain this Conditionis used. It is the NodeIdof the corresponding subtype of BaseConditionClassType. See 5.9for the definition of ConditionClassand a set of ConditionClassesdefined in this standard. When using this Propertyfor filtering, Clientshave to specify all individual subtypes of BaseConditionClassType NodeIds. The OfTypeoperator cannot be applied. BaseConditionClassTypeis used as class whenever a Conditioncannot be assigned to a more concrete class.

ConditionClassNameprovides the display name of the subtype of BaseConditionClassType.

ConditionSubClassIdspecifies additional class[es] that apply to the Condition. It is the NodeIdof the corresponding subtype of BaseConditionClassType. See 5.9.6for the definition of ConditionClassand a set of ConditionClassesdefined in this standard. When using this Propertyfor filtering, Clientshave to specify all individual sub types of BaseConditionClassType NodeIds. The OfType operator cannot be applied. The Clientspecifies a NULL in the filter, to return Conditionswhere no sub class is applied. When returning Conditions, if this optional field is not available in a Condition, a NULL shall be returned for the field.

ConditionSubClassName provides the display name[s] of the ConditionClassType[s] listed in the ConditionSubClassId.

ConditionNameidentifies the Condition instance that the Event originated from. It can be used together with the SourceNamein a user display to distinguish between different Condition instances. If a ConditionSourcehas only one instance of a ConditionType, and the Serverhas no instance name, the Servershall supply the ConditionTypebrowse name.

BranchIdis NULL for all Event Notificationsthat relate to the current state of the Conditioninstance. If BranchIdis not NULL, it identifies a previous state of this Conditioninstance that still needs attention by an Operator. If the current ConditionBranchis transformed into a previous ConditionBranchthen the Server needs to assign a non-NULL BranchId. An initial Eventfor the branch will generated with the values of the ConditionBranchand the new BranchId. The ConditionBranchcan be updated many times before it is no longer needed. When the ConditionBranchno longer requires Operatorinput the final Eventwill have Retainset to False. The retain bit on the current Event is True, as long as any ConditionBranches require Operator input. See 4.4for more information about the need for creating and maintaining previous ConditionBranchesand Clause B.1for an example using branches. The BranchId DataTypeis NodeIdalthough the Serveris not required to have ConditionBranchesin the Address Space. The use of a NodeIdallows the Serverto use simple numeric identifiers, strings or arrays of bytes.

Retainwhen True describes a Condition(or ConditionBranch) as being in a state that is interesting for a Clientwishing to synchronize its state with the Server’s state. The logic to determine how this flag is set is Serverspecific. Typically, all Active Alarmswould have the Retainflag set; however, it is also possible for inactive Alarmsto have their Retainflag set to TRUE.

In normal processing when a Clientreceives an Event with the Retainflag set to False, the Clientshould consider this as a ConditionBranch that is no longer of interest, in the case of a “current Alarmdisplay” the ConditionBranchwould be removed from the display.

EnabledStateindicates whether the Conditionis enabled. EnabledState/Idis True if enabled, False otherwise. EnabledState/TransitionTimedefines when the EnabledStatelast changed. Recommended state names are described in Annex A.

A Condition’s EnabledStateeffects the generation of Event Notificationsand as such results in the following specific behaviour:

When enabled, changes to the following components shall cause a ConditionType Event Notification:

This may not be the complete list. Sub-Types may define additional Variablesthat trigger Event Notifications. In general, changes to Variablesof the types TwoStateVariableTypeor ConditionVariableTypetrigger Event Notifications.

Qualityreveals the status of process values or other resources that this Conditioninstance is based upon. If, for example, a process value is “Uncertain”, the associated “LevelAlarm” Conditionis also questionable. Values for the Qualitycan be any of the OPC StatusCodesdefined in OPC 10000-8as well as Good, Uncertainand Badas defined in OPC 10000-4. These StatusCodesare similar to but slightly more generic than the description of data quality in the various field bus specifications. It is the responsibility of the Serverto map internal status information to these codes. A Serverthat supports no quality information shall return Good. This quality can also reflect the communication status associated with the system that this value or resource is based on and from which this Alarmwas received. For communication errors to the underlying system, especially those that result in some unavailable Eventfields, the quality shall be Bad_NoCommunication error.

Eventsare only generated for Conditionsthat have their Retainfield set to True and for the initial transition of the Retainfield from True to False.

LastSeverityprovides the previous severity of the ConditionBranch. Initially this Variablecontains a zero value; it will return a value only after a severity change. The new severity is supplied via the Severity Property,which is inherited from the BaseEventType.

Commentcontains the last comment provided for a certain state (ConditionBranch). It may have been provided by an AddComment Method,some other Method or in some other manner. The initial value of this Variableis NULL, unless it is provided in some other manner. If a Method provides as an option the ability to set a Comment, then the value of this Variableis reset to NULL if an optional comment is not provided.

ClientUserIdis related to the Commentfield and contains the identity of the user who inserted the most recent Comment.The logic to obtain the ClientUserIdis defined in OPC 10000-5.

The NodeIdof the Conditioninstance is used as ConditionId. It is not explicitly modelled as a component of the ConditionType. However, it can be requested with the following SimpleAttributeOperand(see Table 10) in the SelectClauseof the EventFilter:

Table 10– SimpleAttributeOperand

Name

Type

Description

SimpleAttributeOperand

typeId

NodeId

NodeIdof the ConditionType Node

browsePath[]

QualifiedName

empty

attributeId

IntegerId

Id of the NodeId Attribute