Code Monkey home page Code Monkey logo

ua-nodeset's Introduction

OPC UA NodeSets and Other Supporting Files

Contents

Files Found Here

This repository contains UANodeSets and other normative files which are released with a specification. Any change to a specification (release of a new version or errata) may require a change to the files in this repository.

For each specification the following normative files need to be published:

  • .NodeSet2.xml - The formal definition of the Nodes defined by the specification;
  • .Types.xsd - The XML schema for the DataTypes defined by the specification;
  • .Types.bsd - The OPC Binary schema for the DataTypes defined by the specification (obsolete);
  • .NodeIds.csv - A CSV file containing the NodeIds assigned to Nodes defined by the specification;

In addition, the following non-normative support files may be published:

  • .Classes.cs - C# classes for Nodes used with the .NETStandard stack;
  • .DataTypes.cs - C# classes for DataTypes used with the .NETStandard stack;
  • .Constants.cs - C# constant declarations used with the .NETStandard stack;
  • .PredefinedNodes.uanodes - A non-normative binary representation of the UANodeSet for use with .NETStandard stack;

If a companion specification working group uses the ModelCompiler to create the UANodeSet then the following files are published:

  • .Model.xml - The Nodes defined by the specification using the schema needed by the ModelCompiler;
  • .Model.csv - The NodeIds assigned to the Nodes defined by the specification;

For the core OPC UA specifications the following additional files are published:

  • StatusCode.csv - The StatusCodes defined by the OPC UA specification;
  • AttributeIds.csv - The identifiers for the Attributes defined by the OPC UA specification;
  • UNECE_to_OPCUA.csv - The numeric codes assigned to the UNECE units (see Part 8);
  • ServerCapabilities.csv - The ServerCapabilities defined by the OPC UA specification (see Part 12);
  • Opc.Ua.NodeSet2.Services.xml - A UANodeSet that includes DataTypes which are used only with OPC UA Services;
  • OPCBinarySchema.xsd - The OPC Binary schema definition;
  • UANodeSet.xsd - The UANodeSet schema definition;
  • SecuredApplication.xsd - The SecuredApplication schema definition (see Part 6);

The files for each companion specification are in a subdirectory with the short name of the specification. The files for the core specification are in the Schema subdirectory.

Release Process

This repository contains the latest released versions of the normative files.

The member-only version has draft and release candidate versions of the files.

Instructions on requesting access to the member only repository can be found here.

Tags are applied whenever a NodeSet is released. Use the tags if a older version is required.

The v1.04 and v1.03 branches are only updated when errata are published.

When the files are reviewed and published a tag will be created in this repo with the publication date specified in the UANodeSet.

Note: that adding tags is a step that was added late in the process so tags prior to 2019-05-01 do not exist and users must use the dates on the commits.

There are currently 4 branches in the repository:

  • latest - the latest released version of all nodesets.
  • v1.05 (obsolete - merged into latest but tags prior to 2022-05-01 reference this branch).
  • v1.04
  • v1.03

When a companion specification is released it will be added to the latest branch and tagged.

Error reporting

If an error or problem is found in any of the files it should be reported as a mantis issue against the appropriate specification.

More information on the process can befound here.

ua-nodeset's People

Contributors

dk2129 avatar drharaldweber avatar eallmann avatar goetzgoerisch avatar jwcode-uk avatar opcfoundation-org avatar randy-armstrong avatar randy-armstrong-alias avatar xenonforlife avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ua-nodeset's Issues

QualifiedName in Opc.Ua.Types - NamespaceIndex has wrong type

<opc:StructuredType Name="QualifiedName">
<opc:Documentation>A string qualified with a namespace index.</opc:Documentation>
<opc:Field Name="NamespaceIndex" TypeName="opc:Int32" />
<opc:Field Name="Name" TypeName="opc:CharArray" />
</opc:StructuredType>

image

Furthermore CharArray, could be replaced by String.

We would expect

 <opc:Field Name="NamespaceIndex" TypeName="opc:UInt16" /> 
 <opc:Field Name="Name" TypeName="opc:String" /> 

No ...PredefinedNodes.uanodes file for some nodesets

Is there a reason that there aren't PredefinedNodes.uanodes files for all the different nodesets? Specifically for the "IA", "Machinery" and "MachineTool" Folder. Also there are no xml files so I could compile these files myself with the ModelCompiler.

Connection Error with Reference Client

Hi nauful,

Thank's for your great work! I just try out your library.

I try out the latest Reference Client (OPCFoundation/UA-.NETStandard ) to connect with your TestServer (NET Core).
But there is an NullReferenceException in the Reference client (trying read the IsAbstract attribute for Node Id 29).

DataType of i=17292 in Opc.Ua.NodeSet2.xml

The node with the id i=17292 has the "String" DataType and a HasTypeDefinition reference to i=16309.

<UAVariable NodeId="i=17292" BrowseName="TransportProfileUri" ParentNodeId="i=14417" DataType="String">
    <DisplayName>TransportProfileUri</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=17706</Reference>
      <Reference ReferenceType="HasTypeDefinition">i=16309</Reference>
      <Reference ReferenceType="HasModellingRule">i=78</Reference>
      <Reference ReferenceType="HasComponent" IsForward="false">i=14417</Reference>
    </References>
  </UAVariable>

The DataType of i=16309 is i=862

  <UAVariableType NodeId="i=16309" BrowseName="SelectionListType" DataType="i=862" ValueRank="-2">
    <DisplayName>SelectionListType</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=17632</Reference>
      <Reference ReferenceType="HasProperty">i=17633</Reference>
      <Reference ReferenceType="HasProperty">i=16312</Reference>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=63</Reference>
    </References>
  </UAVariableType>

