<?xml version="1.0" encoding="utf-8"?>

<CAEXFile FileName="Topology.aml" SchemaVersion="2.15" xsi:noNamespaceSchemaLocation="./Source/CAEX_ClassModel_V2.15.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<AdditionalInformation AutomationMLVersion="2.0"/>

<AdditionalInformation>

<WriterHeader>

<WriterName>AutomationML e.V.</WriterName>

<WriterID>AutomationML e.V.</WriterID>

<WriterVendor>AutomationML e.V.</WriterVendor>

<WriterVendorURL>www.AutomationML.org</WriterVendorURL>

<WriterVersion>1.0</WriterVersion>

<WriterRelease>1.0</WriterRelease>

<LastWritingDateTime>2012-02-20

</LastWritingDateTime>

<WriterProjectTitle>AutomationML Tutorial Examples</WriterProjectTitle>

<WriterProjectID>AutomationML Tutorial Examples

</WriterProjectID>

</WriterHeader>

</AdditionalInformation>

<ExternalReference Path="Libs/RoleClass Libraries/AutomationMLBaseRoleClassLib.aml" Alias="BaseRoleClassLib"/>

<ExternalReference Path="Libs/InterfaceClass Libraries/AutomationMLInterfaceClassLib.aml" Alias="BaseInterfaceClassLib"/>

<InstanceHierarchy Name="ManufacturingSystem">

<InternalElement Name="firstScrewdriver" ID="{788eb291-f103-4fdc-aba0-4893b599f556}" RefBaseSystemUnitPath="LibOfCommonTools/ElectricScrewdriver">

<Attribute Name="New Attribute"/>

<ExternalInterface Name="EnergySupply" ID="{5f535d4c-dd46-4c1c-898c-4e58419048b6}" RefBaseClassPath="MyInterfaces/Energy"/>

<SupportedRoleClass RefRoleClassPath="ManufacturingRoleClasses/Tool"/>

<RoleRequirements RefBaseRoleClassPath="ManufacturingRoleClasses/Tool"/>

</InternalElement>

<InternalElement Name="secondScrewdriver" ID="{19dcf818-4716-4fc1-a85f-28e1938c4c3a}" RefBaseSystemUnitPath="LibOfCommonTools/ElectricScrewdriver">

<ExternalInterface Name="EnergySupply" ID="50e10905-ac18-413c-afab-ad8ed1569fff" RefBaseClassPath="MyInterfaces/Energy"/>

<SupportedRoleClass RefRoleClassPath="ManufacturingRoleClasses/Tool"/>

<RoleRequirements RefBaseRoleClassPath="ManufacturingRoleClasses/Tool"/>

</InternalElement>

</InstanceHierarchy>

<InterfaceClassLib Name="MyInterfaces">

<Version>1.0</Version>

<InterfaceClass Name="Energy" RefBaseClassPath="BaseInterfaceClassLib@AutomationMLInterfaceClassLib/AutomationMLBaseInterface"/>

</InterfaceClassLib>

<RoleClassLib Name="ManufacturingRoleClasses">

<Version>1.0</Version>

<RoleClass Name="Tool" RefBaseClassPath="BaseRoleClassLib@AutomationMLBaseRoleClassLib/AutomationMLBaseRole"/>

</RoleClassLib>

<SystemUnitClassLib Name="LibOfCommonTools">

<Version>1.0</Version>

<SystemUnitClass Name="ElectricScrewdriver">

<ExternalInterface Name="EnergySupply" ID="dd0e0dfe-10f8-4068-845b-9c29699ac79b" RefBaseClassPath="MyInterfaces/Energy"/>

<SupportedRoleClass RefRoleClassPath="ManufacturingRoleClasses/Tool"/>

</SystemUnitClass>

</SystemUnitClassLib>

</CAEXFile>

Figure 21 – AutomationML XML text

<?xml version="1.0" encoding="utf-8"?>

<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">

<NamespaceUris>

<Uri>http://opcfoundation.org/UA/AML/</Uri>

<Uri>http://www.iosb.fraunhofer.de/Topology.aml</Uri>

</NamespaceUris>

<Aliases>

<Alias Alias="Boolean">i=1</Alias>

<Alias Alias="SByte">i=2</Alias>

<Alias Alias="Byte">i=3</Alias>

<Alias Alias="Int16">i=4</Alias>

<Alias Alias="UInt16">i=5</Alias>

