Datacaptatie, -archivering en -rapportering van een...

122
Datacaptatie, -archivering en -rapportering van een kristallisatieproces Alexander Dewaele 25 mei 2009

Transcript of Datacaptatie, -archivering en -rapportering van een...

Page 1: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Datacaptatie, -archivering en -rapportering van een

kristallisatieproces

Alexander Dewaele

25 mei 2009

Page 2: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Voorwoord

Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het gewenste resultaatbereikt is, brengt dit een zeer goed gevoel van tevredenheid met zich mee. Het is enkel eenkwestie om de juiste verhouding tussen inspanning en ontspanning doorheen het jaar te vin-den. Deze verhouding was reeds snel bekomen dankzij de ontspannen sfeer bij de collega’s.Er werd hard gewerkt maar er was zeker ook tijd om stoom af te blazen.Hierbij zou ik graag de collega’s bij Vandemoortele bedanken die mij doorheen het jaar gehol-pen hebben: Marc Crop, Henk Vandekerckhove, Emmanuel Seurinck en Christophe Soenen.Zeker wil ik ook Karel Delporte bedanken voor het testen van de applicatie. Dankzij zijnopmerkingen en voorstellen is de applicatie veel gebruiksvriendelijker geworden.

Uiteraard heb ik de meeste steun van mijn promotoren gehad, namelijk mijn externe promotorMarc Crop en mijn interne promotor Henk Capoen. Door hun kritische ingesteldheid enevaluaties, wist ik telkens waar ik aan toe was en aan welke punten ik moest sleutelen. Zijstonden ook telkens voor mij klaar toen ik niet meer verder kon of iets niet begreep. Mededankzij hen is de masterproef tot een goed einde gekomen.

Als laatste zou ik Wesley Vandewalle willen bedanken. Het masterproefvoorstel kwam na-melijk van meneer Vandewalle maar doordat hij van job veranderde, kon hij niet langer mijnpromotor zijn. Niettemin bleef hij mij doorheen het jaar steunen.

Hartelijk bedankt,Alexander Dewaele

i

Page 3: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inhoudsopgave

1 Manufacturing Execution System 101.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.2 CIM piramide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 ANSI/ISA-95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3.1 Models & Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.2 Object Model Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.3 Activity Models of Manufacturing Operations Management . . . . . . 141.3.4 Object Models and Attributes of Manufacturing Operations Management 151.3.5 Business to Manufacturing Transactions . . . . . . . . . . . . . . . . . 15

1.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 Het kristallisatieproces 172.1 Werktank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Centrifugaalpomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3 Pasteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4 Hogedrukpomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5 Koelmachine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.6 Rustbuis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7 Poefer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.8 Retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3 Proces Control System 273.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2 Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3 Meetomvormer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4 Programmable Logic Controller . . . . . . . . . . . . . . . . . . . . . . . . . . 303.5 Voorbeeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.5.1 Formule Pt100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5.2 Volledig uitgerekend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

ii

Page 4: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inhoudsopgave

4 OPC Server 344.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2 De interface van het device configureren . . . . . . . . . . . . . . . . . . . . . 344.3 Het virtueel bussysteem samenstellen . . . . . . . . . . . . . . . . . . . . . . . 354.4 Configureren van de OPC Server . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.4.1 Een station toevoegen . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.4.2 De hardware configureren . . . . . . . . . . . . . . . . . . . . . . . . . 374.4.3 Een verbinding toevoegen . . . . . . . . . . . . . . . . . . . . . . . . . 38

5 Proficy Historian 395.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2 Datacollectoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2.2 Architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.3 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.4 Archieven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5.4.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.4.2 Archiefbeheer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.4.3 De groei van het archief schatten . . . . . . . . . . . . . . . . . . . . . 42

5.5 Proficy Historian Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . 425.5.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.5.2 Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.5.3 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.5.4 Collectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.5.5 Archives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.5.6 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6 Oracle 506.1 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.2 Connectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7 Structured Query Language 537.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.2 Select statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.3 Insert statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.4 Update statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.5 Delete statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Alexander Dewaele iii

Page 5: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inhoudsopgave

8 TCP/IP 598.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598.2 OSI-model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598.3 Adressering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618.4 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628.5 Routering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.6 NAT protocol en portforwarding . . . . . . . . . . . . . . . . . . . . . . . . . 64

9 Server Applicatie 669.1 Gegevens opvragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

9.1.1 ADO .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669.1.2 Opbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689.1.3 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699.1.4 Resultaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

9.2 Gegevens opslaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719.2.1 Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719.2.2 Opbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739.2.3 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

9.3 Gegevens verzenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.3.1 Server & client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.3.2 Opbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.3.3 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

10 Report Tool 7810.1 Visual Basic .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7810.2 Componenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

10.2.1 Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8010.2.2 Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8210.2.3 Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8410.2.4 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

10.3 Extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8610.3.1 Interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8610.3.2 Grafieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8610.3.3 Saves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8710.3.4 Statusstrip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.3.5 Minimaliseren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.3.6 Helpfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.3.7 Installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

10.4 Programmaopbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Alexander Dewaele iv

Page 6: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inhoudsopgave

10.4.1 SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9010.4.2 Opstarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9210.4.3 Tab Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9310.4.4 Tab Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.4.5 Tab Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.4.6 Tab Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

A Binding 103

B Klassendiagramma Report Tool 104

C Klassendiagramma serverapplicatie 105

D SDK: Code tags opvragen 106

E SDK: Code values opvragen 107

F Objectbrowser Oracleclient 108

G Installatie Report Tool 109

Alexander Dewaele v

Page 7: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Abstract

It concerns a project in Izegem (Belgium) in coorperation with the Vandemoortele Group.Group Vandemoortele is a Belgian food group with a European dimension. The Group fo-cuses on three business segments: soy products, frozen dough products and margarines andfats.The crystallisation process of margarine is a part of the production process. This crystal-lisation process has a number of inputs and output parameters. A lot of these parametersdepend on the produced recipe. The project objectives are to make reports of the parameters.In order to build these reports, it is necessary to collect and to archive the process parame-ters with a datacaptation system. The used datacaptation system is the historian database“Proficy Historian” from “GE Fanuc”.

With the data from the historian database reports are produced, both time-based as recipe-based. It is also possible to compare different batches from the same recipe.

Keywords: process parameters, historian database, Proficy Histian, reports.

vi

Page 8: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Gebruikte afkortingen

ADO: Active Data Object

CIM: Computer Integrated Manufacturing

CLR: Common Language Runtime

CSV: Comma Separated Values

COM: Component Object Model

CSMA/CD: Carrier Sense Multiple Access/Collision Detection

DB: Database/Datablock

DBMS: DataBase Management System

DCL: Data Control Language

DCOM: Distributed Component Object Model

DDL: Data Definition Language

DML: Data Manipulating Language

ERP: Enterprise Resource Planning

GUI: Graphical User Interface

IP: Internet Protocol

ISA: Instrumentation, Systems and Automations Society

ISO-OSI: ISO Reference Model for Open Systems Interconnection

LAN: Local Area Network

MB: MegaByte

MES: Manufacturing Execution System

vii

Page 9: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inhoudsopgave

MPI: Multi Point Interface

ODBC: Open DataBase Connectivity

OLE: Object Linking and Embedding

OLE DB: Object Linking and Embedding, DataBase

OPC: OLE for Process Control

PC: Personal Computer

PCS: Proces Control System

PLC: Programmable Logic Controller

RTD: Resistive Temperature Device

SDK: Software Development Kit

SQL: Structured Query Language

TCP: Transmission Control Protocol

VB: Visual Basic

VBA: Visual Basic for Applications

VDM: Vandemoortele

XML: Extended Markup Language

Alexander Dewaele viii

Page 10: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van tabellen

1 VBA vs VB.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.1 Samenvattende tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7.1 Voorbeeldtabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.2 Resultatentabel van SELECT statement . . . . . . . . . . . . . . . . . . . . . 557.3 Tabel na INSERT statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.4 Tabel na UPDATE statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.5 Tabel na DELETE statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

8.1 Klasses IP adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

9.1 Tabel Recepten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709.2 Resultatentabel van SELECT statement . . . . . . . . . . . . . . . . . . . . . 71

ix

Page 11: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

1 Organisatie[16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Kaart Europa[16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Excel Add-In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Software Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Report Tool in Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Netwerken Vandemoortele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Werking serverapplicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Vergelijking grafieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.1 CIM piramide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2 Functional Hierarchy Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Information Exchange Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.4 Production Activity Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.1 Proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Platenpasteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Koelcilinders met mesassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4 Tussen 2 doseringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.5 Tijdens het doseren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.6 Bij stilstand van de afvulmachine . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.1 Lineair verband tussen temperatuur en weerstand . . . . . . . . . . . . . . . . 283.2 Aansluiting Pt100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3 Actieve en passieve meetomvormer . . . . . . . . . . . . . . . . . . . . . . . . 293.4 Aansluiting sensor op meetomvormer[6] . . . . . . . . . . . . . . . . . . . . . . 303.5 Instellingen analoge kaart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.6 Hardware configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.7 Omzetting stroom in digitale waarde . . . . . . . . . . . . . . . . . . . . . . . 323.8 Volledige berekening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.1 PG/PC Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Samenstelling virtuele bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

x

Page 12: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

4.3 Simatic Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.4 Configuratie van de OPC Server . . . . . . . . . . . . . . . . . . . . . . . . . 374.5 NetPRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 S7 Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.1 Architectuur Proficy Historian . . . . . . . . . . . . . . . . . . . . . . . . . . 405.2 Proficy Historian Administrator: Main . . . . . . . . . . . . . . . . . . . . . . 435.3 Proficy Historian Server Login . . . . . . . . . . . . . . . . . . . . . . . . . . 455.4 Proficy Historian Administrator: Tags . . . . . . . . . . . . . . . . . . . . . . 455.5 How to add an OPC tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.6 Proficy Historian Administrator: Collectors . . . . . . . . . . . . . . . . . . . 475.7 Proficy Historian Administrator: Archives . . . . . . . . . . . . . . . . . . . . 485.8 Proficy Historian Administrator: Messages . . . . . . . . . . . . . . . . . . . . 49

6.1 Relationele Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7.1 SQL SELECT Statement[14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.2 SQL INSERT statement[14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.3 SQL UPDATE statement[14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.4 SQL DELETE statement[14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

8.1 OSI model en TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608.2 Adressering TCP/IP[13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618.3 Netwerkelementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.4 Voorbeeld routering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.5 Voorbeeld NAT protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648.6 Voorbeeld port forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

9.1 ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679.2 ADO .NET[13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679.3 Add Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689.4 ADO .NET Klassenset[13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689.5 Opbouw gegevens opvragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699.6 Tabellen Access database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729.7 Dataverkeer bij receptenrequest zonder Access database . . . . . . . . . . . . 739.8 Opbouw gegevens opslaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749.9 Verbinding server-client[13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.10 Opbouw gegevens verzenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769.11 Flowchart gegevens verzenden . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

10.1 Het .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Alexander Dewaele xi

Page 13: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

10.2 Report Tool: Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8010.3 Recepten manueel updaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8210.4 Report Tool: Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8210.5 Report Tool: Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8410.6 Report Tool: Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8510.7 Selecteren vs Aanvinken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8610.8 Saves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8810.9 Openen saves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.10De statusstrip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.11Tray door minimalisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.12Openen helpfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8910.13SDK: Opvragen tags en waardes . . . . . . . . . . . . . . . . . . . . . . . . . 9010.14Opbouw opstarten applicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . 9210.15Flowchart recepten updaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9310.16Opbouw connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9310.17Interface connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.18SDK Tags: Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.19Opbouw global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.20Interface global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.21Opbouw recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9610.22Interface recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9610.23Opbouw comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9710.24Interface comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

A.1 Early binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103A.2 Late binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

B.1 Klassendiagramma Report Tool . . . . . . . . . . . . . . . . . . . . . . . . . . 104

C.1 Klassendiagramma serverapp . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

F.1 Object browser provider Oracleclient . . . . . . . . . . . . . . . . . . . . . . . 108

G.1 Procedure installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Alexander Dewaele xii

Page 14: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Inleiding

Bedrijfsvoorstelling

Vandemoortele[16] is een Belgische voedingsgroep die actief is in Europa. De Vandemoortelegroep omvat 3 business segmenten:

1. Sojaproducten;

2. Diepvries bakkerijproducten;

3. Margarines en vetten.

De voornaamste activiteiten van de groep worden ontwikkeld en opgevolgd door twee divisies:

1. De Lipids & Dough divisie (hoofdzakelijk “business to business” met Diepvries bakke-rijproducten en Margarines & Vetten);

2. de Soy Foods divisie (hoofdzakelijk “business to consumer” met Alpro en Provamel alsmerken).

De Vandemoortele groep is opgericht in 1899. De eerste fabriek werd gebouwd in Izegemdoor de heer Constant Vandemoortele en zijn zoon Adhemar. Al snel expandeert de groepen vandaag telt ze 3400 werknemers in 12 Europese landen.De groep schrijft het succes toe aan de waarden die ze nastreeft:

1. Creativiteit en Ambitie;

2. Ownership en Resultaatgerichtheid;

3. Integriteit en Vertrouwen.

Vandaag ziet de organisatie van de groep Vandemoortele er als volgt uit:

1

Page 15: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

Figuur 1: Organisatie[16]

De groep bezit ook nog het transportbedrijf “Metro” dat werd opgericht in 1955 en eendeelneming van 25 % in ’Lipidos Santiga’, marktleider in raffinage van vetten in Spanje.

De volgende kaart verduidelijkt de verdeling van de verschillende sites over Europa. Degegevens datteren wel van voor de overname van “Panavi”.

Figuur 2: Kaart Europa[16]

Alexander Dewaele 2

Page 16: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

Doelstellingen

Het kristallisatieproces van margarine is een onderdeel van het productieproces. Dit kris-tallisatieproces heeft een aantal input- en outputparameters. Veel van deze parameters zijnafhankelijk van het geproduceerd recept.De outputparameters van het proces zijn drukken, temperaturen, debieten van de pompen,aantal geproduceerde eenheden, draaitijden, stromen, aan/uit, ...

De doelstellingen van dit project zijn:

Het realtime capteren en historisch verzamelen van de parameters aan de hand van eendatacaptatiesysteem.(OPC Server, Historian database, SQL);

Het aanmaken van diverse rapporteringen (zowel tijds- als batchgestuurd) op het geınstalleerdedatacaptatiesysteem. Koppelingen naar het proces zijn dus noodzakelijk;

De mogelijkheid om verschillende runs van recepten te vergelijken.

Het project is zo opgebouwd dat het onderaan de CIM piramide begint en evolueert naarboven toe. Hoewel het grootste deel van het project zich afspeelt in de MES laag, komen ookde PLC laag en OPC Server aan bod.

Projectanalyse

Datacaptatie en -archivering

Het programma “Proficy Historian” van “GE Fanuc” staat in voor het capteren en archiverenvan de procesdata. Dit programma was reeds aangekocht voor het begin van het project.Proficy Historian biedt de mogelijkheid om de gecapteerde data te rapporteren via:

1. Een Excel Add-In;

2. Een webportal;

3. De Software Development Kit (SDK).

Opmerking: De webportal is niet getest geweest omdat er onmiddellijk werdgeopteerd om zelf een applicatie te ontwikkelen.

Datarapportering

Omtrent de applicatie, die instaat voor de datarapporteringen, waren er een paar mogelijk-heden.

Alexander Dewaele 3

Page 17: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

Excel Add-In

Figuur 3: Excel Add-In

De rapportering gebeurde in Excel aan de hand van de programmeertaal VBA “Visual Basicfor Applications” en de Excel Add-In van GE Fanuc. De eenvoud van de controls in Excelvormde een probleem. Vooral voor het gebruik van lijsten en treeviews was het verplicht eenextra librarie toe te voegen. Zelf dan waren de verwachtingen nog niet voldaan. Ook hetfeit dat de gebruikers alles zelf konden wijzigen, was een groot risico. Zoals het verslepenvan cellen, wijzigen van charts, wijzigen van celeigenschappen, ... waardoor de code in hethonderd liep. Een wachtwoord bracht een tijdelijke oplossing maar dit was uit den boze.Een tweede probleem was dat de applicatie versieafhankelijk zou zijn. Bij het overstappennaar een nieuwe Excel-versie zou de mogelijkheid bestaan dat de applicatie niet meer correctzou functioneren.Het derde en tevens grootste probleem is namelijk dat de Excel Add-In steeds met arrayswerkt. In Excel is een array een geheel en bij de kleinste wijziging moet de volledige arrayverwijderd en hermaakt worden. Het automatiseren en gebruiken van deze arrays was eenonmogelijke opdracht. De SDK “Sofware Development Kit” verving al snel de Excel Add-In.

SDK

De SDK is een zogenaamd COM object. Een COM object bevat een interface van de functi-onaliteiten die het object biedt. Het is een soort blackbox, de mogelijkheden van het objectzijn bekend maar de interne werking is verborgen. De SDK van Proficy Historian maakt hetmogelijk om te connecteren met de Historian database en om tijdsgebasseerde waardes op tevragen. De output van de SDK is altijd een datarecordset. Met de SDK is het mogelijk om

Alexander Dewaele 4

Page 18: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

elke individuele waarde apart aan te spreken wat van uiterst belang is bij het creeren vansamenvattingen en grafieken.

Figuur 4: Software Development Kit

De SDK bevat een servermanager. Aan de hand van deze servermanager kunnen de be-schikbare Historian databases opgevraagd worden om dan uiteindelijk te connecteren meteen database. Eenmaal geconnecteerd kunnen de tags, messages, data, archives en interfacesgeraadpleegd worden.1

Herinner wel dat hier nog steeds met Excel (VBA) wordt gewerkt. De SDK vervangt enkelde Excel Add-In.

De eerste versie van de applicatie in Excel zag er uit zoals in figuur 5.1Afhankelijk van de toegang van de ingelogde gebruiker.

Alexander Dewaele 5

Page 19: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

Figuur 5: Report Tool in Excel

VBA vs VB.NET

Door de Excel Add-In te vervangen door de SDK was enkel het probleem van de arraysopgelost. Vooral de eenvoud van de controls in Excel leidde tot ergernis. De beslissing kwamer om een stand-alone VB.NET applicatie te ontwikkelen in Visual Studio waarmee alleproblemen opgelost zijn. De controls voldoen volledig aan de gestelde eisen, de gebruikerskunnen niets veranderen aan de interface en er kan versieonafhankelijk2 geprogrammeerdworden. Het ziet er ook professioneler uit en het is veel gebruiksvriendelijker. De gebruikersmoeten er namelijk niet aan denken om de Excel Add-In te laden en connecteren tot eenHistorian database is uiterst eenvoudig. Treedt er toch een probleem op dan is de helpfilealtijd ter beschikking.

Tabel 1 geeft de voordelen en de nadelen van zowel VBA als VB.NET.2Door gebruik te maken van late-binding. Zie bijlage A.

Alexander Dewaele 6

Page 20: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

VBA VB.NET

+ Excel is gekend + Controls hebben meer mogelijkheden+ Print mogelijkheid + Excel onafhankelijk

+ .NET framework ter beschikking+ Uitzicht is professioneler+ Docking mogelijkheid

- Gebruikers kunnen wijzigingen aanbrengen - .NET framework verplicht- Kennis VBA verplicht bij latere wijzigingen - VB.NET kennis verplicht bij latere wijzigingen- Excel versieafhankelijk- Niet gebruiksvriendelijk- Verplichte aanschaf Excel

Tabel 1: VBA vs VB.NET

Oracle vs Linked Tables

De verschillende netwerken binnen de groep Vandemoortele kunnen vereenvoudigd voorgesteldworden zoals in figuur 6.

Figuur 6: Netwerken Vandemoortele

Elke afdeling bezit een Oracle database met de recepten van de producten. Elke afdelingzal de applicatie voor de datarapportering gebruiken en moet daarom toegang hebben tot

Alexander Dewaele 7

Page 21: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

de Oracle database. Het probleem is dat deze Oracle databases beveiligd zijn en dat maarenkele, vaste IP adressen toegang hebben. Nu zou elke gebruiker van de applicatie toegangmoeten hebben wat dus uiteraard onmogelijk is in het kader van de beveiliging.

De eerste oplossing was gebruik maken van “Linked Tables”. Een linked table is een tabelin Access die een kopie voorstelt van een tabel van de Oracle database. De server waaropde linked tables zich bevonden had een vast IP en kon dus toegang krijgen tot de Oracledatabases. Hiermee was het probleem van beveiliging opgelost.

Linked Tables vs Eigen serverapplicatie

Al snel zorgden de linked tables voor andere problemen. Er was geen mogelijkheid om degebruikersnaam en het wachtwoord van de Oracle database op te slaan in de linked tables. Dusbij iedere connectie en query naar de linked tables werd gevraagd naar een gebruikersnaamen wachtwoord. Op zich geen probleem maar de gebruikersnaam en het wachtwoord konniet meegegeven worden vanuit de applicatie in VB.NET. Dit was wel een probleem want deVB.NET applicatie kon de gegevens van de linked tables dus niet opvragen.

Een eigen serverapplicatie bracht de oplossing. Doordat deze applicatie zich op de serverbevindt, bezit het een vast IP adres en kan het connecteren naar iedere Oracle database.De applicatie fungeert als een soort doorgeefluik. De rapporteringsapplicatie verbindt viaTCP\IP met de serverapplicatie en vraagt de recepten van een bepaalde oracledatabase vaneen bepaalde afdeling op. De serverapplicatie connecteert met de oracledatabase en stuurteen query. Eenmaal de data van de oracledatabase is toegekomen bij de serverapplicatie,stuurt de serverapplicatie de data door naar de rapporteringsapplicatie.Een ander voordeel is dat de query van de serverapplicatie enkel twee kolommen van de totaletabel opvraagt, terwijl een linked table telkens de volledige tabel opvraagt. De query van deserverapplicatie is hierdoor veel sneller.

Figuur 7: Werking serverapplicatie

Grafieken

De grafieken van de stand-alone applicatie in VB.NET werden in het begin geexporteerd uitExcel. Later stelden de gebruikers een aantal eisen aan de grafieken:

Alexander Dewaele 8

Page 22: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Lijst van figuren

Precieze aflezing van de coordinaten van de punten op de grafiek;

Inzoomen op de grafiek;

Afdrukken van de grafieken;

Meerdere Y-assen afhankelijk van de engineering unit van de tag.

De grafieken uit Excel boden niet de mogelijkheid om hieraan te voldoen. De grafieken vanZedGraph waren de perfecte oplossing. Figuur 8 toont het verschil tussen beide grafieken.

Figuur 8: Vergelijking grafieken (ZedGraph bovenaan, Excel onderaan)

Alexander Dewaele 9

Page 23: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1

Manufacturing Execution System

1.1 Inleiding

MES[3][22] “Manufacturing Execution System” is de laag die instaat voor de koppeling tussende productievloer en de administratie. Deze koppeling heet de verticale integratie binnen eenbedrijf.De integratiestandaarden uitgegeven door ISA, kunnen dienen als leidraad om deze verticaleintegratie te realiseren. Toch lijkt deze verticale integratie op het leggen van een puzzel tussende “Enterprise Resource Planning” en het “Proces Control System”.

1.2 CIM piramide

CIM[21] “Computer Integrated Manufacturing” is een concept waarbij een proces volledig di-gitaal wordt beheerd door een computersysteem. Het idee is om de real-time data afkomstigvan sensoren op de productievloer over het gehele bedrijf ter beschikking te stellen.Het is natuurlijk niet de bedoeling dat werknemers op de administratieve afdeling de moge-lijkheid krijgen om de status van een enkele sensor op te vragen. Maar wel bijvoorbeeld opte vragen hoeveel producten er in de voorbije week zijn geproduceerd.Het ligt voor de hand dat deze real-time status van de sensor wel belangrijk is voor hetfunctioneren van het productieproces.

10

Page 24: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

Figuur 1.1: CIM piramide

Naarmate er omhoog gegaan wordt in de CIM piramide is het realtimekarakter van de dataminder belangrijk, maar stijgt de grootte van de benodigde data. Hoe lager in de CIMpiramide, hoe sneller de data toegankelijker moet zijn, maar hoe kleiner de grootte van denodige data.

Het gebruik van CIM berust op drie basisdoelen:

1. Het simplificeren van alle productietechnologieen en -technieken;

2. Het automatiseren van zoveel mogelijk productieprocessen;

3. Integratie en coordinatie van alle aspecten van ontwerp, productie en gerelateerde func-ties door het gebruik van computerhardware en -software.

Enkele voordelen:

Toename flexibiliteit en reactievermogen;

Toename in productie productiviteit;

Korte klanten doorlooptijd;

Toegenomen kwaliteit;

Toegenomen klantenservice;

Korte verkoop doorlooptijden;

Verminderde voorraadlevels;

Lagere totale kosten.

Alexander Dewaele 11

Page 25: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

1.3 ANSI/ISA-95

De ISA-95[20] “Instrumentation, Systems and Automations Society” wordt omschreven als deinternationale standaard voor de integratie van kantoor- en productieautomatiseringssyste-men.

De ISA-95 bestaat uit verschillende modellen en terminologieen die duidelijk maken welkeinformatie er tussen de afdelingen moet worden uitgewisseld. Die informatie is gericht opverkoop, financien en logistiek voor de administratieve afdeling en productie, onderhoud enkwaliteit voor de productieafdeling.Door de uitwisseling van de informatie kunnen systemen die instaan voor de kantoor- en deproductieautomatisering op elkaar afgestemd worden.De ISA-95 standaard bestaat uit 5 delen.

1.3.1 Models & Terminology

Dit deel van de ISA-95 bevat meerdere modellen om de werking en de structuur van een bedrijfte verduidelijken. De twee belangrijkste modellen zijn het “Functional Hierarchy Model” enhet “Information Exchange Model”.Het “Functional Hierarchy Model” beschrijft de verschillende afdelingen binnen een bedrijf.Level 4 stelt hier de administratieve afdeling voor en level 3 is de afdeling die instaat voorhet beheer en controle van de verschillende productieprocessen. De onderste levels stellendan de mogelijke productieprocessen binnen een bedrijf voor. Binnen Vandemoortele is devoorbereiding van de margarine een batchproces en is het kristallisatieproces een continuproces.

Figuur 1.2: Functional Hierarchy Model

Alexander Dewaele 12

Page 26: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

Belangrijk is dat bij dit model nog niet wordt gesproken over softwaresystemen. Dit modelsplitst enkel de verschillende functionaliteiten binnen een bedrijf in levels op.Het project speelt zich dus vooral af op level 3. De productieverantwoordelijken zullen hetsoftwarepakket gebruiken om de productie op te volgen en te controleren. Onregelmatighedenin het proces kunnen zo worden opgespoord en aangepakt. Bij de kwaliteitscontrole kunnende werknemers rekening houden met de gevonden onregelmatigheden om zo te onderzoekenwelke invloeden ze hebben op de kwaliteit. De uiteindelijke bedoeling is om per recept deperfecte instellingen te bekomen.

Een ander belangrijk model is het “Information Exchange Model”.

Figuur 1.3: Information Exchange Model

Het model is belangrijk omdat het samenvat welke informatie er moet worden uitgewisseldtussen level 4 en level 3.De belangrijkste delen zijn ’Product Definition Information’ en ’Product Information’. BinnenVandemoortele bevinden de recepten (Product Definition Information) zich op een Oracledatabase. De instellingen van de productielijn gebeuren aan de hand van deze recepten.Proficy Historian capteert de werkelijke data, ’Product Information’. Het softwarepakketmaakt gebruik van beide soorten informatie.

1.3.2 Object Model Attributes

In deel 1 wordt bepaald welke informatie moet worden uitgewisseld tussen de verschillendesystemen. Deel 2 biedt nu de mogelijkheid om alle objecten uit deel 1 verder uit te werken

Alexander Dewaele 13

Page 27: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

in tabellen met attributen. Die kunnen gebruikt worden bij het uitwisselen van informatie.

Opmerking De standaard doet geen uitspraak over de te kiezen oplossing(bv. Xml/B2MML)

1.3.3 Activity Models of Manufacturing Operations Management

Dit deel bevat modellen om de productieactiviteiten binnen een bedrijf in kaart te brengen.Binnen de productieafdelingen zijn er verscheidene activiteiten en wordt tussen die activiteitengrote hoeveelheden data uitgewisseld. Deel 3 biedt modellen aan voor de 4 grote activiteiten:

1. Productie;

2. Kwaliteit;

3. Inventaris;

4. Onderhoud.

Het productie activiteitsmodel zoals in figuur 1.4 geeft de functionaliteiten en onderlingeinformatiestromen voor elke activiteit weer.

Figuur 1.4: Production Activity Model

De Proficy Historian database archiveert de procesparameters van een productielijn en be-vindt zich dus in het onderdeel “Production Data Collection”. De custom made applicatie

Alexander Dewaele 14

Page 28: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

“Report Tool” rapporteert deze procesparameters waarop vervolgens analyses gemaakt kun-nen worden. De analyses behoren dan tot het deel “Production Performance Analyse”.

1.3.4 Object Models and Attributes of Manufacturing Operations Mana-

gement

Dit deel is nog vollop in ontwikkeling maar het zal modellen bevatten van de activiteitenbinnen level 3.

1.3.5 Business to Manufacturing Transactions

Deel 5 definieert de methodes om informatie over te brengen van de bedrijfsautomatiserings-systemen naar de productieautomatiseringssystemen en omgekeerd.

1.4 Besluit

Zoals in figuur 1.1 wordt het niveau tussen de logistieke/administratieve automatisering(ERP) en de productieautomatisering (PCS) aangeduid met de term MES.Bij ERP is de klant het belangrijkst. Hier worden de orders verwerkt en bijgehouden. HetPCS ’Proces Control System’ focust zich vooral op het productieproces. Hier worden de juisteproductiecondities (temperaturen, drukken, debieten, ...) gehandhaafd.Nu fungeert de MES laag als een tussenlaag. MES concentreert zich op het product zelf. Hierwordt beslist en bijgehouden hoe de producten gefabriceerd worden (volgens welk recept), inwelke volgorde (volgens welk shedule) en met welke grondstoffen (tracking en tracing).

In tegenstelling tot ERP en PCS bestaat MES meestal uit verschillende softwareapplicatiesom verschillende onderdelen in te kleden. Veel van deze applicaties zijn custom made om tevoldoen aan de noden van het productieproces en de werknemers.Binnen de Vandemoortele Groep zijn reeds een aantal kleine MES projecten[17] gerealiseerd.Voorbeelden hiervan zijn kleine datacaptatie projecten, MS Acces applicatie ter ondersteuningvan de receptwissels, lokale receptbeheerprogramma’s die een interface bieden naar PLC’s, ...De vele verschillende applicatie binnen de MES laag zorgen voor een complexe structuurbinnen de organisatie. Een globale MES aanpak kan een oplossing bieden aan lokale MESnoden. Bepaalde leveranciers zoals Siemens en GE Fanuc bieden de mogelijkheid om viastandaarden de volledige MES laag te integreren. Wel moet er toch rekening gehouden wordenmet het customizing bij zo’n totale verticale integratie. Anderszijds is er natuurlijk ook hetprijskaartje.

In praktijk is de MES laag meestal niet volledig afgedekt. Binnen dit project zorgt ProficyHistorian voor het onderdeel “Production Data Collection”. Die software heeft een open

Alexander Dewaele 15

Page 29: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 1. Manufacturing Execution System

toegankelijkheid voor MES applicaties. De applicatie “Report Tool” gebruikt deze toegan-kelijkheid om de gearchiveerde procesdata te rapporteren waarna de rapporteringen gebruiktworden binnen verschillende afdelingen. De applicatie “Report Tool” situeert zich dus in deMES laag en wordt vooral gebruikt op productieniveau.

Alexander Dewaele 16

Page 30: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2

Het kristallisatieproces

Het productieproces van margarine bestaat uit de volgende stappen:

1. Voorbereiding;

2. Aanmaak emulsie (batch proces);

3. Kristallisatie;

4. Afvullen en verpakken;

5. Palletisering.

De emulsie wordt per lijn per batch aangemaakt en vervolgens getransporteerd naar de werk-tank van een lijn. Die warme, vloeibare emulsie wordt daarna uitgekristalliseerd tot marga-rine. Die margarine kan worden afgevuld en verpakt. Dit proces is het kristallisatieproces enziet er als volgt uit:

Figuur 2.1: Proces

Het kristallisatiegedeelte[19] koelt en kristalliseert dus de warme en vloeibare emulsie totmargarine. Hierbij moet de margarine enerzijds voldoende stevig zijn om te verpakken enanderszijds de gewenste textuur hebben. Om de margarine in deze staat te krijgen en teverpakken worden volgende onderdelen in het proces gebruikt:

17

Page 31: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

2.1 Werktank

Functie De werktank is een soort van buffervat tussen het batchproces in de ’voorbereiding’,waar de bereiding van de emulsie plaatsvindt, en het continu kristallisatieproces.

Opbouw

Dubbele wand met warm water om de emulsie op temperatuur te houden;

Roerwerk om de emulsie in beweging te houden (tegengaan ontmenging);

Minimum, maximum en alarm niveau;

Drukknoppen: start afvoer / stop afvoer / roerwerk / verlichting;

Signalisaties: lamp start / stop / werktank minimum / roerwerk stil.

2.2 Centrifugaalpomp

Functie De centrifugaalpomp is aanwezig om de warme emulsie afkomstig van de werktankdoor de pasteur te pompen. Deze centrifugaalpomp zorgt ook voor een voldoende druk aande zuigzijde van de hogedrukpomp nadat de emulsie door de pasteur is gepompt.Aan de andere kant kan de pasteur geen hoge drukken verdragen. De pasteur moet dus nade centrifugaalpomp staan en voor de hogedrukpomp.De centrifugaalpomp wordt ook gebruikt om de leidingen te reinigen. Daarvoor is namelijkeen groot debiet nodig.

Opbouw

1. Motor;

2. Pomphuis;

3. Waaier.

Kenmerken

Geen hoge drukken;

Groot debiet;

Niet zelfaanzuigend.

Alexander Dewaele 18

Page 32: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

2.3 Pasteur

Functie Het pasteuriseren van de emulsie gebeurt in twee stappen:

1. Snel opwarmen;

2. Snel afkoelen.

Door de grote temperatuursverandering sterven de eventuele sporen van bacterien of schim-mels af.Het gebruik van een pasteur heeft nog een positief gevolg, namelijk dat de temperatuur vande emulsie nagenoeg constant is als de emulsie de koelmachine bereikt.

Figuur 2.2: Platenpasteur

Opbouw platenpasteur

1. Opwarmsectie: Aan de hand van heet water wordt de emulsie opgewarmd.

2. Regeneratiesectie: Hier wordt de ingaande emulsie reeds opgewarmd door de warmeemulsie in tegenstroom. Dit natuurlijk om energie te besparen.

3. Koelsectie: Dit deel van de pasteur zorgt ervoor dat de uitgaande emulsie opnieuwafkoelt. Het afkoelen gebeurt aan de hand van koud water.

Opmerking Een platenpasteur kan geen hoge drukken verdragen, de te hoge drukken zou-den de platen openduwen en plooien. Daardoor staan de pasteurs voor de hogedrukpompen.Om de weerstand van de pasteur te overwinnen, is een centrifugaalpomp aanwezig.

Alexander Dewaele 19

Page 33: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

2.4 Hogedrukpomp

Functie Na de hogedrukpomp staat de koelmachine. De emulsie die door de koelmachinepasseert, kristalliseert. Om die min of meer vaste emulsie verder door het kristallisatieproceste pompen zijn hoge drukken nodig.Bovendien moet ernaar gestreefd worden om het koelproces zo constant mogelijk te houden.Daardoor is het noodzakelijk dat het debiet zo constant mogelijk is.Een plunjerpomp voldoet aan deze eigenschappen. Een plunjerpomp heeft namelijk een in-stelbaar vast debiet onafhankelijk van de druk en kan ook heel grote drukken leveren.

Opbouw

Aandrijving;

Plunjers;

Persklep;

Zuigklep.

Kenmerken

Grote drukken;

Constant debiet;

Debiet is instelbaar;

Zelfaanzuigend.

Opmerking Doordat de hogedrukpomp snel zo’n grote drukken produceert, moet ten al-len tijde het circuit na de pomp vrij zijn. Als het circuit toch afgesloten is, stijgt de drukin een fractie van een seconde boven de 100 bar en dan schakelt het overdrukventiel in. Hetoverdrukventiel garandeert dus de werking van de installatie en de veiligheid van de arbeiders.

2.5 Koelmachine

Functie De hogedrukpomp pompt de warme emulsie komende van de pasteur, door de koel-machine. Nu is de emulsie een koud verpakbaar product.Dit kristallisatieproces bepaalt de uiteindelijke productstructuur: hardheid, zandigheid, plas-ticiteit, kleverigheid, ...

Alexander Dewaele 20

Page 34: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

Opbouw

Koelcilinders, gegroepeerd in secties;

Mesassen;

Mesasverwarming;

Aandrijving: 1 motor en reductiekast per sectie;

NH3-circuit.

Werking De hogedrukpomp pompt de emulsie door de koelcilinders van de koelmachine.Rondom de koelcilinders bevindt zich vloeibare amoniak die we laten verdampen.1 De warmtedie nodig is om de amoniak te laten verdampen wordt bekomen uit de emulsie die door dekoelcilinders stromen. Hierdoor verdampt niet enkel de amoniak maar kristalliseert de emulsieook.In de koelcilinder draaien mesassen. De messen op de mesassen schrapen de emulsie vande cilinderwand en zorgen ervoor dat de emulsie niet enkel kristalliseert maar bewerken deemulsie ook.Om te vermijden dat de emulsie door de afkoeling een vaste vorm krijgt en dat zo de doorgangdoor de cilinders vernauwd, zijn de mesassen niet volledig massief ontworpen maar bevindener zich twee kamers in de mesassen. Door de kamers stroomt warm water en zo blijft er geenemulsie aan de mesassen kleven.

1Amoniak verdampt bij 1 bar overdruk (bij -20)

Alexander Dewaele 21

Page 35: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

Figuur 2.3: Koelcilinders met mesassen

Alexander Dewaele 22

Page 36: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

2.6 Rustbuis

Functie De onderkoelde margarine uit de koelmachine komt terecht in de rustbuis. Hierkan de margarine verder uitkristalliseren en zo de gewenste consistentie verkrijgen om teverpakken.

Opbouw

Dubbelwandige buis;

Warm water die door de dubbele wand vloeit.

2.7 Poefer

Functie Waar het kristallisatieproces een continu proces is, is het verpakken een discontinuproces. Het effectief doseren neemt telkens maar een deel van de beschikbare margarine inbeslag. Het doseren gaat dan ook sneller dan het aanmaken van de margarine. Een buffervangt het teveel aan margarine op als de poefer niet doseert.

Opbouw

Poeferhuis;

Poeferzuiger;

Persluchtcilinder.

Werking Situatie tussen 2 doseringen

Tijdens deze situatie is er geen verbruik en ligt de verpakkingsmachine stil. De hogedrukpompduwt tegen de perslucht in de margarine omhoog. De margarine vult de bufferzone. Dit blijftduren tot de opening van de retour vrijkomt. Dan pompt de hogedrukpomp de margarinevia de retour terug naar de werktank. In het ideale geval begint de dosering dus net voorhet vrijkomen van de opening van de retour. Dan draait de afvulmachine op ideale snelheid.De snelheid waarbij de margarine wordt gekoeld is dan gelijk aan de snelheid waarmee demachine de margarine verpakt.(zie figuur 2.4)

Situatie tijdens het doseren

Het verbruik van margarine is hoger dan de hoeveelheid margarine die de hogedrukpomplevert. De perslucht duwt nu de margarine die opgeslagen is in het poeferhuis naar beneden,

Alexander Dewaele 23

Page 37: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

naar de afvulmachine. Maar ook de hogedrukpomp duwt margarine naar de afvulmachine. Detotale verbruikte hoeveelheid margarine is dus de geleverde hoeveelheid van de hogedrukpompmaar ook de geleverde hoeveelheid van de poefer. Hier zien we dus terug dat het doseren aaneen grotere snelheid gebeurt dan dat de hogedrukpomp en koelmachine aankunnen.(zie figuur 2.5)

Situatie bij stilstand van de afvulmachine

Er is opnieuw geen margarineverbruik meer. De pomp duwt de poeferzuiger opnieuw tegen deperslucht in omhoog. Maar de poeferzuiger is zodanig ver omhoog geduwd dat de opening vande retour volledig vrijkomt. De volledige hoeveelheid margarine dat de hogedrukpomp levert,keert via de retour terug naar de werktank. Deze situatie moet zoveel mogelijk vermedenworden omdat de pomp nutteloos arbeid levert.(zie figuur 2.6)

Figuur 2.4: Tussen 2 doseringen

Alexander Dewaele 24

Page 38: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

Figuur 2.5: Tijdens het doseren

Figuur 2.6: Bij stilstand van de afvulmachine

Alexander Dewaele 25

Page 39: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 2. Het kristallisatieproces

2.8 Retour

Functie De margarine die de afvulmachine niet bereikt, keert via de retour terug naar dewerktank. Maar voordat de margarine de werktank bereikt moet ze zoveel mogelijk opnieuwgesmolten zijn zodat vaste stukken margarine de uitloop van de werktank niet verstoppen.

Gewone retour De gewone retour bestaat uit een dubbelwandige buis. Tussen de wandenvan de buis stroomt warm water. De gewone retour wordt toegepast bij margarines met eenlaag smeltpunt. (bv. braadmargarines)

Statische mixer Een statische mixer bestaat ook uit een dubbelwandige buis maar tussende wanden bevindt zich nu stoom. Binnenin de buis zit ook een spiraal die de margarinezoveel mogelijk tegen de wand drukt. De statische mixer wordt gebruikt bij margarines meteen hoog smelpunt.

Bij gebruik van de statisch mixer dient er wel altijd een kleine hoeveelheid retour te zijn zodatde margarine die zich reeds in de buis bevindt niet aanbakt.Een reworktank bevindt zich tussen de retour en de werktank. De margarine in de retourkomt eerst terecht in de reworktank waarin de margarine volledig smelt voor een pomp demargarine overpompt naar de werktank.De reworktank wordt gebruikt op lijnen met een hoog debiet of hoog smeltpunt.

Alexander Dewaele 26

Page 40: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3

Proces Control System

3.1 Inleiding

Onderaan de CIM piramide bevindt zich het PCS “Production Control System”. Dit stelthet systeem voor dat het productieproces bestuurt en controleert. De besturing gebeurtbinnen Vandemoortele met PLC’s van Siemens. Om een productieproces te sturen zijn inputsen outputs nodig. Die inputs (bv. sensoren) maken het mogelijk om proceswaardes (zoalstemperaturen, drukken, debieten, ...) uit te lezen aan de hand van de PLC. Afhankelijk vande waardes van de inputs regelt de PLC de outputs (pompen, ventielen, motoren, ...).

3.2 Sensor

Als voorbeeld nemen we een sensor die de temperatuur in de werktank meet. De tempe-ratuursensor is een Pt100 van “Jumo”[8]. Zo’n Pt100 wordt ook wel een RTD “ResistiveTemperature Device” genoemd.De werking van een temperatuursensor is gebaseerd op verandering in elektrische weerstandbij een veranderlijke temperatuur. Hoe warmer het element wordt, hoe heviger de platina(Pt) atomen gaan trillen. Doordat de atomen heviger trillen, ondervinden de elektronen meerhinder. De elektrische geleiding van het materiaal vermindert, dus de weerstand van hetmateriaal stijgt. Het verband tussen de weerstand en de temperatuur is nagenoeg lineair enwordt gegeven door de volgende vergelijking.

RPt100 = 100 + 0.385055 ∗ T (3.1)

Een Pt100 wordt het meest gebruikt in de industrie door de vele voordelen:

Een nagenoeg lineair verband tussen temperatuur en weerstand;

Zeer groot meetbereik (-200 en 850 °C);

27

Page 41: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

Nauwkeurigheid;

Goede reactiesnelheid;

Eenvoudige aansluiting (driedraadsaansluiting).

Figuur 3.1: Lineair verband tussen temperatuur en weerstand

De temperatuursensor is met drie draden aangesloten op een externe meetomvormer. Tweesignaaldraden en een compensatiedraad. Aan de hand van de twee signaaldraden, voert demeetomvormer een weerstandsmeting over de sensor uit. Dit moet uiteraard heel nauwkeuriggebeuren. Als de sensor nu via lange kabels met de omvormer verbonden is, dan bezitten dekabels ook een weerstand die een negatieve invloed heeft op de meting. De weerstand van dedraden wordt namelijk opgeteld bij de weerstand van de sensor. De meting is vanzelfsprekendniet meer accuraat. De compensatiedraad compenseert dit verschijnsel.Tussen draad 1 en draad 2 meet de omvormer de weerstand van de kabels en de Pt100en tussen draad 2 en draad 3 enkel de weerstand van de kabels. De tweede meting wordtafgetrokken van de eerste en zo bekomt de omvormer de weerstand van de Pt100.

Figuur 3.2: Aansluiting Pt100

Alexander Dewaele 28

Page 42: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

3.3 Meetomvormer

De meetomvormer is van het type TMT 121 van “Endress+Hauser”[6] en zet vervolgens degemeten weerstand om in stroom. Bij goede werking van de sensor ligt de grootte van destroom tussen 4 en 20 mA. 4mA betekent dat het signaal 0% in grootte is (0°C) en 20 mAbetekent dat het signaal 100% in grootte is (100°C). Als de meetomvormer een signaal van 0mA (“live zero”) levert, dan weten de werknemers op de productievloer onmiddellijk dat desensor niet meer correct functioneert. Zo kan gemakkelijk het onderscheid gemaakt wordentussen een nulsignaal en een draadbreuk of een defecte sensor. Door gebruik te maken vande levende nul, vloeit er altijd stroom in de lus. Dit biedt de mogelijk om sensoren met eenklein vermogen te voeden aan de hand van die stroomlus, zo worden kabels uitgespaard.Het grootste voordeel van het gebruik van de stroomlus, is dat ruis de meting niet beınvloedt.Er moet ook geen rekening gehouden worden met spanningsverliezen in de kabels.

De meetomvormer kan zowel actief als passief zijn. De omvormer is actief als deze externgevoed wordt en anders passief. Dit kan gecontroleerd worden door te tellen hoeveel dradentoekomen op de omvormer. In dit geval komen bij een actieve meetomvormer zeven draden(3 draden van de sensor, 2 voedingsdraden, 2 draden van de PLC) toe en bij een passieve vijf(3 draden van de sensor, 2 draden van de PLC).

Figuur 3.3: Actieve en passieve meetomvormer

De correcte aansluiting van de sensor op de meetomvormer vloeit voort uit de technischeinformatie van de omvormer. De sensor is van het type RTD en het is een driedraadsaanslui-ting. De sensor dient bovenaan de omvormer aangesloten te worden op de klemmen 3, 5 en6.

Alexander Dewaele 29

Page 43: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

Figuur 3.4: Aansluiting sensor op meetomvormer[6]

3.4 Programmable Logic Controller

De hardware configuratie van de PLC die het kristallisatieproces bestuurt, betaat uit:

twee kaarten met digitale ingangen;

twee kaarten met digitale uitgangen;

vier kaarten met analoge ingangen;

een ET200M station verbonden via profibus.

– twee kaarten met analoge uitgangen.

Een duurdere analoge kaart kan ook zowel actief als passief zijn. Als de meetomvormer actiefis, dan is het kanaal van de analoge kaart passief en vice versa. De programmeur dient dui-delijk te maken aan de PLC welke analoge kanalen (meestal per twee gegroepeerd) actief ofpassief optreden. Dit gebeurt door te specifieren hoe de meetomvormer is aangesloten, metvier draden (4DMU, actieve meetomvormer) of met twee draden (2DMU, passieve meetom-vormer). De programmeur moet ook meegeven welk signaal de omvormer levert, hier is diteen stroomsignaal. De twee instellingen (measuring type en measuring range) leveren een let-ter op bij “Range Selection Module”. Deze instelling moet hardwarematig ingesteld wordenop de analoge kaart per twee kanalen.

Alexander Dewaele 30

Page 44: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

Figuur 3.5: Instellingen analoge kaart

Om een temperatuur in de PLC uit te lezen, dient de stroomlus die de meetomvormer aan-biedt, verbonden te worden met een ingang van een analoge kaart.De meetomvormer van de temperatuursensor in de werktank is verbonden met de analoge in-gangskaart in slot 11 op channel 3. De nummering van de ingangen op de analoge kaart in slot11 begint vanaf 560. Aangezien de meetomvormer aangesloten is op channel 3 en wetende dateen analoog signaal 2 bytes inneemt van het periferiegeheugen, zal de temperatuurswaardevan de werktank zich op ingangswoord 566 bevinden (PIW 566).

Figuur 3.6: Hardware configuratie

De analoge kaart zet het analoge stroomsignaal van de meetomvormer om in een digitaalwaarde tussen 0 (4mA) en 27648 (20mA). Vervolgens herschaalt het gebruikersprogrammain de PLC dit getal tot een temperatuurswaarde (decimaal getal) in graden celcius. Dezedecimale temperatuurswaarde (4 bytes) wordt opgeslaan in DB30 beginnend bij byte 368.Deze gegevens zullen in de volgende hoofdstukken nog gebruikt worden.

Alexander Dewaele 31

Page 45: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

Figuur 3.7: Omzetting stroom in digitale waarde

3.5 Voorbeeld

Veronderstel dat de Pt100 temperatuursensor in de werktank een weerstand heeft van 119,25275Ω.De temperatuur in de werktank wordt eerst eenvoudig met de formule van de Pt100 uitgere-kend en vervolgens wordt het volledige verhaal uitgewerkt.

Weerstand Stroom AD waarde Temperatuur

100 Ω 4 mA 0 0 °C138.51 Ω 20 mA 27648 100 °C

Tabel 3.1: Samenvattende tabel

3.5.1 Formule Pt100

Het lineair verband tussen de weerstand en de temperatuur is weergegeven in de vergelijking3.1. Als we deze vergelijking omvormen naar de temperatuur, betekent een weerstand van119.25 ohm een temperatuur van 50°C.

T =119.25275− 100

0.385055= 50 (3.2)

3.5.2 Volledig uitgerekend

De vergelijking tussen de weerstand, die de Pt100 bezit, en de stroom, die de meetomvormerlevert, is:

Y − 4 =20− 4

138.51− 100(X − 100) (3.3)

Uitgerekend levert dit de volgende vergelijking op:

Y = 0, 4154765X − 37, 54764996 (3.4)

Alexander Dewaele 32

Page 46: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 3. Proces Control System

Als de weerstand van de sensor 119,25275 Ohm is, dan levert de omvormer 12 mA. De analogekaart zet dit analoog signaal om in een digitale waarde volgens de vergelijking:

Y − 0 =27648− 0

20− 4(X − 4) (3.5)

Als we dit uirekenen:Y = 1728X − 6912 (3.6)

De digitale waarde bij een stroom van 12 mA is 13822,38. Deze waarde wordt omgezet in hetPLC gebruikersprogramma volgends de vergelijking:

Y − 0 =100− 0

27648− 0(X − 0) (3.7)

Deze vergelijking kan ook vereenvoudigd worden tot:

Y = 0, 0036169X (3.8)

De digitale waarde 13822.38 levert een temperatuur van 50°C op.

Figuur 3.8: Volledige berekening

Alexander Dewaele 33

Page 47: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 4

OPC Server

4.1 Inleiding

De doelstelling van dit project is om de procesparameters te visualiseren. Hiervoor moeten deinputs en outputs van de PLC beschikbaar gesteld worden. Dit gebeurt aan de hand van eenOPC Server. Een OPC Server is de standaard om gegevens van de PCS laag uit te wisselenmet het hogere niveau, de MES laag.

De OPC Server[15] van Siemens heet “OPC.SimaticNET” en die OPC Server is bedoeld voordevice verbindingen via Profibus of Ethernet. Binnen dit project gebeurt de verbinding viaEthernet. Om de OPC Server operationeel te maken, dient men drie stappen uit te voeren:

1. De interface van het device configureren;

2. Het virtueel bussysteem samenstellen;

3. Configureren van de OPC Server.

4.2 De interface van het device configureren

Siemens levert de software “Simatic STEP7” om hun devices te configureren en te program-meren. Standaard staat de STEP7 interface op MPI omdat de PLC in het begin enkel kangeconfigureerd worden via MPI. De hardware configuratie van het device dient dus eerst viaMPI gedownload te worden. Als de CPU een ethernetaansluiting heeft of als de hardwareeen Ethernet CP kaart bevat, dan kan na het downloaden van de hardware configuratie deinterface van STEP7 veranderd worden naar TCP/IP. Het veranderen van de interface vanSTEP7 gebeurt via “Set PG/PC interface” in het menu “Options”. Vanaf dit moment kan dePLC geconfigureerd en geprogrammeerd worden over Ethernet en is de MPI kabel niet meernodig.

34

Page 48: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 4. OPC Server

Figuur 4.1: PG/PC Interface

De instellingen van de communicatie over TCP/IP bestaan uit een IP adres, subnetmasker eneen standaard gateway. Meer uitleg hierover in hoofdstuk 8. Zowel de interface van STEP7als van het device zijn nu ingesteld op Ethernet.

4.3 Het virtueel bussysteem samenstellen

De communicatie tussen het device en de OPC Server gebeurt aan de hand van een virtueelbussysteem. De “Station Configuration Editor” van Siemens maakt het mogelijk om hetvirtueel bussteem samen te stellen. De virtuele bus heeft standaard 32 insteekplaatsen en 1stationmanager. De stationmanager is de controller van het bussysteem. Het eerste dat moetgebeuren is de virtuele bus benoemen. Hier is de naam van de virtuele bus “NBIZ030”.Als eerste deelnemer van de virtuele bus, voegen we de OPC Server toe (OPC.SimaticNET).Het is niet verplicht van de OPC Server op index 1 toe te voegen maar dit wordt standaardzo gedaan. Een tweede deelnemer is de interface van de Ethernet kaart van de PC waarop deOPC Server zich bevindt. Zo kan een deelnemer via ethernet communiceren op de virtuelebus. Nu is de virtuele bus “NBIZ030” volledig stamengesteld.

Alexander Dewaele 35

Page 49: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 4. OPC Server

Figuur 4.2: Samenstelling virtuele bus

4.4 Configureren van de OPC Server

Het configureren van de OPC Server gebeurt opnieuw vanuit de applicatie “STEP7”. Deconfiguratie bestaat uit drie stappen:

1. Een station toevoegen;

2. De hardware configureren (representatief beeld);

3. Een verbinding toevoegen.

De configuratie van een Siemens OPC Server gebeurt zeer gelijklopend met de configuratievan een Siemens PLC device. Toch zijn er enkele belangrijke aandachtspunten. Een eerstebelangrijk aandachtspunt is dat de STEP7 interface niet meer naar de PLC mag verwijzenmaar wel naar de station manager. De reden hiervoor is dat de station manager de controllervan het virtueel bussysteem is. De STEP7 interface dient daarom veranderd te worden naar“PC internal(local)” in het menu “Set PG/PC Interface”.

4.4.1 Een station toevoegen

Om de virtuele bus te configureren dient eerst een “Simatic PC Station” te worden toegevoegd.Het is noodzakelijk om de “Simatic PC Station” dezelfde naam mee te geven als de virtuelebus, in dit geval “NBIZ030”.

Alexander Dewaele 36

Page 50: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 4. OPC Server

Figuur 4.3: Simatic Manager

4.4.2 De hardware configureren

De hardware configuratie van het virtueel bussysteem gebeurt onder “Configuration”. Hetnieuw geopened venster ziet er net hetzelfde uit als bij de hardware configuratie van een PLC.Maar nu is er een rack beschikbaar met 32 insteekplaatsen. Analoog als bij het samenstellenvan het bussysteem dient op de eerste index de juiste versie van de OPC Server geplaatstte worden. De tweede component is uiteraard opnieuw de Ethernet kaart. Deze is terug tevinden onder “CP Industrial Ethernet”, namelijk “IE General”.

Figuur 4.4: Configuratie van de OPC Server

De STEP7 voorstelling van de virtuele bus en het samengestelde virtueel bussysteem zijnnu identiek. De instellingen moeten wel nog naar de station manager van de virtuele busgedownload worden. Hiervoor moet de interface van STEP7 op “PC internal(local)” ingesteldstaan. Dit werd reeds in een vorige stap ingesteld.Na het downloaden wordt de virtuele bus opnieuw opgestart met de nieuwe configuratie. Nuis de virtuele bus actief.

Alexander Dewaele 37

Page 51: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 4. OPC Server

4.4.3 Een verbinding toevoegen

Dit is echter nog niet voldoende. De soort communicatie die over de bus geschiedt, dient noggespecifieerd te worden. Dit gebeurt door op “Connections” van het station “NBIZ030” teklikken. “NetPRO” verschijnt en stelt de verbindingen van het STEP7 project grafisch voor.De bedoeling is dat vanuit de OPC Server een verbinding wordt gemaakt met de Ethernetkaart van de PLC. Om een verbinding toe te voegen, voegen we een nieuwe verbinding toeaan de hand van “Insert New Connection”. Doordat het STEP7 project voor de OPC Serverniet hetzelfde project is waarin de PLC wordt geprogrammeerd, dient gekozen te worden vooreen unspecified connection. Bij de properties moet de verbinding een naam krijgen, bv. “Nat-gedeelte L1”. De interface is uiteraard “IE General” (Ethernet) en het adres van de partneris het IP adres van de Ethernet kaart van de PLC.De OPC Server is operationeel en de verbinding is gemaakt. Alles mag bewaard en gecompi-leerd worden.

Figuur 4.5: NetPRO

Figuur 4.6: S7 Connection

Alexander Dewaele 38

Page 52: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5

Proficy Historian

5.1 Inleiding

Proficy Historian[7][12] is een hoogperformant data-archiveringssysteem dat ontworpen is omtijdsgebaseerde informatie te verzamelen, op te slaan en weer te geven. Proficy Historian:

Archiveert en maakt grote datahoeveelheden beschikbaar;

Verwerkt grote datahoeveelheden aan grote snelheden;

Verspreidt gemakkelijk verschillende componenten over het netwerk;

Buffert data als de connectie onderbroken is.

Een Historian database is vaak noodzakelijk om accuraat procesdata te archiveren en tegebruiken. Historische data is essentieel om voortdurend het proces te controleren en teverbeteren en om de efficientie van het proces te verbeteren.

5.2 Datacollectoren

5.2.1 Inleiding

Proficy Historian maakt gebruik van verschillende collectoren om de data te verzamelen. Debelangrijkste zijn:

The calculation collector Deze collector biedt het voordeel dat er bewerkingen kunnenuitgevoerd worden met de reeds bekomen data.

The file collector Dit is een speciale collector die de mogelijkheid biedt om bestanden (CSV“Comma Separated Values” of XML “eXtended Markup Language”) te importeren. Zokunnen tags en data voor deze tags toegevoegd worden. De configuratie van bestaandetags kan ook op deze manier gebeuren. Deze collector is heel handig om het toevoegenvan tags te automatiseren.

39

Page 53: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

The OPC collector Deze collector maakt gebruik van OPC Servers om data te verzamelen.

Tijdens de installatie van Proficy Historian worden alle beschikbare OPC Servers met hun IDgedetecteerd en gepresenteerd in een lijst. Dan kunnen onmiddellijk meerdere OPC collectorengeconfigureerd worden. Later gebeurt de configuratie van de collectoren aan de hand van deProficy Historian Administrator. De configuratie van de collectoren is beschreven in deel 5.5.4op pagina 47.

Belangrijke opmerking: De OPC collector ondersteunt momenteel DCOMniet. De collector moet dus geınstalleerd zijn op dezelfde PC waar OPC Server isgeınstalleerd!

5.2.2 Architectuur

Dit project maakt enkel gebruik van de OPC collector. De architectuur ziet er als volgt uit:

Figuur 5.1: Architectuur Proficy Historian

De geınstalleerde OPC collector gebruikt de OPC Servers om de waardes (temperaturen,drukken, recepten, ...) op te halen uit de PLC. Dit gebeurt over het netwerk. Daarna stuurt deOPC collector deze waardes door naar de Historian database waarna de Historian database dewaardes achiveert. Als de verbinding tussen de collector en de Historian database onderbrokenwordt, dan buffert de collector de gegevens eerst en stuurt de collector de gegevens door zodrade verbinding opnieuw is hersteld. De grootte van de buffer is uiteraard begrensd. Eenmaalde buffer vol is, gaan toch gegevens verloren.

Alexander Dewaele 40

Page 54: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

5.3 Tags

Tags zijn de OPC items (in dit project worden enkel OPC collectoren gebruikt) waarvan deHistorian database data capteert. Een tag is gedefinieerd door een bepaalde collector, eensource adres en een datatype. Deel 5.5.3 beschrijft het toevoegen van een tag en de instellingenervan.

5.4 Archieven

5.4.1 Algemeen

De Historian database slaat de data van de tags op in archiefdelen. Proficy Historian werktniet met een groot archief maar verdeelt de data over verschillende archiefdelen. Bij hetaanmaken van een nieuw archiefdeel, wordt het vorige deel gesloten en read-only gemaakt.Dit gebeurt om de data veilig te stellen. Als er een fout optreedt, dan zal enkel het huidigearchiefdeel misschien corrupt zijn. De andere delen blijven onbeschadigd. De grootte van dearchiefdelen kan vrij gekozen worden. Meer informatie over de instellingen van de archievenin deel 5.5.5 op pagina 48.

5.4.2 Archiefbeheer

Om de grootte van het archief te beperken is het belangrijk om te verstaan hoeveel data erwordt gearchiveerd binnen een bepaalde periode. Verschillende factoren beınvloeden de groeivan het archief:

Aantal gearchiveerde tags;

Pollingfrequentie (de tijdsduur tussen twee verschillende waardes van een tag. bv. vijfseconden);

Instelling van de compressie (compressie beperkt het aantal gearchiveerde waardes);

Data types (bv. een integer is twee bytes terwijl een real (decimaal getal) vier bytes is.Een archief met enkel reals zal dus twee maal zo groot zijn).

Voorbeeld voor de compressie:Vijf van honderd beschikbare waarden worden gearchiveerd = 95/100 of 95%compressie.

Door in te spelen op deze factoren kan het archief beperkt worden. Meer specifiek:

Verklein de pollingfrequentie;

Vergroot de compressieband;

Verklein het aantal gearchiveerde tags.

Alexander Dewaele 41

Page 55: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

5.4.3 De groei van het archief schatten

Om de grootte van het archief te bepalen kan de volgende formule gebruikt worden:

#tags ∗ Waardes

Seconden∗ (1− Comp%) ∗ Bytes

Waarde=

Bytes

Seconde(5.1)

De eenheid van de uitkomst van formule 5.1 is BytesSeconde . Om eenvoudiger te kunnen rekenen

is de volgende formule beter:

#tags ∗ Waardes

Seconden∗ (1− Comp%) ∗ Bytes

Waarde∗ Seconden

Dag∗ MB

Bytes=

MB

Dag(5.2)

Als bepaalde constanten worden ingevuld in formule 5.2 dan bekomen we de eenvoudigeformule:

#tags ∗ Waardes

Seconden∗ (1− Comp%) ∗ Bytes

Waarde∗ 3600 ∗ 24 ∗ 1

1024 ∗ 1024=

MB

Dag(5.3)

Een rekenvoorbeeld om formule 5.3 te begrijpen:

Aantal tags: 10 000

Pollingfrequentie: 2 seconden

Compressie: 90%

Data type: Integer (Bytes/Waarde = 2)

Duration: Jaar

10000 ∗ 12∗ (1− 90/100) ∗ 2

1∗ 3600 ∗ 24 ∗ 1

1024 ∗ 1024∗ 365 = 30075

MB

Jaar(5.4)

In het voorbeeld zal het archief na een jaar ongeveer 29,4 gigabyte groot zijn. Als de groottevan een archiefdeel ingesteld is op 100 MB, dan zal het volledige archief uit 301 delen bestaan.

5.5 Proficy Historian Administrator

5.5.1 Algemeen

De Historian Administrator is de interface voor de Proficy Historian database. De HistorianAdministrator bezit de volgende hoofdfuncties:

Visualiseren van de systeemstatus;

Onderhoud en configuratie van het archief;

Backup en restore;

Alexander Dewaele 42

Page 56: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

Onderhoud en configuratie van de collectoren;

Onderhoud en configuratie van de tags;

Doorzoeken van de berichten (messages).

De Historian Administrator biedt deze functies aan verspreid over vijf schermen. (Main, Tags,Collectors, Archives en Messages)

Opmerking: De beschikbaarheid van de verschillende schermen en functieszijn afhankelijk van de toegang van de ingelogde gebruiker.

5.5.2 Main

Het scherm “Main” geeft de status van het huidige archief, de status van de collectoren,berichten en waarschuwingen weer. Als er problemen optreden is dit scherm van uiterstbelang om een eerste diagnose te maken.Het scherm is onderverdeeld in drie grote delen.

Figuur 5.2: Proficy Historian Administrator: Main

Archiefstatus

Dit deel visualiseert algemene informatie over het archief. De verschillende gegevens zijn:

Archive compression: De compressie van de gegevens bij het archiveren;

Free space: De beschikbare ruimte in het huidige archief in MB;

Alexander Dewaele 43

Page 57: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

Consumption rate: Hoeveel ruimte de gearchiveerde gegevens per dag innemen;

Estimated days to full: Aantal dagen dat het nog zal duren eer het huidige archief zijnmaximum bereikt;

Active tags: Aantal waardes die de Historian database archiveert;

Licensed tags: Aantal waardes die de Historian database kan archiveren met de huidigelicensie;

Active users: Aantal actieve gebruikers op de Historian database;

Licensed users: Aantal maximum simultaan actieve gebruikers op de Historian databasemet de huidige licensie.

Collectors

Dit deel informeert de gebruik over de collectoren waarbij de status van de collector hetbelangrijkste is. Een ander belangrijke eigenschap is de compressie van elke collector. Com-pressie van gegevens is het opslaan van gegevens in minder bits dan de oorspronkelijke aantalbits die de gegevens bevatten. Als in dit document “van de” telkens wordt vervangen door“vd”, dan zou het document minder groot zijn. Dit is een vorm van compressie.

Alerts

Dit deel geeft de waarschuwingen weer. Waarschuwingen ontstaan als er onregelmatighedenoptreden. Bijvoorbeeld bij het wegvallen van een verbinding met een collector.

Meerdere Proficy Historian servers

Met de Historian Administrator kan enkel een Historian server tegelijk bekeken worden. Om teveranderen van Historian server dien je te klikken op “Main”. Het volgende venster verschijnt.Dit venster biedt de mogelijkheid om in te loggen op een andere Historian server.

Alexander Dewaele 44

Page 58: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

Figuur 5.3: Proficy Historian Server Login

Opmerking: Om simultaan verschillende Historian servers te bekijken kan deHistorian Administrator echter meerdere keren opgestart worden.

5.5.3 Tags

Het scherm “Tags” beheert welke tags, in dit project OPC items, de Historian database ar-chiveert. De tags die de Historian database archiveert bevinden zich links in het scherm.Bovenaan het scherm is het mogelijk om tags manueel toe te voegen of om tags van verschil-lende collectoren toe te voegen.

Figuur 5.4: Proficy Historian Administrator: Tags

Het scherm bevat ook enkele tabs. Om te beginnen is er de tab “General”. De tab “General”

Alexander Dewaele 45

Page 59: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

biedt de mogelijkheid om de tags te benoemen en om de tags een eenheid (Engineering Unit1)en commentaar mee te geven.Met de tab “Collection” kan de gebruiker definieren waar de Historian database de waardevan de tag kan bekomen. Om verder te gaan met het voorbeeld van de sensor in de werk-tank uit hoofdstuk 3. De OPC collector die de waarde van de sensor beschikbaar stelt, isNBIZ030 OPC OPC SimaticNET en het bronadres is S7:[NatGedeelte L1]DB30,REAL368.Het bronadres bestaat uit verschillende delen:

S7: Definieert dat het om een STEP7 verbinding gaat (zie hoofdstuk 4);

NatGedeelte L1: Naam van de STEP7 verbinding met de PLC (zie hoofdstuk 4);

DB30: Datablock waar de waarde zich bevindt (zie hoofdstuk 3);

REAL368: Plaats in de datablock waar de waarde zich bevindt (zie hoofdstuk 3).

Ook definieert de gebruiker hier welk data type de waarde zal zijn. De verschillende datatypeszijn: integers, double integers, floats, double floats en strings.

Figuur 5.5: How to add an OPC tag

Heel belangrijk zijn de “Collection Options”. Deze opties bepalen het interval (polling fre-quentie) die de collector zal hanteren. Dus om de hoeveel tijd de collector de waarde van detag zal opvragen. Bijvoorbeeld om de vijf seconden met een offset van 0 seconden. De offsetwordt gebruikt als de waarde van een bepaalde tag later moet worden opgevraagd dan dewaarde van een andere tag.De tab “Scaling” heeft als functie om waardes te converteren. Een analoge sensor, die eentemperatuur meet, geeft bijvoorbeeld een stroom tussen 4mA en 20mA weer. In de PLCwordt dit dan een digitale waarde bijvoorbeeld tussen 0 en 27 648. Als in het programma vande PLC deze waarde niet wordt omgezet naar een temperatuur in , dan is het mogelijk ommet de tab “Scaling” deze digitale waarde om te zetten naar een temperatuurswaarde. In ditproject gebeurt de conversie telkens in de PLC en niet met de functie “scaling”.De tab “Compression” is heel belangrijk bij het besparen van ruimte op de harde schijf van deserver. Een temperatuurswaarde wordt bijvoorbeeld om de 5 seconden gelogd en die waardeschommelt tussen 29.8 en 30.1 gedurende een uur. Zonder compressie zal de Historiandatabase 720 = 60∗60

5 waardes in het archief wegschrijven. Aangezien 29.8 een float is, neemt

1De “Engineering Unit” is van uiterst belang bij het maken van de grafieken van de Report Tool.

Alexander Dewaele 46

Page 60: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

1 waarde 4 bytes in. Deze tag voor 1 uur loggen, neemt dus 2880 = 720 ∗ 4 bytes in beslag.Als de absolute compressieband nu 0.5 is. Dan zal de temperatuurswaarde 1 enkele maalgelogd worden doordat de waardes maximum 0.3 verschillend zijn. Dit is kleiner dan deingestelde 0.5. In 1 uur zal deze tag dus maar 4 bytes van het archief in beslag nemen. Ditis 0.1% van de oorspronkelijke grootte zonder compressie. Compressie is een uiterst sterkefunctie om ervoor te zorgen dat het archief niet onnodig groot wordt!

5.5.4 Collectors

Het scherm “Collectors” beheert de beschikbare collectors. De lijst links geeft weer welkecollectoren er actief zijn. Bovenaan het scherm is er een optie om collectoren toe te voegen.

Figuur 5.6: Proficy Historian Administrator: Collectors

De status van de collector is terug te vinden in de tab “General”. De tab beschrijft hoeveelwaardes de collector verzamelt en doorzendt naar de Historian database. De gebruikte buf-fergrootte van de collector is hier gespecifieerd.Het belangrijkste in de tab “Configuration” is de “Read Mode”. Als de read mode op “Ca-che” ingesteld is, dan worden de waardes rechtstreeks uit de OPC Server overgenomen endoorgezonden naar de Historian database. Maar is de read mode ingesteld op “Device” danzal de OPC Server eerst de waarde opnieuw uit de PLC ophalen en dan pas doorsturen naarde OPC collector, dit is uiteraard meer belastend voor de PLC. De OPC collector zendt dezewaarde dan op zijn beurt door naar de Historian database. Een ander belangrijke instelling is“Configuration Changes”. Als dit ingesteld staat op “Made-On-Line” dan neemt de collectorde instellingen onmiddellijk over maar is dit ingesteld op “Made after collector restart” dan

Alexander Dewaele 47

Page 61: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

zullen de instellingen van de collector maar wijzigen na een restart.De belangrijkste instelling voor de tab “Tags” is de “Default Collection”. Deze instellingbepaalt de standaardwaarde van het interval waarmee de collector de waardes van een nieuwetag zal opvragen. Natuurlijk bestaat de mogelijkheid om dit nadien voor elke tag afzonderlijkte veranderen. Deze instelling is enkel de standaardinstelling voor een nieuw toegevoegde tag.Hetzelfde geldt voor de instelling van “Default Compression”. Deze instelling zal standaardzijn voor een toegevoegde tag maar kan voor elke tag individueel veranderd worden.

5.5.5 Archives

Het scherm “Archives” geeft de instellingen van de archieven weer. De lijst links toont deactieve archieven. Als de Historian database een query krijgt, zijn dit de archieven van dedatabase die de Historian database doorzoekt.

Figuur 5.7: Proficy Historian Administrator: Archives

De tab “Details” toont de status van het archief. Bij “Resources” is het mogelijk de groottevan het archief te veranderen (de grootte kan natuurlijk niet kleiner ingesteld worden dan hetreeds verbruikte volume).In de tab “Global Options” bevindt zich het onderdeel “Archive Queries”. De “MaximumQuery Time” is het aantal seconden dat een query maximaal mag duren. Als de query langerduurt, dan beeindigt de Historian database de query. Met de instelling “Maximum QueryIntervals” zorgt de Historian database ervoor dat de query niet meer dan het ingegeven aantalruwe gegevens oplevert. Als er meer gegevens ter beschikking zijn, dan faalt de query en zendtde Historian database geen data door.

Alexander Dewaele 48

Page 62: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 5. Proficy Historian

Opmerking: Dit geldt niet voor gefilterde data (maximum, minimum, aver-age, total, ...) maar enkel voor ruwe data!

Het volgende onderdeel is “Archive Creation”. Dit bepaalt of de Historian database automa-tisch een nieuw archief begint als het vorige archief gevuld is. De archieven hebben namelijkeen default size. Dit als voorzorg mocht er een archief corrupt zijn, dat niet alle data zouverloren gaan. Als de optie “Overwrite Old archives” enabled is, dan heeft de Historian da-tabase de toestemming om oude archieven te overschrijven. Het is van cruciaal belang dat erbackups worden gemaakt als deze optie enabled is. Anders gaat historische data verloren. Inhet tabblad “Details” kan de gebruiker backups nemen van de archieven.

5.5.6 Messages

Het scherm “Messages” is het meest gebruikt door de beheerders. Hier kunnen de beheerdersnagaan wat er zich afspeelt. Ze kunnen bijvoorbeeld nagaan wanneer een bepaalde collectorin de fout ging. Maar ook wanneer een bepaalde gebruiker inlogde en welke wijzigingen dezedoorvoerde. Aan de hand van de messages kunnen de beheerders alles in detail volgen zoalste zien op figuur 5.8.

Figuur 5.8: Proficy Historian Administrator: Messages

Alexander Dewaele 49

Page 63: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 6

Oracle

Group Vandemoortele produceert verscheidene voedingsproducten. De vele recepten voorde producten worden bijgehouden in Oracle databases. Elke fabriek heeft zijn eigen Oracledatabase.De doelstellingen van het project specifieren dat het moet mogelijk zijn om verschillendebatches van hetzelfde recept met elkaar te vergelijken. Hiervoor moet de applicatie uiteraardde mogelijkheid hebben om gegevens uit de Oracle databases op te vragen.

6.1 Databases

Databases[14] worden overal in de industrie gebruikt voor de vele voordelen:

Heel grote volumes aan gegevens;

Gestructureerde opslag;

Efficient;

Multi-user;

Betrouwbaar;

Goede security.

Er zijn echter verschillende soorten databases:

Hierarchische databases (vb. XML: Hoofdnode, childnodes, attributen, ...);

Netwerk databases;

Relationele databases (vb. Access, MySQL, SQL Server, Oracle, DB2, ...);

Object databases.

50

Page 64: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 6. Oracle

Een Oracle database is een relationele1 database.

Figuur 6.1 is een eenvoudige voorstelling van relationele databases.

Figuur 6.1: Relationele Database

Een relationele database bestaat uit twee grote delen. De eigenlijke database met de gegevensen het DBMS “DataBase Management System”. Het gebruik van een DBMS biedt een aantalgrote voordelen:

De opgevraagde gegevens worden gestructureerd weergegeven in een tabel;

Het DBMS beheert het formaat2 van de opgeslagen gegevens;

Door het gebruik van een DBMS is de taal om verrichtingen uit te voeren gestandaar-diseerd, namelijk SQL (zie hoofdstuk 7).

Er bestaan twee verschillende implementaties van het DBMS:

1. File georienteerde systemen (Desktop databases) (vb. Access);

2. Server georienteerde systemen (Client-server databases) (vb. MySQL, SQL Server,Oracle, ...).

6.2 Connectie

Om te connecteren met een database is een connectiestring vereist. De connectiestring[2] omte connecteren met een Oracle database ziet er als volgt uit (zie ook hoofdstuk 9):

Data Source=IZEGEM;User Id=Username;Password=passwd;Integrated Security=no;

Aangezien Oracle een server georienteerd systeem is, bevindt de database zich ergens op eenserver in het netwerk. De Oracle database is dus te bereiken via een IP adres en een TCPpoort. De connectiestring bevat echter geen IP adres en geen TCP port. Maar het IP adresen de TCP poort van de Oracle database zitten vervat in de “Data Source”. Alvorens de

1Relationeel = verzamelingenleer. Relationele databases werken volgens een wiskundig model.2Het formaat is systeemafhankelijk.

Alexander Dewaele 51

Page 65: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 6. Oracle

“Data Source” kan worden ingevuld, dienen er nog een twee bestanden aangevuld te worden.Een bestand van de Oracle client en een bestand van het windowssysteem.

Het bestand van de Oracle client heet “tnsnames.ora” en bevindt zich in de directory “%ORA-CLE HOME%\network\admin\” met “%ORACLE HOME%” bv. “C:\oracle\ora10g”. Watdit precies is, zal pas duidelijk zijn na de installatie van de Oracle client.De bedoeling is dat de verschillende locaties (= Data sources) van de Oracle databases in ditbestand worden ingevuld. Om de Oracle database in Izegem beschikbaar te maken, dient devolgende tekst te worden toegevoegd:

1 IZEGEM =

(DESCRIPTION =

3 (ADDRESS LIST=

(ADDRESS = (PROTOCOL = TCP) (HOST = IZEGEM2) (PORT=4268))

5 )

(CONNECTDATA =

7 (SERVICE NAME = ora c l e )

(SERVER = DEDICATED)

9 )

)

“Address List” is een onderdeel van de beschrijving. In dit onderdeel wordt duidelijk dat hetprotocol TCP(/IP) is. De instellingen voor de “host” en de “port” zijn ook beschikbaar. Hetonderdeel “Connect Data” beschrijft dat het over een Oracle database gaat.Om van TCP/IP te kunnen spreken, is er een IP adres en een TCP poort nodig. Op ditmoment is er geen IP adres beschikbaar maar wel een host. Om de host te definieren, is hetnodig om een tweede bestand te wijzigen.

Het tweede bestand is het bestand “hosts” en dit bestand bevindt zich in de directory“C:\windows\system32\drivers\etc\”. In het bestand staan de beschikbare hosts. Om “IZE-GEM2” als host beschikbaar te maken, dient onderaan het bestand “5.150.1.30 IZEGEM2”toegevoegd te worden.

Bij het gebruik van de oorspronkelijke connectiestring, zoekt de Oracle client naar de datasource “IZEGEM” in het bestand “tnsnames.ora”. In het bestand staat dat het protocolTCP/IP is en dat de Oracle database zich bevindt op de host “IZEGEM2” en op poort4268. Daarna wordt het bestand “hosts” doorzocht naar het IP adres dat gepaard gaat metde host “IZEGEM2”. Het IP adres en de TCP poort van de Oracle database zijn gekend(5.150.1.30:4268), de connectie kan gemaakt worden.

Opmerking: De host is “IZEGEM2”. Iedere Oracle database is gemirrored.Zo is er een backup als er iets foutloopt met de eerste database. De software indit project gebruikt telkens de tweede Oracle database.

Alexander Dewaele 52

Page 66: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7

Structured Query Language

SQL[14] “Structured Query Language” is de gestandaardiseerde taal om verrichtingen uit tevoeren met een relationele database. Het RDBMS verwerkt het SQL statement en past dedatabase aan of geeft een resultatentabel weer.

7.1 Algemeen

SQL heeft verschillende subsets:

DML (= Data Manipulating Language);

DDL (= Data Definition Language);

DCL (= Data Control Language).

Dit project gebruikt enkel de subset DML. Deze subset wordt namelijk gebruikt bij hetopvragen en wijzigen van data. De subset DML betaat uit vier statements:

1. SELECT statement (Gegevens opvragen);

2. INSERT statement (Gegevens toevoegen);

3. DELETE statement (Gegevens verwijderen);

4. UPDATE statement (Gegevens aanpassen).

7.2 Select statement

Het SELECT statement is van toepassing als een applicatie gegevens uit de database nodigheeft. Het resultaat van een SELECT statement is een resultatentabel.

53

Page 67: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7. Structured Query Language

Figuur 7.1: SQL SELECT Statement[14]

Het volledige SELECT statement ziet er als volgt uit:

SELECT clause FROM clause [WHERE clause][GROUP BY clause [HAVING clause]] [ORDER BY clause]

Voorbeeld: Om verder te kunnen gaan met het SELECT statement, moet eerst een voor-beeldtabel gedefinieerd worden. Neem aan dat de tabel “VDM Werknemers” alle werknemersvan Vandemoortele voorstelt en dat deze de kolommen “ID”, “Voornaam”, “Familienaam”en “Telefoonnr” bevat. Tabel 7.1 visualiseert dit.

VDM Werknemers

ID Voornaam Familienaam Telefoonnr

0 Jef Winters +324755264731 Tim Delente +32568675422 Bram Somers +324775369513 An Gerst +3251845726

Tabel 7.1: Voorbeeldtabel

Om de benodigde gegevens te bekomen, gebruikt de applicatie het volgende SELECT state-ment:

SELECT Voornaam as VN, Telefoonnr as Tel FROM VDM WerknemersWHERE VN LIKE ’%m’ ORDER BY VN ASC

De bekomen resultatentabel zal twee kolommen bevatten, namelijk de kolom “VN” (= Voor-naam) en de kolom “Tel” (= Telefoonnr) zoals gedefinieerd in de SELECT clause. Door hetgebruik van “as” hebben de kolom een alias gekregen. Die alias kan nu verder in het statementgebruikt worden. De FROM clause beschrijft in welke tabel de gegevens zich bevinden.Om de gegevens te filteren, beschikt het SELECT statement over de WHERE clause. Inde WHERE clause wordt LIKE gebruikt bij patroononderzoek. In SQL zijn twee wildcardsmogelijk. stelt een karakter voor en % stelt meerdere karakters voor. In het voorbeeldstaat “VN LIKE ’%m”’. In tabel 7.1 zullen twee rijen voldoen. Namelijk Tim en Bram. Deresultatentabel zal dus twee rijen bevatten.

Alexander Dewaele 54

Page 68: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7. Structured Query Language

Als laatste staat er ook nog ORDER BY in de SELECT statement. ORDER BY wordt ge-bruikt om de resultatentabel te sorteren. De resultatentabel zal gesorteerd zijn volgende dekolom “VN” en zal ascending (A-Z) gesorteerd zijn. Tabel 7.2 stelt de resultatentabel voor.

Resultatentabel

VN Tel

Bram +32477536951Tim +3256867542

Tabel 7.2: Resultatentabel van SELECT statement

7.3 Insert statement

Waar het SELECT statement een resultatentabel oplevert, levert het INSERT statement nietsop. Het INSERT statement voegt enkel gegevens toe aan de database.

Figuur 7.2: SQL INSERT statement[14]

Het INSERT statement ziet er als volgt uit:

INSERT INTO clauseVALUES clause

Voorbeeld: Neem aan dat we tabel 7.1 verder willen uitbreiden. Group Vandemoorteleheeft een nieuwe werknemer, Alexander Dewaele, aangenomen en de personeelsdienst wil dewerknemer toevoegen aan de database zodat hij uiteraard ook zijn cheque ontvangt. Zijntelefoonnummer is +32412345678. Om dit te verwezelijken wordt het volgende INSERTstatement gebruikt.

INSERT INTO VDM Werknemers(Voornaam, Familienaam, Telefoonnr)VALUES (’Alexander’, ’Dewaele’, ’+32412345678’)

Opmerking: De kolom ID wordt niet meegegeven, omdat deze automatischwordt genummerd.

Alexander Dewaele 55

Page 69: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7. Structured Query Language

Het statement specifieert in welke tabel gegevens worden toegevoegd, plus ook in welke kolom-men. Daarna worden de waardes van de kolommen meegegeven. Als het DBMS het INSERTstatement heeft uigevoerd zal de tabel van de werknemers een extra rij bezitten.

VDM Werknemers

ID Voornaam Familienaam Telefoonnr

0 Jef Winters +324755264731 Tim Delente +32568675422 Bram Somers +324775369513 An Gerst +32518457264 Alexander Dewaele +32412345678

Tabel 7.3: Tabel na INSERT statement

7.4 Update statement

Ook het UPDATE statement levert geen resultaat op maar wijzigt wel gegevens in de data-base. Neem dus op tijd en stond backups van de databases.

Figuur 7.3: SQL UPDATE statement[14]

Het UPDATE statement heeft drie delen:

UPDATE clauseSET clause[WHERE clause]

Voorbeeld: Veronderstel dat, ondanks de economische crisis, Jef Winters een telefoon krijgtvan het bedrijf zodat hij altijd bereikbaar is. Maar daardoor vervalt zijn oud telefoonnummeren krijgt hij een nieuw, namelijk +32498654321. De personeelsdienst verneemt dit en wil detabel van de werknemers aanpassen. Dit gebeurt met het volgende UPDATE statement.

UPDATE VDM WerknemersSET Telefoonnr = ’+32498654321’WHERE Voornaam = ’Jef’ AND Familienaam = ’Winters’

Alexander Dewaele 56

Page 70: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7. Structured Query Language

Het UPDATE statement beschrijft in het UPDATE-gedeelte welke tabel het statement zalwijzigen. Het SET-gedeelte geeft weer welke waarde een bepaalde kolom zal krijgen, hier zalhet telefoonnr +32498654321 worden. En tenslotte deelt het WHERE-gedeelte mee welkerijen er zullen beınvloed worden. In dit voorbeeld zal het enkel de rij zijn met de naam JefWinters. Als dit UPDATE statement wordt doorgevoerd zal tabel 7.3 er als volgt uitzien.

VDM Werknemers

ID Voornaam Familienaam Telefoonnr

0 Jef Winters +324986543211 Tim Delente +32568675422 Bram Somers +324775369513 An Gerst +32518457264 Alexander Dewaele +32412345678

Tabel 7.4: Tabel na UPDATE statement

Waarschuwing: Het volgende UPDATE statement wijzigt onherroepelijk de telefoonnum-mer van iedere werknemer in “+32498654321”. Vergeet nooit het WHERE-gedeelte want ditis immers optioneel.

UPDATE VDM WerknemersSET Telefoonnr = ’+32498654321’

7.5 Delete statement

Het DELETE statement bestaat om items uit de database te verwijderen.

Figuur 7.4: SQL DELETE statement[14]

Het DELETE statement is het meest eenvoudige statement maar ook het gevaarlijkst. Hetstatement heeft enkel een verplicht onderdeel.

DELETE FROM clause[WHERE clause]

Alexander Dewaele 57

Page 71: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 7. Structured Query Language

Voorbeeld: Een maand nadat Jef Winters een telefoon van het bedrijf kreeg, ontvangt zijnbaas een buitensporig hoge telefoonrekening. Jef Winters wordt op staande voet ontslagen.De personeelsdienst verwijdert hem onmiddellijk uit de database met werknemers met hetDELETE statement.

DELETE FROM VDM WerknemersWHERE Voornaam = ’Jef’ AND Familienaam = ’Winters’

Dit zorgt ervoor dat Jef uit de database verwijderd is en dat de tabel een werknemer minderbevat.

VDM Werknemers

ID Voornaam Familienaam Telefoonnr

1 Tim Delente +32568675422 Bram Somers +324775369513 An Gerst +32518457264 Alexander Dewaele +32412345678

Tabel 7.5: Tabel na DELETE statement

Waarschuwing: Het volgende DELETE statement verwijdert iedere werknemer uit de tabel.Dit statement levert een lege tabel op. Vergeet nooit het WHERE-gedeelte want dit is immersoptioneel.

DELETE FROM VDM Werknemers

Alexander Dewaele 58

Page 72: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8

TCP/IP

8.1 Inleiding

TCP/IP[1] “Transmission Control Protocol / Internet Protocol” is samen met Ethernet destandaard om gegevens via het Internet of via een lokaal netwerk (LAN: Local Area Network)uit te wisselen. De bedoeling van TCP/IP binnen de industrie is om informatie verspreidover de gehele fabriek beschikbaar te maken in ieder systeem. Bepaalde nieuwe veldbussenzijn de dag van vandaag gebaseerd op Ethernet en IP adressering. Denk maar aan Profineten EtherCAT. Hier wordt Ethernet gebruikt in een real-time omgeving.

8.2 OSI-model

Het OSI-model (of ISO-OSI) staat voor “ISO Reference Model for Open Systems Interconnec-tion”. Het is een standaard die beschrijft hoe gegevens over een netwerk worden verstuurd.Het model bestaat uit zeven lagen. Het model is opgedeeld om ervoor te zorgen dat verschil-lende technologieen van verschillende organisaties over de wereld toch compatibel blijven. Deverschillende lagen zijn: Toepassing, Presentatie, Sessie, Transport, Netwerk, Datalink enFysiek.

59

Page 73: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

Figuur 8.1: OSI model en TCP/IP

Figuur 8.1 is de vergelijking tussen het OSI model en Ethernet TCP/IP.

1. Fysieke laag: Laag 1 stelt de netwerkhardware voor. Voor Ethernet is dit de gekende“CAT5” kabel.

2. Datalinklaag: Laag 2 specifieert hoe de dataframes over het netwerk zullen verstuurdworden. In deze laag vindt ook de foutafhandeling plaats. Een correctiemechanismezorgt ervoor dat de gegevens correct aankomen bij de ontvanger. Ethernet handhaafthet protocol CSMA/CD “Carrier Sense Multiple Access/Collision Detection”. Indientwee netwerkdeelnemers simultaan gegevens verzenden over het netwerk, ontstaat ereen botsing (collision). De botsing wordt gedetecteerd en het back-off principe treedtin werking. Beide deelnemers wachten een random tijd af voor ze opnieuw een pogingondernemen om gegevens te verzenden. Vindt er opnieuw een botsing plaats, danvergroot dit tijdsinterval. Ethernet maakt ook gebruik van een fysiek adres, namelijkhet MAC adres. (bv. 00-50-8D-ED-61-B3)

3. Netwerklaag: De netwerklaag staat in voor de adressering. Laag 3 stippelt de routevoor de verzonden dataframes doorheen het netwerk uit. De netwerklaag voorkomt ookopstoppingen binnen het netwerk. Dit is mogelijk doordat verschillende dataframes, diesamenhoren, via een andere route toch hun bestemming bereiken. Het protocol IP staatin voor deze logische adressering, namelijk met IP adressen. (bv. 192.168.0.33)

4. Transportlaag: Laag 4 bouwt een logische verbinding op tussen de deelnemers. Dezelaag is verantwoordelijk voor het samenvoegen van de verschillende dataframes, die nietnoodzakelijk in de juiste volgorde hun bestemming bereiken. Laag 4 staat in voor een

Alexander Dewaele 60

Page 74: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

correcte dataoverdracht. Het protocol TCP realiseert dit. Dataframes krijgen een ID eneen TCP poort (bv. 80). De dataframes worden in de juiste volgorde geplaatst aan dehand van het ID. De TCP poort zorgt ervoor dat de dataframes bij de juiste applicatieterecht komen.

5. Sessielaag

6. Presentatielaag

7. Applicatielaag

8.3 Adressering

Figuur 8.2 visualiseert de volledige adressering van Ethernet TCP/IP. Ethernet heeft hetfysiek MAC adres, IP gebruikt het logisch IP adres om de dataframes doorheen het netwerkte leiden en TCP gebruikt een TCP poort zodat het dataframe bij de correcte applicatieterecht komt. Een socket is een IP adres samen met een TCP poort. In dit voorbeeld is desocket 192.168.0.33:80. De poort 80 is gereserveerd voor het HTTP protocol. Het dataframezal dus hoogstwaarschijnlijk voor een webbrowser bestemd zijn.

Figuur 8.2: Adressering TCP/IP[13]

Iedere deelnemer op een netwerk heeft een IP adres. Een IP adres bestaat uit 32 bits enbestaat uit een netwerkgedeelte (prefix of Net ID) en een hostgedeelte (suffix of Host ID).IPv41 bestaat uit vijf klasses. De verschillen tussen deze klasses is de waarde van de beginbitsvan het Net ID, de grootte van het Net ID en de grootte van het Host ID.

1Dit is de huidige versie van het IP-protocol, IPv6 is ontstaan door schaarste aan mogelijke adressen.

Alexander Dewaele 61

Page 75: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

Klasse Beginbits Net ID Host ID

A 0 1 Byte 3 BytesB 10 2 Bytes 2 BytesC 110 3 Bytes 1 Bytes

D 1110 MulticastE 1111 Gereserveerd

Tabel 8.1: Klasses IP adressen

Door gebrek aan IP adressen werd het subnetmasker gecreeerd. Het subnetmasker bestaatook uit 32 bits en bepaalt welke bits van het IP adres bij het Net ID horen. Zo werd afgestaptvan de klasses.bv. Subnetmasker: 255.255.255.0 ⇒ 1111 1111.1111 1111.1111 1111.0000 0000De eerste 24 bits van het IP adres bepalen het Net ID. Bij dit netwerk zullen de eerste driegetallen van het IP adres altijd hetzelfde zijn, namelijk het Net ID. Twee voorbeelden vanzo’n IP adres van hosts zijn 192.168.123.100 en 192.168.123.101.

8.4 Hardware

Er zijn drie netwerkelementen om verschillende segmenten aan elkaar te koppelen. Een repe-ater kopieert alles wat toekomt op een ingang naar de uitgang. Een repeater breidt dus eenLAN segment uit. Een repeater is helemaal niet intelligent en bevindt zich op de fysieke laag.Een switch is intelligenter en bevindt zich op de datalinklaag. De switch houdt per poort eentabel met de MAC adressen van de deelnemers op die poort bij. Als een dataframe toekomtop een bepaalde poort, controleert de switch het MAC adres. Daarna herhaalt de switch hetdataframe enkel op de poort waarop de deelnemer met dat MAC adres zich bevindt. Eenswitch zorgt voor verschillende LAN segmenten. Al die verschillende LAN segmenten vormeneen subnet.Routers koppelen verschillende subnetten aan elkaar. Een subnet wordt gekenmerkt door eenspecifiek IP adres (Net ID). De router bevindt zich dus op de netwerklaag. Doordat de routersubnetten aan elkaar koppelt, heeft een router altijd twee IP adressen. Als een dataframe eenrouter passeert dan controleert de router dit dataframe op IP adres. Aan de hand van dit IPadres weet de router op welk subnet hij het moet doorsturen. Als het IP adres bij geen enkelgekoppeld subnet past, dan stuurt de router het op zijn beurt door naar de volgende router.

Alexander Dewaele 62

Page 76: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

Figuur 8.3: Netwerkelementen

8.5 Routering

Bij TCP/IP is een host gekenmerkt door drie gegevens:

1. Het IP adres binnen het lokaal netwerk;

2. De standaardgateway: De router van dit lokaal netwerk. Als een host merkt dat zijndataframe niet voor het lokaal netwerk bestemd is, dan stuurt de host dit naar zijnstandaardgateway.

3. Het subnetmasker: Welke bits van het IP adres deel uitmaken van het Net ID.

Figuur 8.4: Voorbeeld routering

De volgende stappen vinden plaats als node A (172.10.0.100) een dataframe naar node B(184.16.0.101) stuurt.

Alexander Dewaele 63

Page 77: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

1. Node A merkt dat het IP adres van node B geen lokaal IP adres is, dus stuurt hetdataframe naar zijn standaard gateway, namelijk router 1.

2. Router 1 zoekt het juiste subnet in zijn routeringstabel en merkt dat hij het dataframemoet doorsturen naar router 2.

3. Router 2 merkt dat dit IP adres bij het subnet 184.16.0.0 past en dat hij daarmee directverbonden is. Router 2 stuurt het dataframe door naar Node B.

8.6 NAT protocol en portforwarding

Het NAT “Network Address Translation” protocol is een protocol dat ontwikkeld is om eenprive netwerk met meerdere deelnemers via een publiek IP adres2 te koppelen aan het internet.Dit is mogelijk via de unieke adressering van TCP/IP, namelijk de sockets. Een socket is eenIP adres en een TCP poort.Het NAT protocol vertaalt een prive IP adres naar een publiek IP adres door een dynamischepoort toe te kennen aan een socket. De router houdt dus een tabel bij met verschillendepoorten die verwijzen naar een specifieke socket. Dit is eenvoudig te begrijpen aan de handvan een voorbeeld.

Figuur 8.5: Voorbeeld NAT protocol

De node met het prive IP adres 172.23.0.45 wil surfen (HTTP, destination poort 80) naar deserver met het publiek IP adres 74.125.79.104. De server behoort niet tot het prive netwerkdus stuurt de node zijn dataframe naar zijn standaardgateway. Dit is hier de router met hetprive adres 172.23.0.1. Nu vervangt de router het source IP adres van het dataframe door

2Dit publiek IP adres is het adres waarmee de router op het internet is gekoppeld.

Alexander Dewaele 64

Page 78: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 8. TCP/IP

zijn publiek IP adres (157.193.122.12) en de source poort door een dynamisch gekozen poort,bijvoorbeeld 2012. Ondertussen koppelt de router in een tabel de poort 2012 aan de socket172.23.0.45:1093. Doorheen het internet bereikt het dataframe de server.Nu zal de server antwoorden op het source IP adres van het dataframe en dit is 157.193.122.12en op de source poort 2012. Doorheen het internet zal het dataframe de router bereiken ophet publiek IP adres en op poort 2012. De router kijkt in zijn NAT tabel en vindt poort2012 gelinkt aan het prive adres 172.23.0.45 en poort 1093. De router zal het dataframe dusdoorzenden naar de node op IP adres 172.23.0.45 en op poort 1093. Het dataframe komtprecies terecht daar waar het verwacht wordt.

Port forwarding gebruikt dezelfde koppeling van poorten aan sockets in routers. Neem aan dateen server niet rechtsstreeks met een publiek IP adres op het internet is gekoppeld. Maar ookdeel uitmaakt van een prive netwerk. Als een node die server wilt bereiken op een bepaaldepoort, dan moet de node het dataframe niet naar de server sturen maar naar de router methet publiek IP adres. Die router moet het dataframe daarna naar de server sturen. In ditvoorbeeld stuurt de node 202.87.123.4 zijn dataframe naar de router 157.193.122.12 en oppoort 2012. De router ziet dat deze poort gelinkt is met de socket 172.23.0.100:5231. Dus derouter stuurt dit dataframe door naar de server 172.23.0.100 op poort 5231.

Figuur 8.6: Voorbeeld port forwarding

Alexander Dewaele 65

Page 79: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9

Server Applicatie

De serverapplicatie heeft een enkel doel. De gegevens uit de Oracle database ter beschikkingstellen voor de “Report Tool”. Dit houdt in dat de serverapplicatie:

Een maal per dag gegevens uit de Oracle databases ophaalt;

De gegevens opslaat in een Access bestand;

De gegevens op aanvraag verzendt naar de Report Tool.

9.1 Gegevens opvragen

9.1.1 ADO .NET

ODBC “Open DataBase Connectivity” is een standaard, gecreeerd om te verbinden metdiverse relationele databases en om aan de hand van SQL de database te manipuleren. ODBChad natuurlijk de grote beperking dat het enkel voor relationele databases geschikt was.Rond de jaren ’90 kwam Microsoft met OLE DB op de proppen. OLE DB is een objectgeorienteerde interface die geschikt is om verscheidene databronnen te manipuleren, alsookrelationele databases via ODBC. Omdat OLE DB een object georienteerde interface is, is hethandig te gebruiken voor C++ en Java maar niet voor Visual Basic. Daarom bracht MicrosoftADO “Active Data Object” op de markt. ADO is een verzameling van objecten die gebruikmaken van OLE DB. Doordat ADO een verzameling van objecten is en geen verzameling vaninterfaces, is het geschikt voor Visual Basic.

66

Page 80: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Figuur 9.1: ADO

Om gegevens op te vragen uit de Oracle database, gebruikt de applicatie “ADO .NET”. Dit iseen nieuwe technologie gebaseerd op ADO die geıntegreerd zit in het .NET framework. ADO.NET is ideaal om te gebruiken bij de communicatie tussen een .Net applicatie en een DBMS.

Figuur 9.2: ADO .NET[13]

ADO .NET maakt het mogelijk om vanuit elke .NET applicatie gegevens uit verschillendedatabases op te vragen, te wijzigen, toe te voegen en te verwijderen. Specifiek voor Oracledatabases bestaat de provider “System.Data.OracleClient”. Een provider is een klassenbibli-oteek die ADO .NET services levert.1

Die provider is wel niet standaard aanwezig bij de references van een nieuw project en moetdus eerst worden toegevoegd.

1Object browser van de klassenbibliotheek in bijlage F

Alexander Dewaele 67

Page 81: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Figuur 9.3: Add Reference

Eenmaal toegevoegd, bevat de provider een standaard klassenset.

Figuur 9.4: ADO .NET Klassenset[13]

De beschikbare klasses zijn:

Connection: Verbinding maken met de database;

Command: Een SQL statement verzenden naar de DBMS;

Data Reader: Een read-only resultatentabel;

Data Adapter: Tussenstap naar “Data Set” (Niet van toepassing).

9.1.2 Opbouw

De opbouw om de recepten uit de Oracle databases op te vragen is voorgesteld in figuur 9.5.Het belangrijkste deel om connectie te maken met een database is de connectiestring. Deconnectiestring voor de Oracle database is reeds uitvoerig besproken in deel 6.2. Eenmaalde connectie gemaakt is, wordt het SQL SELECT statement2 opgebouwd om de gewenste

2De SELECT statements bevinden zich in het config bestand van het programma.

Alexander Dewaele 68

Page 82: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

recepten uit de database te verkrijgen. Het command wordt gecreeerd en gelinkt met deconnectie en met het SELECT statement. Nadat het command is uitgevoerd, bevinden derecepten zich in de datareader. De datareader is een virtuele tabel dus moet de data nogovergeplaatst worden naar een arraylist.

Figuur 9.5: Opbouw gegevens opvragen

9.1.3 Code

Het gebruik van de verschillende klasses en de opbouw van het programma is perfect te volgenin de vereenvoudigde code van de serverapplicatie. De connectionstring3 wordt opgebouwden er wordt geconnecteerd met de Oracle database.

’ Data Source=MyOracleDB ; User Id=Username ; Password=passwd ; In t eg ra t ed Secur i ty=no ; ”

2 sCnnString = ”Data Source=” & DataSource & ” ; User Id=” & UserId &

” ; Password=” & Password & ” ; In t eg ra t ed Secu r i ty=no ; ”

4

moCnn = New OracleConnect ion ( sCnnString )

6 moCnn . Open ( )

Het SQL statement wordt gemaakt en via de commandklasse doorgezonden naar het DBMS.

sSQL = ”SELECT RECEPT ID CODE as Id , RECEPT ID as Name FROM ” &

2 Table & ”WHERE Name LIKE ’R%’ ORDER BY Name Asc”

oCmd = New OracleCommand(sSQL , moCnn)

DE DBMS voert het command uit en geeft de resultatentabel terug. De resultatentabel wordtdoorlopen en de gegevens worden opgeslaan in de arraylist. Nadien wordt de datareadergesloten en de verbinding verbroken.

3Van de vorm: Data Source=MyOracleDB;User Id=Username;Password=passwd;Integrated Security=no;

Alexander Dewaele 69

Page 83: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

1 oDR = oCmd. ExecuteReader ( )

While oDR. Read

3 sRecepy = oDR. Item (0) & vbTab & oDR. Item (1)

ar roRecep i e s .Add( sRecepy )

5 End While

7 oDR. Close ( )

moCnn . Close ( )

Opmerking: De verbinding dient via code verbroken te worden, de verbindingwordt niet automatisch verbroken!

9.1.4 Resultaat

De werking van het SELECT statement werd reeds besproken in deel 7.2. In dit deel wordthet SELECT statement specifiek toegepast op de Oracle database met de recepten.

Om verder te kunnen gaan met het SELECT statement, moet eerst de tabel met de receptenin de database besproken worden. Neem aan dat de tabel “VDM RECIPES” noemt en datdeze de kolommen “REC ID”, “REC ID CODE”, “REC AUTEUR”, “REC COMMENT” en“REC DENSITY” bevat. Tabel 9.1 stelt dit visueel voor.

VDM RECIPES

REC ID REC ID CODE REC AUTEUR REC COMMENT REC DENSITY

C015 1254 0R01234 2475 AD WEGEN 36R04268 2157 DV 80DQD1 12R05875 2365 AD 85

Tabel 9.1: Tabel Recepten

Om de benodigde gegevens te bekomen, gebruikt de applicatie het volgende SELECT state-ment:

SELECT REC ID CODE as Id, REC ID as Name FROM VDM RECIPESWHERE Name LIKE ’R%’ ORDER BY Name ASC

Tabel 9.2 stelt de resultatentabel voor.

Alexander Dewaele 70

Page 84: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Resultatentabel

Id Name

2475 R012342157 R042682365 R05875

Tabel 9.2: Resultatentabel van SELECT statement

De serverapplicatie stuurt enkel de kolommen “REC ID” (= Name) en “REC ID CODE” (=Id) door naar de “Report Tool”. De reden hiervoor is dat het programma in de PLC op deproductievloer de “REC ID CODE” gebruikt maar die code is niet gekend door de werkne-mers. De werknemers gebruiken namelijk altijd de “REC ID”.Doordat de Historian database zijn gegevens via OPC server uit de PLC haalt, zijn de gegevenstelkens gebaseerd op de “REC ID CODE”. Die gegevens uit de Historian database zijn nu be-schikbaar voor de “Report Tool” applicatie. Maar zoals eerder vermeld kennen de gebruikersvan de applicatie die code niet. In de “Report Tool” applicatie moet de “REC ID CODE”omgezet worden in de “REC ID”. Hiervoor heeft de applicatie die twee kolommen van detabel “VDM RECIPES” nodig.

9.2 Gegevens opslaan

9.2.1 Microsoft Access

Eenmaal de gegevens zoals in tabel 9.2 beschikbaar zijn, worden ze opgeslaan in een Accessdatabase. Zoals vermeld in hoofdstuk 6 is een Access database ook een relationele database.Het is echter geen server georienteerd systeem maar een file georienteerd systeem. Met anderewoorden, de gegevens van de database worden in een *.mdb4 file opgeslaan.Zoals in figuur 6 heeft iedere fabriek zijn Oracle database met de recepten voor de producten.De Access database zal dus per locatie een tabel met recepten bijhouden. Momenteel zijn ditdrie tabellen: Kubof (Izegem), Dres (Dresden) en Pps (Spanje). De recepten in de tabellenworden dagelijks geupdate.

4Bij gebruik van Access 2003

Alexander Dewaele 71

Page 85: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Figuur 9.6: Tabellen Access database

Er zijn drie redenen waarom de Access database als tussenstap wordt gebruikt. De eerstereden is dat de werknemers van de productie, recepten uit de Oracle database verwijderen.Maar de werknemers produceerden ooit die recepten en dus werden de receptcodes reeds ge-capteerd door de Historian database. De verwijderde recepten moeten beschikbaar blijvenvoor het programma “Report Tool” dat gegevens uit de Historian database gebruikt. Daaromis de Access database niet volledig gesynchroniseerd met de Oracle database. Nieuwe receptenworden wel toegevoegd maar oudere recepten worden niet verwijderd.De tweede reden heeft te maken met de performantie van het systeem. De serverapplicatiebevindt zich op een server in Izegem. Neem aan als voorbeeld dat een gebruiker in Ibe-rica (Spanje) zich aanmeldt op het netwerk en het programma “Report Tool” opent. Hetprogramma wilt de recepten, die gebruikt worden door het programma zelf, updaten. Hetprogramma in Spanje stuurt een request naar de serverapplicatie in Izegem. De serverapplica-tie stuurt een SQL statement naar de Oracle Database in Spanje. De Oracle database stuurtde gegevens door naar de serverapplicatie, waarop de serverapplicatie de gegevens doorstuurtnaar de gebruiker in Spanje. Dit veroorzaakt heel wat onnodig dataverkeer. Bij gebruik vande Access database worden enkel de stappen een en vier uitgevoerd. Het programma “ReportTool” stuurt de request naar de serverapplicatie. De serverapplicatie haalt de gegevens uitde lokale Access database en stuurt de gegevens door naar de gebruiker. Dit is uiteraard veelsneller.De derde reden is heel simpel. Het programma “Report Tool” moest de Oracle databasesen het netwerk minimaal belasten. Door het gebruik van de Access database verbindt deserverapplicatie maar een maal per dag met de Oracle databases.

Alexander Dewaele 72

Page 86: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Figuur 9.7: Dataverkeer bij receptenrequest zonder Access database

9.2.2 Opbouw

Om gegevens toe te voegen aan de Access database, moet er natuurlijk eerst weer een connectieworden gemaakt. Dit gebeurt opnieuw aan de hand van een connectiestring. Deze keervan de vorm “Provider=Microsoft.Jet.OLEDB.4.0;Data Source= somepath mydb.mdb;UserId=admin;Password=;”.Het programmaonderdeel om de tabel in de database aan te passen is voorgesteld in eenflowchart. De nodige recepten bevinden zich in de arraylist die bekomen werd in het vorigedeel, zie figuur 9.5. Het programma controleert voor elk recept of het reeds aanwezig is in dedatabasetabel. Is dit niet het geval, dan voegt het programma het recept toe aan de tabel(INSERT statement). Als dit wel het geval is, dan wordt eerst nog gecontroleerd of het receptwel een update vereist. Zo ja, dan voert het programma een update van het recept uit. Zonee, dan doet het programma niets.

Merk op: Dit gebeurt voor alle recepten in elke Oracle databases.

Alexander Dewaele 73

Page 87: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Figuur 9.8: Opbouw gegevens opslaan

9.2.3 Code

Het belangrijkste stuk code van dit onderdeel is het beslissen wat er moet gebeuren met hetrecept. Moet het recept geupdate worden, toegevoegd worden of moet er helemaal niets meegebeuren? Dit komt goed tot uiting in het volgende stukje code.

’ Check every r e c i p e .

2 For Each oRecipe As c l sRec ip e In Recipes

’Does the r e c i p e e x i s t s ?

4 Se l e c t Case Ex i s t sRec ipe ( Location , oRecipe . ReceptID , oRecipe . ReceptIDCode )

6 Case 0 ’ Recept ID Code doesn ’ t e x i s t s . −> INSERT

sSQL = ”INSERT INTO ” & Locat ion & ” VALUES ( ’” &

8 oRecipe . ReceptID & ” ’ ,” & oRecipe . ReceptIDCode & ”)”

oCmd = New OleDbCommand(sSQL , moCnn)

10 oCmd. ExecuteReader ( )

12 Case 1 ’ Recept ID Code e x i s t s but needs an update . −> UPDATE

sSQL = ”UPDATE ” & Locat ion & ” SET RECEPT ID = ’” &

14 oRecipe . ReceptID & ” ’ WHERE RECEPT ID CODE = ” &

oRecipe . ReceptIDCode

16 oCmd = New OleDbCommand(sSQL , moCnn)

oCmd. ExecuteReader ( )

18

Case 2 ’ Recept ID Code e x i s t s but doesn ’ t need an update . −> NOTHING

20

End Se l e c t

22 Next

Alexander Dewaele 74

Page 88: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

9.3 Gegevens verzenden

9.3.1 Server & client

Om de recepten van de Oracle databases te verzenden, gebruikt de serverapplicatie TCP/IP“Transmission Control Protocol/Internet Protocol”. De protocollen werden reeds uitvoerigbeschreven in hoofdstuk 8.TCP/IP communicatie gebeurt telkens tussen een server en een client. In dit project is deserverapplicatie de server en het “Report Tool” programma de client. De server is de passieveapplicatie. De server luistert op een bepaalde TCP poort of er een aanvraag binnenkomten beslist of de aanvraag aanvaard wordt. Eenmaal geconnecteerd ontvangt en verzendt deserver data. Het “Report Tool” programma is de actieve applicatie. Het programma neemthet initiatief om te verbinden. Als de server de connectie heeft aanvaard, kan de client ookonafhankelijk data verzenden en ontvangen.De server luistert dus op een bepaalde socket, dit is een IP adres en een bepaalde poort. Alser een verbinding binnenkomt en de server accepteert, dan creeert de server een nieuwe socketwaarover de communicatie plaats vindt. Zodanig dat er een nieuwe request kan binnenkomenop dezelfde socket. De communicatie met de nieuwe client gebeurt dan over nog een anderesocket. Op dat moment luistert de server op een socket en communiceert de server met detwee clients op twee sockets.

Figuur 9.9: Verbinding server-client[13]

9.3.2 Opbouw

Het volledige verhaal van server en client speelt zich hier af. De serverapplicatie wacht eengroot deel van de tijd op een aanvraag. Doet de client een aanvraag, dan aanvaardt deserver die. Vervolgens moet de client de string “UpdateRecipes;≺locatie” zenden naar deserver. De mogelijke locaties zijn Kubof, Dresden of Pps. Dit zijn namelijk de tabellen in de

Alexander Dewaele 75

Page 89: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

Access database, zie deel 9.2. Als de server de string ontvangt, haalt die de recepten uit deAccess database. Dit gebeurt uiteraard weer met een SELECT SQL statement. De receptenworden vervolgens verstuurt naar de client. De client, de “Report Tool” applicatie, gebruiktde gegevens om rapporteringen te maken.

Figuur 9.10: Opbouw gegevens verzenden

Figuur 9.11: Flowchart gegevens verzenden

Alexander Dewaele 76

Page 90: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 9. Server Applicatie

9.3.3 Code

De volgende subroutine die opgeroepen wordt als de serverapplicatie data ontvangt, toontperfect de opbouw van het programma.

’ Rece ive data (TCP/IP )

2 Pr ivate Sub moTCP ReceiveData (ByVal Data As St r ing ) Handles moTCP. ReceiveData

Dim arroDataSp l i t As Array

4 txtRece ived . Text = Data

6 Try

Data = txtRece ived . Text

8 ’ S p l i t the r e c e i v ed s t r i n g .

a r roDataSp l i t = Data . S p l i t ( ” ; ” )

10

’ I f the r e c e i v ed s t r i n g beg ins with ”UpdateRecipes ”

12 I f a r roDataSp l i t (0 ) = ”UpdateRecipes ” Then

’ F i r s t get the r e c i p e s in the Access database and

14 ’ then send them (TCP/IP )

Dim sLocat ion as s t r i n g = arroDataSp l i t (1 )

16 Sendrec ipe s ( moAccess . GetRecipes ( sLocat ion ) )

End I f

18 Catch ex As Exception

moEx . LogException ( ex )

20 End Try

End Sub

Alexander Dewaele 77

Page 91: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10

Report Tool

De ontwikkeling van het VB .NET softwareprogramma “Report Tool” omvat het grootste deelvan het project. Het softwarepakket Proficy Historian stelt de gegevens van het kristallisatie-proces ter beschikking (bv. temperaturen, drukken, debieten, ...) en de serverapplicatie biedtde gegevens van de recepten van de producten aan. Met de combinatie van beide, produceertde applicatie “Report Tool” samenvattingen en grafieken in verband met het verloop van hetkristallisatieproces. De applicatie staat in voor de datarapportering. De samenvattingen engrafieken worden gebruikt om:

Proceswaardes te controleren;

Fouten in het proces op te sporen;

Verbanden te leggen met de kwaliteit van de producten;

Het proces te verbeteren;

Analyses te maken.

10.1 Visual Basic .NET

Visual Basic[11] is ontwikkeld door Mircosoft. Microsoft had de visie om een programmeer-taal te ontwikkelen die gemakkelijk is om te leren en te gebruiken. Met Visual Basic is hetmogelijk om zowel eenvoudige visuele programma’s als complexe programma’s te ontwik-kelen. Programmeren aan de hand van Visual Basic is een combinatie van twee factoren.Rangschikken van controls op de form (visuele gedeelte) en acties programmeren voor dezecontrols (programmeer gedeelte). Extra code kan worden geprogrammeerd als de program-meur meer functionalliteit wil toevoegen aan het programma.De GUI “Graphical User Interface” wordt gecreeerd door controls (bv. textboxen, knoppen,lijsten, ...) te slepen op de form. De controls krijgen een set standaard instellingen en attribu-ten die de programmeur kan veranderen. Ook tijdens de runtime van het programma kunnen

78

Page 92: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

de attributen tijdens bepaalde acties gewijzigd worden. (bv. Als de gebruiker de applicatiemaximaliseert, dan wordt een lijst op de form gemaximaliseerd.)

Visual Basic .NET is de opvolger van Visual Basic 6.0, en is een deel van het .NET frameworkvan Microsoft. Visual Basic .NET wordt uitgevoerd en gecompileerd aan de hand van het.NET framework. De twee grootste componenten van het .NET framework zijn: de CLR“Common Language Runtime” en de objecten bibliotheek (the class library). De CLR is debasis van het .NET framework.

You can think of the runtime as an agent that manages code at execution time,providing core services such as memory management, thread management, andremoting, while also enforcing strict type safety and other forms of code accuracythat promote security and robustness.[11]

De CLR is net als een agent dat tijdens het runnen van de applicatie de programmacodebeheert en verschillende diensten aanbiedt. De CLR garandeert ook de veiligheid en robuust-heid van het programma.De objectenbibliotheek is een verzameling van herbruikbare, object-georienteerde klasses diede programmeur kan gebruiken om zijn applicatie te ontwikkelen.

Figuur 10.1: Het .NET Framework

Opmerking: De applicatie is ontwikkeld met Microsoft Visual Studio 2005en aan de hand van het .NET framework 2.0.

Alexander Dewaele 79

Page 93: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

10.2 Componenten

De applicatie bestaat uit vier componenten. Het onderscheid is visueel zichtbaar door gebruikte maken van vier tabs. De tabs en een korte beschrijving zijn:

1. Connect: Om te connecteren met een Historian database;

2. Global: Dient om data van alle tags die de Historian capteert op te vragen;

3. Recipe: Met deze tab kan data van een bepaalde batch van een recept opgehaald worden;

4. Comparison: Deze tab dient om verschillende batches van hetzelfde recept te vergelijken.

10.2.1 Connect

Aan de hand van deze tab kan de gebruiker connectie maken met een Proficy Historiandatabase. Bij het opstarten van de applicatie zal de default Historian database ingevuld zijnals server. De gebruiker kan de default server enkel veranderen aan de hand van de ProficyHistorian Administrator. Ook is de administrator nodig om een Historian server toe te voegenals de server niet beschikbaar is in de servercombobox. De applicatie kan enkel met een serversimultaan verbinden. Hieruit volgt dat als de applicatie reeds verbonden is en de gebruikerverbindt met een andere server, dan zal de connectie met de eerste server verbroken worden.Om te connecteren met een andere gebruikersnaam, kan er gewoon verbonden worden metdezelfde server maar met een andere gebruikersnaam.

Figuur 10.2: Report Tool: Connect

De component “Connect” biedt verschillende opties aan. De eerste optie is om de applicatiede logins te laten onthouden zodanig dat de gebruiker niet verplicht is om de username enhet password telkens in te geven. Als de optie aangevinkt is dan worden de username en het

Alexander Dewaele 80

Page 94: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

password automatisch ingevuld bij het selecteren van de server. De logingegevens wordenopgeslaan per server in een XML file, genaamd “data.xml”, onder de vorm:

1 <Server Name=”VDMTEST”>

<Username>User152</Username>

3 <Password>UsersPassword152</Password>

</Server>

Opgelet: Het passwoord is zichtbaar voor iedereen die de file data.xml opent!

Rechts van de logingroupbox wordt informatie over de geconnecteerde server weergegeven:

Servername: De servernaam van de geconnecteerde Historian database;

Connected: Status van de verbinding;

Active Users: Aantal actieve, ingelogde gebruikers;

Licensed Users: Maximum aantal simultaan actieve, ingelogde gebruikers;

Active Tags: Aantal gecapteerde tags door de Historian database;

Licensed Tags: Maximum aantal gecapteerde tags.

Een tweede optie die aanwezig is op de tab, is de optie om de recepten, die lokaal zijn opgeslaanbinnen de applicatie in een textbestand, te updaten. Als de optie aangevinkt is, dan wordtom de x aantal dagen de recepten geupdate. De datum van de volgende update is af te lezen.De gebruiker dient ook zijn locatie binnen group Vandemoortele te kiezen, zodanig dat dejuiste recepten worden geupdate. Zowel de locaties als het aantal dagen kan de gebruikerwijzigen door het config bestand van de applicatie te openen.Het IP adres en de TCP poort van de serverapplicatie is ook terug te vinden in het configbestand. Mocht de server ooit verplaatst worden dan kan dit daar gewijzigd worden.

Het config bestand bevat daarvoor de volgende regels die voor zich spreken:

<!−− # Days between r e c i p e updates . −−>

2 <add key=”UpdateRecepiesDays” value=”7”/>

4 <!−− Ava i l ab l e Locat ions ( s p l i t with ; ) −−>

<add key=”Ava i l ab l eLoca t i ons ” value=”kubof ; dres ; pps” />

6

<!−− IP and port f o r ” r epo r t s e r v e r a pp l i c a t i o n ” −−>

8 <add key=”IP” value=”x . 0 . x .30” />

<add key=”Port” value=”x43”/>

Opmerking: De gebruiker kan de recepten ook manueel updaten door “Up-date Now” te selecteren in het menu “Recipes”. Dit kan bijvoorbeeld nodig zijnals de gebruiker de recepten van een andere locatie wilt bekijken. Dan moet de

Alexander Dewaele 81

Page 95: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

gebruiker eerst de andere locatie selecteren en dan moeten de recepten manueelgeupdate worden.

Figuur 10.3: Recepten manueel updaten

10.2.2 Global

Figuur 10.4: Report Tool: Global

De “Global” tab maakt het mogelijk om van alle tags, die de geconnecteerde Historian data-base capteert, waardes op te vragen en in een grafiek te plaatsen. Omdat het mogelijk is datde Historian database veel tags capteert (maximum 250.000 tags) is een filter het eerste dataanwezig is op de global tab, zo wordt het selecteren van tags eenvoudiger. De filter maaktgebruik van wildcards zoals ? en * waar ? een karakter kan zijn en * meerdere karakters kanvoorstellen. Een paar voorbeelden:

L01 TEMP* geeft weer

– L01 TEMP CIL1

– L01 TEMP CIL2

– L01 TEMP CIL3

– NOT L06 TEMP CIL1

– NOT L06 TEMP CIL2

Alexander Dewaele 82

Page 96: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

L0? TEMP* geeft weer

– L01 TEMP CIL1

– L01 TEMP CIL2

– L01 TEMP CIL3

– L06 TEMP CIL1

– L06 TEMP CIL2

– NOT L13 TEMP CIL1

Meerdere filters kunnen gespecifieerd worden. Splits de filters op met het karakter “;”. Deapplicatie behandelt de filters apart. Als er bijvoorbeeld twee filters zijn, kijkt de applicatieof de tag voldoet aan de ene filter OF de andere filter.

*TEMP*; *DRUK* geeft weer

– L01 TEMP CIL1

– L01 DRUK CIL1

Eenmaal de tags geselecteerd zijn waarvan de gebruiker gegevens wilt opvragen, moet de ge-bruiker nog een start- en stoptijd opgeven. De samenvatting en de grafiek, die de applicatieproduceert, zal op deze tijden gebaseerd zijn.Specifiek voor de samenvatting moet de gebruiker nog “calculation modes” kiezen. De ap-plicatie zal deze wiskundige grootheden berekenen en weergeven in de samenvatting. Deverschillende calculation modes zijn:

Average: Het gewogen gemiddelde voor een bepaald interval;

Standard deviation: De gewogen standaard deviatie voor een bepaald interval;

Total: Het totaal van alle waardes voor een bepaald interval;

Minimum: Het minimum van de waardes voor een bepaald interval;

Maximum: Het maximum van de waardes voor een bepaald interval;

Count: Het aantal gecapteerde waardes voor een bepaald interval;

Raw average: Het ruw gemiddelde voor een bepaald interval;

Raw standard deviation: De ruwe standaard deviatie voor een bepaald interval;

Raw total: Het ruwe totaal voor een bepaald interval.

De samenvatting geeft enkel de wiskundige grootheden weer tussen de start- en de stoptijdmaar wat er tussenin gebeurt, is niet gekend. Daarom biedt de applicatie ook de mogelijkheidom een grafiek1 te creeren. Om zo het verloop van de waardes te bekijken. De tags die degrafiek afbeeldt, zijn diegene die geselecteerd worden in de samenvatting. De gebruiker dient

1In deel 10.3.2 worden de grafieken besproken.

Alexander Dewaele 83

Page 97: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

ook een calculation mode en een interval te selecteren. Het interval is de tijdspanne tussentwee waardes van een tag.vb. Start- en stoptijd: 01/01/2008 - 02/01/2008 (24h)Calculation mode: AverageInterval: 30 Minutes = 0.5 hoursEen tag in de grafiek zal 24/0.5= 48 punten bezitten.

10.2.3 Recipe

Figuur 10.5: Report Tool: Recipe

De tab “Recipe” is ontwikkeld om een samenvatting en een grafiek te maken van een bepaaldrecept op een bepaalde productielijn. Deze tab maakt het mogelijk voor de gebruiker om ge-gevens over alle gemaakte recepten op een bepaalde productielijn tussen een bepaalde start-en stoptijd op te halen.De gebruiker dient eerst een productielijn, start- en stoptijd in te geven, waarna alle ge-produceerde recepten verschijnen met hun starttijd. Na het selecteren van een recept in delijst, wordt de samenvatting van het recept gemaakt met de standaard calculation modes:minimum, maximum en average. Ook in de tab “Recipe” is het opnieuw mogelijk om eengrafiek te maken van bepaalde tags in de samenvatting samen met een calculation mode eneen interval.

10.2.4 Comparison

De “Comparison” tab biedt de mogelijkheid aan om verschillende batches van hetzelfde receptte vergelijken. Zelfs als de batches op verschillende productielijnen plaatsvonden. Als de

Alexander Dewaele 84

Page 98: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.6: Report Tool: Comparison

werknemers op de kwaliteitsafdeling zeggen dat de ene batch van een recept beter is daneen andere batch, dan kan aan de hand van de “Report Tool” de verschillen in de batchesopgespoord worden.De input van de tab “Comparison” bestaat uit een receptnaam, start- en stoptijd. Als dezegegevens beschikbaar zijn, dan zoekt de applicatie wanneer dit recept gemaakt is tussen diestart- en stoptijd op iedere productielijn. Het resultaat is een treeview met de productielijnenen het tijdstip van productie.Het is iets ingewikkelder om duidelijk te maken uit welke gegevens de grafiek moet bestaan.De gebruiker vinkt eerst de recepten aan die hij in de grafiek wilt visualiseren. Maar perrecept moet ook nog duidelijk gemaakt worden welke tags de grafiek moet bevatten. Dus nahet aanvinken, selecteert de gebruiker het recept. Dan komen in de rechtse lijst de beschikbaretags. Dan kunnen de tags geselecteerd worden die in de grafiek moeten komen. Voor datbepaald recept komen die tags in de grafiek. Uiteraard moet opnieuw een calculation modeen een interval meegegeven worden.

Voorbeeld: De gebruiker wilt de temperatuur van de koelcilinder van verschillende bat-ches van het recept “R05064” vergelijken. Namelijk de batches op 10 november 2008 (opproductielijn 1) en op 25 augustus 2008 (op productielijn 2). De werkwijze:

1. Vink het recept op “L01 ⇒ 10-11-2008 09:52:42 AM” aan;

2. Vink het recept op “L02 ⇒ 25-08-2008 13:42:12 PM” aan;

3. Selecteer het recept op 10-11-2008 09:52:42 AM;

Alexander Dewaele 85

Page 99: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

4. Vink de tag “L01 TEMP CIL” aan;

5. Selecteer het recept op 25-08-2008 13:42:12 PM;

6. Vink de tag “L02 TEMP CIL” aan.

Figuur 10.7: Selecteren vs Aanvinken

Opmerking: De X-as is niet meer opgedeeld in tijdstippen zoals in de anderegrafieken. De eenheid van de X-as in deze tab is “hours”, het aantal uren datverstreken is sinds het begin van het recept. De X-as kon hier niet opgedeeldworden in tijdstippen doordat de verschillende recepten niet op hetzelfde tijdstipwerden geproduceerd.

10.3 Extra

10.3.1 Interval

Kies het interval voor de grafieken doordacht. Als bijvoorbeeld drie tags geselecteerd zijn overeen periode van twee dagen en een interval van een seconde. Dan moet de applicatie 3Tags x(2Dagen x 24h x 60” x 60’)Seconds = 518400 waardes ophalen en in de grafiek visualiseren.Begrijp dat dit een zware opdracht is. Natuurlijk, hoe kleiner het interval, hoe gedetailleerderde grafiek. Daarom moet de gebruiker goed over het interval reflecteren.

10.3.2 Grafieken

De grafieken in de applicatie worden gecreeerd met ZedGraph[24]. ZedGraph bestaat uiteen set .NET klasses om grafieken te creeren. De geleverde klasses zijn heel flexibel enbijna alles kan aangepast worden aan de wensen van de gebruiker. Toch zijn de klassesgebruiksvriendelijk doordat alle attributen van de klasses voorzien zijn van standaard waardes.

Dit project stelde bepaalde eisen aan de grafieken en de grafieken van ZedGraph komentegemoet aan alle eisen.

Precieze aflezing van de coordinaten van de punten op de grafiek;

Inzoomen op de grafiek;

Afdrukken van de grafieken;

Opslaan van de grafieken;

Alexander Dewaele 86

Page 100: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Meerdere Y-assen afhankelijk van de engineering unit van de tag.

Als de gebruiker met rechts klikt op de grafiek dan komen de volgende opties tevoorschijn:

Copy: Kopieer de grafiek naar het klembord;

Save Image As...: Bewaar de grafiek als een figuur. (png, gif, jpg, tif, bmp);

Print...: Druk de grafiek af;

Show Point Values: Toon de coordinaten van de punten als de muis erover beweegt;

Un-Zoom: Doe de laatste zoomactie teniet;

Undo All Zoom/Pan: Doe alle zoomacties teniet;

Set Scale to Default: Toon de originele grafiek.

De grootte van de tekst in vergelijking met de grafiek zelf kan aangepast worden in het configbestand. De grootte van de tekst wordt geschaald in vergelijking met de grootte van de grafiek.Als de verschaling ingesteld staat op 10 inches en de titelgrootte is bijvoorbeeld 14 punten(standaard), dan zal de titel 14 punten groot zijn als de grafiek 10inches = 10 ∗ 2.54cm =25.4cm groot is.Voorbeeld: Neem aan dat de grafiek altijd 20 inch groot is en de titelgrootte ingesteld is op14 punten.De verschaling is 10 = 20/2 ⇒ De titelgrootte is 28 = 14 ∗ 2 punten.De verschaling is 5 = 20/4 ⇒ De titelgrootte is 56 = 14 ∗ 4 punten.Hoe groter de verschaling, hoe kleiner de tekst op de grafiek.

1 <!−− Text S i z e Graphs . Defau l t = 10 −−>

<add key=”GraphTextSize” value=”10”/>

10.3.3 Saves

Na de eerste versie van de applicatie kwam de vraag van de gebruikers om het mogelijk temaken dat ze niet telkens de gewenste tags opnieuw moesten selecteren. De verschillendegebruikers controleren namelijk veel dezelfde tags. Hierbij verloren ze veel tijd door telkensde tags te selecteren. Om tegemoet te komen aan deze vraag, werden een soort van savesontwikkeld.Bij iedere lijst van tags in de applicatie bevindt zich een combobox met de beschikbare saves.Selecteert de gebruiker een save uit de combobox, dan worden de tags in relatie met de savegeselecteerd in de lijst. Om de saves te beheren werd een aparte form gemaakt.

Alexander Dewaele 87

Page 101: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.8: Saves

Om saves toe te voegen, kan de groupbox “Add Save” gebruikt worden. Eerst dient degebruiker een naam voor de save in te geven. Daarna kan de gebruiker de tags, die bijdie savenaam horen, selecteren. Als de gebruiker dan op de knop “Save” drukt, is die saveonmiddellijk beschikbaar in de applicatie.De groupbox “Edit Save” biedt de mogelijkheid om reeds toegevoegde saves te wijzigen. Hierkunnen bepaalde tags verwijderd of toegevoegd worden.Om een save te verwijderen, navigeert de gebruiker naar de groupbox “Delete Save”. Degebruiker selecteert de gewenste save en druk op de knop “Delete”. De save is onmiddellijkniet meer beschikbaar in de applicatie.

De saves van de applicatie worden opgeslaan in het bestand “Data.xml” onder de vorm:

<Saves>

2 <Save Name=”EmulsieTemp”>

<Tags>L01 PV EmulsieTemp KC1 ; L01 PV EmulsieTemp KC2 ; . . . ; < / Tags>

4 </Save>

6 <Save Name=”Drukken”>

<Tags>L01 PV Hogedrukpomp Druk Na ; L01 PV Hogedrukpomp Druk Voor ; . . . ; < / Tags>

8 </Save>

</Saves>

Het scherm om de saves te beheren wordt geopend door “Saves” te selecteren in het menu“File”.

Alexander Dewaele 88

Page 102: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.9: Openen saves

10.3.4 Statusstrip

Een handig extraatje is de statusstrip onderaan het scherm. Aan de hand van de statusstripkan de gebruiker op ieder moment zien of hij nog geconnecteerd is met de server en onder welkeusername. De statusstrip toont ook de status van het huidige archief. Als er bijvoorbeeld81MB/100MB staat, dan is 81MB van de beschikbare 100MB gebruikt.

Figuur 10.10: De statusstrip

10.3.5 Minimaliseren

Doordat de gebruikers vaak veel programma’s hebben openstaan, wordt de applicatie “ReportTool” geminimaliseerd in een tray. Hierdoor moet de gebruiker de applicatie niet telkensafsluiten om plaats vrij te hebben op de taakbalk van Windows.

Figuur 10.11: Tray door minimalisatie

10.3.6 Helpfile

De gebruiker kan de helpfile van de applicatie op drie manieren openen. De eerste manier isom de helpfile gewoon te openen vanuit de directory waar de applicatie geınstalleerd is. Detweede manier is om vanuit het programma te klikken op “F1 Helpfile” in menu “Help”. Ende laatste manier is om simpelweg op F1 te drukken in de applicatie.

Figuur 10.12: Openen helpfile

Alexander Dewaele 89

Page 103: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

10.3.7 Installatie

De installatie van de applicatie is gemaakt met “Smart Install Maker”. De grootte van deinstallatiefile is ±1MB en de applicatie zelf neemt ongeveer 2MB in beslag. De procedure omde applicatie te installeren is uiterst eenvoudig. Tijdens de installatie worden twee instellingengevraagd: de map waarin de installatie moet plaatsvinden en of de installatie een shortcutop het bureaublad moet creeren. De procedure is terug te vinden in bijlage G.

10.4 Programmaopbouw

10.4.1 SDK

Met de SDK kunnen zowel gegevens over de tags als waardes van de tags opgevraagd wordenzoals voorgesteld in de volgende figuur.

Figuur 10.13: SDK: Opvragen tags en waardes

De input om tags op te vragen bestaat uit een filter (vb. *TEMP*) en uit drie booleans.Aan de hand van de booleans weet de SDK welke informatie de gebruiker wilt, namelijk:de tagnaam, de beschrijving en/of de eenheid. (vb. L01 TEMP Cilinder, Productielijn 1Temperatuur Koelcilinder, °C).De input om waardes van een tag op te vragen, is ingewikkelder. Eerst en vooral zijn detagnaam, de start- en stoptijd nodig. Maar er zijn nog negen criteria om te definieren welkewaardes gewenst zijn. De negen criteria en hun mogelijkheden zijn:

1. Tagmask: De gegevens zullen van deze tag afkomstig zijn.

2. Starttijd: De gegevens zullen van na dit tijdstip zijn.

3. Stoptijd: De gegevens zullen van voor dit tijdstip zijn.

4. Samplingmode:

Alexander Dewaele 90

Page 104: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

(a) Current Value: Geeft de huidige waarde van de tag weer. Start- en stoptijd wordengenegeerd.

(b) Interpolated: De waardes zijn geınterpoleerd, gebaseerd op aantal samples en destart- en stoptijd.

(c) Trend: Geeft het maximum en minimum van het interval weer.

(d) Raw By Time: Geeft de ruwe waardes weer gebaseerd op de start- en stoptijd.

(e) Raw By Number: Geeft de ruwe waardes weer gebaseerd op de starttijd, aantalsamples en de richting. De stoptijd is genegeerd.

(f) Calculated: Geeft berekende waardes weer gebaseerd op aantal samples, starttijd,stoptijd en de calculationmode.

5. Number of samples: Specifieert hoeveel waardes de SDK zal ophalen. Verdeeld over destart- en stoptijd.

6. Filtertag: De tag waarop de filter zal toegepast worden.

7. Filtermode: Een filter om het aantal waardes te beperken.

(a) Exact Time: Haalt waardes op voor de exacte tijdstippen dat de filterwaarde“True” is.

(b) Before Time: Haalt waardes op vanaf de laatste “False” filterwaarde tot de eerste“True” filterwaarde.

(c) After Time: Haalt waardes op vanaf de eerste “True” filterwaarde tot de eerstdaaropvolgende “False” filterwaarde.

(d) Before And After Time: Haalt waardes op vanaf de laatste “False” filterwaardetot de eerst daaropvolgende “False” filterwaarde.

8. Filter Comparison Mode:

(a) Equal: De filterwaarde is “True” als de filtertag gelijk is aan de filterwaarde (Com-parison value).

(b) Not Equal: De filterwaarde is “True” als de filtertag NIET gelijk is aan de filter-waarde.

(c) Less Than: De filterwaarde is “True” als de filtertag kleiner is aan de filterwaarde.

(d) Greater Than: De filterwaarde is “True” als de filtertag groter is aan de filter-waarde.

(e) Less Than Equal: De filterwaarde is “True” als de filtertag kleiner of gelijk is aande filterwaarde.

Alexander Dewaele 91

Page 105: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

(f) Greater Than Equal: De filterwaarde is “True” als de filtertag groter of gelijk isaan de filterwaarde.

9. Filter Comparison Value: De waarde waar de filtertag mee wordt vergelijkt.

Er zijn ook nog vier velden om te definieren welke informatie over de waardes gewenst zijn:

1. Timestamp: Het tijdstip dat bij de waarde past.

2. Value: De echte waarde.

3. DataQuality: De kwaliteit van de waarde.

4. Comments: Commentaar bij de waarde.

10.4.2 Opstarten

Tijdens het opstarten van de applicatie gebeuren er al vele acties op de achtergrond. Aande hand van de servermanager dat GE Fanuc meelevert met de SDK, zoekt de applicatie debeschikbare Historian databases. De laatste instellingen voor de opties, de locaties, de savesen de logins worden opnieuw ingeladen. Ook de figuren worden ingeladen. De actie om derecepten te updaten is het meest ingewikkeld en wordt verduidelijkt aan de hand van eenflowchart.

Figuur 10.14: Opbouw opstarten applicatie

De applicatie controleert eerst of het wel nodig is om de recepten te updaten aan de handvan de laatste uitgevoerde update. Is geen update nodig dan worden de lokaal opgeslagenrecepten gebruikt en in de combobox geplaatst. Is een update wel nodig, dan verwijdertde applicatie de oude recepten, verbindt de applicatie met de serverapplicatie en stuurt eenrequest. Eenmaal de recepten ontvangen en lokaal opgeslaan zijn, worden de nieuwe receptenin de combobox ingevuld.

Alexander Dewaele 92

Page 106: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.15: Flowchart recepten updaten

10.4.3 Tab Connect

De opbouw van de tab “Connect” bestaat uit vier delen. Een deel om de username en hetpassword op te halen als een Historian server geselecteerd wordt. Een deel om te connecterenmet een Historian database. Dit gebeurt grotendeels aan de hand van de SDK. Als de gebrui-ker connecteert met een server dan controleert de applicatie of de login van die server reedsgekend was. Als dit niet het geval is, slaat de applicatie de login voor die server op. En hetlaatste deel haalt de status van de geconnecteerde server op. Hierbij horen ook de gegevensin de statusstrip.

Figuur 10.16: Opbouw connect

De interface van de tab “Connect” kan als volgt voorgesteld worden. Met de specifieke inputsen outputs.

Alexander Dewaele 93

Page 107: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.17: Interface connect

10.4.4 Tab Global

De tab “Global” maakt gebruik van een filter om het aantal tags te beperken. Om de gewenstetags te krijgen dient de applicatie de SDK te gebruiken. De code om tags op te vragen metbehulp van de SDK bevindt zich in bijlage D en kan voorgesteld worden als in de volgendefiguur.

Figuur 10.18: SDK Tags: Global

Om de samenvatting en de grafiek te maken dienen buiten de tags ook nog de start-, stoptijden calculation modes beschikbaar te zijn. Aan de hand van de SDK bekomen we de waardesvoor iedere tag en iedere calculation mode.

Alexander Dewaele 94

Page 108: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.19: Opbouw global

Figuur 10.20: Interface global

10.4.5 Tab Recipe

Het grote verschil tussen de opbouw van de tab “Recipe” en de tab “Global” is dat deze tabde filtercriteria van de SDK gebruikt om de waardes2 van de tags te bekomen, namelijk enkelmaar de waardes waarbij de waarde van de recepttag gelijk is aan een bepaald recept.

2In de tab “Global” werd een filter gebruikt om de tags te filteren, niet de waardes.

Alexander Dewaele 95

Page 109: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.21: Opbouw recipe

De tab “Recipe” kan als volgt voorgesteld worden. Zoals op de figuur zijn de tags van desamenvatting nodig om de grafiek op te bouwen.

Figuur 10.22: Interface recipe

10.4.6 Tab Comparison

Hier wordt de SDK gebruikt om te zoeken wanneer de tag met de receptnamen gelijk was aaneen bepaald recept binnen de start- en stoptijd. Om de waardes van de batches op te halen,worden opnieuw de filtercriteria gebruikt.

Alexander Dewaele 96

Page 110: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

Figuur 10.23: Opbouw comparison

Het grote verschil is dat deze tab geen samenvatting heeft. De tags voor de grafiek zijn nietafkomstig van de samenvatting zoals bij de andere tabs.

Figuur 10.24: Interface comparison

Alexander Dewaele 97

Page 111: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Besluit

Het volledige overzicht om een correcte werking van de Report Tool applicatie te garanderenis samengevat aan de hand van de volgende figuur.

Het overzicht bevat drie grote delen: de hardware op de productievloer, de applicaties op deservers en de PC’s “Personal Computers” waarop de Report Tool applicatie geınstalleerd is.De sensoren op de productievloer meten aan de hand van fysische verschijnselen de waardes(temperaturen, debieten, drukken, ...) van het productieproces waarna de meetomvormersdie waardes omzetten in een analoog stroomsignaal. De PLC converteert dit analoog signaalnaar de reele proceswaarde en slaat de waardes lokaal op (merkers, datablocken, ...).Een OPC Server, die actief is op een server, haalt de proceswaardes op uit de PLC en stelt deze

98

Page 112: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

beschikbaar. De OPC collector van Proficy Historian haalt de waardes op en zendt deze naarde Historian database. Vervolgens archiveert de Historian database de proceswaardes en steltdeze beschikbaar voor de Report Tool applicatie. Op de server zijn nog twee andere applicatiesaanwezig. De serverapplicatie verbindt met de Oracle databases en haalt informatie over derecepten op. Daarna stelt de serverapplicatie de informatie beschikbaar voor de Report Toolapplicatie.De Report Tool applicatie, die geınstalleerd is op de PC’s van de werknemers, ontvangt vantwee verschillende applicaties data. De Historian database voorziet de historische data vande procesparameters en de serverapplicatie levert de informatie over de verschillende receptenvan de producten. Aan de hand van deze informatie produceert de Report Tool applicatierapporteringen.

Voordat de Historian database de procesparameters capteerde, schreven de arbeiders iedere xaantal uren de proceswaardes over van displays die zich naast het productieproces bevonden.Al deze documenten werden dan bewaard in een archief. Als de mensen van de productie ofvan de kwaliteit een abnormaliteit ontdekten, werden deze documenten opnieuw bovengehaalden zochten ze naar de oorzaak. Door het nieuwe systeem dienen de proceswaardes nietmeer opgeschreven te worden, wat veel arbeidsuren en papierwerk bespaard. Dit is uiteraardfinancieel zeer gunstig. Ook verloopt het zoeken naar de oorzaak veel sneller doordat alleselektronisch gebeurt aan de hand van de “Report Tool”.

Binnen Vandemoortele werd een schatting en beoordeling gemaakt over de volgende punten:

Tijdsbesparing

– Papierwerk: 90%

– Opzoekingswerk: 80%

Beoordeling

– Trendings: handig om evoluties te zien in functie van tijd, dit was niet mogelijkmet de papieren versies.

– Gegevens op basis receptniveau: van toepassing om de oorzaak van bepaalde pro-blemen na te gaan.

– Vergelijking parameters tussen recepten onderling: voornamelijk interessant voorhet nagaan van de verschillen bij verschillende producties.

– De mogelijkheid bestaat nu om meer inzicht te krijgen in het kristallisatieprocesdoordat de parameters veel frequenter worden geregistreerd dan voorheen, samenmet de mogelijkheid om de gegevens grafisch weer te geven.

Algemene evaluatie en waardering van het project:Handig programma om op een snelle manier een overzicht te verkrijgen van alle parameters

Alexander Dewaele 99

Page 113: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Hoofdstuk 10. Report Tool

van toepassing bij het kristallisatieproces. Tevens van nut om bij problemen tijdens productiede oorzaak van deze problemen op te sporen. Er kunnen eveneens parameters opgevraagdworden dewelke vroeger niet geregistreerd werden en de registratie gebeurt nu met een hogerefrequentie.

Alexander Dewaele 100

Page 114: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bibliografie

[1] Capoen, H., Ethernet TCP/IP in de industrie

[2] ConnectionStrings.com, Forgot that connectionstring? Get it here!, 01/12/2008.http://www.connectionstrings.com/

[3] Cottyn, J., TPA: Managementsystemen., 2008

[4] Codeproject, CodeProject: Asynchronous processing of functions., 15/11/2008.http://www.codeproject.com/KB/vb/backgroundworker.aspx

[5] Codeproject, CodeProject: A flexible charting library., 02/03/2009.http://www.codeproject.com/KB/graphics/zedgraph.aspx

[6] Endress+Hauser, Endress+Hauser - Temperatuurmetingen, 01/05/2009.http://www.be.endress.com/nederlands

[7] GE Fanuc Automation Americas, Proficy Historian Electronic Books, 2006 versie 3.1

[8] JUMO Meet- en Regeltechniek B.V., JUMO Meet- en Regeltechniek B.V. * Meten, Re-gelen en Registreren *, 01/05/2009.http://www.jumo.nl/

[9] Jupitermedia Corporation, Add multithreading to your VB.net applications, 10/11/2008.http://www.devx.com/DevX/10MinuteSolution/20365

[10] Microsoft Corporation, Visual Basic and visual Basic. NET programming, 08/10/2008.http://msdn.microsoft.com/en-us/vbasic/default.aspx

[11] Microsoft Corporation, .NET Framework Conceptual Overview, 2008.

[12] Novotek, Proficy Historian Develoopment, 2005

[13] Vandenhoeke, D., SCADA - VB.NET

[14] Vandehoeke, D., SCADA - Databases

[15] Vandehoeke, D., SCADA - OPC Servers

101

Page 115: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bibliografie

[16] Vandemoortele Group, Vandemoortele Group, 10/12/2008.http://www.vandemoortele.com/NL/home.asp

[17] Vandewalle, W., MES Strategie VDM, versie A1, 28/08/2006.

[18] Vandewalle, W., User Requirement Specificaties: Beheer parameters natgedeelte Kubof,versie A1

[19] Vereecke, R., Productieproces: Het NAT gedeelte, versie 0.2

[20] Wikimedia Foundation Inc, ANSI/ISA-95., 10/02/2009.http://nl.wikipedia.org/wiki/ANSI/ISA-95

[21] Wikimedia Foundation Inc, Computer Integrated Manufacturing., 10/02/2009.http://nl.wikipedia.org/wiki/Computer_Integrated_Manufacturing

[22] Wikimedia Foundation Inc, Manufacturing Execution System., 10/02/2009.http://nl.wikipedia.org/wiki/Manufacturing_Execution_System

[23] Wikimedia Foundation Inc, Visual Basic., 07/04/2009.http://en.wikipedia.org/wiki/Visual_Basic

[24] ZedGraph Wiki, Main Page - ZedGraphWiki, 02/03/2009.http://zedgraph.org/wiki/index.php?title=Main_Page

Alexander Dewaele 102

Page 116: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage A

Binding

Figuur A.1: Early binding

Figuur A.2: Late binding

103

Page 117: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage B

Klassendiagramma Report Tool

Figuur B.1: Klassendiagramma Report Tool

104

Page 118: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage C

Klassendiagramma serverapplicatie

Figuur C.1: Klassendiagramma serverapp

105

Page 119: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage D

SDK: Code tags opvragen

1 Publ ic Function Tags (ByVal Tagmask As Str ing , ByVal Tagname As Boolean ,

ByVal Desc r ip t i on As Boolean , ByVal EngUnits As Boolean ) As TagRecordset

3

Dim oTags As Tags

5 Dim oTagRecordset As TagRecordset

7 Try

’Check i f s t i l l connected

9 CheckConnection ( )

11 ’Tagname , de s c r i p t i on , e ng i n e e r i n gun i t s

oTags = moServer . Tags

13 oTagRecordset = oTags . NewRecordset

15 With oTagRecordset

. C r i t e r i a . Tagname = Tagmask

17

With . F i e l d s

19 . Tagname = Tagname

. Desc r ip t i on = Desc r ip t i on

21 . Eng ineer ingUnit s = EngUnits

End With

23

I f Not . QueryRecordset Then

25 MsgBox(”Query Fa i l ed ”)

End I f

27 End With

29 Catch ex As Exception

Throw New Appl i cat ionExcept ion ( ex . Message )

31 End Try

33 Return oTagRecordset

End Function

106

Page 120: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage E

SDK: Code values opvragen

Publ ic Function Values (ByVal CTagmask As Str ing , ByVal CStartTime As Date ,

2 ByVal CEndTime As Date , ByVal CSamplingMode As Integer ,

ByVal CCalculationMode As Integer , ByVal CSampl ingInterval As Long ,

4 ByVal CNumberOfSamples As Integer , ByVal CFilterTag As Str ing ,

ByVal CFilterMode As Integer , ByVal CFilterComparisonMode As Integer ,

6 ByVal CFilterComparisonValue As Str ing , ByVal FTimestamp As Boolean ,

ByVal FValue As Boolean , ByVal FDataQuality As Boolean ,

8 ByVal FComments As Boolean ) As DataRecordset

Dim oDataRecordset As DataRecordset

10

oDataRecordset = moServer . Data . NewRecordset

12 With oDataRecordset

With . C r i t e r i a

14 . Tagmask = CTagmask

. StartTime = CStartTime

16 . EndTime = CEndTime

. SamplingMode = CSamplingMode

18 . CalculationMode = CCalculationMode

. Sampl ingInterva l = CSampl ingInterval * 1000

20 . NumberOfSamples = CNumberOfSamples

. F i l t e rTag = CFilterTag

22 . Fi lterMode = CFilterMode

. FilterComparisonMode = CFilterComparisonMode

24 . Fi l terComparisonValue = CFilterComparisonValue

End With

26 With . F i e l d s

. TimeStamp = FTimestamp

28 . Value = FValue

. DataQuality = FDataQuality

30 . Comments = FComments

End With

32

I f Not . QueryRecordset Then

34 MsgBox(”Query Fa i l ed ”)

End I f

36 End With

Return oDataRecordset

38 End Function

107

Page 121: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage F

Objectbrowser Oracleclient

Figuur F.1: Object browser provider Oracleclient

108

Page 122: Datacaptatie, -archivering en -rapportering van een ...users.telenet.be/DewaeleRob/PIH/Thesis.pdf · Voorwoord Een masterproef neemt veel tijd en energie in beslag. Maar eenmaal het

Bijlage G

Installatie Report Tool

Figuur G.1: Procedure installatie

109