Vb.net planningstool en Scada applicatie



Vergelijkbare documenten
Informatie & Databases

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Zelftest Informatica-terminologie

Databases - Inleiding

Sparse columns in SQL server 2008

Technisch Ontwerp W e b s i t e W O S I

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Installatie SQL: Server 2008R2

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag.

Technische nota AbiFire Rapporten maken via ODBC

NHibernate als ORM oplossing

Uitgebreid voorstel Masterproef Informatica

Technische nota AbiFire5 Rapporten maken via ODBC

CAK Installatiehandleiding

Uitgebreid voorstel Masterproef Informatica. Titel van het project : Ontwikkeling van remote controlled Alert & Task Agent

INFITT01 - Internettechnologie WEEK 8

ASRemote WebService. Via deze webservice kunt u:

6. Het maken van een database

Xampp Web Development omgeving opzetten onder Windows.

Thinking of development

Automatische Installatie op IIS server

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Workflows voor SharePoint met forms en data K2 VOOR SHAREPOINT

Portability, Interoperability of toch maar Connectivity Portability, Interoperability of toch maar Connectivity.

Software Test Plan. Yannick Verschueren

Les 2 Eenvoudige queries

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Installatie SQL Server 2012

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

Installatie King Task Centre

Your view on business On your favorite device

Interactief, real time security management

Installatie SQL Server 2014

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Hoofdstuk: 1 Principes van databases

Standard Parts Installatie Solid Edge ST3

edocs database structuur info

Your View on Business

Data Acquisitie in een modern jasje. Wordt het de tablet of toch iets anders?

HMI s ontsluiten machines naar het WEB

Les 11 : Basis SQL (deel2).

HANDLEIDING DMS Plugin Installatie, configuratie & werking

ProduPlus. Wat is ProduPlus

Software Test Plan. Yannick Verschueren

Overzichten genereren in het FMIS

Installatie SQL Server 2008R2

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Tips & Tricks: Tip van de maand November Office Integratie

Virtueel of Fysiek. Uitdagingen bij migratie naar Windows 7

DataFlex 19.0 SQL Server

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Object Oriented Programming

Van Big Data tot waardevolle informatie op maat van de (interne)gebruiker en de burger

BRIGHT-NET INSTALLATIE HANDLEIDING

Installatie King Task Centre

Taxis Pitane SQL beheerder. Censys BV - Eindhoven

Orbis Software. Portal4U. Installatie Handleiding. Dit document bevat de Installatie Handleiding voor Portal4U

Installatie van sqlserver

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Process & IT: eerst KIEZEN maakt het DOEN daarna zoveel makkelijker

Koppeling met een database

Multi user Setup. Firebird database op een windows (server)

Release Notes. Afdrukdatum: 2010/05/25

Handleiding installatie. 3WA Local Connect

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn:

Microsoft Excel. It s all about Excel - VBA

Software Processen. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 4 Slide 1. Het software proces

Software Design Document

XAMPP Web Development omgeving opzetten onder Windows.

UBC op Microsoft Windows 64-bits

Handleiding Digitaal Aanvraagformulier

MA!N Rapportages en Analyses

ORBIS SOFTWARE TASKCENTRE INTEGREERT

Martiris Secure Private Data. Gegevensbescherming in Oracle Databases

Midi PDF Bladmuziek lezer

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

Koppelingen met proffice (versie 2.0.1)

Werking van de Office Connector, en het oplossen van fouten.

AdBackup Pro November 2015 AdBackup Pro 6.13 is beschikbaar op het platform Oodrive Vision en als een op zichzelf staand product AdBackup Pro

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Versturen van vanuit een Delphi VCL toepassing

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

Planbord installatie instructies

Mijn eerste ADO.NET applicatie

Efficiëntie? Dat is werken

Databases en SQL Foundation (DBSQLF.NL)

4 ASP.NET MVC. 4.1 Controllers

Connectivity SQL Er kan geen verbinding worden gemaakt met de SQL server

HOWTO: Microsoft Domain Controller en Linux DNS-server. geschreven door Johan Huysmans

Installatiehandleiding Business Assistent

Installatiehandleiding Business Assistent

Zelftest Java EE Architectuur

Query SQL Boekje. Fredrik Hamer

Het is een verticaal geïntegreerd bedrijf, dat zowel actief is in de productie van grondstoffen en halffabrikaten als van afgewerkte producten.

Capita Selecta Design Patterns voor administratieve applicaties

Tetra Industriële Security

Transcriptie:

Masterproef VB.net planningstool en Scada applicatie Studiegebied Industriële wetenschappen en technologie Opleiding Master of Science in de industriële wetenschappen: elektrotechniek Afstudeerrichting Automatisering Academiejaar 2011-2012 Diederick Lambert

Voorwoord Als laatste jaarstudent wou ik mijn opgedane kennis testen in de praktijk. Zo ben ik gericht gaan zoeken om mijn eindwerk te verwezenlijken in het vakgebied rond VB.net implementatie. Daardoor ben ik terecht gekomen bij de Balta Group. Balta Group is een bedrijf die voornamelijk vloerbekleding maakt. Hier kreeg ik de kans om een bestaande situatie te analyseren en later het project te realiseren. Het project bestaat erin om een bestaand VB6 programma te vervangen door een nieuw dynamisch programma die niet enkel meer inzetbaar is in één afdeling maar ook op andere afdelingen zal worden gebruikt. Graag wil ik ook een dankwoord plaatsen voor de mensen die mij hebben geholpen bij het realiseren van dit eindwerk. Tijdens het ontwikkelingsproces waren mijn interne promotors Koen Berth en Bart Rommens steeds bereid mij te helpen zodat alles vlot verliep. Ook de mensen van de engineering afdeling waren steeds bereid mij bij te staan waar nodig. Mijn externe promotor wil ik natuurlijk ook bedanken voor de hulp bij het controleren van het script en ook voor de goede raad die mij werd gegeven. Dank u voor de steun en advies.

Inhoudsopgave VOORWOORD... 4 INHOUDSOPGAVE... 5 ABSTRACT... 7 LIJST MET AFKORTINGEN... 8 FIGUURLIJST... 9 TABELLIJST... 10 INLEIDING... 11 1 BEDRIJFSVOORSTELLING... 12 1.1. Algemene bedrijfsinformatie... 12 1.1.1. Balta Rugs Avelgem... 13 1.2. Geschiedenis Balta... 13 2 PROBLEMATIEK... 14 2.1. Probleemstelling Balta... 14 2.2. Doelstellingen... 14 2.2.1. Scada... 14 2.2.2. Programma... 15 2.2.2.1. GUI... 15 2.2.2.2. Programmering... 15 3 COMPUTER INTEGRATED MANUFACTURING... 16 3.1. Productiesoftware... 18 3.2. Object georiënteerd programmeren... 19 3.2.1.1. Implementatie vb.net... 20 3.3. OPC... 21 3.3.1. OPC specificaties... 23 3.3.2. OPC.net applicatie... 24 3.3.3. Kepware... 25 3.3.4. Keuze software OPC... 26 3.4. Database... 27 3.4.1. Database systeem architectuur... 27 3.4.1.1. File georiënteerd systeem... 27 3.4.1.2. Server georiënteerd systeem... 27 3.4.2. Database model... 28 3.5. SQL... 29 3.5.1. DML... 30 3.5.1.1. Select statement... 30 3.5.1.2. Insert statement... 30 3.5.1.3. Delete statement... 30 3.5.1.4. Update statement... 31 3.5.2. SQL in vb.net... 31

4 ANALYSE SOFTWARE... 32 4.1. Applicatie structuur... 32 4.1.1. Standalone vs. Client server model... 32 4.1.2. Opbouw VB.net klassen... 33 4.1.2.1. Form... 33 4.1.2.2. Database klasse... 33 4.1.2.3. Planningsklasse... 35 4.1.2.4. Scada klasse... 36 4.1.2.5. Persoon Klasse... 36 4.1.2.6. Machine Klasse... 37 4.1.2.7. Punt Klasse... 37 4.1.3. Setup... 38 4.2. Opbouw SQL server... 41 4.2.1. Tabel tblconflogplanningpersoon... 41 4.2.2. Tabel tblconflogplanningmachine... 42 4.2.3. Tabel tblconflogplanningtasks... 43 4.2.4. Tabel tblconflogplanningtijdskrediet... 44 4.2.5. Tabel tblconflogplanningploegmatrix... 45 4.2.6. Relatie tussen de tabellen... 45 4.2.7. Opslaan Planning schema s... 46 4.2.8. Tabel tblconflogproductie... 46 4.2.9. Tabel tblconflogproductiemachines... 47 5 HANDLEIDING SOFTWARE... 48 5.1. Installatie... 48 5.1.1. Aanmaken Tabellen op database... 48 5.1.2. Instellen app.config... 48 5.1.3. Aanpassen tabelnamen... 49 5.1.4. Toekenning van de privileges aan de gebruiker... 50 5.1.5. Setup & installatie... 50 5.2. Werking Planningstool... 51 5.2.1. Toevoegen van machines en personen... 51 5.2.2. Functionaliteiten planningstool... 53 5.2.2.1. Aanmaken nieuwe planning... 53 5.2.2.2. Planning inladen... 53 5.2.2.3. Planning opslaan... 53 5.2.2.4. Planning Verwerken Excel... 54 5.3. Werking Scada... 54 BESLUIT... 59 BRONVERMELDING... 60 BIJLAGE... 61

Abstract The title of the thesis is vb.net planning tool and Scada application. This project is initiated by the company Balta Group. The aim of this project is to make a total new program that will replace an old system. In the current situation there is only an old VB6 program that is used as a Scada application. This program isn t up to date anymore and can t be adjusted. To make up the planning of a curtain division they still use an Excel worksheet. To fill in the planning sheet they have lists of data they need to manually pick out and retype it in Excel. So the goal of the new program is to make a dynamic Scada system so machines can be easily updated, moved and deleted. For the planning tool we want that all data is gathered on a central database. To achieve these goal we talked about the expectation the end users had in mind. With this guideline the program was build. The final build of the program made up with every goal. It is so dynamic that it will be used in other divisions as well.

Lijst met afkortingen B2MML Business To Manufacturing Markup Language CAD Computer Aided Design CAM Computer Aided Manufacturing CIM Computer Integrated Manufacturing DCL Data Control Language DDL Data Definition Language DML Data Manipulating Language DMS Database Management System FK foreign key GUI Graphical user interface KMO Kleine of Middelgrote Onderneming LIMS Laboratory Information Management Systems MES Manufacturing Execution Systems NV Naamloze Vennootschap OOP Object oriented programming OPC OLE for process control PLC Programmable logic controller Scada supervisory control and data acquisition SOA Service Oriented Architecture SQL Structured Query Language RPC Remote Procedure Call VB6 Visual Basic 6 VB.net visual Basic.net (net framework) UML Unified Modeling Language WMS Warehouse Management System XML Extensible Markup Language

Figuurlijst Figuur 1: Topografie Balta... 12 Figuur 2: Balta Avelgem Rugs... 13 Figuur 3 : De CIM piramide... 16 Figuur 4 : Opbouw Object in OO... 19 Figuur 5 : Opbouw drivers voor OPC... 21 Figuur 6 : Opbouw Drivers volgens OPC standaard... 21 Figuur 7 : OPC in de CIM piramide... 22 Figuur 8 : OPC WRAPPER... 24 Figuur 9 : Boomstructuur OPC... 24 Figuur 10 : KepServerEx mogelijkheden... 25 Figuur 11 : LinkMaster mogelijkheden... 26 Figuur 12 : Opbouw database systeem... 27 Figuur 13 : Form met koppelingen naar onderliggende klassen... 33 Figuur 14 : Database klasse met koppelingen naar onderliggende klassen... 33 Figuur 15 : Planningsklasse met koppelingen naar onderliggende klassen... 35 Figuur 16 : Scada klasse met koppeling naar onderliggende klasse... 36 Figuur 17 : Opbouw van de klasse Persoon... 36 Figuur 18 : Koppelingen van de klasse machine... 37 Figuur 19 : VB.net project toevoegen aan solution... 38 Figuur 20 : Setup project toevoegen aan solution... 39 Figuur 21 : Implementatie van msiexec.exe in setup... 39 Figuur 22 : Voorbeeld van een ingevulde tblconflogplanningpersoon... 41 Figuur 23 : Voorbeeld van een ingevulde tblconflogplanningmachine... 42 Figuur 24 : Voorbeeld van een ingevulde tblconflogplanningtasks... 43 Figuur 25 : Voorbeeld van een ingevulde tblconflogplanningtijdskrediet... 44 Figuur 26 : Ingevulde tabel tblconflogplanningploegmatrix... 45 Figuur 27 : Ingevulde tabel tblconflogproductie... 46 Figuur 28 : ingevulde tabel tblconflogproductiemachines... 47 Figuur 29 : Interface voor het toevoegen van machines in de planningstool... 51 Figuur 30 : Interface om een persoon toe te voegen... 52 Figuur 31 : Interface Kepware... 54 Figuur 32 : Interface om machines toe te voegen in scada app... 55 Figuur 33 : Scada rooster... 56 Figuur 34 : Algemeen overzicht Scada gedeelte... 57 Figuur 35 : Detail view met alle parameters... 57 Figuur 36 : Detail view van een bepaalde parameter... 58

Tabellijst Tabel 1 : Select statements... 30 Tabel 2 : Insert statements... 30 Tabel 3 : Delete statement... 30 Tabel 4 : update statement... 31

Inleiding In een bedrijf is productie essentieel. Daarom zal een productie proces zo goed mogelijk worden opgevolgd.om dit te doen is er kennis nodig van het product maar ook van de machines en omliggende invloeden. Eenmaal al deze factoren gekend zijn kan het proces ontleed worden. Om daarna een grondige analyse te kunnen opbouwen zal men gegevens uit de machines loggen en deze in aan Scada systeem binnen lezen. Hier kan de productieverantwoordelijke dan zien hoe alles verloopt en op tijd ingrijpen. In de hedendaagse industrie is dit niet meer weg te denken. Daardoor heb ik voor dit project gekozen om meer te weten te komen over hoe zo een systeem in de industrie wordt geïntegreerd. Het bestaande Scada systeem is reeds verouderd en niet meer onderhouden. Hierdoor zijn verschillende machines niet meer gelogd. En zijn er nieuwe machines die niet geïntegreerd zijn. Het nieuwe systeem zal dynamisch worden opgebouwd zodat eenvoudig machines kunnen worden gewijzigd. Naast het analyseren van productiedata moeten er ook planningen worden opgebouwd. Dit is belangrijk voor het beheren van een productie. Want als er geen goede planning is opgebouwd kan het gebeuren dat een machine zonder grondstof valt. Of kan het zelf gebeuren dat de werknemers niet komen opdagen door gebrek aan informatie. Helaas worden de meeste planningen nog opgemaakt met de hand. Hierdoor is de kans op fouten zeer groot. Daarom zal er vanaf heden een software worden gebruikt die de gebruiker zal begeleiden bij het plannen. Dit zal niet enkel de fouten minimaliseren maar zal ook nog eens voor een efficiënter gebruik zorgen. Om dit project zo vlot mogelijk te laten verlopen zal eerst worden overlegt wat de eindgebruiker juist verlangt van het programma. Met deze input zal er dan een basis software worden geschreven. Zodat er grondig getest kan worden. Zo kan er aan de hand van een trail and error systeem een software bekomen worden waar de eindgebruiker volledig mee tevreden is. 11

1 Bedrijfsvoorstelling 1.1. Algemene bedrijfsinformatie Balta Group is één van de wereldleiders in vloer en muurbekleding. Balta is begonnen als KMO en is uitgegroeid tot een groep die verschillende bedrijfstakken huisvest. De topografie wordt beschreven in figuur 1. Door de samenwerking tussen de bedrijfsunits is de groep in staat een totaal oplossing te bieden voor woondecoratie; gaande van karpet, laminaat, kamerbreed tapijt, vinyl, behang tot gordijnstoffen. Door een strikt kwaliteitsbeleid, goede dienst na verkoop en een constante innovatie van technieken en trends zijn de producten die deze groep leveren van uiterste topkwaliteit. De gedrevenheid van deze groep zit in de inzet en de werkkracht van zijn medewerkers. Er heerst een teamverband met de mens als centrale speler. Alles is gericht op een professionele, klantvriendelijke aanpak waardoor de groep zich kan profileren als een betrouwbare partner. Figuur 1: Topografie Balta 12

1.1.1. Balta Rugs Avelgem In de afdeling in Avelgem worden de geweven karpetten gefabriceerd. Zoals de pure wollen tapijten en de B tron (polypropyleen) karpetten. Doordat deze afdeling alles zelf produceert en beschikt over moderne en flexibele machines is men in staat vlot in te spelen op nieuwe trends, wat deze site uniek maakt. Op de site maakt men gebruik van de laatste nieuwe managementsoftware, waaronder een Warehouse Management System (WMS) zodat alles vlot kan gestockeerd en geleverd worden. Figuur 2: Balta Avelgem Rugs 1.2. Geschiedenis Balta In 1964 werd Balta NV opgericht in St. Baafs Vijve door de familie Balcaen. Er werkten toen amper 50 mensen. Maar om producten te leveren tegen een betaalbare prijs en een hoge kwaliteit, heeft men geïnvesteerd in hoogtechnologische machines. Hierdoor is de Balta bedrijvengroep in amper één generatie uitgegroeid van een kleinschalige KMO tot een wereldleider. Balta is in 2004 voor het grootste deel overgenomen door het Londense Doughty & Co. 13

2 Problematiek 2.1. Probleemstelling Balta Op de site wordt de planning nog steeds opgemaakt in een eenvoudige Excel sheet. Telkens word de beschikbaarheid van de machine bepaald aan de hand van de beschikbare gekwalificeerde personen. Alle machines in de afdeling zijn uitgerust met de laatste technologieën zoals bijvoorbeeld een Scada systeem. Scada staat letterlijk voor het Supervisory Control And Data Acquisition. Het is een systeem dat ontwikkeld is om data (meet en regelgegevens) over de productieomgeving ter beschikking te stellen. Doordat het machinepark al enige veranderingen heeft ondergaan worden niet alle gegevens meer gelogd. Dit doordat het Scada systeem beheert wordt door een oud VB6 programma. Dit programma is niet in staat om aanpassingen door te voeren. Ook zijn hierdoor verschillende databases ontstaan die niet samenwerken met het centrale systeem en men zo dus de data niet kan verzamelen. In de toekomst zal voor deze afdeling één software tool gebruikt worden die alles omvat. 2.2. Doelstellingen De hoofddoelstelling is het ontwikkelen van één softwaretool. Deze tool moet een Scada systeem en een planningstool bevatten. Het planningsgedeelte zal de persoonlijke gegevens bijhouden van alle werknemers alsook de machines deze persoon kan bedienen. 2.2.1. Scada Om een Scada systeem te ontwikkelen moet men in staat zijn de data op een correcte manier te verzamelen en te visualiseren. Om zo gestructureerd mogelijk te werk te gaan moet de data op één centrale database worden gelogd. Voor het loggen van data moet eerst worden nagegaan welke data relevant is om te visualiseren. Hiervoor zal een lijst worden opgemaakt met alle nuttige data die uit de PLC s kan worden gelogd. Hierna zal alles worden gecapteerd via Kepware software en worden gelogd op de centrale database. 14

2.2.2. Programma Omdat het oude programma in Vb6 is geschreven zal het nieuwe programma worden herschreven. Hierbij zal alles worden herzien en enkel nog de nuttige data worden gevisualiseerd. 2.2.2.1. GUI De Grafische User Interface (GUI) moet zo worden opgebouwd dat een eenvoudige navigatie tussen de planningstool en Scada applicatie mogelijk is. Het planningsgedeelte zal niet enkel instaan voor het visualiseren en opmaak van de planning. Maar zal ook instaan voor het invoegen van nieuwe gebruikers en Excel rapportering. Het Scada gedeelte zal worden opgebouwd aan de hand van dynamisch opgebouwd rooster. Zo zullen machines eenvoudig kunnen worden verplaatst. Hierbij zullen buttons voorzien zijn waardoor er een detail view zal tevoorschijn komen. De bediening en opmaak van het Scada gedeelte zal ongeveer het zelfde blijven als het oude programma zodat de gebruikers er niet veel hinder van ondervinden. 2.2.2.2. Programmering Het programma zal worden opgebouwd in VB.net aan de hand van Unifief Modeling Language (UML). Hierdoor zal alles worden voorgesteld door een basisklasse. Hierdoor kan een eenvoudige programmeerinterface worden gemaakt. Dit helpt om de code zo eenvoudig mogelijk te houden maar ook om de code gelijkaardig te houden per machine. Naast de opbouw van de code zal het programma instaan voor het initialiseren van de data bij het laden. Hierbij zal reeds het gehele machinepark worden ingeladen in een lijst die bestaat uit een basis klasse van een machine. Voor meer gedetailleerde data zal dan via een bedieningspanel een bepaalde eis worden ingesteld om dan de rest van de data in te lezen van de database. 15

3 Computer Integrated Manufacturing Eind de jaren 60 wanneer de computer al meer commercieel was ontwikkeld is er actief gezocht hoe deze zou kunnen worden geïmplementeerd binnen een bedrijf. Doordat de computer nog niet zo een grote rekenkracht had werd deze vooral ingezet ter ondersteuning van de werknemer. Naarmate de computer meer ontwikkelde werd zijn rol groter in de industrie. Deze werd dan vooral gebruikt voor Computer Aided Design/ Computer aided Manifacturing (CAD/CAM). Hierbij werd vooral gebruik gemaakt voor het ontwikkelen van nieuwe machines en voor het controleren/aansturen van deze ene machine. Zo werd in de jaren 70 de term Computer Integrated Manufacturing (CIM) geïntroduceerd. Alles omtrent CIM beschreef toen hoe computers konden worden geïntegreerd in één productiecel. Later werd dit zodanig uitgebreid dat op heden de CIM alles beschrijft qua integratie in een bedrijf. Omdat het CIM begrip zodanig uitgebreid is, is er een piramide opgesteld die alle gebieden wat van elkaar splits (Figuur 3). Hierdoor kan alles per laag (gebied) worden besproken en kan de link tussen de lagen worden verduidelijkt. Onderaan bevindt zich de productie controle. Hier worden vooral de processen aangestuurd aan de hand van PLC s, sensoren en actoren. De laag erboven houdt zich vooral bezig met het management van de productie zelf. Hierdoor zal een uitwisseling nodig zijn van data die wordt gecapteerd en gemanipuleerd. De bovenste laag is de laag van de commerciële activiteiten zoals marketing, inkoop, materiaal management, etc. De bovenste laag moet natuurlijk communiceren met de productie. Want zonder de optimale communicatie kan er heel wat mislopen. De piramide is ook zo opgesteld dat enkele eigenschappen eigen zijn aan elke laag. Zo zijn de tijdsconstanten en uitgewisselede data op elke laag anders. De tijdsconstante is des te groter hoe hoger je bent in de piramide. Op de onderste laag en de tussenlaag spreekt men van minuten, seconden tot real time terwijl op de bovenste laag men meer zal spreken van dagen, weken tot zelfs maanden. Want op de bovenste laag is er geen interesse wat er op de werkvloer gebeurd. Er is enkel interesse in wat er effectief wordt geproduceerd. Figuur 3 : De CIM piramide 16

Naast de tijdconstante varieert ook de datahoeveelheid die in één keer wordt uitgewisseld. Op de onderste laag gaat het van bits tot enkele bytes. Terwijl op de lagen erboven men veel grotere bestanden zal gaan versturen die tot enkele kilobytes zal oplopen. Als dit in verband wordt gebracht met de tijdsconstante lijkt het logisch dat het minder lang zal duren om enkele bits te versturen dan dat je kilobytes moet versturen. Door deze twee factoren is er voor data uitwisseling op elke laag praktisch een andere manier nodig om te voldoen aan de vooropgestelde eisen. Wat het uiteindelijk moeilijk maakt om direct te gaan communiceren tussen verschillende lagen. Om dit op te lossen zijn verschillende methodes ontwikkeld om data uit te wisselen. De uitwisseling van data tussen het bovenste en het middelste niveau zal vaak gedaan worden aan de hand van 4 methodes. RPC SOA Database interface OPC De eerste methode is Remote Procedure Call (RPC). Bij RPC wordt een procedure aangeroepen op een computer op een bepaalde locatie in het bedrijfsnetwerk. Een tweede om informatie uit te wisselen, is via het gebruik van web services. Die technologie is gebaseerd op een Service Oriented Architecture (SOA). Een Client doet een verzoek aan een bepaalde service om een taak uit te voeren. De server ontvangt het verzoek en antwoordt met de nodige gegevens. Deze protocollen maken vaak gebruik van http en TCP/IP. Een derde methode is via een database interface. En de laatste methode is via een bestandinterface. Beide applicaties hebben een aantal gemeenschappelijke mappen. Indien een applicatie informatie wil versturen dan plaatst de applicatie een bestand in een gedeelde map. De andere applicatie leest dan het bestand in, verwerkt het en verwijderd het ui de gedeelde map. Hierbij wordt vaak gebruik gemaakt van XML bestanden. De uitwisseling tussen de middelste en de onderste laag gebeurd het vaakst via OPC (Ole for Process Control) die later wordt besproken. Voor deze thesis wordt vooral toegespitst op database communicatie. Want voor het uitwisselen van gelogde data van Plc s maakt Kepware gebruik van een database logprogramma. Om elke laag van de CIM piramide te kunnen verwerken, wordt gebruik gemaakt van software. Om bijvoorbeeld orders te verwerken en te kunnen opvolgen tot de levering is software beschikbaar onder de naam ERP software. 17

3.1. Productiesoftware Productiesoftware is de naam die gebruikt wordt om softwarepakketen te omschrijven die zich bevinden op het productiemanagement niveau (middelste laag). Deze software bevat één of meerdere functionaliteiten die te maken hebben met productie. Enkele typische voorbeelden zijn Manufacturing Execution Systems (MES), Warehouse Management Systems (WMS) en Laboratory Information Management Systems (LIMS). Maar deze software kan ook modules bevatten die deel uitmaken van de bovenste en de onderste laag zoals ERP of SCADA systemen enkel voorbeelden hiervan zijn SAP en Microsoft Dynamics. Dergelijke softwarepakketten kunnen zelf worden ontworpen of er kan een bestaand softwarepakketten worden aangekocht. Bij de grotere softwarepakketten is standaardisatie van groot belang. Hierbij is de opbouw van het programma ontwikkeld volgens bepaalde standaarden. De standaarden worden ontwikkeld door erkende internationale organisaties zoals ISA, MESA, etc. De data uitwisseling zal vaak gebeuren via business to manufacturing Markup Language (B2MML). Bij sommige toepassingen is het vaak te duur om zo een pakket aan te schaffen en zal er vaak zelf een software worden geschreven. Hierbij wordt vaak afgeweken van dergelijke standaarden. Zoals elke standaard is de gebruiker vrij van deze te gebruiken. Wat niet wil zeggen dat deze niet kunnen worden geïmplementeerd. Maar doordat dit vaak heel wat kennis met zich meebrengt zal er meestal een eigen invulling worden gegeven aan de opbouw van het programma. Onze softwaretool zal voornamelijk een basis deel omvatten van een Planning System en een deel van het SCADA gebeuren. Omdat het niet te verantwoorden is om een bestaand pakket aan te kopen en de kennis binnen het bedrijf wil gehouden worden, wordt geopteerd zelf de software te schrijven. Hierbij zal ook geen standaard worden geïmplementeerd. Omdat hiervoor een heel wat voorbereidingen moeten worden getroffen en dit onmogelijk is om in een korte tijdspanne te verwezenlijken. 18

3.2. Object georiënteerd programmeren Object georiënteerd programmeren heeft zijn oorsprong rond de jaren 1960. Toen werd er redelijk wat onderzoek gedaan hoe OOP zou kunnen worden geïmplementeerd in verschillende codetalen. De eerste implementatie volgde nog in dezelfde periode. Deze codetaal werd Simula genoemd. Slechts 10 jaar later werd de tweede ondersteunde taal vrijgegeven die smalltalk noemde. Maar de grote doorbrak kwam er toen C++ werd voorgesteld. Deze taal was goed te implementeren in verschillende branches. Zo heeft dit geleid tot het ontstaan van veel verschillende invullingen van OOP. Redelijk recent is de implementatie in.net platform van Microsoft. Zo werden vb.net en C# uitgebracht. Voordat er object georiënteerd geprogrammeerd werd waren de standaard programma s redelijk complex en langdradig. Naarmate de lengte toenam werd er vaak code gegroepeerd in secties. Maar dit was vaak niet voldoende om een mooi overzicht te behouden. Zeker wanneer er een aanpassing nodig was, had dit vaak ernstige gevolgen. Het programma zat dan vaak vol met bugs. In contrast met OOP zal bepaalde code worden afgesplitst van het hoofd programma. Deze code is dan niet rechtstreeks aanspreekbaar, maar zal worden aangesproken via functies die methodes worden genoemd. Hierdoor zal een stuk code verantwoordelijk zijn voor een bepaalde bewerking. Dit maakt het ook eenvoudigere om een programma later aan te passen. Vaak zullen een groep methodes worden gebundeld omdat deze iets gemeen hebben. De code die hiervoor verantwoordelijk is zal niet enkel de methodes bundelen maar zal ook de data die bewerkt wordt onderhouden. Deze code word een object genoemd. Object Propertie (atribuut of status) Methode (functie of procedure) Figuur 4 : Opbouw Object in OO Zo zal een object georiënteerd programma een verzameling zijn van deze objecten. Elke object zal dan een bepaalde datagroep onderhouden. Deze groep zal vaak een stuk complexe code voorstellen of een object uit de echte wereld. Zo zal in het programma die geprogrammeerd werd voor de planning een paar objecten aanwezig zijn die de planning, machines en personen voorstellen. Naast deze basis objecten zullen er ook kopieën aanwezig zijn van deze objecten. Zo zal er een lijst zijn van personen die elk een andere invulling krijgen. Maar de methodes die kunnen worden aangesproken zullen nog steeds dezelfde zijn. 19

Objecten kunnen zo worden geprogrammeerd dat deze niet enkel de data bijhouden maar ook nog eens controle kunnen uitvoeren op deze data. Doordat dit allemaal intern gebeurd is het eenvoudig een aanpassing te doen aan object zonder enige code te wijzigen buiten dit object. Dit kan nog verder worden uitgebreid zodat methodes kunnen worden gestandaardiseerd over verschillende projecten. Zo kan één methode voorkomen in elk object maar bij elk object een eigen invulling geven aan deze methode. Een standaard methode die in elk object aanwezig is de new methode. Hierbij wordt bij de aanmaak van het object enkele data direct een juiste invulling gegeven. Een ander krachtig instrument van OO is de mogelijkheid tot hiërarchische classificatie. Een superklasse op het hoogste niveau kan in meerdere niveaus opgesplitst worden in lagere klassen. Daarbij 'erft' elke klasse op het lagere niveau de attributen en methoden van de klassen op het niveau boven de klasse. Dat mechanisme noemen we overerving (inheritance). Overerving laat ook toe varianten van klassen te maken. Deze varianten worden basis en specifiekere klassen genoemd. In sommige situaties kan de basisklasse aangeven welke operaties mogelijk zijn op een object, terwijl een specifieke klasse een specifieke implementatie van de operatie geeft. Zo kan een basisklasse "figuur" gemaakt worden, met specifieke implementaties "cirkel" en "vierkant". Wanneer gebruikgemaakt zou worden van een door figuur gedefinieerde methode (bijvoorbeeld voor het verkrijgen van de oppervlakte), is het niet langer nodig om te weten welke vorm het object precies heeft; of het intern met een straal of met een lengte of breedte wordt opgeslagen. Dit concept wordt polymorfisme genoemd. 3.2.1.1. Implementatie vb.net Zoals in de meeste talen worden objecten voorgesteld door klassen. Dit is in vb.net ook zo. In deze klassen worden dan Fields, properties en methodes onderscheiden. De fields stellen de data voor die worden bijhouden in het object. De properties geven de mogelijkheid om deze data op te vragen buiten het object zelf. En de methodes zijn de functies die instaan voor het controleren en bewerken van deze data. In vb.net is een mogelijkheid voorzien die al deze objecten grafisch zal voorstellen. Het zogenaamde klasse diagram een voorbeeld hiervan is weergegeven in figuur 13. Van hieruit kunnen de connecties tussen de objecten worden weergegeven maar kan je de objecten zelf aanpassen ook. Zo kan je fields, properties of methodes toevoegen/aanpassen of verwijderen. Ook kan je in het overzicht een nieuwe klasse definiëren. Een mooi voorbeeld van een koppeling tussen 2 klassen wordt weergegeven in figuur 18. 20

3.3. OPC Datacaptatie wordt vooral toegepast om op management niveau analyses uit te voeren op machineparameters. Omdat het capteren van data uit een PLC niet vanzelfsprekend is zijn hiervoor drivers ontwikkeld die met een PLC kunnen communiceren. Elke fabrikant levert zijn eigen driver mee bij de PLC en om met een pc software te communiceren zoals Excel of VB.NET is telkens nieuwe driver nodig. Dit bracht vaak conflicten met zich mee. Onderstaande figuur heeft een inzicht hoe omslachtig dit was. Figuur 5 : Opbouw drivers voor OPC Hierdoor is in 1994 het OPC Task Force opgericht. Waar enkele bedrijven (Rockwell, Siemens, ) zich onder koppelen om een standaard uit te brengen voor deze drivers. Ondertussen is het OPC Task Force geëvolueerd tot OPC Foundation en bestaat ze reeds uit meer dan 270 leveranciers van hard en/of software en werden reeds tal van specificaties uitgebracht. Het basis idee achter OPC is dat alle drivers zouden worden vervangen en dat er één standaard interface wordt uitgebracht. Aangezien de technologie gebaseerd is op COM, zal het geheel functioneren in een client server architectuur. Waar vroeger een driver zorgde voor de communicatie zal nu een OPC server worden voorzien. Deze zal aan de ene zijde de standaard interface aanbieden en aan de andere zijde zal deze met een producteigen protocol communiceren met het device. De opbouw wordt voorgesteld in figuur 6. Figuur 6 : Opbouw Drivers volgens OPC standaard 21

Deze server wordt beheerd door de producent zelf en dient dus te worden aangekocht. Naast de server dient natuurlijk ook een Client te worden voorzien. Deze kan een programma zijn die de producent levert bij een bepaalde toepassing. Hierbij hoeft de klant zich geen kennis te verschaffen van het OPC gebeuren en kan de configuratie gebeuren via een GUI. Vaak hebben dergelijke programma s beperkingen en staan deze niet toe te communiceren met andere merken van PLC s. Dit is natuurlijk een nadeel als er gewerkt wordt met verschillende soorten PLC s. Hierdoor hebben de producenten hun eigen OPC klasse vrijgegeven zodat een bedrijf een eigen applicatie kan ontwikkelen. Hierbij is natuurlijk enige kennis nodig hoe OPC werkt. Maar omdat dit vaak zeer omslachtig is zal er beroep worden gedaan op een firma die hierin is gespecialiseerd. Eén van deze firma s is Kepware. Een groot voordeel van deze client server architectuur is dat deze kan worden uitgebreid naar de hogere lagen van de CIM piramide. De tussenlaag zal dan communicatie verzorgen met de onderste laag en zal op zijn beurt weer een OPC server zijn voor de bovenliggende laag. Zo wordt alle communicatie in één standaard verwerkt en is het eenvoudiger om data uit te wisselen. Deze uitwisseling wordt voorgesteld in figuur 7. Figuur 7 : OPC in de CIM piramide 22

3.3.1. OPC specificaties Sinds het ontstaan van de OPC Foundation en dankzij het grote succes van hun eerste specificatie, volgden nog heel wat nieuwe standaarden. Iedere nieuwe specificatie leverde telkens weer een oplossing voor specifieke gevallen van communicatie op. OPC Data Access De OPC DA specificatie is de originele specificatie van de OPC Foundation. Het doel is real time data overdracht realiseren tussen de field (PLC s) en de hogere lagen van de CIM piramide. OPC Alarms & Events OPC Batch OPC Data exchange OPC Historical Data Access OPC Security OPC XML DA Hier wordt hetzelfde resultaat beoogd als bij OPC DA maar wel via een andere technologie. OPC DA heeft als nadeel dat het gebaseerd is op COM technologie, wat de inzetmogelijkheden beperkt tot Windows gebaseerde systemen. OPC XML DA werkt via een webservice (SOAP = XML gebaseerd). Aangezien XML zelf beschrijvende tekstdata is, is het dan ook OS onafhankelijk. OPC Complex Data OPC Commands OPC Unified Architecture OPC UA is de meest recente specificatie en verschilt qua techniek sterk van al zijn voorgangers. Het doel is één overkoepelende structuur te creëren waarin alle voorgaande standaarden vervat zitten. De focus ligt dus op de combinatie van voorgaande functionaliteiten en de communicatie tussen die mogelijkheden onderling. 23