<Alias Alias="Int32">i=6</Alias>

<Alias Alias="UInt32">i=7</Alias>

<Alias Alias="Int64">i=8</Alias>

<Alias Alias="UInt64">i=9</Alias>

<Alias Alias="Float">i=10</Alias>

<Alias Alias="Double">i=11</Alias>

<Alias Alias="DateTime">i=13</Alias>

<Alias Alias="String">i=12</Alias>

<Alias Alias="ByteString">i=15</Alias>

<Alias Alias="Guid">i=14</Alias>

<Alias Alias="XmlElement">i=16</Alias>

<Alias Alias="NodeId">i=17</Alias>

<Alias Alias="ExpandedNodeId">i=18</Alias>

<Alias Alias="QualifiedName">i=20</Alias>

<Alias Alias="LocalizedText">i=21</Alias>

<Alias Alias="StatusCode">i=19</Alias>

<Alias Alias="Structure">i=22</Alias>

<Alias Alias="Number">i=26</Alias>

<Alias Alias="Integer">i=27</Alias>

<Alias Alias="UInteger">i=28</Alias>

<Alias Alias="HasComponent">i=47</Alias>

<Alias Alias="HasProperty">i=46</Alias>

<Alias Alias="Organizes">i=35</Alias>

<Alias Alias="HasEventSource">i=36</Alias>

<Alias Alias="HasNotifier">i=48</Alias>

<Alias Alias="HasSubtype">i=45</Alias>

<Alias Alias="HasTypeDefinition">i=40</Alias>

<Alias Alias="HasModellingRule">i=37</Alias>

<Alias Alias="HasEncoding">i=38</Alias>

<Alias Alias="HasDescription">i=39</Alias>

<Alias Alias="Duration">i=290</Alias>

</Aliases>

<UAObject NodeId="ns=2;i=1" BrowseName="ManufacturingSystem">

<DisplayName>ManufacturingSystem</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5005</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=25</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=8</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=10</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=2" BrowseName="MyInterfaces">

<DisplayName>MyInterfaces</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=3</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5008</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=28</Reference>

<Reference ReferenceType="ns=1;i=4002">ns=2;i=17</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=4" BrowseName="ManufacturingRoleClasses">

<DisplayName>ManufacturingRoleClasses</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=5</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5009</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=27</Reference>

<Reference ReferenceType="ns=1;i=4002">ns=2;i=18</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=6" BrowseName="LibOfCommonTools">

<DisplayName>LibOfCommonTools</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=7</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5010</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=26</Reference>

<Reference ReferenceType="ns=1;i=4002">ns=2;i=19</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=8" BrowseName="firstScrewdriver">

<DisplayName>firstScrewdriver</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=9</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=1</Reference>

<Reference ReferenceType="HasTypeDefinition">ns=2;i=19</Reference>

<Reference ReferenceType="ns=1;i=4001">ns=2;i=18</Reference>

<Reference ReferenceType="ns=1;i=4001">ns=2;i=18</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=12</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=13</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=10" BrowseName="secondScrewdriver">

<DisplayName>secondScrewdriver</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=11</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=1</Reference>

<Reference ReferenceType="HasTypeDefinition">ns=2;i=19</Reference>

<Reference ReferenceType="ns=1;i=4001">ns=2;i=18</Reference>

<Reference ReferenceType="ns=1;i=4001">ns=2;i=18</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=15</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=13" BrowseName="EnergySupply" ParentNodeId="ns=2;i=8">

<DisplayName>EnergySupply</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=14</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=8</Reference>

<Reference ReferenceType="HasTypeDefinition">ns=2;i=17</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=15" BrowseName="EnergySupply" ParentNodeId="ns=2;i=10">

<DisplayName>EnergySupply</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=16</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=10</Reference>

<Reference ReferenceType="HasTypeDefinition">ns=2;i=17</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=20" BrowseName="EnergySupply" ParentNodeId="ns=2;i=19">

<DisplayName>EnergySupply</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasProperty">ns=2;i=21</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=19</Reference>

<Reference ReferenceType="HasTypeDefinition">ns=2;i=17</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=22" BrowseName="Topology.aml">

<DisplayName>Topology.aml</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasTypeDefinition">ns=1;i=1005</Reference>

<Reference ReferenceType="HasProperty">ns=2;i=23</Reference>

<Reference ReferenceType="HasProperty">ns=2;i=24</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=25</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=26</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=27</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=28</Reference>

<Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5006</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=25" BrowseName="InstanceHierarchies" ParentNodeId="ns=2;i=22">

<DisplayName>InstanceHierarchies</DisplayName>

<References>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=22</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=1</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=26" BrowseName="SystemUnitClassLibs" ParentNodeId="ns=2;i=22">

<DisplayName>SystemUnitClassLibs</DisplayName>

<References>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=22</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=6</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=27" BrowseName="RoleClassLibs" ParentNodeId="ns=2;i=22">

<DisplayName>RoleClassLibs</DisplayName>

<References>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=22</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=4</Reference>

</References>

</UAObject>

<UAObject NodeId="ns=2;i=28" BrowseName="InterfaceClassLibs" ParentNodeId="ns=2;i=22">

<DisplayName>InterfaceClassLibs</DisplayName>

<References>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=22</Reference>

<Reference ReferenceType="HasTypeDefinition">i=61</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=2</Reference>

</References>

</UAObject>

<UAVariable NodeId="ns=2;i=3" BrowseName="Version" ParentNodeId="ns=2;i=2" DataType="String">

<DisplayName>Version</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">1.0</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=5" BrowseName="Version" ParentNodeId="ns=2;i=4" DataType="String">

<DisplayName>Version</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">1.0</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=7" BrowseName="Version" ParentNodeId="ns=2;i=6" DataType="String">

<DisplayName>Version</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">1.0</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=9" BrowseName="ID" ParentNodeId="ns=2;i=8" DataType="String">

<DisplayName>ID</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">{788eb291-f103-4fdc-aba0-4893b599f556}</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=11" BrowseName="ID" ParentNodeId="ns=2;i=10" DataType="String">

<DisplayName>ID</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">{19dcf818-4716-4fc1-a85f-28e1938c4c3a}</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=12" BrowseName="New Attribute" ParentNodeId="ns=2;i=8" DataType="String" AccessLevel="15" UserAccessLevel="15">

<DisplayName>New Attribute</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="HasTypeDefinition">i=63</Reference>

<Reference ReferenceType="HasComponent" IsForward="false">ns=2;i=8</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd" />

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=14" BrowseName="ID" ParentNodeId="ns=2;i=13" DataType="String">

<DisplayName>ID</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">{5f535d4c-dd46-4c1c-898c-4e58419048b6}</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=16" BrowseName="ID" ParentNodeId="ns=2;i=15" DataType="String">

<DisplayName>ID</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">50e10905-ac18-413c-afab-ad8ed1569fff</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=21" BrowseName="ID" ParentNodeId="ns=2;i=20" DataType="String">

<DisplayName>ID</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">dd0e0dfe-10f8-4068-845b-9c29699ac79b</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=23" BrowseName="FileName" ParentNodeId="ns=2;i=22" DataType="String">

<DisplayName>FileName</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">Topology.aml</String>

</Value>

</UAVariable>

<UAVariable NodeId="ns=2;i=24" BrowseName="CAEXSchemaVersion" ParentNodeId="ns=2;i=22" DataType="String">

<DisplayName>CAEXSchemaVersion</DisplayName>

<References>

<Reference ReferenceType="HasTypeDefinition">i=68</Reference>

</References>

<Value>

<String xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">2.15</String>

</Value>

</UAVariable>

<UAObjectType NodeId="ns=2;i=17" BrowseName="Energy">

<DisplayName>Energy</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="ns=1;i=4002" IsForward="false">ns=2;i=2</Reference>

<Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=1001</Reference>

</References>

</UAObjectType>

<UAObjectType NodeId="ns=2;i=18" BrowseName="Tool">

<DisplayName>Tool</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="ns=1;i=4002" IsForward="false">ns=2;i=4</Reference>

<Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=1001</Reference>

</References>

</UAObjectType>

<UAObjectType NodeId="ns=2;i=19" BrowseName="ElectricScrewdriver">

<DisplayName>ElectricScrewdriver</DisplayName>

<Description></Description>

<References>

<Reference ReferenceType="ns=1;i=4002" IsForward="false">ns=2;i=6</Reference>

<Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=1001</Reference>

<Reference ReferenceType="ns=1;i=4001">ns=2;i=18</Reference>

<Reference ReferenceType="HasComponent">ns=2;i=20</Reference>

</References>

</UAObjectType>

</UANodeSet>

Figure 22 – OPC UA XML text