Finite State Machine
Finite State Machines (FSMs) in OPC UA are special object types that represent states and transitions. In Sterfive OPCUA Modeler, state machines are subtyped from ua:FiniteStateMachineType and configured under the stateMachines section of the YAML file.
This guide explains how to define basic state machines, structure complete production lifecycle models, and promote optional state machine properties to mandatory.
1. Defining a Simple State Machine
A basic state machine is defined by listing its states and the allowed transitions between those states:
stateMachines:
- browseName: SimpleStateMachineType
states:
- name: State1
value: 0
description: state 1
- name: State2
value: 1
description: state 2
transitions:
- from: State1
to: State2
value: 100
- from: State2
to: State1
value: 200
2. Complete Production State Machine Example
A full, industry-grade state machine can contain detailed descriptions, custom components, and initial state markers. Below is a complete ProductionStateMachineType model matching standard industrial lifecycle states (Initializing, Running, Ended, Interrupted, and Aborted):
stateMachines:
- browseName: ProductionStateMachineType
description: |
The ProductionStateMachineType shows the states an element in production can be in and the
possible transitions between those states.
subtypeOf: ua:FiniteStateMachineType
components:
- browseName: ua:CurrentState
typeDefinition: ua:FiniteStateVariableType
dataType: ua:LocalizedText
- browseName: ua:LastTransition
typeDefinition: ua:FiniteStateTransitionVariableType
modellingRule: Optional
states:
- name: Initializing
isInitialState: true
value: 0
description: |
**Initializing** is the state in which the element in production is being prepared.
- name: Running
value: 1
description: |
**Running** indicates that the operation has been started.
- name: Ended
value: 2
description: |
**Ended** is reached when the production on the part has finished.
- name: Interrupted
value: 3
description: |
**Interrupted** indicates that the execution has been reversibly halted.
- name: Aborted
value: 4
description: |
**Aborted** indicates that the operation has been irreversibly stopped.
transitions:
- from: Aborted
to: Initializing
value: 8
- from: Ended
to: Initializing
value: 2
- from: Initializing
to: Aborted
value: 9
- from: Initializing
to: Running
value: 0
- from: Interrupted
to: Aborted
value: 7
- from: Interrupted
to: Running
value: 5
- from: Running
to: Aborted
value: 6
- from: Running
to: Ended
value: 1
- from: Running
to: Interrupted
value: 4
- from: Running
to: Running
value: 3
Setting isInitialState: true marks a specific state as the state in which the machine begins execution when started.
3. Promoting State Machine Optionals to Mandatory
The standard ua:FiniteStateMachineType declares several optional variables (e.g. CurrentState.Name, LastTransition.EffectiveTransitionTime).
You can promote these optional variables to mandatory in your custom state machine so they are automatically instantiated, utilizing the promotedToMandatory property.
Here is a breakdown of the standard optional properties available in ua:FiniteStateMachineType:
| Element | Description | ModellingRule |
|---|---|---|
CurrentState.Name | Name of the current state | Optional |
CurrentState.Number | Number of the current state | Optional |
CurrentState.EffectiveDisplayName | Effective display name of the current state | Optional |
LastTransition.Name | Name of the last transition | Optional |
LastTransition.Number | Number of the last transition | Optional |
LastTransition.TransitionTime | Time of the last transition | Optional |
LastTransition.EffectiveTransitionTime | Effective time of the last transition | Optional |
AvailableStates | Available states list | Optional |
AvailableTransitions | Available transitions list | Optional |
A. Promoting Optionals at the StateMachineType Level
To ensure every instance of your state machine type always instantiates these properties, define promotedToMandatory at the state machine type level:
stateMachines:
- browseName: CustomStateMachineType
subtypeOf: ua:FiniteStateMachineType
promotedToMandatory:
- ua:CurrentState.ua:Name
- ua:LastTransition.ua:Id
- ua:LastTransition.ua:TransitionTime
Paths in promotedToMandatory: must be segment-qualified. Because CurrentState, Name, etc., are defined in the primary OPC UA namespace, each segment carries the ua: alias (e.g., ua:CurrentState.ua:Name).
B. Promoting Optionals at the Component / Instance Level
Alternatively, you can promote optional state machine properties to mandatory when declaring a component or instance of a state machine inside an ObjectType declaration:
- browseName: CustomStateHierarchyType
subtypeOf: ua:FiniteStateMachineType
promotedToMandatory:
- ua:AvailableStates
- ua:AvailableTransitions
states:
- name: Idle
isInitialState: true
value: 0
description: Idle state, initial state of Plc
- name: Ready
value: 200
description: Ready ! Go !
transitions:
- from: Idle
to: Ready
description: Go Johny Go
- from: Ready
to: Idle
description: Let's have a rest now
objectTypes:
- browseName: MyComponentType
subtypeOf: di:ComponentType
description: A test component
components:
- browseName: TheStateMachine
typeDefinition: CustomStateHierarchyType
promotedToMandatory:
- ua:CurrentState.ua:EffectiveDisplayName
- ua:CurrentState.ua:Name
- ua:LastTransition
- ua:LastTransition.ua:TransitionTime
description: The state of Component
instances:
- browseName: MyComponent
typeDefinition: MyComponentType
organizedBy: /ua:Objects
When your component type is instantiated, all promoted state machine properties will be automatically created on the child StateMachine node.
Full example
📄 Full working example — finite-state-machine.model.yaml
# yaml-language-server: $schema=../../../schemas/nodeset2.schema.json
namespaceUri: http://sterfive.com/UA/doc-examples/fsm/
version: 1.0.0
publicationDate: "2026-05-26T00:00:00Z"
namespaces:
- di
stateMachines:
- browseName: SimpleStateMachineType
states:
- name: State1
value: 0
description: state 1
- name: State2
value: 1
description: state 2
transitions:
- from: State1
to: State2
value: 100
- from: State2
to: State1
value: 200
- browseName: ProductionStateMachineType
description: |
The ProductionStateMachineType shows the states an element in production can be in and the
possible transitions between those states.
subtypeOf: ua:FiniteStateMachineType
components:
- browseName: ua:CurrentState
typeDefinition: ua:FiniteStateVariableType
dataType: ua:LocalizedText
- browseName: ua:LastTransition
typeDefinition: ua:FiniteStateTransitionVariableType
modellingRule: Optional
states:
- name: Initializing
isInitialState: true
value: 0
description: |
**Initializing** is the state in which the element in production is being prepared.
- name: Running
value: 1
description: |
**Running** indicates that the operation has been started.
- name: Ended
value: 2
description: |
**Ended** is reached when the production on the part has finished.
- name: Interrupted
value: 3
description: |
**Interrupted** indicates that the execution has been reversibly halted.
- name: Aborted
value: 4
description: |
**Aborted** indicates that the operation has been irreversibly stopped.
transitions:
- from: Aborted
to: Initializing
value: 8
- from: Ended
to: Initializing
value: 2
- from: Initializing
to: Aborted
value: 9
- from: Initializing
to: Running
value: 0
- from: Interrupted
to: Aborted
value: 7
- from: Interrupted
to: Running
value: 5
- from: Running
to: Aborted
value: 6
- from: Running
to: Ended
value: 1
- from: Running
to: Interrupted
value: 4
- from: Running
to: Running
value: 3
- browseName: CustomStateMachineType
subtypeOf: ua:FiniteStateMachineType
promotedToMandatory:
- ua:CurrentState.ua:Name
- ua:LastTransition.ua:Id
- ua:LastTransition.ua:TransitionTime
- browseName: CustomStateHierarchyType
subtypeOf: ua:FiniteStateMachineType
promotedToMandatory:
- ua:AvailableStates
- ua:AvailableTransitions
states:
- name: Idle
isInitialState: true
value: 0
description: Idle state, initial state of Plc
- name: Ready
value: 200
description: Ready ! Go !
transitions:
- from: Idle
to: Ready
description: Go Johny Go
- from: Ready
to: Idle
description: Let's have a rest now
objectTypes:
- browseName: MyComponentType
subtypeOf: di:ComponentType
description: A test component
components:
- browseName: TheStateMachine
typeDefinition: CustomStateHierarchyType
promotedToMandatory:
- ua:CurrentState.ua:EffectiveDisplayName
- ua:CurrentState.ua:Name
- ua:LastTransition
- ua:LastTransition.ua:TransitionTime
description: The state of Component
instances:
- browseName: MyComponent
typeDefinition: MyComponentType
organizedBy: /ua:Objects
📄 Generated NodeSet2.xml — finite-state-machine.model.Nodeset2.xml
<?xml version="1.0"?>
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:ns2="http://opcfoundation.org/UA/DI/Type.xsd" xmlns:ns1="http://sterfive.com/UA/doc-examples/fsm/Type.xsd">
<NamespaceUris>
<Uri>http://sterfive.com/UA/doc-examples/fsm/</Uri>
<Uri>http://opcfoundation.org/UA/DI/</Uri>
</NamespaceUris>
<Models>
<Model ModelUri="http://sterfive.com/UA/doc-examples/fsm/" Version="1.0.0" PublicationDate="2026-05-26T00:00:00.000Z">
<RequiredModel ModelUri="http://opcfoundation.org/UA/" Version="1.05.06" PublicationDate="2025-11-08T00:00:00.000Z"/>
<RequiredModel ModelUri="http://opcfoundation.org/UA/DI/" Version="1.05.0" PublicationDate="2025-11-15T00:00:00.000Z"/>
</Model>
</Models>
<Aliases>
<Alias Alias="FromState">i=51</Alias>
<Alias Alias="HasComponent">i=47</Alias>
<Alias Alias="HasModellingRule">i=37</Alias>
<Alias Alias="HasProperty">i=46</Alias>
<Alias Alias="HasSubtype">i=45</Alias>
<Alias Alias="HasTypeDefinition">i=40</Alias>
<Alias Alias="LocalizedText">i=21</Alias>
<Alias Alias="NodeId">i=17</Alias>
<Alias Alias="Organizes">i=35</Alias>
<Alias Alias="QualifiedName">i=20</Alias>
<Alias Alias="ToState">i=52</Alias>
<Alias Alias="UInt32">i=7</Alias>
<Alias Alias="UtcTime">i=294</Alias>
</Aliases>
<!--ReferenceTypes-->
<!--ObjectTypes-->
<!--ObjectType - 1:SimpleStateMachineType {{{{ -->
<UAObjectType NodeId="ns=1;i=1000" BrowseName="1:SimpleStateMachineType">
<DisplayName>SimpleStateMachineType</DisplayName>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">i=2771</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1001</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1003</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1005</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1007</Reference>
</References>
</UAObjectType>
<!--Object - 1:State1 {{{{ -->
<UAObject NodeId="ns=1;i=1001" BrowseName="1:State1" ParentNodeId="ns=1;i=1000">
<DisplayName>State1</DisplayName>
<Description>state 1</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1002</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1002" BrowseName="StateNumber" ParentNodeId="ns=1;i=1001" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:State1 }}}} -->
<!--Object - 1:State2 {{{{ -->
<UAObject NodeId="ns=1;i=1003" BrowseName="1:State2" ParentNodeId="ns=1;i=1000">
<DisplayName>State2</DisplayName>
<Description>state 2</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1004</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1004" BrowseName="StateNumber" ParentNodeId="ns=1;i=1003" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>1</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:State2 }}}} -->
<!--Object - 1:State1ToState2 {{{{ -->
<UAObject NodeId="ns=1;i=1005" BrowseName="1:State1ToState2" ParentNodeId="ns=1;i=1000">
<DisplayName>State1ToState2</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1001</Reference>
<Reference ReferenceType="ToState">ns=1;i=1003</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1006</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1006" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1005" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>100</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:State1ToState2 }}}} -->
<!--Object - 1:State2ToState1 {{{{ -->
<UAObject NodeId="ns=1;i=1007" BrowseName="1:State2ToState1" ParentNodeId="ns=1;i=1000">
<DisplayName>State2ToState1</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1001</Reference>
<Reference ReferenceType="FromState">ns=1;i=1003</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1008</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1008" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1007" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>200</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:State2ToState1 }}}} -->
<!--ObjectType - 1:SimpleStateMachineType }}}}-->
<!--ObjectType - 1:ProductionStateMachineType {{{{ -->
<UAObjectType NodeId="ns=1;i=1009" BrowseName="1:ProductionStateMachineType">
<DisplayName>ProductionStateMachineType</DisplayName>
<Description>The ProductionStateMachineType shows the states an element in production can be in and the</Description>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">i=2771</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1010</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1012</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1014</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1016</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1018</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1020</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1022</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1024</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1026</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1028</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1030</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1032</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1034</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1036</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1038</Reference>
</References>
</UAObjectType>
<!--Object - 1:Initializing {{{{ -->
<UAObject NodeId="ns=1;i=1010" BrowseName="1:Initializing" ParentNodeId="ns=1;i=1009">
<DisplayName>Initializing</DisplayName>
<Description>**Initializing** is the state in which the element in production is being prepared.</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2309</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1011</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1011" BrowseName="StateNumber" ParentNodeId="ns=1;i=1010" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:Initializing }}}} -->
<!--Object - 1:Running {{{{ -->
<UAObject NodeId="ns=1;i=1012" BrowseName="1:Running" ParentNodeId="ns=1;i=1009">
<DisplayName>Running</DisplayName>
<Description>**Running** indicates that the operation has been started.</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1013</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1013" BrowseName="StateNumber" ParentNodeId="ns=1;i=1012" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>1</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:Running }}}} -->
<!--Object - 1:Ended {{{{ -->
<UAObject NodeId="ns=1;i=1014" BrowseName="1:Ended" ParentNodeId="ns=1;i=1009">
<DisplayName>Ended</DisplayName>
<Description>**Ended** is reached when the production on the part has finished.</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1015</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1015" BrowseName="StateNumber" ParentNodeId="ns=1;i=1014" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>2</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:Ended }}}} -->
<!--Object - 1:Interrupted {{{{ -->
<UAObject NodeId="ns=1;i=1016" BrowseName="1:Interrupted" ParentNodeId="ns=1;i=1009">
<DisplayName>Interrupted</DisplayName>
<Description>**Interrupted** indicates that the execution has been reversibly halted.</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1017</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1017" BrowseName="StateNumber" ParentNodeId="ns=1;i=1016" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>3</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:Interrupted }}}} -->
<!--Object - 1:Aborted {{{{ -->
<UAObject NodeId="ns=1;i=1018" BrowseName="1:Aborted" ParentNodeId="ns=1;i=1009">
<DisplayName>Aborted</DisplayName>
<Description>**Aborted** indicates that the operation has been irreversibly stopped.</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1019</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1019" BrowseName="StateNumber" ParentNodeId="ns=1;i=1018" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>4</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:Aborted }}}} -->
<!--Object - 1:AbortedToInitializing {{{{ -->
<UAObject NodeId="ns=1;i=1020" BrowseName="1:AbortedToInitializing" ParentNodeId="ns=1;i=1009">
<DisplayName>AbortedToInitializing</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1010</Reference>
<Reference ReferenceType="FromState">ns=1;i=1018</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1021</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1021" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1020" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>8</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:AbortedToInitializing }}}} -->
<!--Object - 1:EndedToInitializing {{{{ -->
<UAObject NodeId="ns=1;i=1022" BrowseName="1:EndedToInitializing" ParentNodeId="ns=1;i=1009">
<DisplayName>EndedToInitializing</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1010</Reference>
<Reference ReferenceType="FromState">ns=1;i=1014</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1023</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1023" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1022" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>2</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:EndedToInitializing }}}} -->
<!--Object - 1:InitializingToAborted {{{{ -->
<UAObject NodeId="ns=1;i=1024" BrowseName="1:InitializingToAborted" ParentNodeId="ns=1;i=1009">
<DisplayName>InitializingToAborted</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1010</Reference>
<Reference ReferenceType="ToState">ns=1;i=1018</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1025</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1025" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1024" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>9</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:InitializingToAborted }}}} -->
<!--Object - 1:InitializingToRunning {{{{ -->
<UAObject NodeId="ns=1;i=1026" BrowseName="1:InitializingToRunning" ParentNodeId="ns=1;i=1009">
<DisplayName>InitializingToRunning</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1010</Reference>
<Reference ReferenceType="ToState">ns=1;i=1012</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1027</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1027" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1026" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:InitializingToRunning }}}} -->
<!--Object - 1:InterruptedToAborted {{{{ -->
<UAObject NodeId="ns=1;i=1028" BrowseName="1:InterruptedToAborted" ParentNodeId="ns=1;i=1009">
<DisplayName>InterruptedToAborted</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1016</Reference>
<Reference ReferenceType="ToState">ns=1;i=1018</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1029</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1029" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1028" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>7</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:InterruptedToAborted }}}} -->
<!--Object - 1:InterruptedToRunning {{{{ -->
<UAObject NodeId="ns=1;i=1030" BrowseName="1:InterruptedToRunning" ParentNodeId="ns=1;i=1009">
<DisplayName>InterruptedToRunning</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1012</Reference>
<Reference ReferenceType="FromState">ns=1;i=1016</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1031</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1031" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1030" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>5</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:InterruptedToRunning }}}} -->
<!--Object - 1:RunningToAborted {{{{ -->
<UAObject NodeId="ns=1;i=1032" BrowseName="1:RunningToAborted" ParentNodeId="ns=1;i=1009">
<DisplayName>RunningToAborted</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1012</Reference>
<Reference ReferenceType="ToState">ns=1;i=1018</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1033</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1033" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1032" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>6</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:RunningToAborted }}}} -->
<!--Object - 1:RunningToEnded {{{{ -->
<UAObject NodeId="ns=1;i=1034" BrowseName="1:RunningToEnded" ParentNodeId="ns=1;i=1009">
<DisplayName>RunningToEnded</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1012</Reference>
<Reference ReferenceType="ToState">ns=1;i=1014</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1035</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1035" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1034" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>1</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:RunningToEnded }}}} -->
<!--Object - 1:RunningToInterrupted {{{{ -->
<UAObject NodeId="ns=1;i=1036" BrowseName="1:RunningToInterrupted" ParentNodeId="ns=1;i=1009">
<DisplayName>RunningToInterrupted</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1012</Reference>
<Reference ReferenceType="ToState">ns=1;i=1016</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1037</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1037" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1036" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>4</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:RunningToInterrupted }}}} -->
<!--Object - 1:RunningToRunning {{{{ -->
<UAObject NodeId="ns=1;i=1038" BrowseName="1:RunningToRunning" ParentNodeId="ns=1;i=1009">
<DisplayName>RunningToRunning</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1012</Reference>
<Reference ReferenceType="FromState">ns=1;i=1012</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1039</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1039" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1038" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>3</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:RunningToRunning }}}} -->
<!--ObjectType - 1:ProductionStateMachineType }}}}-->
<!--ObjectType - 1:CustomStateMachineType {{{{ -->
<UAObjectType NodeId="ns=1;i=1040" BrowseName="1:CustomStateMachineType">
<DisplayName>CustomStateMachineType</DisplayName>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">i=2771</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1041</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1046</Reference>
</References>
</UAObjectType>
<UAVariable NodeId="ns=1;i=1041" BrowseName="CurrentState" ParentNodeId="ns=1;i=1040" DataType="LocalizedText">
<DisplayName>CurrentState</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2760</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1042</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1043</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1044</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1045</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1042" BrowseName="Id" ParentNodeId="ns=1;i=1041" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1043" BrowseName="Name" ParentNodeId="ns=1;i=1041" DataType="QualifiedName">
<DisplayName>Name</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:QualifiedName/>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1044" BrowseName="Number" ParentNodeId="ns=1;i=1041" DataType="UInt32">
<DisplayName>Number</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=80</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1045" BrowseName="EffectiveDisplayName" ParentNodeId="ns=1;i=1041" DataType="LocalizedText">
<DisplayName>EffectiveDisplayName</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=80</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1046" BrowseName="LastTransition" ParentNodeId="ns=1;i=1040" DataType="LocalizedText">
<DisplayName>LastTransition</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2767</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1047</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1048</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1049</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1050</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1051</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1047" BrowseName="Id" ParentNodeId="ns=1;i=1046" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1048" BrowseName="Name" ParentNodeId="ns=1;i=1046" DataType="QualifiedName">
<DisplayName>Name</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=80</Reference>
</References>
<Value>
<uax:QualifiedName/>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1049" BrowseName="Number" ParentNodeId="ns=1;i=1046" DataType="UInt32">
<DisplayName>Number</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=80</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1050" BrowseName="TransitionTime" ParentNodeId="ns=1;i=1046" DataType="UtcTime">
<DisplayName>TransitionTime</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1051" BrowseName="EffectiveTransitionTime" ParentNodeId="ns=1;i=1046" DataType="UtcTime">
<DisplayName>EffectiveTransitionTime</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=80</Reference>
</References>
</UAVariable>
<!--ObjectType - 1:CustomStateMachineType }}}}-->
<!--ObjectType - 1:CustomStateHierarchyType {{{{ -->
<UAObjectType NodeId="ns=1;i=1052" BrowseName="1:CustomStateHierarchyType">
<DisplayName>CustomStateHierarchyType</DisplayName>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">i=2771</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1053</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1055</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1057</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1059</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1061</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1062</Reference>
</References>
</UAObjectType>
<!--Object - 1:Idle {{{{ -->
<UAObject NodeId="ns=1;i=1053" BrowseName="1:Idle" ParentNodeId="ns=1;i=1052">
<DisplayName>Idle</DisplayName>
<Description>Idle state, initial state of Plc</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2309</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1054</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1054" BrowseName="StateNumber" ParentNodeId="ns=1;i=1053" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:Idle }}}} -->
<!--Object - 1:Ready {{{{ -->
<UAObject NodeId="ns=1;i=1055" BrowseName="1:Ready" ParentNodeId="ns=1;i=1052">
<DisplayName>Ready</DisplayName>
<Description>Ready ! Go !</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2307</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1056</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1056" BrowseName="StateNumber" ParentNodeId="ns=1;i=1055" DataType="UInt32">
<DisplayName>StateNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>200</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:Ready }}}} -->
<!--Object - 1:IdleToReady {{{{ -->
<UAObject NodeId="ns=1;i=1057" BrowseName="1:IdleToReady" ParentNodeId="ns=1;i=1052">
<DisplayName>IdleToReady</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="FromState">ns=1;i=1053</Reference>
<Reference ReferenceType="ToState">ns=1;i=1055</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1058</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1058" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1057" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:IdleToReady }}}} -->
<!--Object - 1:ReadyToIdle {{{{ -->
<UAObject NodeId="ns=1;i=1059" BrowseName="1:ReadyToIdle" ParentNodeId="ns=1;i=1052">
<DisplayName>ReadyToIdle</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2310</Reference>
<Reference ReferenceType="ToState">ns=1;i=1053</Reference>
<Reference ReferenceType="FromState">ns=1;i=1055</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1060</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1060" BrowseName="TransitionNumber" ParentNodeId="ns=1;i=1059" DataType="UInt32">
<DisplayName>TransitionNumber</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:UInt32>1</uax:UInt32>
</Value>
</UAVariable>
<!--Object - 1:ReadyToIdle }}}} -->
<UAVariable NodeId="ns=1;i=1061" BrowseName="AvailableStates" ParentNodeId="ns=1;i=1052" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableStates</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1053</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1055</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1062" BrowseName="AvailableTransitions" ParentNodeId="ns=1;i=1052" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableTransitions</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1057</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1059</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<!--ObjectType - 1:CustomStateHierarchyType }}}}-->
<!--ObjectType - 1:MyComponentType {{{{ -->
<UAObjectType NodeId="ns=1;i=1063" BrowseName="1:MyComponentType">
<DisplayName>MyComponentType</DisplayName>
<Description>A test component</Description>
<References>
<Reference ReferenceType="HasComponent">ns=1;i=1064</Reference>
<Reference ReferenceType="HasSubtype" IsForward="false">ns=2;i=15063</Reference>
</References>
</UAObjectType>
<!--Object - 1:TheStateMachine {{{{ -->
<UAObject NodeId="ns=1;i=1064" BrowseName="1:TheStateMachine" ParentNodeId="ns=1;i=1063">
<DisplayName>TheStateMachine</DisplayName>
<Description>The state of Component</Description>
<References>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasTypeDefinition">ns=1;i=1052</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1065</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1066</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1067</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1071</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1065" BrowseName="AvailableStates" ParentNodeId="ns=1;i=1064" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableStates</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1053</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1055</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1066" BrowseName="AvailableTransitions" ParentNodeId="ns=1;i=1064" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableTransitions</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1057</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1059</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1067" BrowseName="CurrentState" ParentNodeId="ns=1;i=1064" DataType="LocalizedText">
<DisplayName>CurrentState</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2760</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1068</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1069</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1070</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1068" BrowseName="Id" ParentNodeId="ns=1;i=1067" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1069" BrowseName="Name" ParentNodeId="ns=1;i=1067" DataType="QualifiedName">
<DisplayName>Name</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:QualifiedName/>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1070" BrowseName="EffectiveDisplayName" ParentNodeId="ns=1;i=1067" DataType="LocalizedText">
<DisplayName>EffectiveDisplayName</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1071" BrowseName="LastTransition" ParentNodeId="ns=1;i=1064" DataType="LocalizedText">
<DisplayName>LastTransition</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2767</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1072</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1073</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1072" BrowseName="Id" ParentNodeId="ns=1;i=1071" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1073" BrowseName="TransitionTime" ParentNodeId="ns=1;i=1071" DataType="UtcTime">
<DisplayName>TransitionTime</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAVariable>
<!--Object - 1:TheStateMachine }}}} -->
<!--ObjectType - 1:MyComponentType }}}}-->
<!--VariableTypes-->
<!--Other Nodes-->
<!--Object - 1:MyComponent {{{{ -->
<UAObject NodeId="ns=1;i=1074" BrowseName="1:MyComponent">
<DisplayName>MyComponent</DisplayName>
<Description>A test component</Description>
<References>
<Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
<Reference ReferenceType="HasTypeDefinition">ns=1;i=1063</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1075</Reference>
</References>
</UAObject>
<!--Object - 1:TheStateMachine {{{{ -->
<UAObject NodeId="ns=1;i=1075" BrowseName="1:TheStateMachine" ParentNodeId="ns=1;i=1074">
<DisplayName>TheStateMachine</DisplayName>
<Description>The state of Component</Description>
<References>
<Reference ReferenceType="HasTypeDefinition">ns=1;i=1052</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1076</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1077</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1078</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=1082</Reference>
</References>
</UAObject>
<UAVariable NodeId="ns=1;i=1076" BrowseName="AvailableStates" ParentNodeId="ns=1;i=1075" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableStates</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1053</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1055</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1077" BrowseName="AvailableTransitions" ParentNodeId="ns=1;i=1075" ValueRank="1" DataType="NodeId">
<DisplayName>AvailableTransitions</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
</References>
<Value>
<ListOfNodeId xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
<NodeId>
<Identifier>ns=1;i=1057</Identifier>
</NodeId>
<NodeId>
<Identifier>ns=1;i=1059</Identifier>
</NodeId>
</ListOfNodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1078" BrowseName="CurrentState" ParentNodeId="ns=1;i=1075" DataType="LocalizedText">
<DisplayName>CurrentState</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2760</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1079</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1080</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1081</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1079" BrowseName="Id" ParentNodeId="ns=1;i=1078" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1080" BrowseName="Name" ParentNodeId="ns=1;i=1078" DataType="QualifiedName">
<DisplayName>Name</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
</References>
<Value>
<uax:QualifiedName/>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1081" BrowseName="EffectiveDisplayName" ParentNodeId="ns=1;i=1078" DataType="LocalizedText">
<DisplayName>EffectiveDisplayName</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1082" BrowseName="LastTransition" ParentNodeId="ns=1;i=1075" DataType="LocalizedText">
<DisplayName>LastTransition</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=2767</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1083</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=1084</Reference>
</References>
</UAVariable>
<UAVariable NodeId="ns=1;i=1083" BrowseName="Id" ParentNodeId="ns=1;i=1082" DataType="NodeId">
<DisplayName>Id</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
</References>
<Value>
<uax:NodeId>
<uax:Identifier>i=0</uax:Identifier>
</uax:NodeId>
</Value>
</UAVariable>
<UAVariable NodeId="ns=1;i=1084" BrowseName="TransitionTime" ParentNodeId="ns=1;i=1082" DataType="UtcTime">
<DisplayName>TransitionTime</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=68</Reference>
</References>
</UAVariable>
<!--Object - 1:TheStateMachine }}}} -->
<!--Object - 1:MyComponent }}}} -->
</UANodeSet>