Which is a structured type.

  <UADataType NodeId="i=862" BrowseName="ServerStatusDataType">
    <DisplayName>ServerStatusDataType</DisplayName>
    <References>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
    </References>
    <Definition Name="ServerStatusDataType">
      <Field Name="StartTime" DataType="i=294" />
      <Field Name="CurrentTime" DataType="i=294" />
      <Field Name="State" DataType="i=852" />
      <Field Name="BuildInfo" DataType="i=338" />
      <Field Name="SecondsTillShutdown" DataType="i=7" />
      <Field Name="ShutdownReason" DataType="i=21" />
    </Definition>
  </UADataType>

Is this an error in the schema file or is an instance permitted to override the DataType attribute of its type definition node?

New Object "Aliases" in the Opc.Ua.NodeSet2.xml

In the commit cc39b5e of the Schema/Opc.Ua.NodeSet2.xml, there is an inclusion of a new Object "Aliases". Why is it included or is it a bug ?

<UAObject NodeId="i=23470" BrowseName="Aliases" ReleaseStatus="Draft">
    <DisplayName>Aliases</DisplayName>
    <References>
      <Reference ReferenceType="HasComponent">i=23476</Reference>
      <Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
      <Reference ReferenceType="HasTypeDefinition">i=23456</Reference>
    </References>
  </UAObject>
  <UAMethod NodeId="i=23476" BrowseName="FindAlias" ReleaseStatus="Draft" ParentNodeId="i=23470" MethodDeclarationId="i=23462">
    <DisplayName>FindAlias</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=23477</Reference>
      <Reference ReferenceType="HasProperty">i=23478</Reference>
      <Reference ReferenceType="HasComponent" IsForward="false">i=23470</Reference>
    </References>
  </UAMethod>
  <UAVariable NodeId="i=23477" BrowseName="InputArguments" ReleaseStatus="Draft" ParentNodeId="i=23476" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>InputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23476</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNameSearchPattern</Name>
              <DataType>
                <Identifier>i=12</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>ReferenceTypeFilter</Name>
              <DataType>
                <Identifier>i=17</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>
  <UAVariable NodeId="i=23478" BrowseName="OutputArguments" ReleaseStatus="Draft" ParentNodeId="i=23476" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>OutputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23476</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNodeList</Name>
              <DataType>
                <Identifier>i=23468</Identifier>
              </DataType>
              <ValueRank>1</ValueRank>
              <ArrayDimensions>
                <UInt32>0</UInt32>
              </ArrayDimensions>
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>
  <UAObject NodeId="i=23479" BrowseName="Tags" ReleaseStatus="Draft">
    <DisplayName>Tags</DisplayName>
    <References>
      <Reference ReferenceType="HasComponent">i=23485</Reference>
      <Reference ReferenceType="Organizes" IsForward="false">i=23470</Reference>
      <Reference ReferenceType="HasTypeDefinition">i=23456</Reference>
    </References>
  </UAObject>
  <UAMethod NodeId="i=23485" BrowseName="FindAlias" ReleaseStatus="Draft" ParentNodeId="i=23479" MethodDeclarationId="i=23462">
    <DisplayName>FindAlias</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=23486</Reference>
      <Reference ReferenceType="HasProperty">i=23487</Reference>
      <Reference ReferenceType="HasComponent" IsForward="false">i=23479</Reference>
    </References>
  </UAMethod>
  <UAVariable NodeId="i=23486" BrowseName="InputArguments" ReleaseStatus="Draft" ParentNodeId="i=23485" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>InputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23485</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNameSearchPattern</Name>
              <DataType>
                <Identifier>i=12</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>ReferenceTypeFilter</Name>
              <DataType>
                <Identifier>i=17</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>
  <UAVariable NodeId="i=23487" BrowseName="OutputArguments" ReleaseStatus="Draft" ParentNodeId="i=23485" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>OutputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23485</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNodeList</Name>
              <DataType>
                <Identifier>i=23468</Identifier>
              </DataType>
              <ValueRank>1</ValueRank>
              <ArrayDimensions>
                <UInt32>0</UInt32>
              </ArrayDimensions>
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>
  <UAObject NodeId="i=23488" BrowseName="Topics" ReleaseStatus="Draft">
    <DisplayName>Topics</DisplayName>
    <References>
      <Reference ReferenceType="HasComponent">i=23494</Reference>
      <Reference ReferenceType="Organizes" IsForward="false">i=23470</Reference>
      <Reference ReferenceType="HasTypeDefinition">i=23456</Reference>
    </References>
  </UAObject>
  <UAMethod NodeId="i=23494" BrowseName="FindAlias" ReleaseStatus="Draft" ParentNodeId="i=23488" MethodDeclarationId="i=23462">
    <DisplayName>FindAlias</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=23495</Reference>
      <Reference ReferenceType="HasProperty">i=23496</Reference>
      <Reference ReferenceType="HasComponent" IsForward="false">i=23488</Reference>
    </References>
  </UAMethod>
  <UAVariable NodeId="i=23495" BrowseName="InputArguments" ReleaseStatus="Draft" ParentNodeId="i=23494" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>InputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23494</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNameSearchPattern</Name>
              <DataType>
                <Identifier>i=12</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>ReferenceTypeFilter</Name>
              <DataType>
                <Identifier>i=17</Identifier>
              </DataType>
              <ValueRank>-1</ValueRank>
              <ArrayDimensions />
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>
  <UAVariable NodeId="i=23496" BrowseName="OutputArguments" ReleaseStatus="Draft" ParentNodeId="i=23494" DataType="i=296" ValueRank="1" ArrayDimensions="0">
    <DisplayName>OutputArguments</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
      <Reference ReferenceType="HasProperty" IsForward="false">i=23494</Reference>
    </References>
    <Value>
      <ListOfExtensionObject xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
        <ExtensionObject>
          <TypeId>
            <Identifier>i=297</Identifier>
          </TypeId>
          <Body>
            <Argument>
              <Name>AliasNodeList</Name>
              <DataType>
                <Identifier>i=23468</Identifier>
              </DataType>
              <ValueRank>1</ValueRank>
              <ArrayDimensions>
                <UInt32>0</UInt32>
              </ArrayDimensions>
            </Argument>
          </Body>
        </ExtensionObject>
      </ListOfExtensionObject>
    </Value>
  </UAVariable>

