Aller au contenu principal

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:

Simple state machine definition
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):

Complete ProductionStateMachineType
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
Initial States

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:

ElementDescriptionModellingRule
CurrentState.NameName of the current stateOptional
CurrentState.NumberNumber of the current stateOptional
CurrentState.EffectiveDisplayNameEffective display name of the current stateOptional
LastTransition.NameName of the last transitionOptional
LastTransition.NumberNumber of the last transitionOptional
LastTransition.TransitionTimeTime of the last transitionOptional
LastTransition.EffectiveTransitionTimeEffective time of the last transitionOptional
AvailableStatesAvailable states listOptional
AvailableTransitionsAvailable transitions listOptional

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:

Promoting optionals to mandatory in stateMachineType
stateMachines:
- browseName: CustomStateMachineType
subtypeOf: ua:FiniteStateMachineType
promotedToMandatory:
- ua:CurrentState.ua:Name
- ua:LastTransition.ua:Id
- ua:LastTransition.ua:TransitionTime
Segment Qualification

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:

Promoting optionals in instance component 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
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
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>