The infrastructure of state machines defined in this annex only deals with the basics of state machines needed to support OPC 10000-9and OPC 10000-10. The intention is to keep the basic simple but extensible.
For the state machines defined in this annex we assume that state machines are typed and instances of a type have their states and semantics specified by the type. For some types, this means that the states and transitions are fixed. For other types the states and transitions may be dynamic or unknown. A state machine where all the states are specified explicitly by the type is called a finite state machine.
Therefore we distinguish between StateMachineTypeand StateMachineand their subtypes like FiniteStateMachineType. The StateMachineTypespecifies a description of the state machine, that is, its states, transitions, etc., whereas the StateMachineis an instance of the StateMachineTypeand only contains the current state.
Each StateMachinecontains information about the current state. If the StateMachineTypehas SubStateMachines, the StateMachinealso contains information about the current state of the SubStateMachines. StateMachineswhich have their states completely defined by the type are instances of a FiniteStateMachineType.
Each Transitioncan have one or more Causes. A Causeleads a FiniteStateMachine to change its current Statefrom the source of the Transitionto its target. In this annex we only specify Methodcalls to be Causesof Transitions. Transitionsdo not have to have a Cause. A Transitioncan always be caused by some server-internal logic that is not exposed in the AddressSpace.
Each Transitioncan have one or more Effects. An Effectoccurs if the Transitionis used to change the Stateof a StateMachine. In this annex we only specify the generation of Eventsto be Effectsof a Transition. A Transitionis not required to expose any Effectsin the AddressSpace.