Smart Factory Project MJ Samsung Electronics June 5

  • Slides: 31
Download presentation
Smart Factory Project MJ Samsung Electronics. June 5, 2018 edgexfoundry. org | @edgexfoundry

Smart Factory Project MJ Samsung Electronics. June 5, 2018 edgexfoundry. org | @edgexfoundry

LF Antitrust Policy Notice Edge. X Foundry meetings involve participation by industry competitors, and

LF Antitrust Policy Notice Edge. X Foundry meetings involve participation by industry competitors, and it is the intention of the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Examples of types of actions that are prohibited at Edge. X Foundry meetings and in connection with Linux Foundation activities are described in the Linux Foundation Antitrust Policy available at http: //www. linuxfoundation. org/antitrust-policy. If you have questions about these matters, please contact your company counsel, or if you are a member of the Linux Foundation, feel free to contact Andrew Updegrove of the firm of Gesmer Updegrove LLP, which provides legal counsel to the Linux Foundation. edgexfoundry. org | @edgexfoundry

Contribution candidates • • • OPC-UA and Device Service Common Data Model for Device

Contribution candidates • • • OPC-UA and Device Service Common Data Model for Device Services ez. MQ – Data streaming solution based on PUB/SUB Data Representation ( Automation. ML ) Pharos – Service deployment solution edgexfoundry. org | @edgexfoundry

OPC-UA & Device Service Samsung Electronics edgexfoundry. org | @edgexfoundry

OPC-UA & Device Service Samsung Electronics edgexfoundry. org | @edgexfoundry

OPC-UA and Devices Service • OPC-UA is de-facto standard industrial data transmission protocols •

OPC-UA and Devices Service • OPC-UA is de-facto standard industrial data transmission protocols • For OPC-UA protocol, two language versions are ready ü Java ( based on the OPC-UA milo open source ) ü C ( based on the Open 62541 open source ) ü CTT finished ( Official OPC-UA compliant ) ü Up to 25 msec periodic data transmission ( data size : 4 KB ) • For OPC-UA device service, Java version is ready. ü Java version is required for cloud or legacy service • Three repositories are opened. ü https: //github. com/mgjeong/protocol-opcua-c ü https: //github. com/mgjeong/protocol-opcua-java ü https: //github. com/mgjeong/device-opcua-java edgexfoundry. org | @edgexfoundry

OPC-UA Device Service architecture ( Java Version ) Device Services OPC-UA Device Service (Java)

OPC-UA Device Service architecture ( Java Version ) Device Services OPC-UA Device Service (Java) Device Service SDK Steaming Manager Command Data Model ez. MQ Publisher OPCUA Command Generator Device. Profile Manager Zero. MQ OPC-UA Protocol ( C / Java ) Interface Browse Data Access Subscription OPC-UA Protocol Stack ( library ) Node Management Legend Microservice Component External Component edgexfoundry. org | @edgexfoundry

Command Data Model Samsung Electronics edgexfoundry. org | @edgexfoundry

Command Data Model Samsung Electronics edgexfoundry. org | @edgexfoundry

Issues • A Variable type of parameter in Command Metadata mircoservice is just only

Issues • A Variable type of parameter in Command Metadata mircoservice is just only ‘String’ • That means Command mircoservice permit only simple data which expressed as plain ‘String’ type. • It will cause a serious use case issue If there is some requirement what needs to express more complex data format which depends on some protocol of factory machine. • And some microservices who access to various Device Services should include various data models according to the device services. edgexfoundry. org | @edgexfoundry

