Git Product home page Git Product logo

opc-ua-ooi's Introduction

Object-Oriented Internet

Preface

Object-Oriented Internet - Machines to Machine Meaningful Interoperability

It is said that we are or soon will be citizens of a global village - a world considered as a single community linked by telecommunications. All applications designed atop of network communication can be grouped as follows:

  • human-centric - applications where the information origin or information destination is an operator
  • machine-centric - applications where information creation, consumption, networking, and processing are achieved entirely without human interaction

A typical human-centric approach is web-service supporting, for example, online bank account management. In this case, it is essential that any uncertainty and necessity to make a decision can be relaxed by human interaction. Coordination of multi-robot behavior in a work-cell or autonomous cars entering a service area fulfills the machine-centric scenario. It is crucial that, in this case, any human interaction is impractical or even impossible. This interoperability scenario requires a machine to machine communication (M2M) demanding multi-vendor devices integration.

The human-centric global village is almost done. However, the machine-centric global village still needs design and development effort. Information and Communication Technology (ICT) has provided society with a vast variety of distributed machine-oriented applications including the meaningful Machine to Machine (M2M) communication targeting distributed mobile applications in the context of new emerging disciplines, i.e. Industry 4.0 (I40) and Internet of Things (IoT). However, it is a real challenge if the mentioned machines are provided by a vast variety of vendors. The real challenge we are facing is how to produce independently smart things (i.e. machines, devices, appliances, assets, etc.) to guarantee that they are plug and produce ready. There are no doubts, it requires standardization. I believe that while producing the machines in compliance with the OPC Unified Architecture this issue is relaxed by applying the following OPC UA standardized concepts:

  • Information Model - all about how to design a formal but mutually meaningful and shareable description of the considered process
  • Address Space - all about how to instantiate and expose to the network a life replica of the process providing real-time data according to the above-mentioned formal description

The standardization process may be "paper-driven" or "community-driven". In both cases, standardization is indispensable but not sufficient. Let me recall that the foundation for the human-centric global village is just the Internet Protocol defined in 1981 and derived from the academic abstract knowledge and practitioners' concrete experience. It is worth stressing that it was published as an open-access document (RFC 791) and it has not been deprecated yet.

This umbrella project targets multi-vendor plug-and-produce machines interoperability scenarios targeting all aspects of the machine-centric global village concept aimed at providing reusable deliverables, training, best practice rules, prototyping, compliance testing and dissemination of valuable results.

I am a researcher who is passionate about applying knowledge and experience in building a machine-centric global village. Let's build it with you and for you. To join our effort and create an organization context I have launched the Object-Oriented Internet Partnership Program.

Consider joining as a sponsor, contributor or end-user. Details are covered by the section How to be involved

Your participation is needed to make sure the work will continue as expected.

What is Object Oriented Internet

In this project, C# deliverables supporting a new Machine To Machine (M2M) communication approach based on the Data-Oriented Architecture (DOA) paradigm is to be researched. The goal is to provide a generic solution for publishing and updating information in a context that can be used to describe and discover it by software applications. It is implemented based on the OPC Unified Architecture (OPC UA)- an industrial integration standard that fulfills the proposed architecture requirements.

The Object Oriented Internet article published in Proceedings of the Federated Conference on Computer Science and Information Systems captures description of this idea.

Go To Description
Release latest release
ebook the ebook Object Oriented Internet contains description of this project - it is auto-generated content gathered from *.md files from this repository.
DOI you can cite all versions by using the DOI 10.5281/zenodo.1198852. This DOI represents all versions, and will always resolve to the latest one.

Note: the DOI number is a unique identifying number associated with the repository version. Visit the section How to cite the software and associated documentation files to learn how to create derived works and cite the origin.

Keywords

OPC, OPC UA, M2M communication, Client-Server, Publisher-Subscriber, Data Oriented Architecture, DOA, AMQP, MQTT, PubSub, OPC UA PubSub, Semantic-Data, Industry 4.0, I4.0, Internet Of Things, IoT, IIoT, Global Data Discovery, Security

Releases

We use Semantic Versioning for versioning. For the versions available, see the releases on this repository. For your convenience, the versions of the repository, tools and NuGet packages has been listed in the next subsections.

Repository