It makes my server look this way.
grafik

Decimal128 DataType

What's the deal with Decimal128 DataType in Opc.Ua.NodeSet2.Part3.xml?

Seems it's a subtype of Number, it's not a simple/alias type, but it's not specified as a built-in type? Is this something leftover that should be removed?

AnalogItemType has EURange but missing in Opc.Ua.Scales.NodeSet2.xml (GiveAway)

https://github.com/OPCFoundation/UA-Nodeset/blob/v1.04/Scales/Opc.Ua.Scales.NodeSet2.xml

on all GiveAway nodes mandatory EURange is missing. Example:

<UAVariable NodeId="ns=1;i=511" BrowseName="1:GiveAway" ParentNodeId="ns=1;i=48" DataType="Number"> <DisplayName>GiveAway</DisplayName> <Description>Defines the totalized value of volume above TargetWeight.</Description> <References> <Reference ReferenceType="HasTypeDefinition">i=2368</Reference> <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=48</Reference> <Reference ReferenceType="HasModellingRule">i=80</Reference> </References> </UAVariable>

Missing:
<Reference ReferenceType="HasProperty">ns=1;i=xxxx</Reference>

<UAVariable DataType="Range" ParentNodeId="ns=1;i=511" NodeId="ns=1;i=xxxx" BrowseName="EURange" AccessLevel="3"> <DisplayName>EURange</DisplayName> <Description Locale="en"> Maximum range of values for GiveAway</Description> <References> <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=511</Reference> <Reference ReferenceType="HasTypeDefinition">i=68</Reference> <Reference ReferenceType="HasModellingRule">i=78</Reference> </References> </UAVariable>

see here:
https://reference.opcfoundation.org/v104/Scales/v100/docs/8.19.1/
https://reference.opcfoundation.org/v104/Core/docs/Part8/5.3.2/#5.3.2.3

IEC61850-7-3 (and others) Enum Names

I'm working on generating code for the 61850 companion specs I've run into one enumeration member (so far) that needs to have a symbolic name defined: AddCauseKind has a field named 1-of-n-control.

AFAIK most programming languages do not allow a field name to begin with a number.

Further, most programming languages also don't allow dashes or spaces in variable names.

So it seems to me a lot of these enum definition fields should have symbolic name attributes defined.

Missing aliases in CSPPlusForMachine

I think there are 2 missing aliases in Opc.Ua.CSPPlusForMachine.NodeSet2.xml :
<Alias Alias="IdType">i=256</Alias>
<Alias Alias="NumericRange">i=291</Alias>

Nodes with ParentNodeId don't have Reference to its parent node

I've checked the whole repository, and found some nodes with ParentNodeId don't have any kind of Reference to their parent nodes, while some of their parent nodes also don't have Reference to them.

This caused FreeOpcUa to raise BadParentNodeIdInvalid Exception.


All the nodes that don't have Reference to their ParentNodeId can be found here.
Most of them are UAVariable from AML directory but two of them are UAObject from ISA-95 directory.

UAVariable from AML

