## 5.8.10.1 Overview

The ShelvedStateMachineType defines a sub-state machine that represents an advanced Alarm filtering model. This model is illustrated in Figure 15.

The state model supports two types of Shelving: OneShotShelving and TimedShelving. They are illustrated in Figure 14. The illustration includes the allowed transitions between the various sub-states. Shelving is an Operator initiated activity.

In OneShotShelving, a user requests that an Alarm be Shelved for its current Active state. This type of Shelving is typically used when an Alarm is continually occurring on a boundary (i.e. a Condition is jumping between High Alarm and HighHigh Alarm, always in the Active state). The One Shot Shelving will automatically clear when an Alarm returns to an inactive state. Another use for this type of Shelving is for a plant area that is shutdown i.e. a long running Alarm such as a low level Alarm for a tank that is not in use. When the tank starts operation again the Shelving state will automatically clear.

In TimedShelving, a user specifies that an Alarm be shelved for a fixed time period. This type of Shelving is quite often used to block nuisance Alarms. For example, an Alarm that occurs more than 10 times in a minute may get shelved for a few minutes.

In all states, the Unshelve can be called to cause a transition to the Unshelve state; this includes Un-shelving an Alarm that is in the TimedShelve state before the time has expired and the OneShotShelve state without a transition to an inactive state.

All but two transitions are caused by Method calls as illustrated in Figure 14. The “Time Expired” transition is simply a system generated transition that occurs when the time value defined as part of the “Timed Shelved Call” has expired. The “Any Transition Occurs” transition is also a system generated transition; this transition is generated when the Condition goes to an inactive state.

Figure 14 – Shelve state transitions

The ShelvedStateMachineType includes a hierarchy of sub-states. It supports all transitions between Unshelved, OneShotShelved and TimedShelved.

The state machine is illustrated in Figure 15 and formally defined in Table 51.

Figure 15 – ShelvedStateMachineType model

Table 51 –ShelvedStateMachineType definition

Attribute Value
BrowseName ShelvedStateMachineType
IsAbstract False
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the FiniteStateMachineType defined in OPC 10000-5

HasProperty Variable UnshelveTime Duration PropertyType Mandatory

HasComponent Object Unshelved   StateType
HasComponent Object TimedShelved   StateType
HasComponent Object OneShotShelved   StateType

HasComponent Object UnshelvedToTimedShelved   TransitionType
HasComponent Object TimedShelvedToUnshelved   TransitionType
HasComponent Object TimedShelvedToOneShotShelved   TransitionType
HasComponent Object UnshelvedToOneShotShelved   TransitionType
HasComponent Object OneShotShelvedToUnshelved   TransitionType
HasComponent Object OneShotShelvedToTimedShelved   TransitionType

HasComponent Method TimedShelve Defined in Clause 5.8.10.3 Mandatory
HasComponent Method OneShotShelve Defined in Clause 5.8.10.4 Mandatory
HasComponent Method Unshelve Defined in Clause 5.8.10.2 Mandatory

UnshelveTime specifies the remaining time in milliseconds until the Alarm automatically transitions into the Un-shelved state. For the TimedShelved state this time is initialised with the ShelvingTime argument of the TimedShelve Method call. For the OneShotShelved state the UnshelveTime will be a constant set to the maximum Duration except if a MaxTimeShelved Property is provided.

This FiniteStateMachine supports three Active states; Unshelved, TimedShelved and OneShotShelved. It also supports six transitions. The states and transitions are described in Table 52. This FiniteStateMachine also supports three Methods; TimedShelve, OneShotShelve and Unshelve.

Table 52 – ShelvedStateMachineType transitions

BrowseName References BrowseName TypeDefinition

Transitions
UnshelvedToTimedShelved FromState Unshelved StateType
ToState TimedShelved StateType
HasEffect AlarmConditionType
HasCause TimedShelve Method
UnshelvedToOneShotShelved FromState Unshelved StateType
ToState OneShotShelved StateType
HasEffect AlarmConditionType
HasCause OneShotShelve Method
TimedShelvedToUnshelved FromState TimedShelved StateType
ToState Unshelved StateType
HasEffect AlarmConditionType
TimedShelvedToOneShotShelved FromState TimedShelved StateType
ToState OneShotShelved StateType
HasEffect AlarmConditionType
HasCause OneShotShelving Method
OneShotShelvedToUnshelved FromState OneShotShelved StateType
ToState Unshelved StateType
HasEffect AlarmConditionType
OneShotShelvedToTimedShelved FromState OneShotShelved StateType
ToState TimedShelved StateType
HasEffect AlarmConditionType
HasCause TimedShelve Method