Version Milestone DOI Date
6.1.2 Azure Gateway Implementation 1.0 DOI Dec 18, 2020
5.1.0 Semantic-Data ModelDesign Export 5.1.0 10.5281/zenodo.3345043 Jul 21, 2019
5.0.2-Alpha Updated the UA Address Space build against OPC UA Specification 1.04; updated UANodeSet schema; added export to ModelDesign OPC UA Address Space Prototyping 10.5281/zenodo.2636426 Apr 11, 2019
4.0.1 .NET Standard implementation, documentation improved, new code help documentation available, tested against Xamarin.Android 10.5281/zenodo.2555407 Feb 1, 2019
3.1.0 New version of the UAOOI.Networking.ReferenceApplication, documentation has been improved. 10.5281/zenodo.1291549 Jun 17, 2018
3.0.0 DOI creation for the publication purpose. 10.5281/zenodo.1198853 Mar 14, 2018

Tools

The table below lists the latest versions of the published Tools.

Description Version
OPC UA Address Space Prototyping 5.1.0
Semantic-Data Processing ReferenceApplication 4.00.01

NuGet packages

The table below lists the latest versions of the published NuGet packages.

Id Version Description
UAOOI.Common.Infrastructure 4.0.1 This library provides API for common infrastructure management functionality aimed at Object Oriented Internet application deployment.)
UAOOI.Configuration.Core 4.0.1 The library contains a shared interfaces for server configuration which OPC UA applications can reference. The library provides an abstraction over any OPC UA Server configuration plug-in. Using the library allows an application to indirectly access the server configuration attributes without relying on hard references. The hope is that using this library, third-party applications and frameworks can begin to leverage server configuration management without tying themselves down to a specific implementation.
UAOOI.Configuration.DataBindings 4.0.1 OPC UA Object Oriented Internet (UAOOI) DataBindings library is dedicated to create a plug-in aimed at editing of the configuration of any application based on OPC UA Information Model. It allows also to add data binding to the configuration.
UAOOI.Configuration.Networking 4.0.1 OPC UA Object Oriented Internet (UAOOI) UAOOI.Configuration.Networking library is dedicated to create a plug-in aimed at provisioning configuration of any application based on OPC UA Information Model.
UAOOI.Networking.Core 4.0.2 The core functionality of Semantic-Data reactive networking library based on OPC UA Part 14 Pub/Sub.
UAOOI.Networking.Encoding 4.0.2 This package provides functionality to lookup a dictionary containing value converters. The interface is used for late binding to inject dependency on the external library. This library provides IEncodingFactory functionality limited to encoding simple data types only for the testing purpose only.
UAOOI.Networking.SemanticData 4.0.2 SemanticData Reactive Networking library based on OPC UA Part 14 Pub/Sub.
UAOOI.Networking.UDPMessageHandler 4.0.2 OOI Reactive Networking: UDP IMessageHandlerFactory Implementation
UAOOI.SemanticData.InformationModelFactory 5.1.0 OPC UA Information Model Factory Library
UAOOI.SemanticData.UANodeSetValidation 5.1.0 This project supports validation of the OPC UA Address Space captured in the XML file against the OPC UA Specification. It is assumed that the Address Space is represented as an XML file compliant with the NodeSet schema. This library is dedicated to creating a plug-in aimed at importing models based on the OPC UA Information Model. It is part of the project supporting OPC UA Object Oriented Internet paradigm.
UAOOI.SemanticData.UAModelDesignExport 5.1.0 This library provides an implementation of the export functionality of an XML file compliant with the UAModelDeign schema. By design, the UAModelDeign schema describes the syntax of an XML document representing the OPC UA Information Model.
UAOOI.SemanticData.BuildingErrorsHandling 5.1.0 It provides descriptions of building errors to be used for OPC UA Address Space consistency validation purpose.

Content

Architecture

The repository workspace are organized as it is illustrated in the Figure below.

Figure 1. Packages relationship

Next sections describe the content of the packages in the repository. The packages are loosely coupled. Each package contains applications (tools), libraries, and unit tests. All common resources are collected in the CommonResources.

Common

This workspace provides API for common infrastructure management functionality aimed at Object Oriented Internet application deployment.

Configuration

This workspace is aimed at implementing an editor of the OOI Reactive Application configuration file. It contains types that supports the configuration management of application implementing the paradigm described in Semantic-Data Processing Architecture. The configuration may be read to or write from the xml or json files. By design this library may be used to support variety kinds of applications at design and run time. It supports also the data binding mechanism to define how the process data relate to the real world.

