The FunctionalStateMachineType is the top level StateMachine for the LADS ActiveProgram, FunctionalUnit or Function. The basic idea behind this architecture is that the instances of the FunctionalStateMachineType, the ActiveProgramStateMachineType, the FunctionalUnitStateMachineType and the FunctionStateMachineType use the same s tates, Transitions and Methods, but add their own Start Methods with different Method Signatures to trigger the StoppedToRunning Transition from a Client.

The FunctionalStateMachineType defines the available states in a LADS system.

The FunctionalStateMachineType is formally defined in Table 26. StateTypes and TransitionTypes only exist in the type system, thus they do not have a modelling rule.

The FunctionalStateMachine is depicted in Figure 16.

image020.png

Figure 16 – FunctionalStateMachine

Table 26 – FunctionalStateMachineType Definition

Attribute

Value

BrowseName

FunctionalStateMachineType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:FiniteStateMachineType defined in OPC 10000-5

0:HasComponent

Variable

0:AvailableTransitions

0:NodeId[]

0:BaseDataVariableType

M

0:HasComponent

Variable

0:AvailableStates

0:NodeId[]

0:BaseDataVariableType

M

0:HasComponent

Method

Abort

O

0:HasComponent

Object

Aborted

StateType

0:HasComponent

Object

AbortedToClearing

TransitionType

0:HasComponent

Object

Aborting

StateType

0:HasComponent

Object

AbortingToAborted

TransitionType

0:HasComponent

Method

Clear

O

0:HasComponent

Object

Clearing

StateType

0:HasComponent

Object

ClearingToStopped

TransitionType

0:HasComponent

Object

Running

StateType

0:HasComponent

Object

RunningStateMachine

RunningStateMachineType

O

0:HasComponent

Object

RunningToAborting

TransitionType

0:HasComponent

Object

RunningToStopping

TransitionType

0:HasComponent

Method

Stop

O

0:HasComponent

Object

Stopped

InitialStateType

0:HasComponent

Object

StoppedToRunning

TransitionType

0:HasComponent

Object

Stopping

StateType

0:HasComponent

Object

StoppingToStopped

TransitionType

0:HasComponent

Variable

0:CurrentState

0:LocalizedText

FiniteStateVariableType

M

Conformance Units

LADS FunctionalStateMachineType

The AvailableTransitions and AvailableStates Nodes are overwritten and made Mandatory in the FunctionalStateMachineType.

Abort is a Method to trigger a change of state to Aborting. This will affect all sub-states in a cleared state.

Aborted maintains unit/device status information relevant to the Abort condition. The unit/device can only exit the Aborted state after an explicit Clear command subsequent to manual intervention to correct and reset the detected unit/device faults.

Aborting represents a state that can be entered at any time in response to the Abort command or in the event of a unit/device fault. The aborting logic will bring the unit/device to a rapid safe stop. Operation of the emergency stop will cause the unit/device to be tripped by its safety system. It will also provide a signal to initiate the Aborting state.

Clear is a Method to trigger a change of state to Cleared.

Clearing is initiated by a state command to clear faults that may have occurred when Aborting that are present in the Aborted state.

Running is the state when the ActiveProgram, Function or FunctionalUnit is currently running/executing.

RunningStateMachine is a RunningStateMachineType that details the Running state.

Stop is a Method to trigger a change of state to Stopped. This will affect all sub-states in a Run state.

Stopped is the initial state for an ActiveProgram, FunctionalUnit or Function. It is an Idle state which means that the Function, FunctionalUnit or ActiveProgram is stopped and ready for activation. It can also be used to represent a non-running state, potentially caused by an error, where the Function, FunctionalUnit or ActiveProgram can invoke the Reset() Function before starting again.

Stopping indicates that the ActiveProgram, FunctionalUnit, or Function is in the process of stopping. This state usually occurs when the program execution is finished or stopped, either because it has ended or has been triggered by the Stop Method.

The Transitions of the FunctionalStateMachineType have additional References which are defined in Table 27. This StateMachine includes the transition from Unholding to Holding, StartingUnsuspendingSuspended, and Suspending, all of which are extensions to the ISA-TR88.00.02-2015 specification.

Table 27 – FunctionalStateMachineType additional References

SourceBrowsePath

Reference Type

Is Forward

TargetBrowsePath

AbortedToClearing

0:FromState

True

Aborted

0:ToState

True

Clearing

0:HasCause

True

Clear

0:HasEffect

True

TransitionEventType

AbortingToAborted

0:FromState

True

Aborting

0:ToState

True

Aborted

0:HasEffect

True

TransitionEventType

ClearingToStopped

0:FromState

True

Clearing

0:ToState

True

Stopped

0:HasEffect

True

TransitionEventType

RunningToAborting

0:FromState

True

Running

0:ToState

True

Aborting

0:HasCause

True

Abort

0:HasEffect

True

TransitionEventType

RunningToStopping

0:FromState

True

Running

0:ToState

True

Stopping

0:HasCause

True

Stop

0:HasEffect

True

TransitionEventType

StoppedToRunning

0:FromState

True

Stopped

0:ToState

True

Running

0:HasEffect

True

TransitionEventType

StoppingToStopped

0:FromState

True

Stopping

0:ToState

True

Stopped

0:HasEffect

True

TransitionEventType

Running

0:HasSubStateMachine

True

RunningStateMachine

The Component Variables of the FunctionalStateMachineType have additional Attributes, as defined in Table 28.

Table 28 – FunctionalStateMachineType Attribute Values for Child Nodes

BrowsePath

Value Attribute

Aborted

0:StateNumber

1

Aborting

0:StateNumber

2

Clearing

0:StateNumber

3

Running

0:StateNumber

5

Stopped

0:StateNumber

4

Stopping

0:StateNumber

6

AbortedToClearing

0:TransitionNumber

1

AbortingToAborted

0:TransitionNumber

2

StoppingToStopped

0:TransitionNumber

4

StoppedToRunning

0:TransitionNumber

5

RunningToAborting

0:TransitionNumber

6

ClearingToStopped

0:TransitionNumber

7

RunningToStopping

0:TransitionNumber

8