E-monitoring via mindsphere. - Ghent University Library...Mindconnect toestellen (IoT2040 en Nano)....

78
E-monitoring via mindsphere. Academiejaar 2018-2019 Master of Science in de industriële wetenschappen: elektrotechniek Masterproef ingediend tot het behalen van de academische graad van Promotoren: Paul Vander Haeghen, dhr. Nick Bonne (Actemium) Studentennummer: 01509012 Kobe Persyn

Transcript of E-monitoring via mindsphere. - Ghent University Library...Mindconnect toestellen (IoT2040 en Nano)....

  • E-monitoring via mindsphere.

    Academiejaar 2018-2019

    Master of Science in de industriële wetenschappen: elektrotechniek

    Masterproef ingediend tot het behalen van de academische graad van

    Promotoren: Paul Vander Haeghen, dhr. Nick Bonne (Actemium)

    Studentennummer: 01509012

    Kobe Persyn

  • Woord vooraf Een grote dank gaat uit naar Actemium. Ik ben hen zeer dankbaar voor de ondersteuning en expertise die ik bij deze masterproef heb gekregen. Er is veel moeite gedaan om de masterproef zo interessant en uitgebreid mogelijk te maken.

    Bedankt aan Nick Bonne die mij veel vrijheid en zelfstandigheid heeft gegeven met hierbij toch de juiste opvolging.

    Hierbij wil ik ook Maurits, Peter, Ashley en Xavier bedanken voor hun inbreng in deze masterproef en het beantwoorden van vragen.

    Ik wil Paul Vander Haeghen hartelijk bedanken om mij op te volgen ondanks de moeilijke omstandigheden.

    Viktor de Saeytyd en Piet Pollefliet zijn goede contactpersonen geweest binnen Siemens en hebben veel extra informatie geleverd.

    Als laatste wil ik Brecht Lauwers bedanken voor zijn persoonlijke inbreng omtrent Mindsphere en zijn alternatieven.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 2 /77

    Abstract Door het opkomen van industrie 4.0 is er een groeiende vraag om data vanuit machines naar de cloud te krijgen. Mindsphere biedt een IoT platform dat kan gebruikt worden om aan cloud based e-monitoring te doen. Hierbij zal er data vanuit een machine verstuurd, opgevangen en verwerkt worden. Door applicaties binnenin Mindsphere te gaan maken kan deze de cloud data gaan ophalen en voorstellen. Er kan ook gebruik gemaakt worden van standaard applicaties die Siemens aanbiedt. Verder ondersteunt Mindsphere ook analytics services die gebruikt kunnen worden om data te gaan analyseren.

    In deze masterproef zal er onderzoek gedaan worden naar dit IoT platform. Er wordt onderzocht hoe de structuur van Mindsphere in elkaar zit en kan gebruikt worden. Ook zal gekeken worden naar de mogelijkheden die Mindsphere biedt om data vanuit de machine naar de cloud te sturen. Veiligheid en uitbreiding naar niet-Siemens PLC’s zijn hierbij belangrijke aspecten. Verder wordt er ook gekeken naar de mogelijkheid om aan bidirectionele communicatie te gaan doen.

    Naast het algemene onderzoekswerk is ook een specifieke use case uitgewerkt. In deze use

    case moet een applicatie gemaakt worden voor een AGV. De data van de AGV zal naar

    Mindsphere worden gestuurd, waarna deze kan opgehaald worden in een Angular

    applicatie. De uitbreidbaarheid van de AGV applicatie is hierbij ook uitgewerkt voor

    toekomstige projecten.

    Er zijn drie manieren om data vanuit een Siemens PLC naar Mindsphere te gaan versturen.

    Een eerste manier is door in de PLC zelf te programmeren. Hiervoor zullen functie blokken

    moeten geïmplementeerd worden in het programma. Deze manier van connecteren is nog

    niet volledig werkende met de laatste versie van Mindsphere. Een tweede manier om data te

    versturen is via een externe Mindconnect module. Er zijn twee toestellen om dit te

    realiseren: de Mindconnect Nano en Mindconnect IoT2040. Deze toestellen kunnen ook met

    niet-Siemens PLC’s geconnecteerd worden. Beide toestellen maken connectie met de PLC via OPC UA of het S7 protocol. Het grote verschil is dat de Mindconnect Nano meer data

    kan versturen dan de Mindconnect IoT2040. Een laatste mogelijkheid is om te gaan werken

    via een industriële PC. Er kan gebruik worden gemaakt van een bibliotheek om vanuit

    applicaties naar Mindsphere te gaan sturen. Door een industriële PC te verbinden met een

    PLC kan de data via een applicatie op de PC doorgestuurd worden naar Mindsphere. Er is

    nog geen mogelijkheid tot bidirectionele communicatie op de PLC functie blokken en

    Mindconnect toestellen (IoT2040 en Nano). Indien dit toch gedaan moet worden, kan dit

    door MQTT in de PLC toe te voegen.

    De applicatie die gemaakt is voor de AGV bevat drie tabbladen. Op deze pagina’s worden een aantal parameters visueel voorgesteld (batterij percentage, AGV status,

    motortemperaturen en -stromen…). Er is voor gezorgd dat data zowel real time als gearchiveerd kan worden opgevraagd. De applicatie is gemaakt voor een klant die slechts

    één AGV heeft. De asset structuur die in Mindsphere is opgebouwd, geeft mogelijkheid tot

    uitbreiding naar meerdere klanten. Elke klant wordt in Mindsphere voorgesteld als een

    subtenant en elke AGV als een asset. Door zich aan deze structuur te houden is de

    applicatie makkelijk uitbreidbaar naar meerdere AGV’s en meerdere klanten.

    Kernwoorden: Mindsphere, IoT, Angular, Node-Red, cloud.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 3 /77

    E-monitoring with Mindsphere Kobe Persyn

    Supervisors: Nick Bonne, Paul Vander Haeghen

    Abstract – This article covers Mindsphere, the new IoT platform from Siemens. Mindsphere offers

    connectivity from machine to the cloud. The rise of

    industry 4.0 forces companies to collect more and

    more machine data. With new AI technologies, big

    data can be analysed to increase machine

    performance. Mindsphere provides a solution for this.

    With home-made connection devices and

    programming libraries, data can be send to and

    retrieved from the cloud. This extended abstract gives

    more insights in Mindsphere and covers a use case for

    a client from Actemium.

    Keywords – Mindsphere, IoT, Siemens, industry 4.0, cloud, machine monitoring, Node-Red, Angular,

    Mendix.

    I. Introduction

    This thesis focuses on Mindsphere. The objective is

    to research the possibilities and restrictions

    Mindsphere has at the moment. The main goal is to

    give insights into the way Mindsphere provides a

    solution to connect a machine to the cloud and how

    this is done. This connection goes from

    programming into the PLC to adding additional

    hardware that communicates with this PLC. There

    is a short comparison between low-code platforms

    (Mendix) and programming platforms (Angular)

    and how they are implemented in Mindsphere.

    Actemium has a use case for a client in which an

    application needs to be built for an AGV (automated

    guided vehicle). This use case will also be covered

    in this master thesis.

    II. Machine to the cloud

    Mindsphere offers three solutions to connect a

    machine to the cloud. The first solution is by

    programming into the PLC. This solution requires a

    S7-1500 PLC that is connected to the internet. To

    connect the PLC to Mindsphere, Siemens offers a

    library which can be used to send data points to

    Mindsphere. This solution has the advantage that

    there is no need for external hardware. There are still

    some internal problems with these function blocks.

    A second solution uses external hardware devices to

    connect the PLC to the cloud. There are two devices:

    Mindconnect Nano and Mindconnect IoT2040. The

    difference between these two lays in the amount of

    data points that can be send. Both devices can be

    connected to the PLC and communicate with it. The

    communication protocols used to exchange data

    with the PLC are OPC UA and S7. The OPC UA

    protocol enables these devices to connect to non-

    Siemens PLC’s. These devices don’t support high frequency or bidirectional data transport.

    The last solution to send data from a PLC to

    Mindsphere is through an industrial PC.

    Mindsphere offers a library that can be used by

    applications to send data to Mindsphere. The

    industrial PC can connect to the PLC and read data

    from it. This PC can send the retrieved data to

    Mindsphere trough an application. This has been

    tried in this master thesis by using Node-Red.

    III. Low-code development versus

    programming

    Low-code platforms are getting more and more

    popular. Siemens is also getting started with low-

    code platforms and wants to implement these in

    Mindsphere. The platform that Siemens is investing

    in, is Mendix. There are already example projects

    made by Siemens to get connection from Mendix to

    Mindsphere. Developers can use Mendix as a low-

    code platform and easily connect it to Mindsphere.

    Figure 1: pricing overview Mendix

    Actemium uses the programming platform Angular.

    Using Mendix has some advantages compared to

    Angular. Getting connection and adding a frontend

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 4 /77

    is a lot faster and easier to do in a low-code platform.

    This has the advantage that developers can save time

    and more easily make applications.

    There are also some disadvantages to low-code

    platforms. There is time and money investment

    needed to learn and use these platforms. They are

    often expensive to use and it takes some time to get

    familiar with the platform structure. Applications

    can be made more specific when using a

    programming platform like Angular. The nodes used

    by low-code platforms to design the frontend, are

    restricted to the platform.

    IV. Mindsphere asset structure

    Mindsphere works with an asset structure to

    represent a machine. On the lowest level of this

    structure, there are aspects. Aspects are groups of

    variables who are send and collected together. An

    aspect can be a motor which contains temperature

    and current. In this thesis we have an aspect motor

    with two data points in it.

    These aspects can be added in a type. This type will

    contain all the variables that are configured in these

    added aspects. This type can for example represent

    an AGV with two aspects of motor in it.

    Once a type is defined, assets can be made out of this

    specific type. If a plant has three AGV’s, three assets of type AGV can be added. Once these assets are

    added, they need to be linked to a connection asset.

    These assets define the connection to the PLC or

    application (Mindconnect Nano/IoT2040/Lib).

    Subtenants can be made to define different clients.

    Once a subtenant is made, an asset of this subtenant

    will appear. The subtenant can be linked to an

    account. When a client logs in on this subtenant, he

    can only get data from the assets that are dragged

    into his subtenant asset. This way, the subtenant

    cannot access data from other clients.

    V. Node-Red simulation data

    To test and debug the application, data needs to be

    simulated. To simulate this data, Node-Red is used.

    Node-Red is a visual programming platform that can

    be used as a frontend and backend. The frontend

    exist of sliders that can be used to change the values

    of the data points. By changing the slider, a value

    change can be simulated. These values are send to

    Mindsphere with a time interval of three seconds.

    There are also text fields that represent the

    description data used to send events to Mindsphere.

    For each text field there is a button to trigger the

    event. When a button is pushed, an event is send to

    Mindsphere.

    Figure 2: simulation application Node-Red

    This simulation data was necessary because the

    AGV was not yet connected to Mindsphere. This

    made debugging very hard since there was no data

    to show. Node-Red is a very useful tool and can

    easily be used to simulate data to Mindsphere in

    order to test and debug an application.

    VI. Web application

    The AGV application contains three tabs. These tabs

    provide information about the AGV. The application

    is made for one client with one AGV. In the future,

    Actemium wants to use this application and make it

    generic so it can be used by all their AGV clients.

    Mindsphere offers a solution for this. By using

    subtenants, Actemium can link AGV assets to these

    subtenants. These subtenants can only see the data

    linked with their subtenant asset, which guarantees

    they can only access their own AGV data and not

    those of another client.

    There are five AGV parameters that are visualized

    in the application. The first one is battery

    percentage. This is a pictogram which visualises

    how much the AGV battery is charged at the

    moment. Another parameter is the AGV status. This

    parameter gives more information about the current

    operation the AGV is in (charging, running, stopped,

    alarm). There is also a graph that shows the AGV

    status in function of the time. This graph can be used

    to show real time or historical data. On another page

    the motor current, temperature and operating hours

    are visualized. The current and temperature graph

    can, just like the AGV status, show real time or

    historical data. The amount of operating hours a day

    is shown by a column diagram. This diagram shows

    how many hours/day the AGV has been operational

    for the last seven days.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 5 /77

    Figure 3: operating hours AGV

    On the last page is a table. This table contains the

    logged events from the last seven days. These

    events can represent alarms or manual operations.

  • Inhoud

    1 Afkortingen ..................................................................................................................... 8

    2 Inleiding .......................................................................................................................... 9

    3 Mindsphere ................................................................................................................... 10

    3.1 Omschrijving Mindsphere.......................................................................................... 10

    3.1.1 Data collectie/connectiviteit ...............................................................................11

    3.1.2 Data opslag .......................................................................................................13

    3.1.3 Machine learning/data analytics ........................................................................13

    3.1.4 Integration .........................................................................................................14

    3.2 Mindsphere platform overzicht .................................................................................. 14

    3.2.1 Asset Manager ..................................................................................................14

    3.2.2 Fleet Manager ...................................................................................................16

    3.2.3 Settings .............................................................................................................16

    3.2.4 Developer Cockpit .............................................................................................16

    3.2.5 Usage Transparency .........................................................................................17

    3.2.6 Applicaties .........................................................................................................17

    4 Low-code versus programming ................................................................................... 22

    4.1.1 Actemium platform.............................................................................................22

    4.1.2 Low-code development .....................................................................................22

    4.1.3 Conclusie ...........................................................................................................24

    5 Praktisch gebruik .......................................................................................................... 25

    5.1 PLC kant .................................................................................................................... 25

    5.1.1 Mindconnect IoT2040/Nano ..............................................................................25

    5.1.2 S7-1500 FB .......................................................................................................25

    5.2 Gebruik Mindsphere platform .................................................................................... 38

    5.2.1 Mindconnect IoT2040/nano ...............................................................................38

    5.2.2 S7-1500 FB .......................................................................................................39

    5.3 Conclusies en extra opmerkingen ............................................................................ 43

    6 Use case Actemium ..................................................................................................... 44

    6.1 Inleiding ..................................................................................................................... 44

    6.2 Oplossing model........................................................................................................ 44

    6.2.1 Generiek concept ..............................................................................................44

    6.2.2 Parameters en een eerste applicatie design .....................................................44

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 7 /77

    6.2.3 Asset structuur...................................................................................................45

    6.2.4 Connectiviteit .....................................................................................................46

    6.3 simulatie data via Node-Red ..................................................................................... 47

    6.3.1 Node-Red naar Mindsphere ..............................................................................47

    6.3.2 De applicatie ......................................................................................................48

    6.3.3 Code uitleg ........................................................................................................50

    6.4 Web applicatie ........................................................................................................... 58

    6.4.1 Overzicht webapplicatie .....................................................................................58

    6.4.2 Code ..................................................................................................................60

    6.4.3 Uitbreiding .........................................................................................................70

    7 Referenties ................................................................................................................... 76

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 8 /77

    1 Afkortingen 6LowPan Low-Power wireless wersonal area networks

    AGV Automated guided vehicle

    AMQP Advanced message queuing protocol

    API Application programming interface

    AWS Amazon web services

    CoAP Constrained application protocol

    DCS Distributed control system

    DFT Discret Fourier transform

    DNS Domain name system

    DOD Depth of discharge

    ERP Enterprise resource planning

    FB Function block

    FFT Fast Fourier transform

    HTTPS Hypertext transfer protocol secure

    IoT Internet of things

    KPI Key performance indicator

    LoRaWAN Long range wide area network

    LWM2M Lightweight machine to machine

    MES Manufacturing execution system

    MQTT Message queuing telemetry transport

    OPC UA Open platform communications unified architecture

    PC Personal computer

    PLC Programmable logic controller

    SCADA Supervisory control and data acquisition

    TCP Transmission control protocol

    XMPP Extensible messaging and presence protocol

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 9 /77

    2 Inleiding Vandaag de dag wordt IoT alsmaar meer populair. Door de opkomst van technologieën als artificiële intelligentie komen er meer mogelijkheden om grote hoeveelheid data te verwerken. Vanuit deze data monitoring kunnen bedrijven voordelen gaan halen. Zo kunnen problemen makkelijker en sneller gevonden worden. De problemen die zich in het verleden hebben voorgedaan, kunnen ook dieper geanalyseerd worden. Rendementen van productielijnen kunnen verhoogd worden en nog veel meer. Siemens biedt hiervoor een oplossing speciaal voor de industrie: Mindsphere.

    In deze masterproef zal Mindsphere besproken worden. Mindsphere is een IoT oplossing die Siemens biedt om data vanuit de machines naar de cloud te krijgen en te analyseren. Deze IoT oplossing is nog niet lang op de markt en is dus relatief nieuw. De bedoeling is om Mindsphere te gaan onderzoeken en een beter beeld te krijgen van de mogelijkheden en limitaties hiervan. Verder zal er ook een praktische toepassing gemaakt worden voor Actemium.

    Er komen een aantal onderwerpen aan bod. Als eerste zal er een globaal beeld gegeven worden van Mindsphere. Hierbij worden de verschillende connectie mogelijkheden besproken om data van de machine naar de cloud te krijgen. De structuur en het platform van Mindsphere wordt hier ook verder uitgelegd. Als tweede wordt er een vergelijking gemaakt tussen low-code en programmeer platformen. De reden hiervan is dat Siemens een low-code platform heeft overgenomen en deze ook wilt integreren in Mindsphere. Als derde zal het praktische gebruik van Mindsphere verder uitgelegd worden. Als laatste zal een use case van Actemium besproken worden. In deze use case is het de bedoeling om data van een AGV te gaan visualiseren via Mindsphere. Hiervoor zal een web applicatie gebouwd worden.

    De referentie bronnen die gebruikt zijn bij het onderzoek zijn hoofdzakelijk allemaal van Siemens. Mindsphere is nog niet lang op de markt en er is dan ook weinig informatie over te vinden (anders dan de Siemens documentatie). Om aan meer informatie te komen is er ook contact opgenomen met een aantal mensen die bij Siemens werken en zijn er webinars gevolgd.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 10 /77

    3 Mindsphere In dit hoofdstuk zal de IoT oplossing die Siemens biedt algemeen besproken worden. Hier zal nog niet dieper ingegaan worden op de specifieke use case of het praktische gebruik hiervan. Dit wordt wel gedaan in latere hoofdstukken. Het is in dit hoofdstuk vooral de bedoeling om kennis te maken met Mindsphere.

    3.1 Omschrijving Mindsphere Mindsphere is een IoT operating system dat het mogelijk maakt om op verschillende manieren data vanuit een machine naar de cloud te sturen. Vanuit deze cloud kan data dan afgehaald worden en kunnen er verdere analyses/dashboarding op gedaan worden. In figuur 1 is de structuur te zien van Mindsphere.

    Figuur 1: structuur Mindsphere

    Bron [16] (Siemens, sd)

    Er zijn Mindconnect elementen beschikbaar om data vanuit toestellen (PC, PLC…) naar Mindsphere te sturen. Om deze data op te vangen kan er zelf een applicatie gemaakt worden of kan de data in een reeds bestaande applicatie uitgelezen worden. In onderstaande deelhoofdstukken zal de connectielaag, data opslag, bestaande applicaties, machine learning en integratie verder besproken worden.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 11 /77

    3.1.1 Data collectie/connectiviteit Mindsphere levert een connectiviteit die het mogelijk maakt om fysische toestellen (zowel Siemens als niet-Siemens) te connecteren met de cloud. Dit gebeurt via gekwalificeerde cloud leveranciers zoals AWS, Azure... De Siemens oplossing die voor connectiviteit zorgt, wordt Mindconnect genoemd (zie ook figuur 2). Het security framework dat is geïmplementeerd in Mindconnect voldoet aan de strengste industriële standaarden.

    Figuur 2: connectiviteit Mindsphere

    Zowel historische als ogenblikkelijke data connectiviteit is voorzien door Mindsphere. Na enkele testen is gebleken dat er een belangrijke tijdsvertraging zit op de data die in de fleet manager aankomt. Het ophalen van data gebeurt via http requests. Deze request worden met een bepaald tijdsinterval gedaan. Hierdoor kan het even duren tot de data wordt afgehaald. Er kan makkelijk een tiental seconden zitten tussen het moment van sturen en het moment van aankomen. In documentatie gaat het dan ook over bijna real time gedrag. Mindconnect geeft ook mogelijkheid voor implementatie van SCADA, ERP, MES en DCS (via Mindconnect IoT Extension layer).

    Zoals te zien in figuur 2 wordt de machine data naar een achterliggende database gestuurd. Door in de asset manager (meer informatie te vinden onder Mindsphere platform overzicht) assets en aspecten te gaan aanmaken, wordt vanuit Mindsphere een achterliggende database gegenereerd. Eenmaal de configuratie gebeurd is vanuit dit platform, kan data vanuit een Mindconnect element naar dit platform gestuurd worden.

    Bron [11] (Siemens, 2018)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 12 /77

    3.1.1.1 Werking Mindconnect

    Zoals reeds werd gezegd, werkt Mindconnect via de cloud. De cloud connectiviteit wordt via MQTT of HTTPS protocollen geleverd. Er worden heel wat toestelprotocollen ondersteund zoals S7, Open Platform Communication Unified Architecture (OPC UA), LoRaWAN, Modbus, CoAP, XMPP, 6LowPan, LWM2M, AMQP… 3.1.1.2 Connectie manieren

    Er zijn drie manieren om data naar Mindsphere te sturen. Een eerste (en meest gebruikte) is via Mindconnect Nano of Mindconnect IoT2040. Deze toestellen worden fysiek vastgemaakt aan een PLC, er moet dus niets in de PLC bij geprogrammeerd worden. Een tweede manier is vanuit de PLC zelf. De PLC moet hierbij wel van het type S7-1500 zijn en aan met internet geconnecteerd zijn. Hierbij zal er wel in de PLC zelf geprogrammeerd moeten worden. Een laatste is via de Mindconnect Lib (Library). Hiermee kan er vanuit een applicatie naar Mindsphere gestuurd worden. Deze Minconnect Lib wordt via Node-Red gebruikt in de use case van Actemium.

    3.1.1.3 Beveiliging

    Mindsphere beveiligt zijn data volgens de industriële standaarden (IEC 62443(ISO)/IEC 27001 en BSI en vastgelegde aanbevelingen volgens de regering). De data is geëncrypteerd volgens 256-bit SSL/ TLS encryptie of hoger. Mindsphere garandeert een veilige data opslag en transmissie.

    De Mindconnect toestellen (Nano/IoT2040) zenden enkel data naar Mindsphere (niet van Mindsphere naar de PLC). De toestellen zijn beschermd tegen interne bronnen, dit door geen inkomende poorten open te hebben. Mindsphere kan enkel data binnenkrijgen van gevalideerde en geautentificeerde Mindconnect toestellen.

    Beveiliging van het automatiseringsnetwerk van de klanten wordt gegarandeerd met volgende kenmerken:

    • Aparte fysische interfaces: de Mindconnect toestellen gebruiken aparte netwerkinterfaces om te connecteren met het automatiseringsnetwerk en externe netwerken. Deze bezitten interne firewalls om datablootstelling tegen te gaan.

    • De data waar de Mindconnect toestellen aan kan is read only. • Mindconnect software is gebaseerd op een Linux operating systeem. Dit operating

    system is gelimiteerd tot specifieke services en componenten vereist door een originele fabrikant van de apparatuur.

    • Firewall friendly connectiviteit: Er moet slechts een enkele uitgaande poort (HTTPS poort 443) en een vaste URL geopend zijn in de firewall. Geen ingaande open poorten noodzakelijk.

    • Proxy ondersteuning. • Wanneer er iets misgaat met het Mindconnect toestel (offboarding) wordt de data

    collectie gestopt en het toestel losgekoppeld.

    3.1.1.4 Bidirectionele communicatie

    Tot nu toe is er hoofdzakelijk besproken om data vanuit de PLC naar Mindsphere te sturen. Dit is dus een data transfert langs één kant. Om veiligheidsredenen zijn de Mindconnect elementen niet in staat data naar de PLC te sturen, enkel van de PLC naar Mindsphere.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 13 /77

    Er zijn twee manieren om toch data vanuit Mindsphere naar de PLC te sturen. Enerzijds kan in de PLC een MQTT receive blok geïmplementeerd worden. Om dit te doen moet er speciaal aan Siemens gevraagd worden om deze door te sturen. MQTT wordt vanuit Mindsphere ook ondersteund via de Mindconnect IoT extention module. Anderzijds kan er een industriële PC aan de PLC gehangen worden. Door vanuit deze PC data te gaan ophalen vanuit Mindsphere (via een applicatie), kan deze die rechtsreeks naar de PLC doorsturen (door bijvoorbeeld OPC UA).

    3.1.2 Data opslag Data opslag gebeurt in de cloud en de hoeveelheid is afhankelijk van welk IoT Value Plan de gebruiker heeft. Er kan ook apart extra data storage aangevraagd worden zonder van Value Plan te veranderen. Dit gebeurt dan in overleg met Siemens zelf. In figuur 3 is een overzicht te zien van de verschillende IoT Value Plans.

    Figuur 3: IoT Value Plan Offerings

    Bron [7] (Siemens, 2018)

    3.1.3 Machine learning/data analytics Mindsphere geeft toegang tot analytics services. Via API calls biedt Mindsphere verschillende soorten data analytics:

    • Anomaly detection: het detecteren van onverwacht gedrag. • Data exchange: extern data management. Dit kan gebruikt worden om bijvoorbeeld

    een training set te gaan uploaden in Mindsphere.

    • Event analytics: deze service zorgt ervoor dat er data analyse kan gedaan worden op event data.

    • Job manager: hiermee kunnen gebruikers Zeppelin notebooks uitvoeren. • KPI Calculation: een service waarmee Key Performance Indicators berekend

    worden.

    • Model management: door van deze service gebruik te maken kunnen modellen opgeslagen en opgehaald worden (om te trainen op een dataset bijvoorbeeld).

    • Signal Calculation: door time series data te gaan invoeren in deze service kunnen er hierop standaard wiskundige operaties worden gedaan (bijvoorbeeld gemiddelde berekenen).

    • Signal Validation: deze service gaat na als er geen onverwachte signalen optreden (grote sprongen, ruis, buiten bereik…).

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 14 /77

    • Trend Prediction: hiermee worden toekomstige waarden van time series data voorspeld.

    • Spectrum analyse: Hiermee kan een .wav bestand van zijn tijdsdomein naar zijn frequentie domein worden omgezet door gebruik te maken van DFT (discret fourrier transform).

    Door deze services aan te bieden kan ondanks een beperkte kennis over artificiële intelligentie en data analytics, toch een dieper gaande data analyse gedaan worden.

    3.1.4 Integration De databases waarnaar verstuurd worden, zijn vanzelf aangemaakt vanuit Mindsphere. Hiervoor moest enkel de configuratie gebeuren in de asset manager. Wanneer men toch gebruik wil maken van bijvoorbeeld mongoDB, kan dit via backing services. Deze backing services moeten speciaal aan Siemens aangevraagd worden en bieden de mogelijkheid om andere services te gaan implementeren in Mindsphere. De verschillende services waar gebruik van kan worden gemaakt: MongoDB, PostgreSQL, Redis, RabbitMQ, Elasticsearch en LogMe.

    Dit kan handig zijn wanneer er bijvoorbeeld een applicatie gemaakt wordt waarbij er zowel timeseries data als data uit een externe database moeten worden opgehaald.

    3.2 Mindsphere platform overzicht Het Mindsphere platform heeft een aantal onderdelen die gebruikt kunnen worden. In figuur 4 zijn deze verschillende onderdelen te zien. Dit is het platform van Actemium, welke een developper plan heeft. Er is hier ook al reeds een applicatie gemaakt, namelijk de Demo App. Door op deze Demo App te klikken, kan de applicatie geopend worden.

    Figuur 4: Mindsphere platform

    3.2.1 Asset Manager Via de asset manager kunnen assets, aspecten en types aangemaakt worden.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 15 /77

    Aspecten zijn samen horende groepen van variabelen met daarin datapunten (parameters). Een aspect kan bijvoorbeeld een motor zijn met daarin temperatuur en rotatiesnelheid als datapunten. Een belangrijke opmerking is dat aspecten samen verstuurd worden. Het interval waarmee de temperatuur en rotatiesnelheid gelogd worden, moet dus dezelfde zijn. Indien dit niet wordt gedaan, kan dit later problemen geven bij het ophalen van de data.

    Hierna kan er een type worden aangemaakt. Dit type bevat dan verschillende aspecten. Zo kan je bijvoorbeeld een type transportband hebben die drie aspecten motor bevat (dus drie motoren).

    Een asset kan worden aangemaakt van dit type. Dit asset bevat dan alle variabelen die in dit type zitten. Om deze variabelen te linken met de effectieve variabelen uit de PLC zal er nog een asset van een andere type moeten worden aangemaakt. Dit type zal een connectie type zijn (bijvoorbeeld mcLib, mcnano, mcIoT2040). De uitleg om deze assets te configureren wordt in Gebruik Mindsphere platform verder uitgelegd.

    Eenmaal zowel het connectie asset als de machine asset geconfigureerd zijn, zullen deze gelinkt moeten worden. Wanneer er dan data binnenkomt op de connectie asset, zal deze direct doorgegeven worden aan de machine asset. Er kunnen dus meerdere connectie assets gelinkt worden aan één machine asset.

    In figuur 5 is een connectie asset te zien van het type Mindconnect Lib. Hier is duidelijk te zien dat de parameters van dit connectie asset gelinkt zijn aan de parameters van de machine asset (agv1_type1_fabriek1).

    Figuur 5: link connectie asset naar machine asset

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 16 /77

    3.2.2 Fleet Manager De fleet manager kan worden gebruikt om data van assets te gaan visualiseren of events te gaan bekijken. Dit is vooral als test omgeving gebruikt (om te kijken als de data goed is binnen gekomen). Er is een Siemens add-on module die deze Fleet manager uitbreidt zodat deze als volwaardige applicatie kan worden gebruikt. Meer uitleg hierover is te vinden in Applicaties (onder Omschrijving Mindsphere).

    In figuur 6 is een voorbeeld te zien van data die gevisualiseerd is in de fleet manager.

    Figuur 6: data visualisatie fleet manager

    3.2.3 Settings In settings kunnen vooral administratieve dingen geregeld worden. Hierbij kunnen bijvoorbeeld subtenants en users aangemaakt worden. In de use case is een extra user aangemaakt die dan gekoppeld werd aan een subtenant. De subtenant stelt de klant voor en de user is een login om als klant van Actemium in te loggen op Mindsphere. Meer uitleg hierover in Use case Actemium.

    3.2.4 Developer Cockpit In de developer cockpit kan het aanmaken en beheren van applicaties gebeuren.

    Figuur 7: overzicht applicaties

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 17 /77

    Belangrijk is dat hier de App Roles kunnen worden aangepast. Waneer de applicatie bijvoorbeeld gebruik wil maken van de IoT Timeseries API call, dan moet deze de juiste rechten krijgen. Deze rechten kunnen verkregen worden via Add Core Role.

    Figuur 8: toekenning rollen en scopes

    3.2.5 Usage Transparency In Usage Transparency kan gezien worden welke API calls er gedaan zijn, hoeveel data er verstuurd is, wie is ingelogd, welke tenants er zijn…

    Figuur 9: usage transparency

    3.2.6 Applicaties Siemens stelt een store open waarbij Mindsphere developpers hun gemaakte applicaties vrij te koop kunnen stellen. Er zijn reeds standaard applicaties op de store te vinden die Siemens zelf aanbiedt. In onderstaande paragrafen zullen de belangrijkste applicaties van Siemens worden toegelicht. Bij elke applicatie wordt een overzicht gegeven van het prijsoverzicht.

    Bron [15] (Siemens)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 18 /77

    3.2.6.1 Visual analyser

    Visual analyser is een app die gedownload kan worden en dient als een update van de fleet manager.

    Figuur 10: visual analyser

    Deze update zorgt ervoor dat de data in de fleet manager gestructureerder en beter kan worden voorgesteld. Het filteren, monitoren en delen van data wordt hierdoor mogelijk in de fleet manager. Eigenlijk is deze applicatie hoofdzakelijk een een add-on module.

    Tabel 1: prijsoverzicht visual analyser

    Bron [13] (Siemens, 2019)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 19 /77

    3.2.6.2 Visual Explorer

    Visual explorer is een web gebaseerde applicatie die gebruik maakt van Tableau®.

    Figuur 11: visual explorer strcture

    Hiermee kunnen data visualisaties en dashboards gemaakt worden van de data die zich in Mindsphere bevinden. De creator kan visualisaties maken en deze gaan delen met de viewers.

    Tabel 2: prijsoverzicht visual explorer

    Bron [14] (Siemens, 2019)

    3.2.6.3 Visual flow creator

    Visual flow creator is een visueel programmeer platform dat gebaseerd is op het open source programma Node-Red. Het is als het ware Node-Red met uitbreiding nodes voor connectie met Mindsphere. Hiermee kan door visueel te gaan programmeren (via drag en drop nodes) data gevisualiseerd en geanalyseerd worden. Meer informatie over Node-Red wordt in de use case gegeven. Onlangs is er een uitbreiding gemaakt om niet enkel de backend van Node-Red te gebruiken, maar nu ook de frontend.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 20 /77

    Tabel 3: prijsoverzicht visual flow creator

    3.2.6.4 Edge2Web

    Edge2Web is een concurrent van Visual flow creator.

    Figuur 12: Edge2Web with Mindsphere

    Het heeft ongeveer dezelfde functionaliteiten en is ook een visueel programmeer platform. Het kan gebruikt worden om makkelijk connectie te leggen naar Mindsphere Assets, data te gaan visualiseren en alarmen te creëren.

    Tabel 4: prijsoverzicht edge2web

    Bron [2] (Edge2Web & Siemens, 2018)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 21 /77

    3.2.6.5 Predictive learning

    Deze mindapp ondersteunt het maken van voorspellingsmodellen om via machine learning data te gaan analyseren.

    Figuur 13: model prediction

    Algoritmes zoals Naive Bayes, random forest, logic regression en dicision trees worden ondersteund. Er kunnen hierdoor makkelijk modellen gemaakt worden om big data te analyseren.

    Tabel 5: prijsoverzicht predictive learning

    Bron [10] (Siemens, 2018)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 22 /77

    4 Low-code versus programming 4.1.1 Actemium platform Actemium gebruikt het Angular platform. AngularJS werd in 2012 geïntroduceerd door Google. Dit platform is gebaseerd op javascript. Het grote voordeel aan Angular is dat er één framework is dat voor zowel desktop als mobile applicaties werkt. De voordelen van zo een programmeer platform ten opzichte van een low-code platform worden hieronder verder besproken.

    4.1.2 Low-code development 4.1.2.1 Inleiding

    Low-code development is iets dat meer en meer opkomt. Deze platformen laten de gebruiker toe om zonder veel web development kennis toch applicaties te gaan bouwen. In de grafiek van figuur 14 en 15 zijn de verschillende, meest populaire low-code platformen te zien.

    Figuur 14: low-code trustmap Figuur 15: low-code platform leaders

    Siemens heeft Mendix overgekocht en wil dit als low-code development standaard gebruiken voor Mindsphere. Ze hebben hierbij voorbeeldapplicaties gemaakt die een connectie met Mindsphere simuleren. Verder wordt besproken wat de voor- en nadelen zijn van low-code platformen (specifiek Mendix) tegen over een programmeer platform zoals Angular.

    Bron [4] (Idle, 2017), [5] (low-code development platforms overview, 2019) en [7] (Ramel, 2016)

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 23 /77

    4.1.2.2 Voordelen

    Het grote voordeel van low-code applicaties is dat deze snel kunnen worden gemaakt. Door de frontend en backend te gaan maken via een drag en drop systeem kunnen niet-web developpers applicaties gaan maken. Ook bij aanpassingen van de applicatie kan er sneller te werk gegaan worden.

    Veel van deze low-code platformen zorgen ervoor dat het online plaatsen en hosten van de applicatie door hen gebeurt. Veel zaken die normaal gezien vanuit de developper worden gedaan (security, data integratie mogelijkheden…) zijn nu standaard geregeld vanuit het low-code platform.

    Updates en support service worden ook vaak geregeld vanuit deze platformen.

    4.1.2.3 Nadelen

    Low-code platformen kennen ook verschillende nadelen ten opzichte van geprogrammeerde applicaties.

    Ondanks het drag en drop systeem is er nog steeds vaak een basis kennis van IT nodig om deze applicaties te gaan maken. Het kan dus nog steeds niet door zomaar wie gedaan worden.

    Deze platformen hebben allemaal een andere structuur, interface…Er moet tijd en geld geïnvesteerd worden om zich bekend te maken met zo een platform en er mee te leren werken. Wanneer je van platform verandert, zal er opnieuw tijd moeten gestoken worden in het onderzoeken van het nieuwe low-code platform.

    Low-code platformen hebben gestandaardiseerde dashboard nodes (grafieken, drukknoppen…). Vaak kunnen deze nodes in zekere mate aangepast worden, maar de developper zal nog steeds beperkt zijn in zijn mogelijkheden. Vaak wordt hiervoor de mogelijkheid geboden om ook zelf te gaan programmeren of nodes te gaan ontwikkelen binnen het low-code platform.

    Als laatste nadeel van deze platformen is dat ze prijzig zijn. Naast de opleiding die je moet betalen om het platform te leren, kost het platform ook geld. In tabel 6 is het prijsoverzicht van Mendix te zien.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 24 /77

    Tabel 6: kostprijs Mendix

    Bron [6] (Mendix, sd)

    4.1.3 Conclusie Low-code platformen kunnen handig zijn voor mensen die iets van IT of programmeren kennen maar geen echte web developpers zijn. Ze kunnen gebruikt worden om makkelijk en snel basis applicaties te gaan maken.

    In Actemium zitten er reeds een aantal web developpers die specifieke applicaties maken voor klanten. Het web development zou versneld kunnen worden door deze low-code platformen, maar in dit geval zal dit wel eerst veel tijd en geld kosten. Verder zal de applicatie ook beperkter zijn dan bij een programmeer platform.

    Wanneer een klant zelf Mendix gebruikt, kan het wel handig zijn dat Actemium hiermee kan werken. Hierdoor kan Actemium aanbieden om de Mendix applicatie van de klant aan te passen en de connectie naar Mindsphere te voorzien. Dit ervan uitgaande dat de klant zelf Mendix gebruikt en zelf zijn applicatie hierin wil maken.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 25 /77

    5 Praktisch gebruik

    5.1 PLC kant 5.1.1 Mindconnect IoT2040/Nano Dit hoofdstuk zal een korte bespreking geven van de twee Mindconnect toestellen die gekoppeld kunnen worden aan een PLC om zo data naar Mindsphere te sturen. Beiden hebben een gelijkaardige werking maar verschillen vooral in de data limitatie.

    Tabel 7: vergelijking Mindconnect Nano en IoT2040

    Zoals te zien is in bovenstaande tabel, ligt het grote verschil in het aantal datapunten dat per seconde kan worden doorgestuurd.

    Een belangrijke opmerking is dat er een locale data buffer voorzien is bij beiden. Wanneer de verbinding weg valt, zal de data tot 500Mb gebufferd worden. Dit is zeer belangrijk aangezien het niet de bedoeling is dat bij het wegvallen van de internetconnectie, alle data verloren gaan. De data transfer cylcus is om de tien seconden. Er is hier dus duidelijk te zien dat het om bijna real time gedraag gaat.

    Bron [9] (Siemens, 2018)

    5.1.2 S7-1500 FB Onderstaande uitleg is gebaseerd op twee pdf’s die Siemens online heeft gezet. Bron [12] (Siemens, 2019)

    5.1.2.1 Algemene opbouw

    Om vanuit de s7-1500 rechtstreeks data naar Mindsphere te versturen moeten een aantal instellingen gebeuren zowel op het Mindsphere platform als in TIA portal.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 26 /77

    Figuur 16: stappen Mindsphere en TIA Portal

    In figuur 16 wordt er een algemeen overzicht gegeven van de stappen die aan de PLC kant en in Mindsphere moeten gebeuren.

    5.1.2.2 Asset aanmaken en variabelen linken

    Als eerste moet op het Mindsphere platform een nieuw asset aangemaakt worden om connectie te leggen met de s7-1500. Bij het aanmaken kan dan een IAT en URI gegenereerd worden die later gebruikt moeten worden voor het onboarding proces van de PLC. De instellingen en het aanmaken van een aspect wordt besproken in “Mindsphere platform” (S7-1500). 5.1.2.3 Configuratie

    5.1.2.3.1 Device configuratie

    Om via een ethernetkabel met internet te connecteren moeten er op deze poort een aantal instellingen gebeuren. Als eerste moet er een subnet aangeduid worden en een statisch ip-adres worden voorzien vanuit het bedrijf. Dit ip adress, subnet mask en router adress (default gateway) moeten dan ingevuld worden op de poort. Bij dit voorbeeld wordt er gebruik gemaakt van poort 2 (X2).

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 27 /77

    Figuur 17: poort configuratie

    De andere poort (X1) kan dan gebruikt worden om te connecteren met de pc (programma inladen en debuggen) of met io eilanden.

    Ook de DNS configuratie moet gebeuren. Om aan de DNS server adressen van het netwerk te komen kan een pc geconnecteerd worden met dit netwerk. Hierna moet in het command prompt ipconfig/all als commando worden ingeven (8.8.8.8 werkt ook normaal gezien).

    Figuur 18: DNS configuratie

    5.1.2.3.2 Certificaten inladen

    Om gebruik te maken van de Mindconnect FB Library moeten er drie certificaten ingeladen worden in het PLC programma. Je kan op volgende manier aan deze certificaten geraken:

    1. Ga naar het Mindsphere platform. 2. Duw op f12. 3. Ga naar security. 4. Klik op View certificate. 5. Open tab Certification path 6. Hier zijn de certificaten te zien. Klik op de certificaten en ga naar details. 7. Bij de details kan het bestand gekopieerd worden.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 28 /77

    Figuur 19: certificaten Mindsphere

    5.1.2.3.3 Security instellen

    Er moet ook security ingesteld worden om de Mindconnect FB Library te kunnen gebruiken. Ga naar Settings onder Security settings en klik op “protect this project”. Eenmaal dit is gedaan kan er naar certificate manager gegaan worden onder Security features. Hier moeten de certificaten (besproken in Certificaten inladen) ingeladen worden in de tab “Trusted vertificates and root certification authorities”.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 29 /77

    Figuur 20: certificaten inladen

    5.1.2.4 Voorbeeld programma sequentie

    Alvorens de code in het voorbeeld programma kan overlopen worden, moeten er eerst een aantal dingen gebeuren:

    1. Ethernet adres moet goed gesteld worden. 2. DNS configuratie. 3. Het invullen van een IAT en Tenant.

    Eenmaal deze stappen volbracht zijn, kan er verder gekeken worden naar de logica van het programma:

    1. Eerst moet er een data model aangemaakt worden. Dit is een FB (functie blok) die kan worden geïmplementeerd vanuit de Library van Mindsphere.

    Figuur 21:CollectDataModel blok

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 30 /77

    2. Voor elke variabele die moet doorgestuurd worden, moet er ook een functie blok aangemaakt worden met daarin de waarde van deze variabele.

    Figuur 22: collectDataValue blok

    3. Om communicatie met Mindsphere te voorzien, is er een communicatie functie blok nodig.

    Figuur 23: communicatie blok

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 31 /77

    4. Verder is er ook een programma nodig waar manueel de juiste sequentie wordt toegepast om data door te sturen.

    Figuur 24: demo controller blok

    De sequentie van stap 4 wordt hieronder verder uitgediept:

    4. 1 In het eerste netwerk wordt gewacht op een startsignaal om de sequentie uit te voeren. Eenmaal het startsignaal is gegeven, begint het onboarding proces.

    Figuur 25: start sequentie

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 32 /77

    4. 2 Nu is het onboarding proces bezig en kan er over gegaan worden naar de volgende stap. Dit gebeurt wanneer het onboarding proces bezig is (busy op true) of wanneer er een error is doordat de PLC reeds geonboard is. Wanneer er een andere error is, blijft de sequentie in deze stap hangen.

    Figuur 26: trigger onboarding

    4. 3 Wanneer het onboarding process getriggered is, wordt er gewacht tot de onboarding gedaan is (done op true). Wanneer er een error is die aangeeft dat de PLC reeds geonboard is, zal er ook verder gegaan worden naar de volgende stap.

    Figuur 27: wachten op onboarding

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 33 /77

    4. 4 Bij deze stap zal er gewacht worden tot het key generatie proces in busy state komt. Wanneer deze in busy state is, mag de key trigger gereset worden. Er wordt overgegaan naar de volgende stap.

    Figuur 28: key trigger

    4. 5 Als de key gegenereerd is, is er connectie met Mindsphere en moet het data model aangemaakt worden.

    Figuur 29: wachten tot key rotatie

    4. 6 Nu het data model is aangemaakt kan dit model gecollecteerd worden, klaar voor verzending.

    Figuur 30: collectie data model

    4. 7 Het gecollecteerde data model wordt verzonden. In de variabele statBufferingCount wordt 0 ingeladen. Deze variabele zal aangeven hoe vaak er reeds gesampled is. In volgende stappen wordt duidelijk waarom.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 34 /77

    Figuur 31: trigger data model verzending

    4. 8 De data wordt verzameld. Deze data verzameling zal aan een frequentie verlopen van 1/samplingPeriod. Door de variabele in PT aan te passen, kan de snelheid waarmee gesampled wordt aangepast worden.

    Figuur 32: data verzameling

    4. 9 Na elke sampling periode wordt er over gegaan naar state 8. Hier wordt er gekeken als de buffer al vol gelopen is. Is dit niet het geval, dan gaat hij terug naar state 7. Dit blijft zo doorgaan tot het aantal genomen samples gelijk is aan de waarde van bufferingCount. Wanneer dit zo is, zal de data verstuurd worden en er overgegaan worden naar de volgende state.

    Figuur 33: buffer controle

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 35 /77

    4. 10 Het versturen van de data is bezig in deze stap. Eenmaal deze bezig is (busy is hoog) kan de trigger voor het verzenden van de data (sendTimeSeries) terug gereset worden.

    Figuur 34: versturen time series

    4. 11 Wanneer het uploaden van data gedaan is, wordt er terug gegaan naar state 0.

    Figuur 35: uploaden timeseries gedaan

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 36 /77

    5.1.2.5 CommMindsphereHandler

    Siemens heeft zelf een bibliotheek voorzien om connectie vanuit de PLC makkelijker te maken. Gebruikers moeten hierdoor niet zelf hun sequentie programmeren, maar kunnen gebruik maken van een functieblok dat zelf de verschillende staten gaat doorlopen en de bijhorende foutafhandeling doet. In onderstaand diagram wordt getoond wat deze verschillende staten zijn.

    Figuur 36: diagram CommMinsphereHandler

    • Wanneer enable op true komt zal hij uit zijn IDLE state gaan. Er wordt een key gegenereerd. Wanneer er nog niet onboard is, zal in volgende stap een error komen en zal de sequentie terug gaan naar het onboarding proces.

    • Als de rotate key goed is gegenereerd, zal het nu twee kanten kunnen opgaan. Ofwel is het data model nog niet getransfereerd en dan zal er naar de state “collect data source” gegaan worden. Wanneer het data model wel al getransfereerd is zal deze een aantal stappen overslaan en direct naar de state “collect time series” gaan.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 37 /77

    • Nu worden de time series opgeslagen en verstuurd naar Mindsphere. Bij problemen bij de data model collectie of de time series verzending, worden deze stappen opnieuw uitgevoerd. Wanneer er onverwachte errors optreden wordt er terug gegaan naar IDLE state.

    Figuur 37: functieblok CommMindsphereHandler

    In figuur 37 is er een functieblok te zien van dit type CommMindsphereHandler. Deze blok heeft een aantal parameters:

    • Enable: dit dient om uit de IDLE mode te gaan en de connectie procedure te starten. • sendNewDataSourceModel: als enable hoog is en deze variabele getriggered wordt,

    wordt een nieuw data model gecollecteerd en verstuurd naar Mindsphere.

    • samplingInterval: Dit is het interval met welke de data verzameld wordt en doorgestuurd wordt naar Mindsphere.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 38 /77

    • Configuration: Deze waarde moet verwijzen naar een datablok van het type MCFB_typeConfiguration en bevat data die kan opgevraagd worden vanuit de asset manager op het Mindsphere platform (url, IAT, Tenant…).

    • InstMCFBCommunication: Dit moet verwijzen naar een datablok van het type MCFB_InstCommunication.

    • Value: Deze parameter geeft aan welk waardes moeten verstuurd worden. Er kunnen maximaal 200 waardes worden doorgestuurd met deze datablok.

    • Status: dit is een output die aangeeft welk proces er gaande is . 1) Onboarding 2) key rotation 3) collectie van data source model 4) verzenden van data source model 5) collectie van time series 6) verzenden van time series

    • statusID: getal dat aangeeft wat de oorzaak van de error is. 1) onboarding error 2) error tijdens key rotation 3) error tijdens data source model collectie 4) error tijdens versturen van data source model 5) error tijdens het verzamelen van de time series 6) error tijdens het zenden van de time series 7) interne error op de functieblok

    • busy: functieblok is bezig. • done: een 1 geeft aan dat de time series succesvol zijn doorgestuurd. Een 0 geeft

    aan dat ze gecollecteerd zijn of de functieblok nog niet klaar is.

    • Error: geeft aan als er een fout is gebeurd. • Onboarded: geeft aan als er succesvol onboarded is.

    Figuur 38: enable-busy-done logica

    5.2 Gebruik Mindsphere platform 5.2.1 Mindconnect IoT2040/nano Om vanuit de Mindconnect nano of IoT2040 data vanuit de PLC te gaan ophalen kan er gebruik gemaakt worden van twee protocollen. Wanneer er geconnecteerd wordt met een Siemens PLC kan het S7 protocol gebruikt worden. De Mindconnect toestellen kunnen ook met niet-Siemens toestellen gaan connecteren. Hiervoor kan gebruik gemaakt worden van het OPC UA protocol. Let hierbij wel op dat de PLC OPC UA moet ondersteunen en deze zijn OPC UA server moet openstellen.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 39 /77

    Siemens is bezig uitbreidingen te doen zodat er meer protocollen kunnen worden gebruikt om data uit de PLC te halen.

    Figuur 39: S7 protocol Mindconnect Figuur 40: OPC UA protocol Mindconnect

    Actemium heeft zelf reeds met een Mindconnect IoT2040 gewerkt voor een demo applicatie. De praktische werkwijze wordt hier dus niet besproken aangezien deze kennis reeds binnen het bedrijf aanwezig is en niet verder onderzocht is.

    5.2.2 S7-1500 FB Om connectie met de PLC te maken zijn er twee types: Mindconnect Lib en Mindconnect FB. In een vorige Mindsphere versie werd de Mindconnect FB gebruikt om connectie te leggen met de functie blok van de S7-1500 PLC. In huidige versie (V3) is dit niet meer zo en moet er gebruik gemaakt worden van de Mindconnect Lib.

    Een nieuw asset aanmaken gebeurt in de asset manager.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 40 /77

    Figuur 41: mindsphere platform

    Als eerste wordt er een nieuw Aspect aangemaakt. Binnen dit aspect kunnen er variabelen aangemaakt worden. In figuur 42 is het aspect “MyAspect” te zien waarbij er een nieuw aspect is aangemaakt met de variabele “temp”. Er staat hier ook bij in welke types dit aspect gebruikt wordt. Dit aspect is gedefinieerd in het type “MyAssetType”.

    Figuur 42: aspect met één variabele

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 41 /77

    Na het aanmaken van een aspect kan er een type aangemaakt worden (create type). Wanneer het type aangemaakt is, kunnen er verschillende aspecten gelinkt worden aan dit type. In dit voorbeeld is er een type “MyAssetType” aangemaakt. Om een asset toe te voegen kan er binnen in het type op “Add aspect” worden geklikt.

    Figuur 43: Mindsphere type

    Eenmaal een type is gecreëerd en er aspecten zijn aan gelinkt, kan er een asset aangemaakt worden. Er is in figuur 43 te zien dat het type “MyAssetType” ertussen staat wanneer men een nieuw asset wilt aanmaken. Door een asset van dit type te gaan aanmaken, zal deze direct het aspect “myAspect” bevatten met daarin de variabele “temp”. Eenmaal dit is gedaan, kan er een asset aangemaakt worden van het type “Mindconnect Lib”.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 42 /77

    Figuur 44: Asset types

    In dit voorbeeld wordt gebruik gemaakt van “SHARED_SECRET”. Eenmaal dit is gebeurd, kan er een onboarding key gegenereerd worden.

    Figuur 45:onboarding info Mindconnect Lib

    De data die zich in de onboarding key bevindt, kan gebruikt worden om connectie te leggen naar de S7-1500 PLC of een applicatie zoals Node-Red.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 43 /77

    5.3 Conclusies en extra opmerkingen De makkelijkste manier om data te gaan versturen vanuit een reeds bestaande applicatie is via Mindconnect IoT2040 of Nano. Deze twee hebben een gelijkaardige functie, het verschil zit zich hier vooral in de hardware (hoeveel datapunten er kunnen doorgestuurd worden). Dit is zeer handig omdat het, op configuratie na, plug en play is. Ook belangrijk is dat deze toestellen makkelijk kunnen verbonden worden met PLC’s van een ander type dan Siemens (via OPC UA). De Mindsphere solution kan dus ook gebruikt worden voor niet-Siemens installaties.

    Wanneer er niet vertrokken wordt van een bestaande installatie kan de Mindconnect FB wel in rekening gebracht worden. Door de nieuwe CommMindsphereHandler FB kan er makkelijk data verstuurd worden rechtstreeks vanuit de PLC. Het grote nadeel is dat de buffer die bij Mindconnect IoT2040/Nano standaard aanwezig is, hier ontbreekt. Dit kan voorlopig zelf geprogrammeerd worden maar Siemens is bezig om deze FB te verbeteren. Deze data buffer zal wel een groot deel van het geheugen van de PLC gaan gebruiken. Bij grotere programma’s kan het gebruik van een buffer dus beperkt worden door de hardware van de PLC.

    Tot nu toe zijn er nog interne fouten om de data dankzij deze FB rechtstreeks vanuit de PLC naar Mindsphere te sturen (voor de laatste versie van Mindsphere). Deze informatie komt rechtstreeks vanuit Siemens. Bij de laatste versie van Mindsphere heeft het type Mindconnect FB geen nut. In vorige versie werd deze gebruikt om connectie te leggen met de S7-1500 PLC maar in de laatste versie wordt er hiervoor gebruik gemaakt van de Mindconnect Lib.

    Om de Mindconnect Lib uit te testen is er gebruik gemaakt van Node-Red. Via dit programma is er getest geweest tot welke frequentie er kan verstuurd worden naar Mindsphere. Door een gesampelde sinus te versturen naar Mindsphere kon de data performantie makkelijk gevisualiseerd worden. Hoe beter de sinus wordt voorgesteld in de fleet manager, hoe performanter de data is aangekomen. Tot op een doorstuurfrequentie van 1Hz kwam de data goed binnen in Mindsphere. Wanneer hogere frequenties werden gebruikt, bleek al snel dat Mindsphere niet gemaakt is om aan sneller dan 1Hz data te gaan doorsturen. Om hoog frequente signalen door te sturen, moet er gebruik gemaakt worden van speciale services. Dit wordt verder uitgelegd in trillingen bij de uitbreiding van de use case.

    Figuur 46: sinus aan 1 Hz

    Figuur 47: sinus aan 10 Hz

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 44 /77

    6 Use case Actemium

    6.1 Inleiding In dit hoofdstuk zal een specifieke use case beschreven worden. In deze use case zal het gaan om AGV’s. Een AGV (automatic guided vehicle) is een automatisch geleid voertuig dat dient om materiaal of producten te verplaatsen zonder dat het bestuurd moet worden. Voor deze use case zal het de bedoeling zijn om data uit deze AGV te gaan halen en dit in een web applicatie te gaan voorstellen.

    6.2 Oplossing model 6.2.1 Generiek concept Actemium heeft AGV’s staan bij verschillende klanten. AGV’s zijn standaard machines die onderling niet veel van elkaar verschillen. Hierdoor is het een mooi voorbeeld om een generieke applicatie te maken. De bedoeling hiervan is om standaard parameters die in de AGV’s voorkomen te gaan visualiseren en analyseren per AGV per klant (en dit in één generieke applicatie).

    Door deze generieke applicatie kan Actemium aan al hun klanten met AGV’s een applicatie bieden zonder daar verder veel werk in te moeten steken (enkel asset configuratie en data connectie opstellen). Deze applicatie kan in verdere versies de data van de verschillende bedrijven gaan vergelijken en analyseren.

    6.2.2 Parameters en een eerste applicatie design Eerst is er met inspraak van de klant een concept gemaakt over welke parameters belangrijk zijn en hoe het algemene model van de applicatie er moet uitzien.

    De parameters die aan bod kwamen in een eerste sessie, waren:

    • Motortemperatuur en -stroom: Het is de bedoeling dat de motortemperaturen en -stromen gearchiveerd en realtime kunnen worden uitgelezen. Deze temperaturen en stromen kunnen dan geanalyseerd worden. Hierdoor kunnen toekomstige fouten voorspeld of sneller opgemerkt worden.

    • Batterij percentage: Het batterij percentage kan per AGV realtime bekeken worden in de applicatie. Zo heeft bijvoorbeeld het bedrijf Vandemoortele vroeger vaak problemen gehad met hun AGV’s. Er was een fout in het programma waardoor de AGV’s niet lang genoeg opgeladen werden (op een bepaald uur stopte het laden ook al waren deze niet opgeladen). Dit gaf als belangrijke fout dat de AGV’s niet volledig opgeladen in werking traden. Hierbij kwam ook het probleem dat de levensduur van de batterijen drastisch omlaag ging. Door deze applicatie zou zo een fout direct gedetecteerd worden.

    • AGV status: Er moest een scherm komen dat realtime de status van de verschillende AGV’s weergaf (alarm, stopped, running, charging). Hierbij kwam later ook de vraag om een historiek toe te voegen waarbij het statusverloop in functie van de tijd kan weergegeven worden (per AGV).

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 45 /77

    • Draaiuren per dag: Het is handig om een overzicht te hebben van de draaiuren per dag per AGV. Zo kunnen vergelijkingen tussen de AGV’s gemaakt worden zodat deze kunnen gemonitord worden om maximaal rendement uit te halen.

    • Alarmen: De alarmen en manuele operaties moeten gelogd worden in de applicatie.

    6.2.3 Asset structuur De asset structuur die wordt aangemaakt op het Mindsphere platform geeft inzicht in de manier waarop data verstuurd en opgevraagd wordt.

    Vanuit Siemens wordt vaak het voorbeeld gegeven van een windmolenpark. Alle windmolens stellen een asset voor. Dit asset is van een type dat is aangemaakt en bestaat uit aspecten. De aspecten zijn data groepen die samen worden doorgestuurd: bijvoorbeeld elke 5 seconden worden windsnelheid en draaisnelheid van de wieken doorgestuurd. Hierbij zijn draaisnelheid en windsnelheid variabelen die samen in één aspect zitten. Dit is een overzichtelijk model voor een windmolenpark dat al zijn windmolens wil monitoren vanuit Mindsphere. Zo kan dit bedrijf 50 assets hebben van het type windmolen en per asset (dus per windmolen) data gaan opvragen.

    Hier zal dus elke asset een AGV voorstellen. Aangezien de applicatie voor verschillende klanten bruikbaar moet zijn, moet er met subtenants gewerkt worden. Zo kan Actemium elke klant een andere subtenant account geven. Een subtenant kan enkel de data zien die aan hem is gelinkt door de tenant (Actemium). Zo kunnen de klanten enkel aan hun eigen data en niet aan die van een andere klant. Binnenin het Mindsphere platform van Actemium kunnen deze subtenants aangemaakt worden. Ook moet er een account aangemaakt worden waaraan rechten kunnen worden toegekend. Door deze rechten goed te gaan verdelen kan de klant inloggen op het Mindsphere platform van Actemium, maar enkel de assets zien welke tot hun fabriek behoren.

    In figuur 48 is de asset structuur te zien die hier is gebruikt. Op de onderste laag staan de aspecten. Dit zijn variabele groepen die samen horen. In deze use case is er gebruik gemaakt van twee aspecten: continue en dagelijkse data. De continue data wordt om de paar seconden verstuurd en de dagelijkse data één maal per dag.

    Er wordt een type aangemaakt waarin de twee aspecten worden toegevoegd. Dit type bevat dan alle parameters die vanuit de AGV komen. Van zo een type kunnen meerdere assets worden gemaakt. Deze assets zullen elk een AGV voorstellen en komen samen te staan binnen een subtenant asset. Er is dus een subtenant asset waaronder de AGV assets zich bevinden. De subtenant is hier de klant en de onderliggende AGV assets stellen de AGV’s voor.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 46 /77

    Figuur 48: asset structuur agv app

    6.2.4 Connectiviteit Er zijn meerdere mogelijkheden om toestellen (Siemens/niet-Siemens) te connecteren met Mindsphere. Hieronder worden deze verschillende mogelijkheden besproken.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 47 /77

    6.2.4.1 Mindconnect FB

    Er kan gewerkt worden via een functieblok die Siemens biedt. Deze blok (besproken in S7-1500 ) geeft de mogelijkheid om vanuit een Siemens PLC data rechtstreeks naar Mindsphere te sturen. Om deze connectiviteit te gebruiken, moet er in de PLC code bijgeschreven worden. Bij deze use case is het de bedoeling dat er geen aanpassingen meer gebeuren in de PLC zelf en zal dit dus niet gebruikt worden.

    6.2.4.2 Mindconnect nano/IoT2040

    Deze Mindconnect toestellen kunnen rechtstreeks op de PLC worden aangesloten. Vanuit dit Mindconnect toestel kunnen er configuraties gedaan worden om aan te geven welke PLC variabelen moeten worden doorgestuurd en met welk tijdsinterval dit moet gebeuren. Om deze toestellen te gebruiken moet er geen extra code worden geschreven. Het grote voordeel van dit Mindconnect toestel is dat het een interne buffer heeft voor het geval de connectie verdwijnt.

    6.2.4.3 Mindconnect Library

    De Mindconnect Lib kan gebruikt worden om data te versturen vanuit een applicatie. Er kan een industriële PC gekoppeld worden met de PLC. De PC kan dan gaan communiceren met de PLC en zo aan de nodige data geraken. Vanop de PC kan dan een applicatie draaien die gebruik maakt van de Mindconnect Lib en hiermee de data naar Mindsphere verstuurt. In deze masterproef is er data via TCP naar een PC gestuurd waarop Node-Red draait. Vanuit Node-Red werd deze data binnen genomen en verstuurd naar Mindsphere.

    Voor data simulatie is bij de use case gebruik gemaakt van deze Library (via Node-Red). Vanuit dit Node-Red platform is het mogelijk om data vanuit een PLC te gaan halen en door te sturen naar Mindsphere. Dit kan bijvoorbeeld via standaard nodes voor OPC UA of S7 protocol.

    6.3 simulatie data via Node-Red 6.3.1 Node-Red naar Mindsphere Bij het maken van de applicatie was er nog geen data beschikbaar van de installatie. Om de applicatie en connectie naar Mindsphere te testen moest er dus gezorgd worden voor simulatie data.

    Om voor simulatie data te zorgen, is er gebruik gemaakt van Node-Red. Node-Red is een visuele programmeeromgeving waarmee men applicaties kan maken, gebaseerd op node.js. Deze programmeeromgeving is oorspronkelijk ontwikkeld door IBM om hardware toestellen te verbinden. Zo bevat Node-Red bijvoorbeeld standaard nodes om te communiceren met databases, PLC’s en OPC UA.

    Om data naar Mindsphere door te sturen is gebruik gemaakt van een Mindsphere node. Dit is een node die men kan installeren in Node-Red en waarmee zeer makkelijk data kan verstuurd worden naar een Mindconnect Lib asset in Mindsphere.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 48 /77

    Figuur 49: Node-Red Mindsphere node

    Zoals te zien is op de figuur 49 kunnen er een aantal instellingen gebeuren in deze node. Er kan gekozen worden in welke mate de data moet gecontroleerd worden en hoe vaak er moet geprobeerd worden om data door te sturen in het geval dat er iets fout gaat (hier ingesteld op drie keer).

    Bron [1] (@mindconnect/node-red-contrib-mindconnect, sd)

    6.3.2 De applicatie De simulatie applicatie is gemaakt voor twee AGV’s. In deze applicatie kunnen verschillende parameters aangepast worden via sliders. Er zijn vijf sliders per AGV, waarbij elke slider een AGV parameter voorstelt. Hiervan worden de eerste vier (battery, operation, current en temperature) om de paar seconden doorgestuurd. De parameter “operating_hours” wordt één maal per dag doorgestuurd. Het is dus de bedoeling dat de doorstuurtijden vanuit de echte installatie (AGV) gelijkaardig zijn als deze van de simulatie data.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 49 /77

    Figuur 50: user interface Node-Red

    Naast de sliders zijn er nog tekstvelden aanwezig waarmee de waarde van de slider te zien is (values). Dit is toegevoegd om te controleren als de simulatie data overeenkomt met de data die de web applicatie weergeeft. Er zijn per AGV ook twee tekstvelden en twee drukknoppen toegevoegd. Deze dienen om events naar Mindsphere te sturen. De AGV kan twee soorten events genereren: alarmen en manuele operaties. Het alarm event wordt gebruikt om PLC alarmen te simuleren. Door in het veld “alarm” een tekst in te typen en op de knop “send PLC alarm AGV1” te klikken, wordt een event verstuurd naar Mindsphere. In dit event komt AGV1 als zender te staan en de getypte tekst als omschrijving. Het manual operation event wordt gebruikt als simulatie om aan te geven wanneer er een manuele operatie gebeurt op de AGV.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 50 /77

    6.3.3 Code uitleg Zoals hiervoor reeds gezegd, is Node-Red een visueel codeer programma. In Node-Red kan worden gebruik gemaakt van functie nodes (in het oranje) om ook in javascript te programmeren.

    Figuur 51: program flow Node-Red

    In figuur 51 is de code te zien. Deze code bestaat uit twee grote delen. Een gedeelte (bovenste) dat de sliders en tekstvelden initialiseert en een gedeelte (onderste) dat dient voor de connectie naar Mindsphere en drukknoppen bevat.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 51 /77

    6.3.3.1 Eerste deel

    Figuur 52: code flow Node-Red deel 1

    De flow van het eerste gedeelte begint met een timestamp node. Deze node zal bij initialisatie van het programma een puls sturen. Deze puls zal doorgegeven worden aan de functie node (initialise). Bij deze functie node worden de sliders op een bepaalde waarde geïnitialiseerd. Zo is elke uitgang met een slider verbonden. Er wordt een array van berichten (msg) doorgestuurd vanuit de initialise functie node. Vanuit de code is te zien dat msg1 zal teruggegeven worden op de eerste (bovenste) output van de node. De payload van msg1 is 77 (zie lijn 18) en zo zal dus de waarde 77 in de slider “battery” komen te staan.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 52 /77

    Figuur 53: initialise node Node-Red code

    Naast de array van output berichten is er ook code aanwezig die waardes globaal zet. Wanneer er variabelen nodig zijn die in alle flows van Node-Red moeten gebruikt worden, dan kan dit met global.set(…) gebeuren. Hier wordt in de eerste lijn de variabele “battery” op 77 geïnitialiseerd. Waarom dit gedaan wordt, zal in deel twee van de code duidelijk worden.

    Wanneer de slider node open wordt geklikt, kan men een aantal dingen instellen. Hier is te zien dat de waarde van de slider van 0 tot 100 gaat aangezien deze slider moet aangeven hoeveel procent van de batterij is opgeladen. Er is bij de output aangeduid dat de slider de waarde doorgeeft elke keer zijn waarde verandert.

    Figuur 54: battery slider

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 53 /77

    De node zal dus bij elke verandering van waarde een puls gaan sturen naar zijn output met daarin de waarde die deze op dat moment had. Dit output signaal komt terecht in een tekst node waarin deze waarde wordt ingelezen.

    Figuur 55: text node

    In dit tekstveld wordt de payload van het doorgestuurde bericht getoond (dit is de waarde die de slider heeft doorgestuurd). De payload wordt opgevraagd door {{msg.payload}} en na deze waarde komt er een % teken te staan. Er is ook te zien dat de output van de slider verbonden is met een andere functie node (setGlobal). Deze functie node zal telkens de slider verandert, de doorgestuurde waarde globaal opslaan via de global.set() functie. Deze globale variabele wordt verder gebruikt in het tweede deel van de code, waar connectie naar Mindsphere is.

    Figuur 56: setGlobal node

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 54 /77

    6.3.3.2 Tweede deel

    In dit deel zijn er vier soorten nodes aanwezig: drukknoppen, timestamps, functie nodes en een Mindsphere node.

    Figuur 57: Node-Red code deel 2

    Wanneer de drukknop “send manual operation agv1” wordt ingeduwd, zal deze een puls geven naar de functie node. Deze functie node zal een bericht aanmaken met een payload die een aantal parameters bevat. In entityId staat het id van de asset waarnaar gestuurd moet worden. Hier wordt de parameter “manual_operation” ingevuld in de omschrijving (description). Deze parameter komt van een tekstveld dat staat in deel één van de code.

    Figuur 58: event generatie in Node-Red

    Er zijn twee timestamp nodes gebruikt in dit deel van de code. Het verschil tussen deze twee nodes is het doorstuurinterval. De bovenste timestamp wordt gebruikt om de data door te sturen die real time moet gelogd worden op de webapplicatie. Zoals te zien op figuur 59 zal deze data om de drie seconden naar Mindsphere gestuurd worden.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 55 /77

    Figuur 59: timestamp node in Node-Red

    Om de drie seconden zal er dus een puls gestuurd worden naar de functie node “dataToMindsphere”. Deze zal de data die verstuurd moet worden, ophalen en doorgeven naar de Mindsphere node waar de data effectief zal worden verstuurd. De functie node “dataToMindsphere” bevat onderstaande code.

    Figuur 60: time series data in Node-Red

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 56 /77

    In de code is te zien dat de waardes van de globale variabelen opgevraagd worden. Het gaat hier om de variabelen temperature, current, battery en operation (van beide AGV’s). Bij sommige variabelen wordt er een random variabele opgeteld zodat de slider niet telkens moet veranderen om een verandering van data op te merken. Als deze random waarde hier niet bij werd opgeteld dan zouden de waarden als een rechte lijn worden voorgesteld (als er niet aan de slider werd veranderd). Deze random waarde heeft dus enkel nut om makkelijk te kijken als de webapplicatie de data goed update (enkel voor debugging).

    Figuur 61: Mindconnect Lib data configuratie

    Het datapointId geeft aan naar welk data point de waarde moet verstuurd worden. Wanneer er op het Mindsphere platform een asset wordt aangemaakt van type Mindconnect Lib, kunnen er binnen deze asset variabelen aangemaakt worden. De toegevoegde variabelen krijgen automatisch vanuit Mindsphere een data point ID toegewezen. Het is dit data point ID dat moet worden ingevuld in de javascript code in Node-Red (onder de variabele datapointId).

    De onderste timestamp node zal de data dagelijks gaan doorsturen. Figuur 62 geeft de configuratie van deze node weer. Hierbij is te zien dat er elke dag om 12 uur een puls zal worden gestuurd. Deze puls wordt doorgegeven naar de functie node “DataDailyToMindsphere”. Deze functie node bevat gelijkaardige code als deze van “DataToMindsphere” met als verschil dat er andere variabelen worden doorgegeven. Hierbij wordt de variabele “operating_hours” doorgestuurd. Deze variabele geeft aan hoeveel uur de AGV heeft gewerk die dag.

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 57 /77

    Figuur 62: timestamp node daily data

    Als laatste is er nog de Mindsphere node. Deze node dient als connectie tussen Node-Red en Mindsphere. Via deze node kan binnengekregen data doorgestuurd worden naar Mindsphere. De asset waarnaar kan worden doorgestuurd via deze node is van het type Mindconnect Lib. Bij een asset van type Mindconnect Lib kan er onboarding informatie afgehaald worden (zie figuur 63) dewelke moet worden geplakt in de Mindsphere node van Node-Red.

    Figuur 63: onboarding informatie Mindconnect Lib

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 58 /77

    6.4 Web applicatie Actemium heeft een klant die een applicatie wil om zijn AGV te gaan monitoren. De gemaakte applicatie werkt binnen Mindsphere en zal draaien op cloud foundry. Deze applicatie bevat drie pagina’s. Op de eerste pagina kan de status en batterij van de AGV bekeken worden. Op de tweede pagina wordt de temperatuur, stroom en het aantal operationele uren weergegeven. De laatste pagina bevat events die vanuit de AGV worden doorgestuurd. Het kan hierbij gaan om PLC alarmen of manuele operaties.

    In dit onderdeel zal de functionaliteit van de webapplicatie worden uitgelegd. Naast de functionaliteit zal de code en eventuele uitbreidingen ook worden toegelicht. De code toelichting zal belangrijk zijn voor als Actemium later de applicatie wil gaan uitbreiden voor toekomstige klanten die ook van deze applicatie gebruik willen maken of bij uitbreiding naar meerdere AGV’s. Tot nu toe is er slechts een applicatie nodig voor één klant en één AGV. De structuur die in Mindsphere is gemaakt, biedt mogelijkheid tot uitbreiding naar meerdere klanten voor meerdere AGV’s. Hoe deze uitbreiding gedaan moet worden vanuit Mindsphere en de code wordt ook besproken.

    6.4.1 Overzicht webapplicatie 6.4.1.1 Overview pagina

    De eerste pagina dient als een overzicht pagina waarbij bekeken kan worden op hoeveel procent de batterij op dat moment is. Verder kan in deze applicatie de status bekeken worden van de AGV. Er zijn vier statussen waarin de AGV zich kan bevinden. De eerste status is de “running” status. Hierbij is de AGV aan het werken en zijn er geen problemen. Een tweede status is de “stopped” status. Dit kan bijvoorbeeld voorkomen als de AGV moet wachten alvorens deze verder kan werken. Er is ook een alarm status. Dit geeft aan dat er iets mis is gelopen. Wanneer de alarm status optreedt, kan men in de pagina “analysis” bekeken worden als er events gelogd zijn die meer informatie over het alarm kunnen geven. De laatste status is de “charging” status. Bij deze status is de AGV aan het opladen. Deze status kan ook historisch of real time opgevraagd worden via de status grafiek. Dit kan bijvoorbeeld handig zijn wanneer men wil weten hoe lang de AGV al in alarm staat.

    Figuur 64: overview pagina

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 59 /77

    6.4.1.2 Onderhoud pagina

    Deze pagina dient om specifieker de AGV te gaan bekijken en verder te analyseren. Wanneer de AGV in alarm gaat of er andere problemen zijn, kan hier stroom en temperatuur opgevraagd worden. De treshold is tot nu toe enkel visueel, maar verder in deze applicatie is er besproken hoe hier alarmen aan kunnen worden gekoppeld. Deze data kan terug zowel historisch als real time opgevraagd worden.

    Om de performantie van de AGV te bekijken, kan er gekeken worden naar het aantal operatieve uren van de laatste zeven dagen. Zo kan er makkelijk gezien worden als de AGV bepaalde dagen meer of minder heeft gewerkt. Door deze data te gaan bekijken, kan er dieper gezocht worden wat de reden hiervan is. Dit laatste kan door de AGV status, temperaturen en stromen te gaan bekijken.

    Figuur 65: onderhoud pagina

    6.4.1.3 Analysis pagina

    Wanneer de AGV in alarm gaat, kan er gekeken worden als de AGV een event heeft gecreëerd met meer informatie. Als er een event is aangemaakt, kan deze gevonden worden in de tabel “analyze machine data”. Deze tabel geeft de source weer van waar dit komt, het tijdstip, de omschrijving en de ernst van het event (severity). De tabel houdt events van de laatste zeven dagen bij. Verder is er ook een filter voorzien. Hierdoor kunnen events worden gefilterd aan de hand van hun source.

    Figuur 66: analyse pagina

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 60 /77

    6.4.2 Code De code van de verschillende pagina’s zal hier verder besproken worden. Niet alle code zal hierbij besproken worden, hoofdzakelijk de code die interessant is voor Actemium. Er zijn reeds mensen binnen Actemium die een basis applicatie hebben gemaakt, gebruik makende van Mindsphere. De uitleg in de code is voor deze mensen bedoeld en zal beter inzicht geven over hoe ze verdere uitbreidingen moeten doen in deze applicatie.

    6.4.2.1 Overview pagina

    In dit gedeelte worden de verschillende onderdelen die in de pagina “overview” staan besproken. Als eerste wordt het pictogram toegelicht dat de batterij voorstelt. Hierna zal de status tabel verder worden besproken. Als derde komt de grafiek aan bod die het verloop van de AGV status weergeeft. Ten laatste zullen de twee hoofdfuncties die data ophalen van Mindsphere worden uitgelegd.

    6.4.2.1.1 Batterij

    Figuur 67: batterij

    Om het batterij percentage voor te stellen in het pictogram wordt de functie setBatteryLevel() gebruikt. Deze functie vraagt een parameter (number). Deze parameter duidt aan hoeveel de batterij is opgeladen. In figuur 67 is er 30 ingevuld voor deze parameter.

    Figuur 68: code setBatteryLevel

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 61 /77

    Om te vermijden dat het weergegeven batterij percentage niet accuraat is (door connectie verlies bijvoorbeeld), wordt de datum van het laatst ingevulde datapunt weergegeven. Dit vermijdt bijvoorbeeld dat het weergegeven batterij percentage van een half uur geleden is.

    Hoe dit precies gebeurt in de code wordt verder uitgelegd in Functies die data afhalen.

    6.4.2.1.2 Status tabel

    Figuur 69: status tabel

    De status tabel geeft weer in welke status de AGV zich het laatst heeft bevonden. Hier staat deze AGV momenteel in alarm. Net als bij de batterij wordt de datum van het laatste datapunt getoond.

    De html code voor deze tabel ziet er als volgt uit:

    Figuur 70: html code status tabel

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 62 /77

    De “check_circle” is het icoon dat in de kolom van status komt. De kleur van dit icoon kan aangepast worden door het element al dan niet op running te zetten.

    De tabel wordt verder aangemaakt in de typescript code, hier worden de waardes van de tabel geïnitialiseerd. Door de waarde van running op true te zetten, kan de kleur van het status icoon aangepast worden.

    Figuur 71: initialisatie code typescripting

    Wanneer een aspect van Mindsphere wordt opgehaald, zal deze een variabele operation hebben. Deze variabele is een integer tussen nul en drie die weergeeft weer in welke operatie de AGV zich bevindt. In de code komt nul overeen met running, één met stopped, twee met alarm en drie met charging.

    Hoe de data wordt opgehaald wordt verder besproken in Functies die data afhalen.

    6.4.2.1.3 Status grafiek

    Hier zal de code bekeken worden voor de status grafiek. Op deze grafiek zijn drie drukknoppen (rechts) te zien om real time data weer te geven (last day, last hour, last 10 minutes). Naast deze drie drukknoppen is er ook de mogelijkheid om historische data te gaan opvragen (links). Eerst zullen de drie drukknoppen besproken worden om real time data voor te stellen.

    Figuur 72: status grafiek

    Er is keuze om de laatste dag, uur of 10 minuten uit te lezen. Hierbij zal de grafiek om de paar seconden updaten. De knoppen worden vanuit de html gelinkt met een functie. Deze functie zal worden opgeroepen eenmaal erop geklikt wordt. Wanneer op de knop “last day” wordt geduwd, zal dus de typescript functie lastDay() worden opgeroepen.

    Figuur 73: html code real time knoppen

  • Mindsphere Auteur: Kobe Persyn

    30/05/2019 Pagina 63 /77

    In figuur 74 zijn deze drie functies te zien. Bij last10Min() en lastHour() wordt een andere functie opgeroepen om data op te halen dan bij lastDay(). Waarom dit is, wordt later uitgelegd. Eerst zal de functie last10Min() besproken worden (welke analoog werkt als lastHour()).

    Figuur 74: typescripting code real time knoppen

    Bij de functie zal eerst de data die op dat moment in de grafiek zit worden leeggemaakt. Hierna zal de starttijd gezet worden op de huidige tijd met hiervan tien minuten afgetrokken.

    Deze starttijd (this.operationGraphStarttime) wordt gebruikt in de functie getRealTimeData(). Deze functie zal data vanuit Mindsphere gaan ophalen en in de grafiek laden. Wanneer de functie lastHour() wordt opgeroepen, gebeurt hetzelfde als in last10Min(), maar nu zal de starttijd gezet worden op de huidige tijd met hiervan een uur afgetrokken.

    De reden waarom lastDay() gebruik maakt van een andere functie ligt in de beperkingen van Mindsphere. In één API call kunnen maximum 2000 aspecten afgehaald worden. Aangezien er om de drie seconden een aspect wordt verstuurd vanuit de Node-Red applicatie zal één dag dus 28800 aspecten bevatten (ervan uitgaande dat er geen connectie verlies is). Wanneer de API call wordt gedaan, zullen dus enkel de eerste 2000 aspecten opgehaald worden. Dit komt bij een doorstuurinterval van drie seconden overeen met 100 minuten. Om dit op te lossen is er een nieuwe functie voorzien die meerdere API calls zal doen wanneer nog niet alle data is opgehaald. Let op dat wanneer het doorstuurinterval kleiner wordt dan 1.8 seconden, de functie lastHour() ook meer dan 2000 aspecten zal ophalen (hier niet het geval want er wordt met een interval van drie seconden gewerkt).

    Naast de real time drukknoppen is er ook een drukknop waarmee men historische data kan opvragen. Deze data zal, in tegenstelling tot de andere drie drukknoppen, zichzelf niet updaten om de paar seconden. Het tijdsinterval van deze data kan gekozen worden door “start date” en “stop date” in te stellen (links boven Figuur 72: status grafiek).

  • Mindsphe