OPCFoundation / UA-ModelCompiler

ModelCompiler converts XML files into C# and ANSI C
MIT License
151 stars 95 forks source link

fail to parse BR xml file #181

Open yoavmil opened 5 months ago

yoavmil commented 5 months ago

attached OpcUaMap.uar.gz

it failes on the global variables root, I think, "1:::", because it cant find the TypeDefinition.

please advise.

opcfoundation-org commented 5 months ago

Can post snippets of offending code instead of a ZIP? Or attach a text file which will not cause anti-viruses to object?

yoavmil commented 5 months ago
<?xml version="1.0" encoding="utf-8"?>
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:ua="http://br-automation.com/OpcUa/configuration/NodeSet.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pv="http://br-automation.com/OpcUa/PLC/PV.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
    <NamespaceUris>
        <Uri>http://br-automation.com/OpcUa/PLC/PV/</Uri>
        <Uri>http://br-automation.com/OpcUa/PLC/</Uri>
        <Uri>http://PLCopen.org/OpcUa/IEC61131-3/</Uri>
        <Uri>http://opcfoundation.org/UA/DI/</Uri>
    </NamespaceUris>
    <Models>
        <Model ModelUri="http://br-automation.com/OpcUa/PLC/PV/" PublicationDate="2024-06-16T13:26:27Z" Version="2.00">
            <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2018-05-15T00:00:00Z" Version="1.04"/>
            <RequiredModel ModelUri="http://opcfoundation.org/UA/DI/" PublicationDate="2013-12-02T00:00:00Z" Version="1.01"/>
            <RequiredModel ModelUri="http://PLCopen.org/OpcUa/IEC61131-3/" PublicationDate="2010-03-24T00:00:00Z" Version="2.01"/>
            <RequiredModel ModelUri="http://br-automation.com/OpcUa/PLC/" PublicationDate="2019-07-04T00:00:00Z" Version="2.02"/>
        </Model>
    </Models>
    <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="String">i=12</Alias>
        <Alias Alias="DateTime">i=13</Alias>
        <Alias Alias="ByteString">i=15</Alias>
        <Alias Alias="LocalizedText">i=21</Alias>
        <Alias Alias="HasModellingRule">i=37</Alias>
        <Alias Alias="HasEncoding">i=38</Alias>
        <Alias Alias="HasDescription">i=39</Alias>
        <Alias Alias="HasTypeDefinition">i=40</Alias>
        <Alias Alias="HasSubtype">i=45</Alias>
        <Alias Alias="HasProperty">i=46</Alias>
        <Alias Alias="HasComponent">i=47</Alias>
        <Alias Alias="Date">i=293</Alias>
        <Alias Alias="UtcTime">i=294</Alias>
        <Alias Alias="EnumValueType">i=7594</Alias>
        <Alias Alias="DataTypeDescriptionType">i=69</Alias>
        <Alias Alias="DataTypeDictionaryType">i=72</Alias>
        <Alias Alias="DataTypeEncodingType">i=76</Alias>
        <Alias Alias="Organizes">i=35</Alias>
        <Alias Alias="CtrlProgramType">ns=3;i=1004</Alias>
        <Alias Alias="CtrlFunctionBlockType">ns=3;i=1005</Alias>
        <Alias Alias="HasInputVar">ns=3;i=4001</Alias>
        <Alias Alias="HasOutputVar">ns=3;i=4002</Alias>
        <Alias Alias="HasInOutVar">ns=3;i=4003</Alias>
        <Alias Alias="HasLocalVar">ns=3;i=4004</Alias>
        <Alias Alias="With">ns=3;i=4006</Alias>
        <Alias Alias="TimeZoneDataType">i=8912</Alias>
        <Alias Alias="Argument">i=296</Alias>
        <Alias Alias="Guid">i=14</Alias>
        <Alias Alias="Duration">i=290</Alias>
        <Alias Alias="LocaleId">i=295</Alias>
        <Alias Alias="ImageBMP">i=2000</Alias>
        <Alias Alias="ImageGIF">i=2001</Alias>
        <Alias Alias="ImageJPG">i=2002</Alias>
        <Alias Alias="ImagePNG">i=2003</Alias>
        <Alias Alias="QualifiedName">i=20</Alias>
        <Alias Alias="XmlElement">i=16</Alias>
        <Alias Alias="NodeId">i=17</Alias>
    </Aliases>
    <Extensions>
        <Extension>
            <ua:ModelInfo Tool="AutomationStudio" Version="4.9.2.46"/>
        </Extension>
        <Extension>
            <Provider Name="PV"/>
        </Extension>
    </Extensions>
    <UADataType NodeId="ns=1;i=100" BrowseName="1:Enum1">
        <DisplayName>Enum1</DisplayName>
        <References>
            <Reference ReferenceType="HasProperty">ns=1;i=103</Reference>
            <Reference ReferenceType="HasSubtype" IsForward="false">i=29</Reference>
        </References>
    </UADataType>
    <UADataType NodeId="ns=1;i=100000" BrowseName="1:Struct1">
        <DisplayName>Struct1</DisplayName>
        <References>
            <Reference ReferenceType="HasEncoding">ns=1;i=100001</Reference>
            <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
        </References>
    </UADataType>
    <UADataType NodeId="ns=1;i=100010" BrowseName="1:Struct2">
        <DisplayName>Struct2</DisplayName>
        <References>
            <Reference ReferenceType="HasEncoding">ns=1;i=100011</Reference>
            <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
        </References>
    </UADataType>
    <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=100001" BrowseName="Default Binary">
        <DisplayName>Default Binary</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
            <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=100000</Reference>
            <Reference ReferenceType="HasDescription">ns=1;i=100003</Reference>
        </References>
    </UAObject>
    <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=100011" BrowseName="Default Binary">
        <DisplayName>Default Binary</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
            <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=100010</Reference>
            <Reference ReferenceType="HasDescription">ns=1;i=100013</Reference>
        </References>
    </UAObject>
    <UAVariable DataType="LocalizedText" ParentNodeId="ns=1;i=100" ValueRank="1" ArrayDimensions="2" NodeId="ns=1;i=103" BrowseName="EnumStrings">
        <DisplayName>EnumStrings</DisplayName>
        <References>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=100</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
        </References>
        <Value>
            <uax:ListOfLocalizedText>
                <uax:LocalizedText>
                    <uax:Text>Option1</uax:Text>
                </uax:LocalizedText>
                <uax:LocalizedText>
                    <uax:Text>Option2</uax:Text>
                </uax:LocalizedText>
            </uax:ListOfLocalizedText>
        </Value>
    </UAVariable>
    <UAVariable DataType="String" ParentNodeId="ns=1;i=99999" NodeId="ns=1;i=100003" BrowseName="1:Struct1">
        <DisplayName>Struct1</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
            <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=100001</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=99999</Reference>
        </References>
        <Value>
            <uax:String>Struct1</uax:String>
        </Value>
    </UAVariable>
    <UAVariable DataType="String" ParentNodeId="ns=1;i=99999" NodeId="ns=1;i=100013" BrowseName="1:Struct2">
        <DisplayName>Struct2</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
            <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=100011</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=99999</Reference>
        </References>
        <Value>
            <uax:String>Struct2</uax:String>
        </Value>
    </UAVariable>
    <UAVariableType DataType="ns=1;i=100000" NodeId="ns=1;i=100005" BrowseName="1:Struct1">
        <DisplayName>Struct1</DisplayName>
        <References>
            <Reference ReferenceType="HasSubtype" IsForward="false">i=63</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200000</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200001</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200004</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200005</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200006</Reference>
        </References>
    </UAVariableType>
    <UAVariable DataType="ns=1;i=100" NodeId="ns=1;i=200000" BrowseName="1:enum1" ParentNodeId="ns=1;i=100005">
        <DisplayName>enum1</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100010" NodeId="ns=1;i=200001" BrowseName="1:inner_struct" ParentNodeId="ns=1;i=100005">
        <DisplayName>inner_struct</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100015</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="Float" NodeId="ns=1;i=200002" BrowseName="1:myFloat" ParentNodeId="ns=1;i=200001">
        <DisplayName>myFloat</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=200001</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="Byte" NodeId="ns=1;i=200003" BrowseName="1:myByte" ParentNodeId="ns=1;i=200001">
        <DisplayName>myByte</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=200001</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="Float" NodeId="ns=1;i=200004" BrowseName="1:myFloat" ParentNodeId="ns=1;i=100005">
        <DisplayName>myFloat</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="String" NodeId="ns=1;i=200005" BrowseName="1:str" ParentNodeId="ns=1;i=100005">
        <DisplayName>str</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="Byte" NodeId="ns=1;i=200006" BrowseName="1:int_array" ParentNodeId="ns=1;i=100005" ValueRank="1" ArrayDimensions="10">
        <DisplayName>int_array</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariableType DataType="ns=1;i=100010" NodeId="ns=1;i=100015" BrowseName="1:Struct2">
        <DisplayName>Struct2</DisplayName>
        <References>
            <Reference ReferenceType="HasSubtype" IsForward="false">i=63</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200007</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=200008</Reference>
        </References>
    </UAVariableType>
    <UAVariable DataType="Float" NodeId="ns=1;i=200007" BrowseName="1:myFloat" ParentNodeId="ns=1;i=100015">
        <DisplayName>myFloat</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100015</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="Byte" NodeId="ns=1;i=200008" BrowseName="1:myByte" ParentNodeId="ns=1;i=100015">
        <DisplayName>myByte</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=100015</Reference>
            <Reference ReferenceType="HasModellingRule">i=78</Reference>
        </References>
    </UAVariable>
    <UAVariable SymbolicName="BR_Default" DataType="ByteString" NodeId="ns=1;i=99999" BrowseName="1:BR.Default">
        <DisplayName>BR.Default</DisplayName>
        <Description>The collection of all supported data types for this project.</Description>
        <References>
            <Reference ReferenceType="HasProperty">ns=1;i=99998</Reference>
            <Reference ReferenceType="HasTypeDefinition">i=72</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">i=93</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=100003</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=100013</Reference>
        </References>
        <Value>
            <uax:ByteString>PG9wYzpUeXBlRGljdGlvbmFyeSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp0bnM9Imh0dHA6Ly9ici1hdXRvbWF0aW9uLmNvbS9PcGNVYS9QTEMvUFYvIiBEZWZhdWx0Qnl0ZU9yZGVyPSJMaXR0bGVFbmRpYW4iIHhtbG5zOm9wYz0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL0JpbmFyeVNjaGVtYS8iIHhtbG5zOnVhPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIiBUYXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9ici1hdXRvbWF0aW9uLmNvbS9PcGNVYS9QTEMvUFYvIj4gPG9wYzpJbXBvcnQgTmFtZXNwYWNlPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIiAvPjxvcGM6RW51bWVyYXRlZFR5cGUgTGVuZ3RoSW5CaXRzPSIzMiIgTmFtZT0iRW51bTEiPjxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik9wdGlvbjEiIFZhbHVlPSIwIiAvPjxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik9wdGlvbjIiIFZhbHVlPSIxIiAvPjwvb3BjOkVudW1lcmF0ZWRUeXBlPjxvcGM6U3RydWN0dXJlZFR5cGUgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgTmFtZT0iU3RydWN0MSI+PG9wYzpGaWVsZCBUeXBlTmFtZT0idG5zOkVudW0xIiBOYW1lPSJlbnVtMSIvPjxvcGM6RmllbGQgVHlwZU5hbWU9InRuczpTdHJ1Y3QyIiBOYW1lPSJpbm5lcl9zdHJ1Y3QiLz48b3BjOkZpZWxkIFR5cGVOYW1lPSJvcGM6RmxvYXQiIE5hbWU9Im15RmxvYXQiLz48b3BjOkZpZWxkIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiBOYW1lPSJzdHIiLz48b3BjOkZpZWxkIFR5cGVOYW1lPSJvcGM6SW50MzIiIE5hbWU9Ik5vT2ZpbnRfYXJyYXkiLz48b3BjOkZpZWxkIExlbmd0aEZpZWxkPSJOb09maW50X2FycmF5IiBUeXBlTmFtZT0ib3BjOkJ5dGUiIE5hbWU9ImludF9hcnJheSIvPjwvb3BjOlN0cnVjdHVyZWRUeXBlPjxvcGM6U3RydWN0dXJlZFR5cGUgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgTmFtZT0iU3RydWN0MiI+PG9wYzpGaWVsZCBUeXBlTmFtZT0ib3BjOkZsb2F0IiBOYW1lPSJteUZsb2F0Ii8+PG9wYzpGaWVsZCBUeXBlTmFtZT0ib3BjOkJ5dGUiIE5hbWU9Im15Qnl0ZSIvPjwvb3BjOlN0cnVjdHVyZWRUeXBlPjwvb3BjOlR5cGVEaWN0aW9uYXJ5Pg==</uax:ByteString>
        </Value>
    </UAVariable>
    <UAVariable DataType="String" ParentNodeId="ns=1;i=99999" NodeId="ns=1;i=99998" BrowseName="NamespaceUri">
        <DisplayName>NamespaceUri</DisplayName>
        <References>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=99999</Reference>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
        </References>
        <Value>
            <uax:String>http://br-automation.com/OpcUa/PLC/PV/</uax:String>
        </Value>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100000" BrowseName="1:::struct1" NodeId="ns=1;i=300000" ParentNodeId="ns=1;s=::AsGlobalPV" AccessLevel="3">
        <DisplayName>::struct1</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100005</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=2;i=21008</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.enum1</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.inner_struct</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.myFloat</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.str</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.int_array</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100010" BrowseName="1:::struct2" NodeId="ns=1;i=300001" ParentNodeId="ns=1;s=::AsGlobalPV" AccessLevel="3">
        <DisplayName>::struct2</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100015</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=2;i=21008</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct2.myFloat</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct2.myByte</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct2"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAObject NodeId="ns=1;i=400000" BrowseName="1:http://br-automation.com/OpcUa/PLC/PV/">
        <DisplayName>http://br-automation.com/OpcUa/PLC/PV/</DisplayName>
        <References>
            <Reference ReferenceType="HasComponent" IsForward="false">i=11715</Reference>
            <Reference ReferenceType="HasTypeDefinition">i=11616</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400001</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400002</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400003</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400004</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400005</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400006</Reference>
            <Reference ReferenceType="HasProperty">ns=1;i=400007</Reference>
        </References>
    </UAObject>
    <UAVariable DataType="i=1" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400001" BrowseName="IsNamespaceSubset">
        <DisplayName>IsNamespaceSubset</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
        <Value>
            <uax:Boolean>false</uax:Boolean>
        </Value>
    </UAVariable>
    <UAVariable DataType="i=13" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400002" BrowseName="NamespacePublicationDate">
        <DisplayName>NamespacePublicationDate</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
        <Value>
            <uax:DateTime>2024-06-16T13:26:27Z</uax:DateTime>
        </Value>
    </UAVariable>
    <UAVariable DataType="i=12" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400003" BrowseName="NamespaceUri">
        <DisplayName>NamespaceUri</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
        <Value>
            <uax:String>http://br-automation.com/OpcUa/PLC/PV/</uax:String>
        </Value>
    </UAVariable>
    <UAVariable DataType="i=12" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400004" BrowseName="NamespaceVersion">
        <DisplayName>NamespaceVersion</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
        <Value>
            <uax:String>2.00</uax:String>
        </Value>
    </UAVariable>
    <UAVariable DataType="i=256" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400005" BrowseName="StaticNodeIdTypes">
        <DisplayName>StaticNodeIdTypes</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="i=291" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400006" BrowseName="StaticNumericNodeIdRange">
        <DisplayName>StaticNumericNodeIdRange</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
    </UAVariable>
    <UAVariable DataType="i=12" ParentNodeId="ns=1;i=400000" NodeId="ns=1;i=400007" BrowseName="StaticStringNodeIdPattern">
        <DisplayName>StaticStringNodeIdPattern</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
            <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=400000</Reference>
        </References>
    </UAVariable>
    <UAObject NodeId="ns=1;s=::" BrowseName="1:::">
        <DisplayName>&lt;Default&gt;</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=2;i=10001</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=2;i=20001</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV</Reference>
        </References>
    </UAObject>
    <UAObject ParentNodeId="ns=1;s=::" NodeId="ns=1;s=::AsGlobalPV" BrowseName="1:Global PV">
        <DisplayName>Global PV</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=61</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=1;s=::</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV:struct1</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV:struct2</Reference>
        </References>
    </UAObject>
    <UAVariable DataType="ns=1;i=100000" ParentNodeId="ns=1;s=::AsGlobalPV" NodeId="ns=1;s=::AsGlobalPV:struct1" BrowseName="1:struct1" AccessLevel="3" ValueRank="-1">
        <DisplayName>struct1</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.enum1</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.inner_struct</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.myFloat</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.str</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct1.int_array</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100" ParentNodeId="ns=1;s=::AsGlobalPV:struct1" NodeId="ns=1;s=::AsGlobalPV:struct1.enum1" BrowseName="1:enum1" AccessLevel="3">
        <DisplayName>enum1</DisplayName>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1.enum1"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100010" ParentNodeId="ns=1;s=::AsGlobalPV:struct1" NodeId="ns=1;s=::AsGlobalPV:struct1.inner_struct" BrowseName="1:inner_struct" AccessLevel="3" ValueRank="-1">
        <DisplayName>inner_struct</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100015</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1.inner_struct"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=10" ParentNodeId="ns=1;s=::AsGlobalPV:struct1" NodeId="ns=1;s=::AsGlobalPV:struct1.myFloat" BrowseName="1:myFloat" AccessLevel="3">
        <DisplayName>myFloat</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1.myFloat"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=12" ParentNodeId="ns=1;s=::AsGlobalPV:struct1" NodeId="ns=1;s=::AsGlobalPV:struct1.str" BrowseName="1:str" AccessLevel="3" ValueRank="-1">
        <DisplayName>str</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1.str"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=3" ParentNodeId="ns=1;s=::AsGlobalPV:struct1" NodeId="ns=1;s=::AsGlobalPV:struct1.int_array" BrowseName="1:int_array" AccessLevel="3" ValueRank="1" ArrayDimensions="10">
        <DisplayName>int_array</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct1.int_array"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100010" ParentNodeId="ns=1;s=::AsGlobalPV" NodeId="ns=1;s=::AsGlobalPV:struct2" BrowseName="1:struct2" AccessLevel="3" ValueRank="-1">
        <DisplayName>struct2</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100015</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct2.myFloat</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:struct2.myByte</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct2"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=10" ParentNodeId="ns=1;s=::AsGlobalPV:struct2" NodeId="ns=1;s=::AsGlobalPV:struct2.myFloat" BrowseName="1:myFloat" AccessLevel="3">
        <DisplayName>myFloat</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct2.myFloat"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=3" ParentNodeId="ns=1;s=::AsGlobalPV:struct2" NodeId="ns=1;s=::AsGlobalPV:struct2.myByte" BrowseName="1:myByte" AccessLevel="3">
        <DisplayName>myByte</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension>
                    <Value>
                        <Binding Type="PV" Target="::struct2.myByte"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
</UANodeSet>