Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Practical usage of OPC UA information models

Practical usage of OPC UA information models

A short presentation about how the OPC UA information models are used from the viewpoint of a developer. I presented this at OPC and MES Day 2013 (organized by Finnish Society of Automation).

Avatar for Eero Laukkanen

Eero Laukkanen

October 15, 2013

Other Decks in Technology

Transcript

  1. <UAObjectType NodeId="ns=1;i=1001" BrowseName="1:ValveType"> <DisplayName>ValveType</DisplayName> <References> <Reference ReferenceType="HasProperty">ns=1;i=6012</Reference> <Reference ReferenceType="HasComponent">ns=1;i=6010</Reference> <Reference

    ReferenceType="HasComponent">ns=1;i=6011</Reference> <Reference ReferenceType="HasSubtype" IsForward="false">i=58</Reference> </References> </UAObjectType> <UAVariable DataType="Date" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6012" Browse <DisplayName>BestBefore</DisplayName> <References> <Reference ReferenceType="HasModellingRule">i=78</Reference> <Reference ReferenceType="HasTypeDefinition">i=68</Reference> <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=1001</Refe </References> </UAVariable> <UAVariable DataType="Double" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6010" Brow XML
  2. Model XML Types <UAObjectType NodeId="ns=1;i=1001" BrowseName="1:ValveType"> <DisplayName>ValveType</DisplayName> <References> <Reference ReferenceType="HasProperty">ns=1;i=6012</Reference>

    <Reference ReferenceType="HasComponent">ns=1;i=6010</Reference> <Reference ReferenceType="HasComponent">ns=1;i=6011</Reference> <Reference ReferenceType="HasSubtype" IsForward="false">i=58</Reference> </References> </UAObjectType> <UAVariable DataType="Date" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6012" BrowseName="1:BestBefore" UserAccessLevel="3" AccessLevel="3"> <DisplayName>BestBefore</DisplayName> <References> <Reference ReferenceType="HasModellingRule">i=78</Reference> <Reference ReferenceType="HasTypeDefinition">i=68</Reference> <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=1001</Reference> </References> </UAVariable> <UAVariable DataType="Double" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6010" BrowseName="1:Flow" UserAccessLevel="3" AccessLevel="3"> <DisplayName>Flow</DisplayName> <References> <Reference ReferenceType="HasTypeDefinition">i=63</Reference> <Reference ReferenceType="HasModellingRule">i=78</Reference> <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=1001</Reference> </References> </UAVariable> <UAVariable DataType="Boolean" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6011" BrowseName="1:IsOpen" UserAccessLevel="3" AccessLevel="3"> <DisplayName>IsOpen</DisplayName> <References> <Reference ReferenceType="HasTypeDefinition">i=63</Reference> <Reference ReferenceType="HasModellingRule">i=78</Reference> <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=1001</Reference> </References> </UAVariable> MANUAL
  3. // using "pure" nodes UaNode valve = …; double flow

    = (Double) valve.getComponent("Flow").getValue(); boolean isOpen = (Boolean) valve.getComponent("IsOpen").getValue(); DateTime bestBefore = (DateTime) valve.getProperty("BestBefore").getValue(); // using generated Java class ValveType valve = …; double flow = valve.getFlowValue(); Boolean isOpen = valve.getIsOpenValue(); DateTime bestBefore = valve.getBestBefore();
  4. // create valve object NodeManagerUaNode manager = …; NodeId valveTypeId

    = …; ValveType valve = manager.createNodeWithTypeAndName(valveTypeId, "Valve1"); // add object to the address space UaObject objects = manager.getNode(Identifiers.ObjectsFolder); objects.addComponent(valve); // use the object valve.setFlowValue(0.674); valve.setIsOpenValue(true); DateTime bestBefore = DateTime.parseDateTime("2024-11-16"); valve.setBestBeforeValue(bestBefore);