This building block provides information about the state of a MachineryItem. It defines some common top-level states. Companion specifications or vendors might extend those states with substates, but cannot add additional top-level states. In order to have a modelling mechanism that allows the creation of substate, but also to define causes and effects on specific transitions, the concept of a FiniteStateMachine defined in OPC 10000-16 is used. Since the intention of this base specification is not to restrict the Transitions between the States, the StateMachine defines Transitions between all States. Instances might restrict the usage of the defined States and Transitions. That might be used by domain-specific companion specifications to restrict the usage of the StateMachine. An overview of the StateMachine is given in Figure 13. The States are further described in 12.2.
Figure 13 – MachineryItemState StateMachine
The overview of the building block is shown in Figure 14. The MachineryItemState_StateMachineType is a subtype of the FiniteStateMachineType defining the States and Transitions of that StateMachine. The usage of the building block is also shown in that figure. An instance of the MachineryItemState_StateMachineType is added to the Object MyMachine representing a Machine using the AddIn concept. The MachineryItemState_StateMachineType is defined in 12.2.
Figure 14 – Building Block for MachineryItemState
In Figure 15, a more complex example is shown, where the Machine also contains a component having the MachineryItemState.
Figure 15 – Example of using the MachineryItem State
The MachineryItemState_StateMachineType is a subtype of FiniteStateMachineType defined in OPC 10000-16. The semantic of this AddIn is to provide the state of a MachineryItem. It is formally defined in Table 29.
Table 29 – MachineryItemState_StateMachineType Definition
Attribute |
Value |
||||
BrowseName |
MachineryItemState_StateMachineType |
||||
IsAbstract |
False |
||||
Description |
State machine representing the state of a machinery item |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the 0:FiniteStateMachineType defined in OPC 10000-16, i.e. inheriting the InstanceDeclarations of that Node. |
|||||
0:HasProperty |
Variable |
0:DefaultInstanceBrowseName |
0:QualifiedName |
0:PropertyType |
- |
0:HasComponent |
Object |
NotAvailable |
- |
0:StateType |
- |
0:HasComponent |
Object |
OutOfService |
- |
0:StateType |
- |
0:HasComponent |
Object |
Executing |
- |
0:StateType |
- |
0:HasComponent |
Object |
NotExecuting |
- |
0:StateType |
- |
0:HasComponent |
Object |
FromNotAvailableToOutOfService |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotAvailableToNotExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotAvailableToExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotAvailableToNotAvailable |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromOutOfServiceToNotAvailable |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromOutOfServiceToNotExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromOutOfServiceToExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromOutOfServiceToOutOfService |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotExecutingToNotAvailable |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotExecutingToOutOfService |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotExecutingToExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromNotExecutingToNotExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromExecutingToNotAvailable |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromExecutingToOutOfService |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromExecutingToNotExecuting |
- |
0:TransitionType |
- |
0:HasComponent |
Object |
FromExecutingToExecuting |
- |
0:TransitionType |
- |
Conformance Units |
|||||
Machinery MachineryItem State |
The States and Transitions define a StateMachine as shown in Figure 13. It does not define an initial State, i.e., the initial State is vendor-specific.
Note: None of the States or Transitions have a ModellingRule, i.e., they are only provided in the TypeDefinition, not on the instance. The CurrentState Variable (inherited from StateMachineType) contains the information of the current State of the instance.
The NotAvailable State represents that the MachineryItem is not available and does not perform any activity. Examples for this State are that the Machine is switched off or is in energy saving mode.
Note: Activity can be part of the production, preparation or maintenance process.
Note: The NotAvailable State should only be used, when the State of the Machine is known. If the OPC UA Server is for example deployed outside the Machine and just lost the connection to the Machine, it should rather use a Bad StatusCode for the CurrentState than the NotAvailable State.
Note: Depending on the deployment of the OPC UA Server, the NotAvailable State might never be provided by the OPC UA Server, since the Server might not be available when the Machine is not available, e.g., if the OPC UA Server is deployed on a PLC of the Machine.
The OutOfService State represents that the MachineryItem is not functional and does not perform any activity. Examples for this State are that the Machine is in an error or blocked.
The NotExecuting State represents that the MachineryItem is available & functional and does not perform any activity. It waits for an action from outside to start or restart an activity. Examples for this State are that the Machine is waiting for a new order to be produced, a piece put into the Machine or an automatic or manual activation to be executed.
The Executing State represents that the Machine is available & functional and is actively performing an activity (pursues a purpose). Examples for this State are that the Machine is producing, transporting or processing something or executing a maintenance process.
The meaning of the Transitions is defined in the Description of Table 30.
The InstanceDeclarations of the MachineryItemState_StateMachineType have additional Attribute values defined in Table 30.
Table 30 – MachineryItemState_StateMachineType Attribute Values for Child Nodes
SourceBrowsePath |
Value |
Description |
||
0:DefaultInstanceBrowseName |
MachineryItemState |
The default BrowseName for instances of the type |
||
NotAvailable |
- |
The machine is not available and does not perform any activity (e.g., switched off, in energy saving mode) |
||
OutOfService |
- |
The machine is not functional and does not perform any activity (e.g., error, blocked) |
||
NotExecuting |
- |
The machine is available & functional and does not perform any activity. It waits for an action from outside to start or restart an activity |
||
Executing |
- |
The machine is available & functional and is actively performing an activity (pursues a purpose) |
||
FromNotAvailableToOutOfService |
- |
Transition from state NotAvailable to state OutOfService |
||
FromNotAvailableToNotExecuting |
- |
Transition from state NotAvailable to state NotExecuting |
||
FromNotAvailableToExecuting |
- |
Transition from state NotAvailable to state Executing |
||
FromNotAvailableToNotAvailable |
- |
Transition from state NotAvailable to state NotAvailable |
||
FromOutOfServiceToNotAvailable |
- |
Transition from state OutOfService to state NotAvailable |
||
FromOutOfServiceToNotExecuting |
- |
Transition from state OutOfService to state NotExecuting |
||
FromOutOfServiceToExecuting |
- |
Transition from state OutOfService to state Executing |
||
FromOutOfServiceToOutOfService |
- |
Transition from state OutOfService to state OutOfService |
||
FromNotExecutingToNotAvailable |
- |
Transition from state NotExecuting to state NotAvailable |
||
FromNotExecutingToOutOfService |
- |
Transition from state NotExecuting to state OutOfService |
||
FromNotExecutingToExecuting |
- |
Transition from state NotExecuting to state Executing |
||
FromNotExecutingToNotExecuting |
- |
Transition from state NotExecuting to state NotExecuting |
||
FromExecutingToNotAvailable |
- |
Transition from state Executing to state NotAvailable |
||
FromExecutingToOutOfService |
- |
Transition from state Executing to state OutOfService |
||
FromExecutingToNotExecuting |
- |
Transition from state Executing to state NotExecuting |
||
FromExecutingToExecuting |
- |
Transition from state Executing to state Executing |
||
|
0 |
- |
||
|
1 |
- |
||
|
2 |
- |
||
|
3 |
- |
||
|
0 |
- |
||
|
1 |
- |
||
|
2 |
- |
||
|
3 |
- |
||
|
4 |
- |
||
|
5 |
- |
||
|
6 |
- |
||
|
7 |
- |
||
|
8 |
- |
||
|
9 |
- |
||
|
10 |
- |
||
|
11 |
- |
||
|
12 |
- |
||
|
13 |
- |
||
|
14 |
- |
||
|
15 |
- |
The components of the MachineryItemState_StateMachineType have additional References which are defined in Table 31.
Table 31 – MachineryItemState_StateMachineType Additional References
SourceBrowsePath |
Reference Type |
Is Forward |
TargetBrowsePath |
FromNotAvailableToOutOfService |
0:FromState |
True |
NotAvailable |
|
0:ToState |
True |
OutOfService |
FromNotAvailableToExecuting |
0:FromState |
True |
NotAvailable |
|
0:ToState |
True |
Executing |
FromNotAvailableToNotExecuting |
0:FromState |
True |
NotAvailable |
|
0:ToState |
True |
NotExecuting |
FromOutOfServiceToNotAvailable |
0:FromState |
True |
OutOfService |
|
0:ToState |
True |
NotAvailable |
FromOutOfServiceToExecuting |
0:FromState |
True |
OutOfService |
|
0:ToState |
True |
Executing |
FromOutOfServiceToNotExecuting |
0:FromState |
True |
OutOfService |
|
0:ToState |
True |
NotExecuting |
FromExecutingToNotAvailable |
0:FromState |
True |
Executing |
|
0:ToState |
True |
NotAvailable |
FromExecutingToOutOfService |
0:FromState |
True |
Executing |
|
0:ToState |
True |
OutOfService |
FromExecutingToNotExecuting |
0:FromState |
True |
Executing |
|
0:ToState |
True |
NotExecuting |
FromNotExecutingToNotAvailable |
0:FromState |
True |
NotExecuting |
|
0:ToState |
True |
NotAvailable |
FromNotExecutingToOutOfService |
0:FromState |
True |
NotExecuting |
|
0:ToState |
True |
OutOfService |
FromNotExecutingToExecuting |
0:FromState |
True |
NotExecuting |
|
0:ToState |
True |
Executing |
FromNotAvailableToNotAvailable |
0:FromState |
True |
NotAvailable |
|
0:ToState |
True |
NotAvailable |
FromOutOfServiceToOutOfService |
0:FromState |
True |
OutOfService |
|
0:ToState |
True |
OutOfService |
FromExecutingToExecuting |
0:FromState |
True |
Executing |
|
0:ToState |
True |
Executing |
FromNotExecutingToNotExecuting |
0:FromState |
True |
NotExecuting |
|
0:ToState |
True |
NotExecuting |