AML/Opc.Ua.AMLBaseTypes.NodeSet2.xml
['ns=1;i=1010', 'ns=1;i=1011']
AML/Opc.Ua.AMLLibraries.NodeSet2.xml
['ns=2;i=2', 'ns=2;i=3', 'ns=2;i=5', 'ns=2;i=6', 'ns=2;i=8', 'ns=2;i=9', 'ns=2;i=11', 'ns=2;i=12', 'ns=2;i=14', 'ns=2;i=15', 'ns=2;i=17', 'ns=2;i=18', 'ns=2;i=20', 'ns=2;i=21', 'ns=2;i=23', 'ns=2;i=24', 'ns=2;i=26', 'ns=2;i=27', 'ns=2;i=29', 'ns=2;i=30', 'ns=2;i=32', 'ns=2;i=33', 'ns=2;i=35', 'ns=2;i=36', 'ns=2;i=38', 'ns=2;i=39', 'ns=2;i=41', 'ns=2;i=42', 'ns=2;i=44', 'ns=2;i=45', 'ns=2;i=47', 'ns=2;i=48', 'ns=2;i=50', 'ns=2;i=51', 'ns=2;i=53', 'ns=2;i=54', 'ns=2;i=56', 'ns=2;i=57', 'ns=2;i=59', 'ns=2;i=60', 'ns=2;i=62', 'ns=2;i=63', 'ns=2;i=65', 'ns=2;i=66', 'ns=2;i=68', 'ns=2;i=69', 'ns=2;i=70', 'ns=2;i=72', 'ns=2;i=73', 'ns=2;i=75', 'ns=2;i=76', 'ns=2;i=78', 'ns=2;i=79',
'ns=2;i=81', 'ns=2;i=82', 'ns=2;i=84', 'ns=2;i=85', 'ns=2;i=87', 'ns=2;i=88', 'ns=2;i=90', 'ns=2;i=91', 'ns=2;i=93', 'ns=2;i=94', 'ns=2;i=96', 'ns=2;i=97', 'ns=2;i=99', 'ns=2;i=100', 'ns=2;i=102', 'ns=2;i=103', 'ns=2;i=105', 'ns=2;i=106', 'ns=2;i=108', 'ns=2;i=109', 'ns=2;i=111', 'ns=2;i=112', 'ns=2;i=114', 'ns=2;i=115', 'ns=2;i=117', 'ns=2;i=118', 'ns=2;i=120', 'ns=2;i=121', 'ns=2;i=123', 'ns=2;i=124', 'ns=2;i=126', 'ns=2;i=127', 'ns=2;i=129', 'ns=2;i=130', 'ns=2;i=132', 'ns=2;i=133', 'ns=2;i=135', 'ns=2;i=136', 'ns=2;i=138', 'ns=2;i=139', 'ns=2;i=141', 'ns=2;i=142', 'ns=2;i=144', 'ns=2;i=145', 'ns=2;i=147', 'ns=2;i=148', 'ns=2;i=150', 'ns=2;i=151', 'ns=2;i=153', 'ns=2;i=154', 'ns=2;i=156', 'ns=2;i=157', 'ns=2;i=159', 'ns=2;i=160', 'ns=2;i=162', 'ns=2;i=163', 'ns=2;i=165', 'ns=2;i=166', 'ns=2;i=168', 'ns=2;i=169', 'ns=2;i=171', 'ns=2;i=172', 'ns=2;i=174', 'ns=2;i=175', 'ns=2;i=177', 'ns=2;i=178', 'ns=2;i=180', 'ns=2;i=181', 'ns=2;i=183', 'ns=2;i=184', 'ns=2;i=186', 'ns=2;i=187', 'ns=2;i=189', 'ns=2;i=190', 'ns=2;i=192', 'ns=2;i=193', 'ns=2;i=195', 'ns=2;i=196', 'ns=2;i=198', 'ns=2;i=199', 'ns=2;i=201', 'ns=2;i=202', 'ns=2;i=204', 'ns=2;i=205', 'ns=2;i=207', 'ns=2;i=208', 'ns=2;i=210', 'ns=2;i=211', 'ns=2;i=213', 'ns=2;i=214', 'ns=2;i=216', 'ns=2;i=217', 'ns=2;i=219', 'ns=2;i=220', 'ns=2;i=222', 'ns=2;i=223', 'ns=2;i=225', 'ns=2;i=226', 'ns=2;i=228', 'ns=2;i=229', 'ns=2;i=231', 'ns=2;i=232', 'ns=2;i=234', 'ns=2;i=235', 'ns=2;i=237', 'ns=2;i=238', 'ns=2;i=240', 'ns=2;i=241', 'ns=2;i=243', 'ns=2;i=244', 'ns=2;i=246', 'ns=2;i=247', 'ns=2;i=249', 'ns=2;i=250', 'ns=2;i=252', 'ns=2;i=253', 'ns=2;i=255', 'ns=2;i=256', 'ns=2;i=258', 'ns=2;i=259', 'ns=2;i=261', 'ns=2;i=262', 'ns=2;i=264', 'ns=2;i=265', 'ns=2;i=267', 'ns=2;i=268', 'ns=2;i=270', 'ns=2;i=271', 'ns=2;i=273', 'ns=2;i=274', 'ns=2;i=276', 'ns=2;i=277', 'ns=2;i=279', 'ns=2;i=280', 'ns=2;i=282', 'ns=2;i=283', 'ns=2;i=285', 'ns=2;i=286', 'ns=2;i=288', 'ns=2;i=289', 'ns=2;i=291', 'ns=2;i=292', 'ns=2;i=294', 'ns=2;i=295', 'ns=2;i=297', 'ns=2;i=298', 'ns=2;i=300', 'ns=2;i=301', 'ns=2;i=303', 'ns=2;i=304', 'ns=2;i=306', 'ns=2;i=307', 'ns=2;i=309', 'ns=2;i=310', 'ns=2;i=312', 'ns=2;i=313', 'ns=2;i=315', 'ns=2;i=316', 'ns=2;i=318', 'ns=2;i=319', 'ns=2;i=321', 'ns=2;i=322', 'ns=2;i=324', 'ns=2;i=325', 'ns=2;i=327', 'ns=2;i=328', 'ns=2;i=330', 'ns=2;i=331', 'ns=2;i=333', 'ns=2;i=334', 'ns=2;i=336', 'ns=2;i=337', 'ns=2;i=339', 'ns=2;i=340', 'ns=2;i=341']
AML/Topology.xml
['ns=2;i=3', 'ns=2;i=5', 'ns=2;i=7', 'ns=2;i=9', 'ns=2;i=11', 'ns=2;i=14', 'ns=2;i=16', 'ns=2;i=21', 'ns=2;i=23', 'ns=2;i=24']

UAObject from ISA-95

ISA-95/Opc.ISA95.NodeSet2.xml
['ns=1;i=5224', 'ns=1;i=5295']

Missing ...Model.xml in TMC folder

In order to use ModelCompiler to auto-generate code, is it possible to add the "...Model.xml" (defined by “ModelDesign.xsd”)?
In other "Companion-Folder" (see PlcOpen for instance) the file is present (OpcUaPLCopenModel.xml for instance).

Wrong DataType of FieldMetaData.FieldFlags in Opc.Ua.Core

Attribute „FieldFlags“ in class Opc.Ua.FieldMetaData is implemented as enumeration DataSetFieldFlags. WriteEnumerated and ReadEnumerated are used for this attribute in Encode and Decode implementation of Opc.Ua.FieldMetaData. Enumeration data types are encoded/decoded as Int32, however DataSetFieldFlags type should be UInt16 (OPC UA Specification, Part 14, Release 1.04, 6.2.2.1.4). WriteEnumerated/ReadEnumerated calls should be replaced with WriteUInt16/ReadUInt16, so binary data size for “FieldFlags” becomes 2 Bytes instead of 4 Bytes.
File: \Stack\Opc.Ua.Core\Stack\Generated\Opc.Ua.DataTypes.cs
Methods: Encode / Decode

Problems with Robotics CS Nodeset

Hello,

I am experiencing some problems when trying to import the "Opc.Ua.Robotics.NodeSet2.xml" and "Opc.Ua.Di.NodeSet2.xml" to UA Modeler software from Unified Automation.
With "modeling only" purpose, when importing the two .xml files I get this kind of errors "TypeDefinition not found ()".
example1
example2
Is there anyone with the same kind of problem?