## 5.8.10.2 Unshelve Method

The Unshelve Method sets the instance of AlarmConditionType to the Unshelved state. Normally, the MethodId found in the Shelving child of the Condition instance and the NodeId of the Shelving object as the ObjectId are passed to the Call Service. However, some Servers do not expose Condition instances in the AddressSpace. Therefore, all Servers shall also allow Clients to call the Unshelve Method by specifying ConditionId as the ObjectId. The Method cannot be called with an ObjectId of the ShelvedStateMachineType Node.

Signature

Unshelve( );


Method Result Codes in Table 53 (defined in Call Service)

Table 53 – Unshelve result codes

Result Code Description
Bad_ConditionNotShelved See Table 103 for the description of this result code.

Table 54 specifies the AddressSpace representation for the Unshelve Method.

Table 54 – Unshelve Method AddressSpace definition

Attribute Value
BrowseName Unshelve
References NodeClass BrowseName DataType TypeDefinition ModellingRule
AlwaysGeneratesEvent ObjectType AuditConditionShelvingEventType Defined in 5.10.7

## 5.8.10.3 TimedShelve Method

The TimedShelve Method sets the instance of AlarmConditionType to the TimedShelved state (parameters are defined in Table 55 and result codes are described in Table 56). Normally, the MethodId found in the Shelving child of the Condition instance and the NodeId of the Shelving object as the ObjectId are passed to the Call Service. However, some Servers do not expose Condition instances in the AddressSpace. Therefore, all Servers shall also allow Clients to call the TimedShelve Method by specifying ConditionId as the ObjectId. The Method cannot be called with an ObjectId of the ShelvedStateMachineType Node.

Signature

TimedShelve(
[in] Duration ShelvingTime
);


Table 55 – TimedShelve parameters

Argument Description
ShelvingTime Specifies a fixed time for which the Alarm is to be shelved. The Server may refuse the provided duration. If a MaxTimeShelved Property exist on the Alarm than the Shelving time shall be less than or equal to the value of this Property.

Method Result Codes (defined in Call Service)

Table 56 – TimedShelve result codes

Result Code Description
Bad_ConditionAlreadyShelved See Table 103 for the description of this result code.
The Alarm is already in TimedShelved state and the system does not allow a reset of the shelved timer.
Bad_ShelvingTimeOutOfRange See Table 103 for the description of this result code.

Shelving for some time is quite often used to block nuisance Alarms. For example, an Alarm that occurs more than 10 times in a minute may get shelved for a few minutes.

In some systems the length of time covered by this duration may be limited and the Server may generate an error refusing the provided duration. This limit may be exposed as the MaxTimeShelved Property.

Table 57 specifies the AddressSpace representation for the TimedShelve Method.

Table 57 – TimedShelve Method AddressSpace definition

Attribute Value
BrowseName TimedShelve
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasProperty Variable InputArguments Argument[] PropertyType Mandatory
AlwaysGeneratesEvent ObjectType AuditConditionShelvingEventType Defined in 5.10.7

## 5.8.10.4 OneShotShelve Method

The OneShotShelve Method sets the instance of AlarmConditionType to the OneShotShelved state. Normally, the MethodId found in the Shelving child of the Condition instance and the NodeId of the Shelving object as the ObjectId are passed to the Call Service. However, some Servers do not expose Condition instances in the AddressSpace. Therefore, all Servers shall also allow Clients to call the OneShotShelve Method by specifying ConditionId as the ObjectId. The Method cannot be called with an ObjectId of the ShelvedStateMachineType Node.

Signature

OneShotShelve( );


Method Result Codes are defined in Table 58 (status code field is defined in Call Service)

Table 58 – OneShotShelve result codes

Result Code Description
Bad_ConditionAlreadyShelved See Table 103 for the description of this result code.
The Alarm is already in OneShotShelved state.

Table 59 specifies the AddressSpace representation for the OneShotShelve Method.

Table 59 – OneShotShelve Method AddressSpace definition

Attribute Value
BrowseName OneShotShelve
References NodeClass BrowseName DataType TypeDefinition ModellingRule
AlwaysGeneratesEvent ObjectType AuditConditionShelvingEventType Defined in 5.10.7