The StateMachineTypeis the base ObjectType for all StateMachineTypes. It defines a single Variablewhich represents the current state of the machine. An instance of this ObjectTypeshall generate an Eventwhenever a significant state change occurs. The Serverdecides which state changes are significant. Serversshall use the GeneratesEvent ReferenceTypeto indicate which Event(s)could be produced by the StateMachine.

Subtypes may add Methodswhich affect the state of the machine. The Executable Attributeis used to indicate whether the Methodis valid given the current state of the machine. The generation of AuditEventsfor Methodsis defined in OPC 10000-4. A StateMachinemay not be active. In this case, the CurrentStateand LastTransition Variablesshall have a status equal to Bad_StateNotActive(see Table 17).

Subtypes may add components which are instances of StateMachineTypes. These components are considered to be sub-states of the StateMachine. SubStateMachinesare only active when the parent machine is in an appropriate state.

Eventsproduced by SubStateMachinesmay be suppressed by the parent machine. In some cases, the parent machine will produce a single Eventthat reflects changes in multiple SubStateMachines.

FiniteStateMachineTypeis a subtype of StateMachineTypethat provides a mechanism to explicitly define the states and transitions. A Servershould use this mechanism if it knows what the possible states are and the state machine is not trivial. The FiniteStateMachineType is defined in clause 4.4.5.

The StateMachineTypeis formally defined in Table 1.

Table 1– StateMachineType definition

Attribute

Value

BrowseName

StateMachineType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the BaseObjectType defined in OPC 10000-5

Note that a Referenceto this subtype is not shown in the definition of the BaseObjectType.

HasSubtype

ObjectType

FiniteStateMachineType

Defined in 4.4.5

HasComponent

Variable

CurrentState

LocalizedText

StateVariableType

Mandatory

HasComponent

Variable

LastTransition

LocalizedText

TransitionVariableType

Optional

Conformance Units

Base Info State Machine Instance

CurrentState stores the current state of an instance of the StateMachineType. CurrentStateprovides a human readable name for the current state which may not be suitable for use in application control logic. Applications should use the Id Propertyof CurrentState if they need a unique identifier for the state.

LastTransition stores the last transition which occurred in an instance of the StateMachineType. LastTransition provides a human readable name for the last transition which may not be suitable for use in application control logic. Applications should use the Id Propertyof LastTransition if they need a unique identifier for the transition.