DataDiscovery

This workspace contains libraries and tools to find the data over the network. In the proposed approach the URI of the OPC UA Information Model is to be used as a unique key to browse the Global Data Discovery System (GDDS ֠an expanded version of GDS) to find recursively the destination OPC UA Server or UA Data Application exposing the requested data.

To get more details visit the section Global Data Discovery

Networking

This workspace contains library empowering the Industrial Internet of Things (IIoT) and Industry 4.0. as the result of using reactive networking paradigm. Intentionally it is designed on top of OPC UA Part 14 Pub/Sub protocol supporting interoperability with any product compliant with this specification. Seamless integration with AMQP, MQTT, etc. allows meaningful data transfer in the context of semantics defined using OPC UA Information Model.

To get more details visit the section Internet of Things (IoT) Communication

SemanticData

Introduction

The SemanticData folder contains projects related to support the OOI Semantic-Data Processing Architecture. Processing of the OPC UA Data Outside of the Server context is based on the Semantic-Data concept. This project is aimed to workout deliverables supporting Process Data handling over Internet including but not limiting to:

Project AddressSpaceComplianceTestTool

It is a command-line application aimed at the validation of the XML files compliant with the UANodeSet schema defined in Part 6 of the OPC UA Specification. The description of this schema is captured by the document Address Space Interchange XML

Project UANodeSetValidation

The UANodeSetValidation project is a library aimed at validate UANodeSet xml files.

To validate a new model add the code to the USNodeSetValidationUnitTestProject and XML file to the XMLModels in this project. If the validation test does not recognize an error the code in the UANodeSetValidation must be improved.

In this case add issue or modify the code on your fork and add pull request after finishing.

Public API: The public API for this project is defined by the interface:

  • IAddressSpaceContext

This interface may be used for dependency injection where validation of the input data conforming to the UANodeSet schema is processed.

Project InformationModelFactory

The project is dedicated to develop the OPC UA Information Model Factory Library. It is a library used as the dependency injection to produce OPC UA Information Model by a selected importer. The abstract API must be implemented by a classes providing functionality of Information Model creation.

Detailed description is covered by the document InformationModelFactory Library

Related work

OPC UA Address Space Model Designer (ASMD)

The main challenge of the project OPC UA Address Space Model Designer (ASMD) is to offer the designers a user-friendly tool supporting all aspects of the OPC UA Address Space model designing process. It brings together: designing, learning, and deploying. Description of the main features of the tool is covered by the section Design and Deployment Support.

The OPC UA Address Space Model Designer (ASMD) implements conceptual containers called solutions and projects to apply their settings. Any solution contains one or more projects and it manages the way the designer configures, builds, and deploys sets of related projects. Any project includes source files containing the model representation and related metadata such as properties and references to other projects. The designer Integrated Development Environment (IDE) provides tools that help you edit and manipulate models, namespaces, and add references to external resources.

Process-Observer (PO)

Process-Observer (PO) is an archetype that allows creation consistent, homogeneous real-time representation of the underlying process. This representation is a kind of a process state and behavior replica, which exposes real-time process data to the network using standardized interfaces like OPC Classic, OPC Unified Architecture, OPC PubSub, AMQP, MQTT, etc. In other words, it supports Machine to Sensors Connectivity (M2S), i.e. it allows an open, uniform, secure and standards-based communication solution between sensors, actuators, controllers and the upper layer applications.

A detailed description of this concept is covered by the article Object Oriented Internet. By design this concept supports

  • Process Devices Interconnection - synchronization of the process replica with the process state
  • Process Simulation - simulation of the process behavior to recover unavailable data and ensure a safe testing environment
  • Resource Monitoring - allowing to add information processing and networking infrastructure to be exposed consistently aggregated with the process replica
  • Server to Server Interactions - supports a scenario in which PO is the Client of a Server

The PO concept has been implemented as a generic communication engine used by the CAS CommServer Classic and Unified Architecture servers. This implementation is optimized for highly distributed applications. This implementation is maintained in the mpostol/ProcessObserver repository.

CommServer

CommServer is a package of software to manage data transfer using OPC standards. Built-in technologies and algorithms support Machine to Machine (M2M) meaningful interoperability. The CommServer was written by CAS Lodz Poland.