Best Regards,
André Martins

Invalid NodeSet2.xml - Missing nodes

In commit https://github.com/OPCFoundation/UA-Nodeset/blob/2e2c39ab2041ba0eecfa811aca2844d65fa3db01 the DiagnosticsInfo(i=25) DataType was removed from the NodeSet2.xml

In the current version, this DataType is still referenced by StatusResult

  <UADataType NodeId="i=299" BrowseName="StatusResult">
    <DisplayName>StatusResult</DisplayName>
    <References>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
    </References>
    <Definition Name="StatusResult">
      <Field Name="StatusCode" DataType="i=19" />
      <Field Name="DiagnosticInfo" DataType="i=25" />
    </Definition>
  </UADataType>

Is this an error in the nodeset?

Wrong supertype for EventNotifierType in NodeSet2

The NodeSet 2 XML lists EventNotifierType as:

<UADataType NodeId="i=15033" BrowseName="EventNotifierType">
    <DisplayName>EventNotifierType</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=15034</Reference>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=7</Reference>
    </References>
    <Definition Name="EventNotifierType" IsOptionSet="true">
      <Field Name="None" Value="0" />
      <Field Name="SubscribeToEvents" Value="1" />
      <Field Name="HistoryRead" Value="4" />
      <Field Name="HistoryWrite" Value="8" />
    </Definition>
  </UADataType>

Specification version 1.04, Part 3 section 8.59 lists the EventNotifierType as subtype of Byte DataType, however the NodeSet2 uses i=7 which is UInt32. The NodeSet2 should be fixed.

It should be noted that this is quite important and critical in my opinion, as the EventNotifierType is listed as the DataType of the EventNotifier Attribute for Objects in version 1.04 Part 3, section 5.5.1 Table 11. In 1.03 that was Byte, so if clients/servers are made using the current NodeSet2 for 1.04 they will not use the correct DataType (they would use incorrectly the UInt32 instead of Byte, as the encoded binary form) and are incompatible with all existing applications.

Problems when using DI model version 1.1 (specified in companion spec) with his UA model required version

Description