Solution • Provide command data model based on JSON format. { "version" : edge-1.

Solution • Provide command data model based on JSON format. { "version" : edge-1. 0 "data. Title" : A "edge. Elements" : [ { "element. Title" : B "edge. Attributes" : [ { "name" : C "data. Type" : D "value" : E }, . . . ] • key category. “version” - Version of the datamodel. “data. Title” - Protocol or data title. “edge. Elements” – Element unit like command of metadata. . “element. Title” - Each element of edge. Elements list can be expressed as operation of metadata. . “edge. Attributes” - Attribute list. “name” - Attribute name. “data. Type” - Data type. “value” – specific value of the attribute } edgexfoundry. org | @edgexfoundry

Example (for OPC UA device service) { "version" : "edge-1. 0" "data. Title" :

Example (for OPC UA device service) { "version" : "edge-1. 0" "data. Title" : "opcua" "edge. Elements" : [ { "element. Title" : "read" "edge. Attributes" : [ { "name" : "response" "data. Type" : "attribute" "value" : [ { "name" : "value_descriptor" "data. Type" : "string" "value" : "temperature" }, { "name" : "value" "data. Type" : "string" "value" : "80 F" } ] … More examples in below site https: //github. com/mgjeong/datamodel-command-java/blob/master/document/README. md edgexfoundry. org | @edgexfoundry

Benefits • It will get you an easy expression of your request or response

Benefits • It will get you an easy expression of your request or response data in which has a lot of categories and attributes. • Also It will be helpful to express more complex data which has depths. Since the Attribute element Category can contain other Attributes. • https: //github. com/mgjeong/datamodel-command-java https: //github. com/mgjeong/datamodel-command-go edgexfoundry. org | @edgexfoundry

Edge Data Streaming ( ez. MQ ) Samsung Electronics edgexfoundry. org | @edgexfoundry

Edge Data Streaming ( ez. MQ ) Samsung Electronics edgexfoundry. org | @edgexfoundry

How we can handle streaming data in Edge ? • • • OPC-UA is

How we can handle streaming data in Edge ? • • • OPC-UA is good for industrial data transmission But now, the throughput requirements is not match for industrial business. More fast data streaming scheme required for real-time data processing. Topic based messaging scheme is effective for PUB/SUB. ez. MQ(easy message queue) is designed based on Zero. MQ and protobuf. To support topic resolution, broker solution(TNS) is supported. edgexfoundry. org | @edgexfoundry

Overall Scenarios | System Auth. Server Account, Certification, Token Validation Storage Edge Data Storage

Overall Scenarios | System Auth. Server Account, Certification, Token Validation Storage Edge Data Storage Topic Subscription Server Data Stream Management System Computing Edge Data Processing Pharos Anchor Storage Manager PC, Mobile Topic Discovery & Resolution Automation. ML over ez. MQ Topic Name Service Provisioning Manager Workflow Manager Topic Publish & Registration Data Stream Collecting Edge Data Collection ARTIK Raspberry Pi OPC UA, Legacy Data Protocols Data Gathering edgexfoundry. org | @edgexfoundry Machine / Sensors / Actuators

Features Module Requirements Subscribing topic based single data stream (1: 1) Subscribing topic based

Features Module Requirements Subscribing topic based single data stream (1: 1) Subscribing topic based multiple data streams (N: 1) Publishing topic based data to single subscriber (1: 1) Data Streaming Publishing topic based data to multiple subscribers (1: N) Data rate for streaming up to 1 Gbps Topic name validation for publisher (Naming rule, Duplication) Topic data store in TNS Server (DB, Topic name, publisher’s endpoint address, data schema ID) Topic name discovery (Name matched, Hierarchy name, Wildcard char) Topic Name Service (TNS) Multiple topic subscription using hierarchy name Topic registration / deregistration for publisher Topic name resolution for data stream subscription (resolving ip/port from topic data) Keep-Alive for validation of topic edgexfoundry. org | @edgexfoundry

Architecture | Block Diagram : ez. MQ (Library) ez. MQ API JAVA CPP GO

Architecture | Block Diagram : ez. MQ (Library) ez. MQ API JAVA CPP GO Publisher C Node. js Python Subscriber Stream Registration (PORT, TOPIC) Stream Registration (IP/PORT, TOPIC) Data Streaming Data Receiving Serialization Deserialization Legend Functional Component Module External Component Zero. MQ Protocol Buffers Features TBD edgexfoundry. org | @edgexfoundry

Architecture | Block Diagram : ez. MQ+ (Topic Name Service) TNS Server (Service) TNS

Architecture | Block Diagram : ez. MQ+ (Topic Name Service) TNS Server (Service) TNS Server Interface (REST) Topic Manager Register Finder Unregister Keep Alive Storage Interface (REST) Topic ACL Topic Storage ez. MQ+ (Library) ez. MQ+ API CPP Java C TNS Client GO Node. js Python AML Data Model (Library) Discovery Validation Subscription Registration Port Mapper Port Assign Port Lookup Legend Functional Component ez. MQ (Library) edgexfoundry. org | Component Module Publisher Subscriber Zero MQ Protocol Buffers @edgexfoundry External Component Features TBD

APPENDIX | Performance Comparison on Messaging Queues • Environment Details : Ubuntu 14. 04

APPENDIX | Performance Comparison on Messaging Queues • Environment Details : Ubuntu 14. 04 LTS (64 bit) / Intel core I 7 -3770(3. 40 GHz*8) / 24 Gb RAM • Test scenario : Total transmission time of the number of messages ※ Message size: 1 MB, No. of publisher: 1, No. of subscriber: 1 Message Queue ( Protocol ) ZMQ (ZMTP) Active. MQ (AMQP) NATS (NATS) Rabbit. MQ (MQTT) 100 messages 10 ms 41 ms 287 ms 8669 ms 1000 messages 91 ms 501 ms 291 ms 83981 ms 10000 messages 333 ms 1380 ms 336 ms 802285 ms edgexfoundry. org | @edgexfoundry

Programming language support • • https: //github. com/mgjeong/protocol-ezmq-cpp https: //github. com/mgjeong/protocol-ezmq-go https: //github. com/mgjeong/protocol-ezmq-java

Programming language support • • https: //github. com/mgjeong/protocol-ezmq-cpp https: //github. com/mgjeong/protocol-ezmq-go https: //github. com/mgjeong/protocol-ezmq-java https: //github. com/mgjeong/protocol-ezmq-node https: //github. com/mgjeong/protocol-ezmq-python and… edgexfoundry. org | @edgexfoundry

Data Representation ( Automation. ML ) Samsung Electronics edgexfoundry. org | @edgexfoundry

Data Representation ( Automation. ML ) Samsung Electronics edgexfoundry. org | @edgexfoundry

For effective data manipulation • In edge computing, data processing( acquisition, analytics, stream query,

For effective data manipulation • In edge computing, data processing( acquisition, analytics, stream query, etc. ) is the one of the most important key feature. • If the Edge. X has canonical data representation scheme aligned with operation technology terms, it will leverage the Edge. X value. • Industrial point of view, several data representations are already defined such as MTConnect, Automation. ML • Automation. ML is more suitable in terms of extensibility. It contains the representation of data and process, so the different industrial process can exchange the information written in Automation. ML. edgexfoundry. org | @edgexfoundry

Overall Scenarios • Unification of data model between heterogeneous systems • Industrial data model

Overall Scenarios • Unification of data model between heterogeneous systems • Industrial data model based on Automation. ML(AML) standard • Interfaces to convert between Machine data and AML data Edge Data (AML) AML Data Model Lib Industrial Machine Data (CNC, Robot…) Device Protocol Machine / Sensors / Actuators edgexfoundry. org | @edgexfoundry Cloud Edge

Architecture | Block Diagram AML Data Model Library Interface JAVA CPP GO C Node.

Architecture | Block Diagram AML Data Model Library Interface JAVA CPP GO C Node. js Python Representation (AML Data) Register Schema Convert to AML Data Convert from AML Data AML String (XML) AML String (JSON) AML Serialization Legend Functional Component Module XML Paser edgexfoundry. org | JSON Paser @edgexfoundry Protocol Buffers Data Encryption External Component Features TBD

Programming language support • • • https: //github. com/mgjeong/datamodel-aml-cpp https: //github. com/mgjeong/datamodel-aml-go https: //github.

Programming language support • • • https: //github. com/mgjeong/datamodel-aml-cpp https: //github. com/mgjeong/datamodel-aml-go https: //github. com/mgjeong/datamodel-aml-java https: //github. com/mgjeong/datamodel-aml-node and… edgexfoundry. org | @edgexfoundry

Pharos ( service deployment solution ) Samsung Electronics edgexfoundry. org | @edgexfoundry

Pharos ( service deployment solution ) Samsung Electronics edgexfoundry. org | @edgexfoundry

Pharos | Summary Goals § Application should be able to be installed/updated/terminated on single/multiple

Pharos | Summary Goals § Application should be able to be installed/updated/terminated on single/multiple edge device(s) easily. § Application should be able to be deployed to a group of several edges, simultaneously. Developments § Installing App. container on edge device and update it if available § Grouping of several edge devices § Installing App. containers on a group of edge devices and update them if available Pharos (meaning of Lighthouse in Latin) § A solution to provide service deployment and device management functionalities to an edge device with a container-based edge S/W platform edgexfoundry. org | @edgexfoundry

Overall System | CI/CD + Deployment flow 4. Notify to operator Pharos Web View

Overall System | CI/CD + Deployment flow 4. Notify to operator Pharos Web View Edge Server (master) Docker Hub Registry Pharos Anchor Container Group Management Operator / Administrator Edge Controller 3. Notify Application was updated 5. Apply changes 6. Install (or update) application YAML … … Edge Pharos Node Container App. 1 service App. 2 service Pharos Node Container App. 1 App. service App. serviceserviceservice service 1. Deploy service native code (or update) 2. Service be pushed into docker hub YAML … … Edge Pharos Node Container Service Developer Build Server service : Edge Device : Pharos Anchor Container : Pharos Node Container : RESTful API Call edgexfoundry. org | @edgexfoundry : Installed apps on edge device App. service

Architecture | Module View – Pharos Edge server Edge device #n Pharos Anchor (Container)

Architecture | Module View – Pharos Edge server Edge device #n Pharos Anchor (Container) Pharos Node (Container) Rest API handler Edge Device Manager Group Manager Edge Service DB Manager Event Notification Service Deployment Controller HTTP Requester edgexfoundry. org | Rest API handler Service Control e. g. POST /api/v 1/deploy Device Management e. g. POST /api/v 1/reboot Service Deployment Controller Event Notification Service DB Manager Service Deployment Controller Docker Handler Docker daemon Host OS (Linux, Windows, etc. ) @edgexfoundry Service #1 (Container) Service #2 (Container) Service #3 (Container)

Architecture | Features Provide Restful APIs to install/update/terminate an application(*) as several containerized micro-services

Architecture | Features Provide Restful APIs to install/update/terminate an application(*) as several containerized micro-services for easier usages than native remote-APIs of Docker Provide Restful APIs to install/update/terminate an application as a group Provide an API to retrieve a healthy status of running applications and Edge device itself. Provide simple web client to operate Pharos Anchor * Application A unit of object to be deployed to edge device. An application can have several services(containers), which is described in a form of as yaml edgexfoundry. org | @edgexfoundry

Source codes written in Go. Lang https: //github. com/mgjeong/system-pharos-anchor-go https: //github. com/mgjeong/system-pharos-node-go https: //github.

Source codes written in Go. Lang https: //github. com/mgjeong/system-pharos-anchor-go https: //github. com/mgjeong/system-pharos-node-go https: //github. com/mgjeong/system-pharos-web-client Demo clip edgexfoundry. org | @edgexfoundry

Thank You edgexfoundry. org | @edgexfoundry

Thank You edgexfoundry. org | @edgexfoundry