The GitHub repository commsvr-com/migration2os is aimed at the CommServer software migration from on-premise subversion repository to GitHub and publishing it as the Open-Source Software (OSS). The members of the CommServer family are to be converged with the Object-Oriented Internet paradigms and integrated with the solutions maintained in this repository.

Object Oriented Internet Reactive Networking Configuration Editor

OPC-UA-OOI.ConfigEditor is a package of software to manage the configuration of the Reactive Communication. The OPC-UA-OOI.ConfigEditor was written by CAS Lodz Poland. The mpostol/OPC-UA-OOI.ConfigEditor repository is aimed at the software migration from on-premise subversion repository to GitHub and publishing it as the Open-Source Software (OSS). After migration, this repository will be used to manage all activities addressing the software maintenance process as a plug-in of the ASMD.

How to cite the software and associated documentation files

To be compliant with the license of the repository the below copyright notice shall be included in all copies or substantial portions of the software and associated documentation files (the "Software").

Copyright (c) 2020 Mariusz Postol

In this section, you will learn how to cite the "Software" using the DOI number. A DOI number is a unique identifying number for the Software version. Because this repository has a DOI, use the DOI in your citation for the article or any derived work, like this:

Mariusz Postol, Object Oriented Internet: [Target Part Name], https://github.com/mpostol/OPC-UA-OOI, [year] DOI: 10.5281/zenodo.1198852.

or

Mariusz Postol, Object Oriented Internet: [Target Part Name], https://github.com/mpostol/OPC-UA-OOI, [year] DOI: http://doi.org/10.5281/zenodo.1198852.

Replace [year] with the current year and [Target Part Name] with the name (or names) of the files you are referring to.

How to follow up?

GitHub offers Discussions as a space to connect with other members of the community. I hope that using the Discussion space you:

  • ask questions you’re wondering about
  • share ideas
  • engage with other community members
  • welcome others and are open-minded; remember that this is a community we build together

I have activated the Discussion space for this repository. Follow the Discussion to be in touch.

To follow any activity in the repository, switch on the Watch functionality. If you find the project interesting, please star the repository. Starring a repository also shows appreciation to the repository maintainer for their work. You can star repositories and topics to keep track of projects you find interesting and discover related content in your news feed. Check out Saving repositories with stars to get more.

Conclusion

I hope it is a good place to prototype and converge the OPC UA communication technology with Semantic-Data, Industry 4.0, Internet Of Things, Data Oriented Architecture, Plug and Play, Global Data Discovery, Selective Availability, etc. concepts. My goal is to bridge a gap between OPC UA technology and Industrial IT Application Domains.

The presented approach is a real proposal for a new technology wave based on the existing Internet infrastructure because it allows vendors to provide generic off-the-shelf products tested independently for interoperability.

Partnership Program

I am a researcher and University associate who is passionate about applying knowledge and experience in building a Machine to Machine (M2M) meaningful interoperability based on OPC UA. Let's build it with you and for you. To join our effort and create an organizational context I have launched an open-access Object-Oriented Internet Partnership Program. Hence, maintenance of this repository and further development of the OPC UA Information Model Domain-Specific Language will be carried out under a broader concept described in the following article

Object-Oriented Internet Partnership Program

Consider joining. Visit the section How to be involved to get more. I hope that thanks to this partnership program we will establish long-term mutually beneficial cooperation. Your participation is needed to make sure that the work will continue as expected. As a rule of thumb, the work priority is derived from community feedback.

I strongly encourage community participation and contribution to this project. First, please fork the repository and commit your changes there. Once happy with your changes you can generate a 'pull request'.

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.

Please note we have a code of conduct, please follow it in all your interactions with the project.

See Also

Publications

Related documents

Related websites

opc-ua-ooi's People

Contributors

drutol avatar gitter-badger avatar leo3738 avatar mpostol 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

opc-ua-ooi's Issues

Handle HasComponent ReferenceType errors.

P3.07.07 HasComponent ReferenceType

  1. The TargetNode of this ReferenceType shall be a Variable, an Object or a Method.
    If the TargetNode is a Variable, the SourceNode shall be an Object, an ObjectType, a DataVariable or a VariableType.

If the TargetNode is an Object or a Method, the SourceNode shall be an Object or ObjectType.

UAMethod.MethodDeclarationId implement validaton

