diff --git a/Client.md b/Client.md deleted file mode 100644 index 5abf4c3..0000000 --- a/Client.md +++ /dev/null @@ -1,45 +0,0 @@ -# OPC UA Client Requirements - -## Connecting an OPC UA client to the datahub - -### Aggregated umati showcase OPC UA server - -The OPC UA endpoint of the datahub is public accessible by its DNS name. Each client needs to authenticate itself by username/password. The authentication details will be provided to everyone who has sign the MoU and wants to participate in the showcase. (See also chapter 13) - -The datahub server will have the data of all connected machines in its address space. -See [Aggregating multiple umati OPC UA servers](Server.md) for details on the information model. - -The datahub OPC UA Server is be available at `opc.tcp://datahub.umati.app:4840`. - -The following username and password is required to access the OPC UA Server: - -**User**: umati-user - -**Password**: Please request at [info@umati.org](mailto:info@umati.org) and [g.goerisch@vdw.de](mailto:g.goerisch@vdw.de) - -## OPC UA client functionalities - -As described in [OPC UA Server](Server.md), the client needs to support an encrypted connection, which is authenticated by username and password. The required profiles according to OPC UA Specification Part 7 are listed below: - -- Standard UA Client 2017 Profile this includes: - - Security Policy Required (encrypted connection required) - - Security User Name Password Client -- Session Client Renew NodeIds (namespace table might change over time, URI is necessary to detect the required namespace index) - -## Getting started: OPC UA client for umati showcase - -This specification focuses on the points that are specific to the umati showcase, general functionalities of OPC UA clients are not covered. - -- A test server is available for the development of OPC UA clients. This does not correspond to a real machine behavior, but provides changing values in the parameters for functionality testing. - -- The start node of the Machines folder in the address space is described in chapter 9 of the [OPC 40001-1 UA for Machinery](https://reference.opcfoundation.org/Machinery/docs/). There is no guarantee that the namespace index of a machine will remain the same permanently (e.g. if the datahub is restarted or the connection between the machine and the datahub is interrupted). Therefore, the URI should be used to identify the correct namespace. -- The other nodes can be identified by Browse/ TranslateBrowsePathsToNodeIds. - The client must be able to ignore certain/unavailable objects because some instances are optional (e.g. spindles or lamps). -- To get data continuously, use subscriptions and monitored items instead of repetitive read requests. -- **Close your session,** if you do not need it anymore. Refrain from using multiple sessions, as this might reduce the performance of the OPC UA Server. For most cases a single session is sufficient for the application. - -### umati showcase test server - -A test server is provided for basic testing and is supplied by VDW. - -The test server provides the complete data model and changes its values. There is no real machine tool simulation behind the [OPC UA Server](Server.md). The values do not necessarily have a logical connection to each other. For example, the channel can be deactivated while the job is still being processed. The server is available at `opc.tcp://opcua.umati.app:4840` ; authentication is not required. diff --git a/Dashboard.md b/Dashboard.md index 3b7f59a..cd2c61f 100644 --- a/Dashboard.md +++ b/Dashboard.md @@ -2,47 +2,53 @@ The umati dashboard at [https://umati.app](https://umati.app) is available as a neutral sample application to demonstrate OPC UA companion specification standardization. -- This dashboard shows all error free machine servers according to the defined [standards](Specs.md). +- This dashboard shows all error free machine servers according to the defined [companion specifications](Specs.md). - It lists [software solutions](Specs/Software.md) from umati partners, who provide a web accessible demonstration instance. -It is connected as an OPC UA client application to the datahub OPC UA endpoint. - -Currently the integration of [OPC 40001-1 UA for Machinery](https://reference.opcfoundation.org/Machinery/docs/) [OPC 40501-1 UA for MachineTool](https://reference.opcfoundation.org/MachineTool/docs/) is developed. +Machine data are available in a MQTT broker to provide live to the umati.app +Currently the companion specifications listed at [Specs](Specs.md) are implemented. Integrations of future additional companion specification implementations based on the [OPC 40001-1 UA for Machinery](https://www.vdma.org/viewer/-/v2article/render/2737109) are in progress. ## Location of Fair, Machine and Software icons on the dashboard -### Fairs +### Fair pin ![Fair](img/map_pin_fair.svg) -Location is set by fair organiser. +Fair location and icon is set by fair organiser. -### Machines +### Machine pin ![Machine](img/map_pin_machine_magenta.svg) -The machine instance _Location_ property (according to OPC 40001-1) shall be provided in the format ` `, e.g, “METAV 1 A22” or format ` `, e.g. `N 51.257315 E 6.740885` for GPS coordinates. - -NOTE: **The machine only gets a map icon, if it provides at least the GPS location** +The machine instance _Location_ property (according to OPC 40001-1) shall be set to the following definition: -Machines can be referenced to more than one fair by providing a list of fair locations, deliminated by slash e.g. `METAV /EMO 12 D17/N 51.257315 E 6.740885` +- Add GPS coordinates ` `, e.g. `N 51.257315 E 6.740885` to get a machine icon on the world map +- Add fair information ` `, e.g, “METAV 1 A22” to be associated to a fair +- **NOTE:** Machines can be referenced to more than one fair by providing a list of fair locations, deliminated by slash e.g. `METAV /EMO 12 D17/N 51.257315 E 6.740885` -#### FAIR Shortnames +### FAIR Shortnames -Fair shortnames are defined [here.](Specs/Fairs.md) +Fair shortnames are defined [here](Specs/Fairs.md). ### Software ![Software](img/map_pin_software_cyan.svg) -The software location will be manual set for now, based on the same principle like machines. +The software location will be manual set as discribed [here](Specs/Software.md). + +## Dashboard Features + +The dashboard provides information to solve a few use cases which are common in the companion specifications. -## Datahub +- Identifiy machines from different manufactures +- Provide an status overview of the machines +- Provide tool/measurment data +- Provide monitoring information -### Datahub connection +For the usage on fairs, the above location information provide the additional use case: -For this showcase we will have a datahub provided off premise. This will act as an OPC UA aggregation server. The machine server (M) will connect via an OpenVPN tunnel to an VPN endpoint. An OPC UA client will connect to the [OPC UA Server(s)](Server.md) of that partner through the VPN tunnel. This client will browses for all instances of the supported specifications and will read all values and events of these instances. These values and events are forwarded to an aggregating OPC UA server, which will provide a copy of the instances with values. The application providers (A) will connect to the aggregating [OPC UA Server](Server.md) of this datahub. This ensures a constant load on the unterlying OPC UA servers of the machines, no matter how many applications read the OPC UA data in the aggregating OPC UA server. +- Identify machines on a fair -To connect to this datahub (M) need an [OPC UA Server](Server.md) and OpenVPN client to access one dedicated endpoint per partner. (A) will connect via OPC UA directly to the datahub. +These use cases can be access through the Overview, Machines and Software tabs, as well as the filter functionality. diff --git a/Gateway.md b/Gateway.md new file mode 100644 index 0000000..3d4109b --- /dev/null +++ b/Gateway.md @@ -0,0 +1,35 @@ +# Gateway + +To connect your local OPC UA server to the umati.app the initiative provides a software gateway. +This gateway subscribes via OPC UA (Client/Server; TCP Binary) to your server and publishes the information to and MQTT broker. + +This [gateway](https://github.com/umati/Dashboard-OPCUA-Client) is provided as an open source version based on [open62541](https://open62541.org) and currently uses a _custom_ JSON encoding for the payload. It is planned to migrate to OPC UA part 14 JSON encoding and defined topic tree, as soon as v1.05.03 is published. + +## Architecture + +### High level + +OPC UA server --- Gateway --- MQTT Broker --- umati.app + +### With protocols + +- OPC UA server --- OPC UA TCP binary ---> Gateway + +- Gateway --- MQTT over Websockets ---> MQTT Broker +- MQTT broker --- MQTT over Websockets ---> device viewing umati.app + +## Configuration and connection + +The detailed configuration of the client and how to deploy and run it is described in the [source repository](https://github.com/umati/Dashboard-OPCUA-Client/blob/development/usage.md). + +### The gateway is provided as + +- Standalone binary x86 (32bit) Linux/Windows +- Standalone binary x86_64 (64bit) Linux/Windows +- Standalone binary x86 (32bit) Linux .deb package for ubuntu 20.04 and 22.04 +- Standalone binary x86_64 (64bit) Linux .deb package for ubuntu 20.04 and 22.04 +- container image x86_64 + +A configuration file example as well as documentation is available [here](https://github.com/umati/Dashboard-OPCUA-Client/blob/docs/docker/doc/Configuration.md). + +To obtain credentials to connect to the umati.app MQTT broker please follow [Server documentation](Server.md#connecting-an-opc-ua-server-to-umatiapp). diff --git a/Organization.md b/Organization.md index c4fe506..68bf9d9 100644 --- a/Organization.md +++ b/Organization.md @@ -51,7 +51,7 @@ Every participant is permitted to advertise his or her involvement in the umati #### Obligations of participants (C) supplying components -- Participants (C) without connected machines must verifiably offer support to other participants (M) for the connectivity via the umati interface. +- Participants (C) without connected machines must verifiably offer support to other participants (M) for the connectivity to the umati.app. #### Obligations of participants (A) showing applications @@ -67,7 +67,7 @@ All participants received a marketing package which will be updated as the trade - **umati partner logo:** The umati Partner logo should be used in your marketing and press materials online as well as offline. -- **umati sticker for the connected machines:** [is currently prepared – not yet available] Each machine should be outfitted with a umati sticker. If you are connecting a machine that is not located on the fair ground, please find a suitable place for this sticker on your booth to enable visitors to access the dashboard side of your machine with this code. A picture of the sticker is shown below (diameter 200mm). +- **umati sticker for the connected machines:** Each machine should be outfitted with a umati sticker. If you are connecting a machine that is not located on the fair ground, please find a suitable place for this sticker on your booth to enable visitors to access the dashboard side of your machine with this code. - **press release from umati** : informs about the showcase and the registered parties. Please use it also for your own communication as a template. Further press releases are going to follow. - **umati showcase folder** : [is currently prepared – not yet available] we will prepare a umati showcase folder, with more content and listing every partner and the booth information. diff --git a/Readme.md b/Readme.md index 641ba03..b263317 100644 --- a/Readme.md +++ b/Readme.md @@ -4,7 +4,7 @@ This repository provides the specification to connect to the umati virtual demon ## What is umati - the universal machine technology interface -To learn more please visit [https://umati.org](https://umati.org) +To learn more about the umati initative, please visit [https://umati.org](https://umati.org) --- @@ -12,18 +12,19 @@ To learn more please visit [https://umati.org](https://umati.org) - [Overview](index.md) - [OPC UA Server](Server.md) -- [OPC UA Client](Client.md) +- [OPC UA Gateway](Gateway.md) - [Dashboard](Dashboard.md) - [Implemented Specifications](Specs.md) + - [Flat Glass Processing](Specs/Flatglass.md) + - [Geometrical Measuring Systems](Specs/GeometricalMeasuringSystems.md) + - [IJT - Tightening](Specs/WIP.md) - [MachineTool](Specs/MachineTool.md) + - [MachineVision](Specs/WIP.md) - [PlasticsRubber](Specs/PlasticsRubber.md) + - [Robotics](Specs/WIP.md) - [Software Solutions](Specs/Software.md) - [WoodWorking](Specs/Woodworking.md) - - [Geometrical Measuring Systems](Specs/GeometricalMeasuringSystems.md) - - [Flat Glass Processing](Specs/Flatglass.md) - Upcoming Specifications - - [Robotics](Specs/WIP.md) - - [MachineVision](Specs/WIP.md) - [Scales](Specs/WIP.md) - [Organizational Information](Organization.md) - [Fairs](Specs/Fairs.md) diff --git a/Server.md b/Server.md index 3ce2919..a3840ae 100644 --- a/Server.md +++ b/Server.md @@ -1,71 +1,22 @@ # OPC UA Server Requirements -## Connecting an OPC UA server to the data hub via VPN +## Connecting an OPC UA server to umati.app -### Datahub and the fairconnect-configuration +### Process summary for connecting an OPC UA server to the [umati.app](https://umati.app) -For this showcase we have a datahub provided off premise. This acts as an OPC UA aggregation server. The OPC UA servers (M) will connect via an OpenVPN tunnel to an VPN endpoint (one per participant; multiple are possible in case of multiple machines But preaggregation of machines to a single OPC UA Server at the participant is also possible, [see below for details](Server.md#openvpn-configuration).). An OPC UA client will connect to the OPC UA server(s) of that participant through the VPN tunnel. The application providers (A) will connect to the datahub OPC UA server endpoint, as an [OPC UA Client](Client.md). -To connect to this datahub (M) need an OPC UA server and OpenVPN client to access one dedicated endpoint per partner. -In order to ease the onboarding process onto the datahub, we provide the [fairconnect application](https://fairconnect.umati.app) and a specified process for connecting OPC UA servers to the showcase: - -#### Process summary for connecting an OPC UA server to the data hub via VPN - -1. Fill in and sign the MoU as participant and indicate which/how many machines or you want to connect. -2. Install the [OpenVPN client](https://openvpn.net/community-downloads/) -3. Wait to receive an email with a link to register your machine on the datahub. -4. Click the link and set a password for the machine account -5. Login into [fairconnect](https://fairconnect.umati.app) with the set password from step 4. ![Fairconnect screen](img/Fairconnect.png "Fairconnect screen") -6. Download your individual OpenVPN client configuration -7. Import the provided configuration and start the VPN connection on the OpenVPN client. -8. Insert the TCP port of the OPC UA Server -9. Set the authentication method and credentials: [Anonymous](http://opcfoundation.org/UA-Profile/Security/UserToken/Anonymous), [User/Password](http://opcfoundation.org/UA-Profile/Security/UserToken/Server/UserNamePassword), [X509 client](http://opcfoundation.org/UA-Profile/Security/UserToken/Server/X509Certificate) are possible. -10. Check whether the connection has been set up correctly. -11. Select the NS(Namespace)-URIs of your instance to be imported (If you have an aggregating server with more than one machine, please select all relevant namespaces). -12. Start the integration and wait for it to complete. This will take a couple of minutes, if errors occur you will get an output. Please adjust your server/connectivity accordingly. When all checks are passed, the machine is added to the datahub. -13. Check if the machine appears in the datahub (meaning the OPC UA server that clients can connect to, please refer to the following chapter for connection details) and all values are correct. -14. There is a delay between adding machines to the datahub (the aggregated OPC UA server) until they are added to the dashboard (the browser-based umati.app) as this takes a couple of minutes to propagate to the system. -15. Send an email to [info@umati.org](mailto:info@umati.org) with an image of the machine (PNG / 1000x800 pixel or larger) and the Namespace URI of the machine in the datahub. This image will be used for the dashboard at [https://umati.app](https://umati.app/) . If you do not provide a picture, we will instead display a dummy machine icon. - -### OpenVPN client - -Each OPC UA server that should be connected to the datahub requires its own OpenVPN client (e.g. when there are two machine tools with an OPC UA server each, each one will require its own VPN client. When both OPC UA servers are aggregated to one OPC UA server, one VPN client for the aggregated server is sufficient, see following scenario graphs). The OpenVPN client can be downloaded here: [https://openvpn.net/community-downloads/](https://openvpn.net/community-downloads/). The OpenVPN client will make the computer accessible to the OPC UA client running on the data hub. Each participant will connect to their own VPN server endpoint. - -![VPN schema](img/VPN.png "VPN schema") - -#### OpenVPN configuration - -Each participant will initially receive as many machine accounts (OpenVPN certs) as requested in the MoU. Each configuration can be used for one VPN client instance. -See the picture above for possible scenarios of multiple OPC UA servers/multiple machines of one participant. -These configurations can be downloaded per machine at by all registered participants (M) who have indicated to connect machines with an OPC UA server. - -The VPN-connection requires an unrestricted outbound connection to **vpn.umati.app** using **TCP port 443**. - -#### OPC UA server/client connection - -The OPC UA client runs on the datahub and is connected to the systems that runs the OpenVPN client. The OPC UA client connects to a specified port on this computer to establish a connection to the OPC UA server. The default port is 4840. You can set this port on the [fairconnect configuration page (**8**)](https://fairconnect.umati.app). - -The default OPC UA connection settings are (encryption is done by the VPN): - -| Type | Setting | -| --- | :---: | -| Security Mode | None | -| Algorithm | None | -| User Authentication | Anonymous | - -The client connection will be established to higher security profiles, if they are available in the server. -Futhermore as of now the authentication to a OPC UA server is also available using either - -- [User/Password](http://opcfoundation.org/UA-Profile/Security/UserToken/Server/UserNamePassword) enter credentials at **(9)**. - -or - -- [X509 client certificate](http://opcfoundation.org/UA-Profile/Security/UserToken/Server/X509Certificate) select check box and download/install X509 client cert at **(9a)**. +1. Fill in and sign the MoU as participant and indicate which/how many machines you want to connect. +2. Receive an email with your MQTT broker credentials +3. Prepare a `configuration.json` as per documentation at [Gateway Config](Gateway.md) +4. Run a local OPC UA to MQTT over Websockets gateway +5. Check whether the connection to the MQTT broker is working and your gateway is publishing data +6. There is a delay between start of publishing of machine data to the broker until they are added to the dashboard. (the browser-based umati.app) as this takes a couple of minutes to propagate to the system. +7. Send an email to [info@umati.org](mailto:info@umati.org) with an image of the machine (PNG / 1000x800 pixel or larger) and the Namespace URI of the machine in the datahub. This image will be used for the dashboard at [https://umati.app](https://umati.app/) . If you do not provide a picture, we will instead display a generic machine icon. ## OPC UA server functionalities The functional requirements for the OPC UA server provided for the umati showcase demonstration are as follows. -Provide at least the OPC 40001-1 UA for Machinery namespance and a instance namespace of your machine. +Provide at least the OPC 40001-1 UA for Machinery namespace and a instance namespace of your machine. The minimal required profiles according to the OPC UA Specification Part 7 are listed below: @@ -91,30 +42,7 @@ In this chapter the necessary adaptations of the OPC UA information model, some - Load at least the Machinery types (as defined by OPC 40001-1 UA for Machinery) and the adapted instances in two separate namespaces into the OPC UA server. - Ensure that all variables have valid values, if a variable could not be provided by the machine tool, set a neutral value. (e.g. if no override is available, set the value to 1). -### OPC UA Server connecting to the datahub - -1. Please ensure corresponding umati-relevant namespace is added to the server. - -2. `Machines` folder have to point to base Machinery namespace, -This is where the datahub OPC UA client looks for showcase-relevant instances. - -3. Only the following namespaces are accepted as well as understood by the datahub. - - - - - - - - - - - - - - - - - `your custom namespace(s) for you instance(s)` - - Your custom instance namespace **must not** contain references to any other namespace (e.g. instantiation a different companion specification in this namespace is not allowed). - -4. If the computer, where the OpenVPN Client runs is accessible, try connecting to your OPC UA Server via the Open VPN IP-address (begins with 10.80.0.). If no OPC UA Client is available on this computer, basic connection test can also be done by using telnet, by `telnet 10.80.0.XX 4840` . -5. When the OPC UA Server and the VPN-Connection is established, visit [https://fairconnect.umati.app](https://fairconnect.umati.app/) to check your connection and integrate the machine to the datahub. - -## Aggregating multiple OPC UA servers +### Aggregating multiple OPC UA servers The aggregation should be equivalent to an aggregation that implement the [Device Information Model Specification](https://reference.opcfoundation.org/v104/DI/v102/docs/5.9/). @@ -124,8 +52,8 @@ one machine tool: ![Address space](img/Addressspace_sample.png "Addressspace sample") -These two address spaces should be merged so that in the aggregated server there is only one MachineTool-Folder and each Machine is under this node with the same NodeId-Identifiers und NodeId-URI (the NodeId-Index will be different) as in the original OPC UA server. +These two address spaces should be merged so that in the aggregated server there is only one _Machines_-Folder and each Machine instance is under this organization-node with the same NodeId-Identifiers und NodeId-URI (the NodeId-Index will be different) as in the originating OPC UA server. -The required namespaces for Machinery and Machine Tools (see 4. above) is only loaded once in the aggregated server. +The required namespaces for Machinery and related Companion Specifcations is only loaded once in the aggregated server. ![Address space](img/Addressspace_aggregated.png "Adress space aggregated") diff --git a/Specs.md b/Specs.md index 94e5fbf..9cc2c80 100644 --- a/Specs.md +++ b/Specs.md @@ -1,7 +1,6 @@ -# Current implemented specifications +# Current implemented companion specifications -- [GENERIC](Specs/prgeneric.md) - Generic Model for umati Plastics and Rubber -- [OPC 40501-1 UA for MachineTool](Specs/MachineTool.md) +- [GENERIC-Plastics&Rubber](Specs/prgeneric.md) - Generic Model for umati Plastics and Rubber - [OPC 40077 - IMM 2 MES](Specs/pr40077.md) - Data exchange between injection moulding machines and MES - [OPC 40079 - IMM 2 Robot](Specs/pr400779.md) - Data exchange between injection @@ -10,7 +9,8 @@ moulding machines and MES - [OPC 40082-3 - LSR](Specs/pr40082-3.md) - Peripheral devices – Part 3: LSR Dosing Systems - [OPC 40084-3 - EXTRUDER](Specs/pr40084-3.md) - Extrusion – Part 3: Extruder - [OPC 40084-11 - CORRUGATOR](Specs/pr40084-11.md) - Extrusion – Part 11: Corrugator -- [OPC 40550 UA for Woodworking](Specs/Woodworking.md) - [OPC 40210 UA for Geometrical Measuring Systems](Specs/GeometricalMeasuringSystems.md) - [OPC 40301 UA for Flat Glass Processing](Specs/Flatglass.md) +- [OPC 40501-1 UA for MachineTool](Specs/MachineTool.md) +- [OPC 40550 UA for Woodworking](Specs/Woodworking.md) - [Software Solutions](Specs/Software.md) diff --git a/index.md b/index.md index d277530..8410a93 100644 --- a/index.md +++ b/index.md @@ -15,19 +15,21 @@ To learn more please visit [https://umati.org](https://umati.org) ## Structure of the specification +- [Overview](index.md) - [OPC UA Server](Server.md) -- [OPC UA Client](Client.md) +- [OPC UA Gateway](Gateway.md) - [Dashboard](Dashboard.md) - [Implemented Specifications](Specs.md) + - [Flat Glass Processing](Specs/Flatglass.md) + - [Geometrical Measuring Systems](Specs/GeometricalMeasuringSystems.md) + - [IJT - Tightening](Specs/WIP.md) - [MachineTool](Specs/MachineTool.md) + - [MachineVision](Specs/WIP.md) - [PlasticsRubber](Specs/PlasticsRubber.md) + - [Robotics](Specs/WIP.md) - [Software Solutions](Specs/Software.md) - [WoodWorking](Specs/Woodworking.md) - - [Geometrical Measuring Systems](Specs/GeometricalMeasuringSystems.md) - - [Flat Glass Processing](Specs/Flatglass.md) - Upcoming Specifications - - [Robotics](Specs/WIP.md) - - [MachineVision](Specs/WIP.md) - [Scales](Specs/WIP.md) - [Organizational Information](Organization.md) - [Fairs](Specs/Fairs.md) @@ -50,7 +52,8 @@ This documentation is versioned, as some content details will be delivered later | v1.04.0 | 03.09.2021 | Addition of Woodworking companion specification | | v1.04.1 | 08.02.2022 | Updates to Machine Tools, Woodworking | | v1.05.0 | 03.03.2022 | Integrates Geomentrical Measuring Systems | -| v1.06.0 | 13.07.2020 | Integrates PlasticsRubber specifications | +| v1.06.0 | 13.07.2022 | Integrates PlasticsRubber specifications | +| v1.07.0 | 17.03.2023 | Remove Datahub and OpenVPN requirements | ### Changelog