Coder Social home page Coder Social logo

iotcon-opc-ua-connector-dotnet's Introduction

THIS REPOSITORY WAS ARCHIVED ON DECEMBER 8, 2022. OMP WILL CLOSE AT THE END OF DECEMBER, 2022.

OMP OPC UA Edge Connector

APM license

Introduction

  • OPC UA is the major vendor independent machine protocol on production asset level
  • IT systems don't have support for OPC UA, but follow streaming approaches
  • There are currently no standalone, industrial-prove connectors for OPC UA available that convert OPC UA to a neutral format (e.g. MQTT or Kafka) and can be purely controlled by messages

That's why the OMP IoT Connectivity Working Group saw the need for a connector software, that is able to run on the edge level. The key OPC UA functionalities are supported according to the OPC Foundation Specifications and the OMP Edge standards are followed as defined in the OMP White Paper. Both further OPC UA functionalities and new integration capabilities are to be added in a modular approach in the future. The focus on easy integrability and flexible extensibility is intended to encourage usage and collaboration.

Infrastructural View

The OPC UA Edge Connector is hosted on the Edge Level and can connect to the cloud level and the production asset level. Southbound to the production asset level it connects via the OPC UA Client/Server protocol. Northbound it connects to a message broker like MQTT or Kafka, which is in the cloud level or in the edge level, either on the same edge node for local processing of the data or centrally in the plant data center. The OPC UA connector is a containerized software and can run on an Edge Node like an industrial PC or a container platform.

Infrastructural View

Application View

The OPC UA Edge Connector is controlled by messages. Therefor it consumes JSON messages from a command topic. After receiving a command, it executes an OPC UA operation against the OPC UA Server on an device (e.g. read/write/subscribe). The information about the success or failure of the operation is sent via the command result topic.

A special function has the telemetry topic. Notifications of monitored items resulting from an active subscription are sent to the telemetry topic.

Application View

Operational View

In the configuration phase of the OPC UA Edge Connector a configuration needs to be applied. The configuration contains for example information about the message broker endpoints. The software is logging by default to the console. The user needs to bring a appropriate Monitoring Service and Management Service in place to be control, observe and operate the software centrally and in large scale.

Operational View

Getting Started and Contribution

Build and Installation

  • Please go to the MQTT Example to see how to build and run it.
  • Please go to the Kafka Example to see how to build and run it.

Create your own OPC UA Server

Third party software

iotcon-opc-ua-connector-dotnet's People

Contributors

htbmw avatar ivomp avatar jpradocueva avatar maxschueler avatar sbuckel avatar thobelacs avatar veithammerstingl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

iotcon-opc-ua-connector-dotnet's Issues

Browse on Node with NodeClass object fails

In the current schema it is the Browse command in the new schema it will become the ReadNode command.

Request/Command :
Send a OpcUaCommandType = Browse command on a Node with NodeClass = Object

Expectation:
Good result of OpcUaCommandType = Browse.

Actual Result:
Bad result of OpcUaCommandType = Read and not Browse.
The payload data is of type = BrowseResponse (Which is correct)
The error message =
Missing type map configuration or unsupported mapping.
Mapping types:
Object -> BrowsedOpcNode
System.Object -> OMP.Connector.Domain.Schema.BrowsedOpcNode

Test data:
Opc Ua Server = mcr.microsoft.com/iot/opc-ua-test-server:latest (docker)
Node = ns=11;i=442 and ns=17;s=Telemetry

Mqtt example crashes with 'Connection already exists' error

In the Mqtt example only a single clientId is given in the shared section. Resulting in the M2MqttClientFactory to create multiple connections with the same ID. The desired behavior is that the M2MqttClientFactory shares the same connection per client ID,

Standardize API (Merge Models and remove 'dead' code)

Discussed in #20

Originally posted by ivomp September 3, 2021

Merge Models and remove 'dead' code

At the moment the ('Schema') models are scattered between the Domain and the Domain.Schema projects. There are also many models (and code) that are no longer used.

The idea is to merge the Domain & Domain.Schema projects and fix all the namespaces accordingly. Also to remove all the dead/unused models & code.

Docker files out of date

The code base has recently been updated to .Net 6 but some of the docker files in the solution still references .Net5

Re-add support for MQTT

Discussed in #19

Originally posted by ivomp September 3, 2021
A running connector that received commands and send responses & telemetry on MQTT

Use OPC UA JSON Encoding for PubSub Payload

The current JSON Payload is OMP own mapping/encoding.

OPC UA defines with Part 14 also the PubSub communication over transport protocols like MQTT.

For JSON the OPC spec defines an interoperable mapping to be consumed by cloud and data analytics applications.
https://reference.opcfoundation.org/Core/docs/Part14/6.3.2/

As a starting point please have a look an the reference implementation by @barnstee.
https://github.com/barnstee/UA-CloudPublisher

@veithammerstingl for OPC UA for Machine Tools a prototype implementation is already available at: https://github.com/umati/Sample-Server/tree/pubsub

ModuleSettings.example.json incorrect

The example settings file has some naming issues and have some missing values.

For example the 'CommandEndpoint' section under 'Communication' should in fact be 'RequestEndpoint'
Also how the behavior changes when certain values are configured (or not configured) ex. On MQTT example if the 'clientId' is not configured under each section then the mqtt connection will be shared for all topics

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.