This attribute may be specified for a Method node that is a target of a HasComponent reference from a single Object node. It is the NodeId of the UAMethod with the same BrowseName contained in the TypeDefinition associated with the Object node. If the TypeDefinition overrides a Method inherited from a base ObjectType,this attribute shall reference the Method node in the subtype.

see: Address Space Interchange XML
It is not planned to represent it in the Information Model.

ValidateAndExportModel shall export also instances

Now there is where;,
where _node.UANode != null && (_node.UANode is UAType)
remove
(_node.UANode is UAType
and fix any problems

Overriden children are not exported. For example

  <ObjectType SymbolicName="bt:BoilerType" BaseType="OpcUa:BaseObjectType" SupportsEvents="true">
    <Description>A boiler used to produce steam for a turbine.</Description>
    <Children>
      <Object SymbolicName="bt:InputPipe" TypeDefinition="bt:BoilerInputPipeType" SupportsEvents="true">

doesn't contain overriden children

        <Children>
          <Object SymbolicName="bt:FlowTransmitter1">
            <BrowseName>FTX001</BrowseName>
            <Children>
              <Variable SymbolicName="bt:Output" />
            </Children>
          </Object>
          <Object SymbolicName="bt:Valve">
            <BrowseName>ValveX001</BrowseName>
            <Children>
              <Variable SymbolicName="bt:Input" />
            </Children>
          </Object>
        </Children>

Recognize problems with P3.7.13 HasTypeDefinition ReferenceType

The SourceNode of this ReferenceType shall be an Object or Variable. If the SourceNode is an Object, then the TargetNode shall be an ObjectType; if the SourceNode is a Variable, then the TargetNode shall be a VariableType.
Each Variable and each Object shall be the SourceNode of exactly one HasTypeDefinition Reference.

Adding Compliance Test Tool selected scripts as a reference point.

The OPC Foundation Certification Program requires OPC-based products to pass an extensive level of testing to assure compliance, interoperability, robustness, and resource efficiency. In this process the Compliance Test Tool is used to test servers and clients against interoperability. It includes the OPC UA Address Space. It seems valuable to have in this project the text of scripts related to Address Space testing used by the CTT as a reference point to compare and converge the testing scope and methodology.

Your opinion is welcome.

QualifiedName - add unit tests

The class is definet here:
UAOOI.SemanticData.UANodeSetValidation.DataSerialization.QualifiedName
BuildErrors must be harmonozed.
New Focus - DataSerialization may be created.

Methods Arguments must be validated.

IMethodInstanceFactory - added processed arguments list.
Properties may be defined for methods using HasProperty reference. The properties InputArguments and OutputArguments specify the input arguments and output arguments of the Method. Both contain an array of the Argument data type. An empty array a Property that is not provided indicates that there are no input arguments or output arguments for the Method. The Property NodeVersion indicates the version of the Method. There are no additional Properties defined for Methods in this document.

Resolve types ambiguity

Types defined in XML folder duplicated types defied in DataSerialization, e.g. LocalizedText .
It seems that duplicated types from XML must be moved and add to DataSerialization. All definition must be partial.

OPC UA Data Processing Outside of the Server - call for reviewers

I would like to ask you for an instant help to review my draft proposal I have just published in the document:
OPC UA Data Processing Outside of the Server

Motivation:

Challenge 1: remove dependency of metadata exchange over the OPC UA session
Challenge 2: remove dependency of security tokens distribution over the OPC UA session.
Challenge 3: make the data discoverable over the Internet

Your feedback:

  • Provide comments to this issue
  • Send me the email with your commends and proposals
  • Fork, edit and create pull request (preferred)

Add license to the project

Research is required to select appropriate one. Disuse it with OPC Foundation to harmonize with what they plan.

Add 7.8 HasProperty Validation Tests

The SourceNode of this ReferenceType can be of any NodeClass. The TargetNode shall be a Variable. By using the HasProperty Reference, the Variable is defined as Property. Since Properties shall not have Properties, a Property shall never be the SourceNode of a HasProperty Reference.

Implement StructureEditor

Use MVVM and reflection. Placeholder is in the project StructureEditor. Unit Test must be provided.

  • Model: any object that must by edited using reflection. Two options: public properties or DataMemberAttribute and members with the DataMemberAttribute to select the data holders.
  • ModelView: responsible to get the data from the object and populate selected control. It shall save modified values into the object. Recurrence should be implemented.
  • View: selected control to display and edit the members value.

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.