In OPC Unified Architecture for Devices Companion Specification Release 1.01 specifies that model Schema can be found on link /https://opcfoundation.org/UA/schemas/DI/1.1/.
Here we have DI model with publication date "2018-06-07T00:00:00Z" and it requires UA model version 1.03 with publication date "2013-12-02T00:00:00Z". When i try combine UA model with publication date "2013-12-02T00:00:00Z" (https://opcfoundation.org/UA/schemas/1.03/Opc.Ua.NodeSet2.xml) and DI model specified in companion specification (https://opcfoundation.org/UA/schemas/DI/1.1/) i get errors.
This is because DI model is requesting some datatypes which are not available in UA model. E.g. line from https://opcfoundation.org/UA/schemas/DI/1.1/Opc.Ua.Di.NodeSet2.xml:
UAVariable NodeId="ns=1;i=15031" BrowseName="DefaultRolePermissions" ParentNodeId="ns=1;i=15001" DataType="i=96" ValueRank="1" ArrayDimensions="0"

DataType="i=96" is looked for in UA model, but doesn't exist there and because of this i am having problems with these models.

Should maybe required version in DI Opc.Ua.Di.NodeSet2.xml file be UA version 1.04 or maybe i have misunderstood something?

IOLink files are missing namespace in Value fields.

There are many <Value> content missing the correct namespaces for the type of value.
See file Opc.Ua.IOLink.NodeSet2.xml lines 110 and 121 for a small example.
The same problem is found in file Opc.Ua.IOLinkIODD.NodeSet2.xml

ObjectId output argument in CreateCredentialMethodType causes compile errors

ObjectId output argument in CreateCredentialMethodType causes compile errors in generated code becasue of duplicate "objectId" parameters.

  <opc:Method SymbolicName="CreateCredentialMethodType">
    <opc:InputArguments>
      <opc:Argument Name="ResourceUri" DataType="ua:String" />
      <opc:Argument Name="ProfileUri" DataType="ua:String" />
      <opc:Argument Name="EndpointUrls" DataType="ua:String" ValueRank="Array"></opc:Argument>
    </opc:InputArguments>
    <opc:OutputArguments>
      <opc:Argument Name="ObjectId" DataType="ua:NodeId"></opc:Argument>
    </opc:OutputArguments>
  </opc:Method>
       protected override ServiceResult Call(
            ISystemContext context,
            NodeId objectId,
            IList<object> inputArguments,
            IList<object> outputArguments)
        {
            if (OnCall == null)
            {
                return base.Call(context, objectId, inputArguments, outputArguments);
            }

            ServiceResult result = null;

            string resourceUri = (string)inputArguments[0];
            string profileUri = (string)inputArguments[1];
            string[] endpointUrls = (string[])inputArguments[2];

            NodeId objectId = (NodeId)outputArguments[0];

            if (OnCall != null)
            {
                result = OnCall(
                    context,
                    this,
                    objectId,
                    resourceUri,
                    profileUri,
                    endpointUrls,
                    ref objectId);
            }

            outputArguments[0] = objectId;

            return result;
        }

    /// <summary>
    /// Used to receive notifications when the method is called.
    /// </summary>
    /// <exclude />
    public delegate ServiceResult CreateCredentialMethodStateMethodCallHandler(
        ISystemContext context,
        MethodState method,
        NodeId objectId,
        string resourceUri,
        string profileUri,
        string[] endpointUrls,
        ref NodeId objectId);

Wrong Reference in DI Spec XML?

Hi,

in DI NodeSet2 XML:

i=17602

The i=17602 Reference is just a HasSubType, but is unknown on importing XML as a type self from the XML. With that modeler will not import that file.

kind regards,
Klaus

Circular reference in Opc.ISA95.NodeSet2.xml

UAVariableType with NodeId="ns=1;i=5186" and BrowseName="1:MaterialLotPropertyType" has a child variable with NodeId="ns=1;i=5193" BrowseName="1:<TestResult>" whose type is again Node id "ns=1;i=5186".
This creates a circular reference while parsing the variable type.

Please find the variable type definition for your reference.

MaterialLotPropertyType ns=1;i=5193 ns=1;i=5200 ns=1;i=5207 ns=1;i=5165 <TestResult> ns=1;i=5194 ns=1;i=5195 ns=1;i=5196 ns=1;i=5197 ns=1;i=5198 ns=1;i=5199 ns=1;i=5186 i=11508 ns=1;i=5186

UserRolePermissions missing from AttributeWriteMask

The UserRolePermissions entry is missing from AttributeWriteMask enumeration.

 /// <summary>
    /// Define bits used to indicate which attributes are writable.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum AttributeWriteMask
    {
        /// <summary>
        /// No value specified.
        /// </summary>
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <summary>
        /// The access level attribute is writable.
        /// </summary>
        [EnumMember(Value = "AccessLevel_1")]
        AccessLevel = 1,
......

        /// <summary>
        /// The RolePermissions attribute is writable.
        /// </summary>
        [EnumMember(Value = "RolePermissions_8388608")]
        RolePermissions = 8388608,

        /// <summary>
        /// The AccessRestrictions attribute is writable.
        /// </summary>
        [EnumMember(Value = "AccessRestrictions_16777216")]
        AccessRestrictions = 16777216,

        /// <summary>
        /// The AccessLevelEx attribute is writable.
        /// </summary>
        [EnumMember(Value = "AccessLevelEx_33554432")]
        AccessLevelEx = 33554432,

I see that it is also missing from the specs. in Part 3. Table 43, but some other user related masks (like UserAccessLevel, UserExecutable, UserWriteMask) are present.
Is this intentional for some reason?

image

IEC61850-7-3 MultiplierKind Empty Field Name

MultiplierKind has field name that is just empty string:

  <UADataType NodeId="ns=1;i=81" BrowseName="1:MultiplierKind">
    <DisplayName>MultiplierKind</DisplayName>
    <References>
      <Reference ReferenceType="HasSubtype" IsForward="false">Enumeration</Reference>
      <Reference ReferenceType="HasProperty">ns=1;i=82</Reference>
    </References>
    <Definition Name="MultiplierKind">
      <Field Name="y" Value="-24" />
      <Field Name="z" Value="-21" />
      <Field Name="a" Value="-18" />
      <Field Name="f" Value="-15" />
      <Field Name="p" Value="-12" />
      <Field Name="n" Value="-9" />
      <Field Name="µ" Value="-6" />
      <Field Name="m" Value="-3" />
      <Field Name="c" Value="-2" />
      <Field Name="d" Value="-1" />
      <Field Name="" Value="0" />
      <Field Name="da" Value="1" />
      <Field Name="h" Value="2" />
      <Field Name="k" Value="3" />
      <Field Name="M" Value="6" />
      <Field Name="G" Value="9" />
      <Field Name="T" Value="12" />
      <Field Name="P" Value="15" />
      <Field Name="E" Value="18" />
      <Field Name="Z" Value="21" />
      <Field Name="Y" Value="24" />
    </Definition>
  </UADataType>

whenever I try to run any model I get the error like the following

Traceback (most recent call last):
  File "generic.py", line 17, in <module>
  File "site-packages\opcua\server\server.py", line 510, in import_xml
  File "site-packages\opcua\common\xmlimporter.py", line 67, in import_xml
  File "site-packages\opcua\common\xmlimporter.py", line 84, in _add_node_data
  File "site-packages\opcua\common\xmlimporter.py", line 196, in add_object_type
  File "site-packages\opcua\ua\uatypes.py", line 218, in check
opcua.ua.uaerrors._auto.BadParentNodeIdInvalid: "The parent node id does not to refer to a valid node."(BadParentNodeIdInvalid)
[18060] Failed to execute script generic

are these models runnable with OpcUa Servers?

UANodeSet on website and in the repo branch 1.04 are different

I am not sure which one I should use as the current 1.04 release.

The file UANodeSet in the repo 1.04 starts

<UANodeSet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" LastModified="2019-05-01T00:00:00Z" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
  <Models>
    <Model ModelUri="http://opcfoundation.org/UA/" Version="1.04" PublicationDate="2019-05-01T00:00:00Z" />

on the website pointed out by the readme.md https://opcfoundation.org/UA/schemas/1.04/
it looks like this

<UANodeSet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" LastModified="2019-04-15T00:00:00Z" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
  <Models>
    <Model ModelUri="http://opcfoundation.org/UA/" Version="1.04" PublicationDate="2019-04-15T00:00:00Z" />

**Unfortunately, I cannot compare both because of the huge number of differences. **
Which one has been released? Both are marked Version="1.04.

Usually, the GitHub repositories contain source files. This repository contains compiler results. It could be the cause of the tracking problem. New compilation could produce different results. Additionally XML files make the diff process more challenging or even impossible to manage because two different XML files don't mean different information they represent. Anyway, special care must be taken to keep all the staff in sync and precise text description of releases to avoid any confusion.

Why *.xml files are in the schema folder?

Opc.Ua.NodeSet2.Services.xml InstanceNode and TypeNode "DataTypes" missing Purpose="CodeGenerator"

Hi,

The following types are not in the specification and are related to other similar Purpose="CodeGenerator" UADataType definitions, so I'm assuming these are just missing the definition in the XML.


  <UADataType NodeId="i=11879" BrowseName="InstanceNode">
    <DisplayName>InstanceNode</DisplayName>
    <References>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=258</Reference>
    </References>
  </UADataType>
  <UADataType NodeId="i=11880" BrowseName="TypeNode">
    <DisplayName>TypeNode</DisplayName>
    <References>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=258</Reference>
    </References>
  </UADataType>

This error is in both 1.04 and master branches.

(Basically I just need the Purpose="ServicesOnly" types, the "CodeGenerator" ones I'm excluding as they would make confusing API in my case.)

Missing MachineVision XML file conformant with ModelDesign.xsd

Hi guys,

In MachineVisionn, the description of the model does not contain the XML representation compatible with ModelDesign.xsd which is mandatory for using the ModelCompiler.

Or perhaps someone has already a tool to convert NodeSet2 to ModelDesign format?

Regards

IO-Link: IODDManagement NodeId changed

Is it intended to change several NodeIds for the IODDManagement Nodes below the "Object"-Node?
Defined was the numerical NodeId 5022, 5024, 7002 and so on.
The current version in the master has changed these NodeIds starting from 10000.

The master branch is only available to OPC Foundation members ...

@randy-armstrong can you please elaborate in more detail why the OPCF decided to remove the master branch and only make it available to OPC Foundation members?

In the OPC Day event today Stefan Hoppe mentioned multiple times that the O in OPC stands for openness.

Removing (hiding) the master branch behind a paywall is not really a sign for openness. This will also slow down the development of open source stacks, it almost seems as if commercial stack vendors are threatened by the good progress of the open source community and therefore asked to hide this content.

Can you please also clarify, preferably in the README:
Will releases of the ua-nodeset still be available open source, or will the OPCF decide in the future to also remove these?

DiagnosticInfo in opc.Ua.Types.bsd contains invalid reserved field length

from Opc.Ua.Types.bsd, the Reserved1 field is calculated incorrectly, Length should be 1
BinaryValidator fails otherwise.

  <opc:StructuredType Name="DiagnosticInfo">
    <opc:Documentation>A recursive structure containing diagnostic information associated with a status code.</opc:Documentation>
    <opc:Field Name="SymbolicIdSpecified" TypeName="opc:Bit" />
    <opc:Field Name="NamespaceURISpecified" TypeName="opc:Bit" />
    <opc:Field Name="LocalizedTextSpecified" TypeName="opc:Bit" />
    <opc:Field Name="LocaleSpecified" TypeName="opc:Bit" />
    <opc:Field Name="AdditionalInfoSpecified" TypeName="opc:Bit" />
    <opc:Field Name="InnerStatusCodeSpecified" TypeName="opc:Bit" />
    <opc:Field Name="InnerDiagnosticInfoSpecified" TypeName="opc:Bit" />
    <opc:Field Name="Reserved1" TypeName="opc:Bit" Length="2" />
    <opc:Field Name="SymbolicId" TypeName="opc:Int32" SwitchField="SymbolicIdSpecified" />
    <opc:Field Name="NamespaceURI" TypeName="opc:Int32" SwitchField="NamespaceURISpecified" />
    <opc:Field Name="Locale" TypeName="opc:Int32" SwitchField="LocaleSpecified" />
    <opc:Field Name="LocalizedText" TypeName="opc:Int32" SwitchField="LocalizedTextSpecified" />

Wrong supertype for PermissionType in NodeSet2

The NodeSet2 xml lists PermissionType as:

<UADataType NodeId="i=94" BrowseName="PermissionType">
    <DisplayName>PermissionType</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">i=15030</Reference>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=5</Reference>
    </References>
    <Definition Name="PermissionType" IsOptionSet="true">
      <Field Name="None" Value="0" />
      <Field Name="Browse" Value="1" />
      <Field Name="ReadRolePermissions" Value="2" />
      <Field Name="WriteAttribute" Value="4" />
      <Field Name="WriteRolePermissions" Value="8" />
      <Field Name="WriteHistorizing" Value="16" />
      <Field Name="Read" Value="32" />
      <Field Name="Write" Value="64" />
      <Field Name="ReadHistory" Value="128" />
      <Field Name="InsertHistory" Value="256" />
      <Field Name="ModifyHistory" Value="512" />
      <Field Name="DeleteHistory" Value="1024" />
      <Field Name="ReceiveEvents" Value="2048" />
      <Field Name="Call" Value="4096" />
      <Field Name="AddReference" Value="8192" />
      <Field Name="RemoveReference" Value="16384" />
      <Field Name="DeleteNode" Value="32768" />
      <Field Name="AddNode" Value="65536" />
      <Field Name="All" Value="131071" />
    </Definition>
  </UADataType>

Specification version 1.04 Part 3 section 8.55 lists PermissionType as subtype of UInt32, but the NodeSet lists i=5, which is UInt16. The NodeSet2 should be fixed. There is at least one other similar issue, will post a separate GH issue per problem.

OPC UA Robotics - bsd file

The OPC UA Companion Spec for Robotics defines new Enumeration DataTypes

  • AxisMotionProfileEnumeration (used under AxisType)
  • ExecutionModeEnumeration (used under TaskControlType)
  • MotionDeviceCategoryEnumeration (used under MotionDeviceType)
  • OperationalModeEnumeration (used under SafetyStateType)

However, no official bsd file was released as part of the OPC UA Robotics Schema. Any reason why?

UADataType.Definition.Name wrong value

UADataType.Definition.Name wrong value

Problem

The UADataType.Definition of the DataTypeDefinition type has the wrong value. For example, in the ADI model, there is Definition

<Definition Name="ExecutionCycleEnumeration">

According to the Table F.12 – DataTypeDefinition it should be QualifiedName - a String with the form: <namespace index>:<name> but it isn't as it is stated in the Table F.2 – UANode.

NOTE:

Table F.12 – DataTypeDefinition

Element Type Description
Name QualifiedName A unique name for the data type. This field is only specified for nested DataTypeDefinitions. The BrowseName of the DataType Node is used otherwise.

Table F.2 – UANode

Element Type Description
BrowseName QualifiedName A QualifiedName serialized as a String with the form: <namespace index>:<name> Where the NamespaceIndex refers to the NamespaceUris table.

ADI example

  <UADataType NodeId="ns=1;i=9378" BrowseName="1:ExecutionCycleEnumeration">
    <DisplayName>ExecutionCycleEnumeration</DisplayName>
    <References>
      <Reference ReferenceType="HasProperty">ns=1;i=13026</Reference>
      <Reference ReferenceType="HasSubtype" IsForward="false">i=29</Reference>
    </References>
    <Definition Name="ExecutionCycleEnumeration">
      <Field Name="IDLE" Value="0">
        <Description>Idle, no cleaning or acquisition cycle in progress</Description>
      </Field>
      <Field Name="DIAGNOSTIC" Value="1">
        <Description>Scquisition cycle collecting data for diagnostic purpose</Description>
      </Field>
      <Field Name="CLEANING" Value="2">
        <Description>Cleaning cycle</Description>
      </Field>
      <Field Name="CALIBRATION" Value="4">
        <Description>Calibration acquisition cycle</Description>
      </Field>
      <Field Name="VALIDATION" Value="8">
        <Description>Validation acquisition cycle</Description>
      </Field>
      <Field Name="SAMPLING" Value="16">
        <Description>Sample acquisition cycle</Description>
      </Field>
      <Field Name="DIAGNOSTIC_WITH_GRAB_SAMPLE" Value="32769">
        <Description>Scquisition cycle collecting data for diagnostic purpose and sample is extracted from the process to be sent in control lab</Description>
      </Field>
      <Field Name="CLEANING_WITH_GRAB_SAMPLE" Value="32770">
        <Description>Cleaning cycle with or without acquisition and sample is extracted from the process to be sent in control lab</Description>
      </Field>
      <Field Name="CALIBRATION_WITH_GRAB_SAMPLE" Value="32772">
        <Description>Calibration acquisition cycle and sample is extracted from the process to be sent in control lab</Description>
      </Field>
      <Field Name="VALIDATION_WITH_GRAB_SAMPLE" Value="32776">
        <Description>Validation acquisition cycle and sample is extracted from the process to be sent in control lab</Description>
      </Field>
      <Field Name="SAMPLING_WITH_GRAB_SAMPLE" Value="32784">
        <Description>Sample acquisition cycle and sample is extracted from the process to be sent in control lab</Description>
      </Field>
    </Definition>
  </UADataType>

BrowseName according to the Part 3 section 8.3 QualifiedName

This Built-in DataType contains a qualified name. It is, for example, used as BrowseName. Its elements are defined in Table 25. The name part of the QualifiedName is restricted to 512 characters.

Table 25 – QualifiedName Definition

Element Type Description
QualifiedName structure
namespaceIndex UInt16 Index that identifies the namespace that defines the name. This index is the index of that namespace in the local Server’s NamespaceArray. The Client may read the NamespaceArray Variable to access the string value of the namespace.
name String The text portion of the QualifiedName.

License inconsistency

  • Add License.md file - the project doesn't have any license information.
  • Some files published in this repository says: OPC Foundation MIT License 1.00, e.g. ..../Schema/Opc.Ua.Classes.cs so the repository as one whole should say the same.
  • Mentioned above class (autogenerated I guess) refers to the definitions in a stuff that is not part of the repository, so it must be clearly stated where the files can be used - requirements about the context where they are applicable.
  • The context where the files are applicable should have a consistent license, i.e it doesn't make sense to publish stuff under the MIT license, which is applicable only under the GPL license. To be precise it is possible because GPL is more restrictive but useless.

Anway, the license and applicability context should be clearly described - I mean licenses dependency chain and code dependency chain should be clear and consistent.

For example the code dependency chain inluse the following identyfiers (to name only a few):

  • BaseObjectState
  • NodeState
  • NodeId
  • NamespaceTable
  • GetDefaultTypeDefinitionId
  • PropertyState
  • TimeZoneDataType

Opc.Ua.Di.Classes.cs does not compile

The commit 6f8c38d (Update DI to 1.02 Release Candidate) causes the generated Opc.Ua.Di.Classes.cs file to fail during build with the following errors:

Severity Code Description File Line
Error CS0100 The parameter name 'context' is a duplicate Opc.Ua.Di.Classes.cs 5915
Error CS0841 Cannot use local variable 'context' before it is declared Opc.Ua.Di.Classes.cs 5878
Error CS0136 A local or parameter named 'context' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter Opc.Ua.Di.Classes.cs 5883
Error CS1503 Argument 1: cannot convert from 'string' to 'Opc.Ua.ISystemContext' Opc.Ua.Di.Classes.cs 5890

The reason for these build errors are fairly obvious, but in short:

The Call funtion in line 5870 has a parameter ISystemContext context.
In line 5883 a variable is declared with the same name:

protected override ServiceResult Call(
   ISystemContext context,
   NodeId objectId,
   IList<object> inputArguments,
   IList<object> outputArguments)
{
   ...
   string context = (string)inputArguments[0];
   ...
}

Furthermore, the InitLockMethodStateMethodCallHandler function in line 5911 has two parameters named context:

    public delegate ServiceResult InitLockMethodStateMethodCallHandler(
        ISystemContext context,
        MethodState method,
        NodeId objectId,
        string context,
        ref int initLockStatus);

Wrong argument name "Context" for the method InitLockMethodType - Still happening with ModelCompiler - master c75b5bfe

This issue (#41) still happening when cloning latest ModelCompiler - master branch c75b5bfe and submodule Stack d7baeb9 and then compiling and the issue is still present in here

public delegate ServiceResult InitLockMethodStateMethodCallHandler(
ISystemContext context,
MethodState method,
NodeId objectId,
string context,
ref int initLockStatus);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.