Instances of the LaserSystemState_StateMachine are used to quickly indicate the current state of a laser system. This is done using a FiniteStateMachine as defined in OPC 10000-16. The chosen states (see Figure 7) are generalized and not manufacturer specific, to allow a wide variety of laser systems to be represented by this state machine. Furthermore, manufacturers can extend this state machine by further substates. Since the intention of this specification is not to restrict the transitions between the states, the state machine defines transitions between all states. Instances might restrict the usage of the defined states and transitions. An overview of the state machine is given in Figure 7, this is complimented by model overview in Figure 8 and the LaserSystemState_StateMachine is formally defined in Table 22.
Figure 7 – LaserSystemState_StateMachine general overview
Figure 8 – LaserSystemState_StateMachine model overview
Figure 8 depicts how the LaserSystemState_StateMachineType is derived from the FiniteStateMachineType as defined in OPC 10000-16.
Table 22 – LaserSystemState_StateMachineType Definition
Attribute |
Value |
||||
BrowseName |
LaserSystemState_StateMachineType |
||||
IsAbstract |
False |
||||
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 |
Off |
|
0:StateType |
|
0:HasComponent |
Object |
EnergySaving |
|
0:StateType |
|
0:HasComponent |
Object |
Idle |
|
0:StateType |
|
0:HasComponent |
Object |
SetUp |
|
0:StateType |
|
0:HasComponent |
Object |
LaserReady |
|
0:StateType |
|
0:HasComponent |
Object |
Maintenance |
|
0:StateType |
|
0:HasComponent |
Object |
Error |
|
0:StateType |
|
0:HasComponent |
Object |
LaserOn |
|
0:StateType |
|
0:HasComponent |
Object |
FromOffToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromOffToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromEnergySavingToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromIdleToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromSetUpToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserReadyToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromMaintenanceToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromErrorToLaserOn |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToOff |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToEnergySaving |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToIdle |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToSetUp |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToLaserReady |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToMaintenance |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToError |
|
0:TransitionType |
|
0:HasComponent |
Object |
FromLaserOnToLaserOn |
|
0:TransitionType |
|
Conformance Units |
LaserSystems LaserSystemState_StateMachineType Basic |
The States and Transitions define a StateMachine as shown in Figure 7. 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.
Off is the state used to represent when a laser system is either completely shut down or in a system state below EnergySaving and thus very close to completely shut down (e.g., deep hibernation).
Note: In the Off state the OPC UA server of the laser system might actually not be reachable by an OPC UA client. However, by setting the Off state as part of the shutdown procedure an already connected client would know the last state was the Off state indicating that a normal shut down procedure was executed.
EnergySaving indicates that the energy consumption of the laser system is deliberately reduced. This can indicate a wide array of system states, reaching from close to the Off state (e.g., hibernation) to merely one or two elements of a laser system (e.g., a coolant pump) having reduced their power consumption.
Idle indicates that the laser system is not in an EnergySaving state, passively running while no preparing to achieve the LaserOn state and is thus also not in the SetUp state.
SetUp indicates that the system is currently actively doing something (e.g., bringing components to operating temperature) in order to achieve the LaserReady state.
LaserReady indicates that the laser system is merely missing a trigger before actively emitting radiation.
Maintenance indicates all states where the system is currently not able to operate due to for example software updates or hardware checkups.
Error indicates all states in which the system can currently not operate as an error is present. A closer description of the error can be taken form object instances described in chapter 7.3.
LaserOn is the only state in which the laser system is actively emitting radiation.
The components of the LaserSystemState_StateMachineType have additional references which are defined in Table 23.
Table 23 – LaserSystemState_StateMachineType Additional References
SourceBrowsePath |
Reference Type |
Is Forward |
TargetBrowsePath |
FromOffToOff |
0:FromState |
True |
Off |
0:ToState |
True |
Off |
FromOffToEnergySaving |
0:FromState |
True |
Off |
0:ToState |
True |
EnergySaving |
FromOffToIdle |
0:FromState |
True |
Off |
0:ToState |
True |
Idle |
FromOffToSetUp |
0:FromState |
True |
Off |
0:ToState |
True |
SetUp |
FromOffToLaserReady |
0:FromState |
True |
Off |
0:ToState |
True |
LaserReady |
FromOffToMaintenance |
0:FromState |
True |
Off |
0:ToState |
True |
Maintenance |
FromOffToError |
0:FromState |
True |
Off |
0:ToState |
True |
Error |
FromOffToLaserOn |
0:FromState |
True |
Off |
0:ToState |
True |
LaserOn |
FromEnergySavingToOff |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
Off |
FromEnergySavingToEnergySaving |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
EnergySaving |
FromEnergySavingToIdle |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
Idle |
FromEnergySavingToSetUp |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
SetUp |
FromEnergySavingToLaserReady |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
LaserReady |
FromEnergySavingToMaintenance |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
Maintenance |
FromEnergySavingToError |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
Error |
FromEnergySavingToLaserOn |
0:FromState |
True |
EnergySaving |
0:ToState |
True |
LaserOn |
FromIdleToOff |
0:FromState |
True |
Idle |
0:ToState |
True |
Off |
FromIdleToEnergySaving |
0:FromState |
True |
Idle |
0:ToState |
True |
EnergySaving |
FromIdleToIdle |
0:FromState |
True |
Idle |
0:ToState |
True |
Idle |
FromIdleToSetUp |
0:FromState |
True |
Idle |
0:ToState |
True |
SetUp |
FromIdleToLaserReady |
0:FromState |
True |
Idle |
0:ToState |
True |
LaserReady |
FromIdleToMaintenance |
0:FromState |
True |
Idle |
0:ToState |
True |
Maintenance |
FromIdleToError |
0:FromState |
True |
Idle |
0:ToState |
True |
Error |
FromIdleToLaserOn |
0:FromState |
True |
Idle |
0:ToState |
True |
LaserOn |
FromSetUpToOff |
0:FromState |
True |
SetUp |
0:ToState |
True |
Off |
FromSetUpToEnergySaving |
0:FromState |
True |
SetUp |
0:ToState |
True |
EnergySaving |
FromSetUpToIdle |
0:FromState |
True |
SetUp |
0:ToState |
True |
Idle |
FromSetUpToSetUp |
0:FromState |
True |
SetUp |
0:ToState |
True |
SetUp |
FromSetUpToLaserReady |
0:FromState |
True |
SetUp |
0:ToState |
True |
LaserReady |
FromSetUpToMaintenance |
0:FromState |
True |
SetUp |
0:ToState |
True |
Maintenance |
FromSetUpToError |
0:FromState |
True |
SetUp |
0:ToState |
True |
Error |
FromSetUpToLaserOn |
0:FromState |
True |
SetUp |
0:ToState |
True |
LaserOn |
FromLaserReadyToOff |
0:FromState |
True |
LaserReady |
0:ToState |
True |
Off |
FromLaserReadyToEnergySaving |
0:FromState |
True |
LaserReady |
0:ToState |
True |
EnergySaving |
FromLaserReadyToIdle |
0:FromState |
True |
LaserReady |
0:ToState |
True |
Idle |
FromLaserReadyToSetUp |
0:FromState |
True |
LaserReady |
0:ToState |
True |
SetUp |
FromLaserReadyToLaserReady |
0:FromState |
True |
LaserReady |
0:ToState |
True |
LaserReady |
FromLaserReadyToMaintenance |
0:FromState |
True |
LaserReady |
0:ToState |
True |
Maintenance |
FromLaserReadyToError |
0:FromState |
True |
LaserReady |
0:ToState |
True |
Error |
FromLaserReadyToLaserOn |
0:FromState |
True |
LaserReady |
0:ToState |
True |
LaserOn |
FromMaintenanceToOff |
0:FromState |
True |
Maintenance |
0:ToState |
True |
Off |
FromMaintenanceToEnergySaving |
0:FromState |
True |
Maintenance |
0:ToState |
True |
EnergySaving |
FromMaintenanceToIdle |
0:FromState |
True |
Maintenance |
0:ToState |
True |
Idle |
FromMaintenanceToSetUp |
0:FromState |
True |
Maintenance |
0:ToState |
True |
SetUp |
FromMaintenanceToLaserReady |
0:FromState |
True |
Maintenance |
0:ToState |
True |
LaserReady |
FromMaintenanceToMaintenance |
0:FromState |
True |
Maintenance |
0:ToState |
True |
Maintenance |
FromMaintenanceToError |
0:FromState |
True |
Maintenance |
0:ToState |
True |
Error |
FromMaintenanceToLaserOn |
0:FromState |
True |
Maintenance |
0:ToState |
True |
LaserOn |
FromErrorToOff |
0:FromState |
True |
Error |
0:ToState |
True |
Off |
FromErrorToEnergySaving |
0:FromState |
True |
Error |
0:ToState |
True |
EnergySaving |
FromErrorToIdle |
0:FromState |
True |
Error |
0:ToState |
True |
Idle |
FromErrorToSetUp |
0:FromState |
True |
Error |
0:ToState |
True |
SetUp |
FromErrorToLaserReady |
0:FromState |
True |
Error |
0:ToState |
True |
LaserReady |
FromErrorToMaintenance |
0:FromState |
True |
Error |
0:ToState |
True |
Maintenance |
FromErrorToError |
0:FromState |
True |
Error |
0:ToState |
True |
Error |
FromErrorToLaserOn |
0:FromState |
True |
Error |
0:ToState |
True |
LaserOn |
FromLaserOnToOff |
0:FromState |
True |
LaserOn |
0:ToState |
True |
Off |
FromLaserOnToEnergySaving |
0:FromState |
True |
LaserOn |
0:ToState |
True |
EnergySaving |
FromLaserOnToIdle |
0:FromState |
True |
LaserOn |
0:ToState |
True |
Idle |
FromLaserOnToSetUp |
0:FromState |
True |
LaserOn |
0:ToState |
True |
SetUp |
FromLaserOnToLaserReady |
0:FromState |
True |
LaserOn |
0:ToState |
True |
LaserReady |
FromLaserOnToMaintenance |
0:FromState |
True |
LaserOn |
0:ToState |
True |
Maintenance |
FromLaserOnToError |
0:FromState |
True |
LaserOn |
0:ToState |
True |
Error |
FromLaserOnToLaserOn |
0:FromState |
True |
LaserOn |
0:ToState |
True |
LaserOn |
The component Variables of the LaserSystemState_StateMachineType have additional Attributes defined in Table 24
Table 24 – LaserSystemState_StateMachineType Attribute Values for child nodes
Source Path |
Value Attribute |
Description Attribute |
||
0:DefaultInstanceBrowseName |
LaserSystemState |
The default BrowseName for instances of the type |
||
Off |
|
The laser system is currently off or very close to off |
||
EnergySaving |
|
The laser system is actively reducing its energy consumption |
||
Idle |
|
The laser system is operational but not perusing any activities to achieve the LaserReady state |
||
SetUp |
|
The laser system is performing activities to achieve the LaserReady state |
||
LaserReady |
|
The laser system is ready and is merely missing a trigger to actively emit radiation |
||
Maintenance |
|
The laser system is currently not operational as maintenance is being performed on it |
||
Error |
|
The laser system is not operational as it is in an error state |
||
LaserOn |
|
The laser system is actively emitting radiation |
||
|
0 |
|
||
|
1 |
|
||
|
2 |
|
||
|
3 |
|
||
|
4 |
|
||
|
5 |
|
||
|
6 |
|
||
|
7 |
|
||
|
0 |
|
||
|
1 |
|
||
|
2 |
|
||
|
3 |
|
||
|
4 |
|
||
|
5 |
|
||
|
6 |
|
||
|
7 |
|
||
|
8 |
|
||
|
9 |
|
||
|
10 |
|
||
|
11 |
|
||
|
12 |
|
||
|
13 |
|
||
|
14 |
|
||
|
15 |
|
||
|
16 |
|
||
|
17 |
|
||
|
18 |
|
||
|
19 |
|
||
|
20 |
|
||
|
21 |
|
||
|
22 |
|
||
|
23 |
|
||
|
24 |
|
||
|
25 |
|
||
|
26 |
|
||
|
27 |
|
||
|
28 |
|
||
|
29 |
|
||
|
30 |
|
||
|
31 |
|
||
|
32 |
|
||
|
33 |
|
||
|
34 |
|
||
|
35 |
|
||
|
36 |
|
||
|
37 |
|
||
|
38 |
|
||
|
39 |
|
||
|
40 |
|
||
|
41 |
|
||
|
42 |
|
||
|
43 |
|
||
|
44 |
|
||
|
45 |
|
||
|
46 |
|
||
|
47 |
|
||
|
48 |
|
||
|
49 |
|
||
|
50 |
|
||
|
51 |
|
||
|
52 |
|
||
|
53 |
|
||
|
54 |
|
||
|
55 |
|
||
|
56 |
|
||
|
57 |
|
||
|
58 |
|
||
|
59 |
|
||
|
60 |
|
||
|
61 |
|
||
|
62 |
|
||
|
63 |
|