Reputation: 1440
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
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:
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
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