Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
prrw opened this issue Feb 27, 2020 · 3 comments
Closed

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

prrw opened this issue Feb 27, 2020 · 3 comments

Comments

@prrw
Copy link

prrw commented Feb 27, 2020

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

@PaulHunkar
Copy link

The Aliases node is a new addition that is in part 17, I think it might be early, in that it is only an RC, but the definition appears to be correct and it should move to released some time fairly soon.

@prrw
Copy link
Author

prrw commented Mar 2, 2020

Okay Thanks. I will check that out.

@prrw prrw closed this as completed Mar 2, 2020
@mpostol
Copy link

mpostol commented Mar 2, 2020

Hi @PaulHunkar,

My concern is that using the object-oriented approach we should use inheritance as the paradigm to expand the existing model. Adding, over and over new stuff makes the model unstable and inevitably causes versioning problems. As a consequence, this could put in danger the interoperability, which must be the main concern of the standardization process.

Partially I know the answer. @PaulHunkar let me recall our discussion many years ago about the fundamental difference between:

  • OPC UA Information Model definition - we can carve it in stone
  • OPC UA Address Space instance - we need the power supply to keep it alive

Between both there is the ModelCompiler tool. Inheritance makes sense only in the case of the Information Model - "one stone (derived) can refer to another one (base)", so there is no need to reshape the base one. Talking about NodeSet2 we are talking about a formal description of the Address Space instance.

What do you think about returning to this discussion to avoid problems like this in the future?

I am not sure what exactly means "I will check that out" (@prv), but I know many cases where this means I will keep it on hold for the next couple years :(.

The discussion is important for me because as a part of the lab: Programming Technologies - Mobile Devices we will try to use Blockchain as the repository of the custom OPC UA Information Model definitions.

Any comments are welcome.

Mariusz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants