user3579222
user3579222

Reputation: 1440

Creation of OPC UA information model

A precondition for creating an OPC-UA server is the creation of a corresponding information model. I had a look at the samples provided at the GitRep of the OPC UA group (Boiler). Creating the information model from scratch seems to be a non-trivial task. What is the best approach for creating such a model? Do you recommend useful tools?

Upvotes: 0

Views: 1890

Answers (2)

Stefan Profanter
Stefan Profanter

Reputation: 6866

There are some commercial and open source tools for creating OPC UA information models. Basically, what you need is a NodeSet2.xml file which can be loaded into many different OPC UA implementations.

To create such a NodeSet2.xml file, there are various tools. Here a short list.

Graphical tools:

Text tools:

  • You can always just write the NodeSet2.xml file manually. This is not recommended.
  • Use the OPC Foundation's Open Source UA-ModelCompiler. Here you write simple Model.xml files which are converted into NodeSet2.xml files.

The tool with the most features is the UA-ModelCompiler since this is used by the OPC Foundation to create the NodeSet2.xml files for the main specification and companion specs.

I also wrote a tutorial on how to create your custom information model using UA-ModelCompiler here: https://opcua.rocks/custom-information-models/

Upvotes: 3

Carmine Ingaldi
Carmine Ingaldi

Reputation: 976

I know it's a old question, but i will answer it the same for those pepole who read it in the future

The best approach exisist and was born before the OPC UA standard. It' Domain Driven Design. Talk with engineers to understand the composition and the technical solution of the machine/plant/process that you're about to model. Define a domain model which contains domain terms that model components, each of them with its properties (eg. name, serial) and variables (eg. temperature). Define the hierarchy between the components, but rembember that this is a "static" model: when you design a domain model for a web application, you know that an entity could have zero or one instances of another entity/VO associated, or one-to-many. In an OPC UA information model cardinality of associations are fixed, and this is quite reasonable just because a robot or a pipe don't change its structure at runtime....but if it do it, you should make possible to notify all clients of this change

Your information model will have data but each component could be also able to issue events. An event notifies that some state as changed even if this state is not represented into Data model. Alarms are an examples of events that you would need to manage. OPC UA has defined a standard for Alarms and Condition (whereas conditions are like alarms but don't represent a failure state) that are particular type of events. Now you have to select which components can be "event sources" and which component is able to notify events that are issued from itself or from a subtree of components of which it is the root

Validate your model with domain experts, don't expect they will understand, likely they're mechanichal, chemical, electric engineers, so i suggest you to abstract them the modeling part and make them domain-specific question, like "is it correct to state that a car has foru wheels?"

Upvotes: 0

Related Questions