Voorwoord Een eindwerk kan uitaard niet zonder de hulp en steun van anderen worden tot stand gebracht. Daarom zou ik iedereen willen bedanken die mij in het voorbije jaar gesteund en geholpen heeft. Vooraleerst wil ik de firma Mondi Packaging bedanken voor de mogelijkheden die zij mij gegeven hebben om dit eindwerk te kunnen realiseren. Een bijzonder woord van dank gaat uit naar mijn externe promotor dhr. Vincent Callens die dit werk opgevolgd en begeleid heeft. Daarnaast wil ik ook dhr. Brian Ameys en dhr. Geert Verkruysse bedanken voor hun deskundige hulp. Ook wil ik dhr. Henk Capoen, mijn interne promotor, bedanken, die altijd klaar stond om mij te helpen. Daarnaast wil ik nog mijn familie bedanken voor hun steun. Tenslotte wil ik mijn ouders bedanken omdat ze het mogelijk maakten om deze studies aan te vatten.
Thijs Van Belleghem
I
Inhoudstafel Voorwoord .......................................................................................................................................... I Inhoudstafel........................................................................................................................................II Lijst met figuren................................................................................................................................ V Lijst met tabellen............................................................................................................................VIII Lijst met bijlagen.............................................................................................................................. IX Inleiding ............................................................................................................................................. 1 Voorstelling Mondi Packaging....................................................................................................... 1 De productie ................................................................................................................................... 3 Beschrijving eindwerk.................................................................................................................... 5 Doelstellingen ................................................................................................................................ 6 1 Optimalisatie van de lijmproductie ............................................................................................ 7 1.1 Inleiding............................................................................................................................ 7 1.2 Productieproces................................................................................................................. 7 1.3 Programma in STEP 7 .................................................................................................... 10 1.3.1 Omzetting naar S5TIME ............................................................................................ 10 1.3.2 Silo vullen met poeder................................................................................................ 10 1.3.3 Vullen en ledigen van de mengtank ........................................................................... 12 1.3.4 Roerwerk 2 en 3.......................................................................................................... 19 1.4 Visualisatie in WinCC flexible ....................................................................................... 21 1.4.1 Weergave van het proces............................................................................................ 21 1.4.2 Recepten ..................................................................................................................... 22 1.4.2.1 Basisprincipes .................................................................................................... 22 1.4.2.2 Receptstructuur .................................................................................................. 23 1.4.2.3 Configuratie ....................................................................................................... 24 1.4.2.4 Transfer van recept datarecords......................................................................... 26 1.4.2.5 Het receptuurbeeld in de runtime....................................................................... 27 1.4.3 User administration .................................................................................................... 31 1.4.3.1 Applicatie........................................................................................................... 31 1.4.3.2 Structuur van de user administration ................................................................. 31 1.4.3.3 Basisinstellingen ................................................................................................ 32 1.4.3.4 Werkomgeving .................................................................................................. 33 2 Implementatie van barcodescanner aan tubelijn ...................................................................... 35 2.1 Inleiding.......................................................................................................................... 35 2.2 Barcoding........................................................................................................................ 36 2.2.1 Barcode....................................................................................................................... 36 2.2.2 Barcodescanner........................................................................................................... 38 2.2.3 De RS 232 interface.................................................................................................... 40 2.3 Implementatie aan lijn AM2160 ..................................................................................... 42 2.3.1 Hardware .................................................................................................................... 42 2.3.1.1 ET 200M............................................................................................................ 42 2.3.1.2 CP 341-RS 232C................................................................................................ 44 2.3.1.3 PROFIBUS DP configuratie.............................................................................. 46 2.3.2 Hardwareconfiguratie ................................................................................................. 47 2.3.2.1 Verbinding tussen WinCC flex. en CPU via de station configurator ................ 47 2.3.2.2 Configuratie van de ET 200M ........................................................................... 51 2.3.2.3 Configuratie van de CP 341-RS 232C............................................................... 52 2.4 Implementatie aan lijn AM1130 ..................................................................................... 58 2.4.1 Hardware .................................................................................................................... 58 2.4.2 Hardwareconfiguratie ................................................................................................. 60 2.4.2.1 Datacommunicatie ............................................................................................. 60
II
2.4.2.2 Configuratie van de RS 232C Link.................................................................... 61 2.5 Binnenlezen van het ordernummer in STEP 7................................................................ 64 2.5.1 Lijn AM2160.............................................................................................................. 64 2.5.2 Lijn AM1130.............................................................................................................. 69 2.6 WinCC flexible............................................................................................................... 70 2.7 Besluit ............................................................................................................................. 73 3 Implementatie van barcodescanner en weegschaal .................................................................. 74 3.1 Inleiding.......................................................................................................................... 74 3.2 Implementatie ................................................................................................................. 76 3.2.1 Hardware .................................................................................................................... 76 3.2.1.1 De weegschaal (PR1612/02).............................................................................. 77 3.2.2 Hardwareconfiguratie ................................................................................................. 78 3.3 Procedure ........................................................................................................................ 79 3.4 Programmeren in STEP7 ................................................................................................ 80 3.5 WinCC flexible............................................................................................................... 83 3.5.1 Logfile aanmaken ....................................................................................................... 83 3.5.2 Logging tags ............................................................................................................... 85 3.5.3 Trends......................................................................................................................... 86 3.5.4 Visualisatie en scripts ................................................................................................. 87 3.5.5 Scheduler .................................................................................................................... 90 3.6 Besluit ............................................................................................................................. 91 4 Visual Studio.NET ................................................................................................................... 92 4.1 Database.......................................................................................................................... 92 4.1.1 Tabel........................................................................................................................... 92 4.1.2 Query .......................................................................................................................... 92 4.1.3 Databaseontwerp ........................................................................................................ 93 4.1.4 Toepassing Waste_VB.mdb ....................................................................................... 96 4.2 SQL................................................................................................................................. 98 4.2.1 Verschillende query’s................................................................................................. 98 4.2.1.1 Selectiequery...................................................................................................... 98 4.2.1.2 Bijwerkquery ..................................................................................................... 99 4.2.1.3 Verwijderquery ................................................................................................ 100 4.2.1.4 Toevoegquery .................................................................................................. 100 4.2.2 Toepassing Waste_VB.mdb ..................................................................................... 100 4.3 COM ............................................................................................................................. 103 4.4 Visual Studio.NET........................................................................................................ 104 4.4.1 Een nieuw project in .NET ....................................................................................... 104 4.4.2 ODBC connectie met Access ................................................................................... 106 4.4.3 Ontwerp .................................................................................................................... 110 4.4.3.1 Tekenen............................................................................................................ 110 4.4.3.2 Selectiecriteria ................................................................................................. 112 4.4.4 Datagrid en query’s .................................................................................................. 115 4.4.4.1 Datagrid ........................................................................................................... 115 4.4.4.2 Query’s ............................................................................................................ 115 4.4.5 Grafieken maken via MSChart................................................................................. 119 4.4.6 Afdrukken van grafieken.......................................................................................... 124 4.4.7 Verdeling van het project ......................................................................................... 125 4.4.7.1 Een deploymentproject aanmaken ................................................................... 125 5 WinCC flexible 2005 ............................................................................................................. 133 5.1 Inleiding........................................................................................................................ 133 5.2 Connectie met de PLC .................................................................................................. 134 5.3 Transportsysteem .......................................................................................................... 135 5.4 Bodemcontroles ............................................................................................................ 136 5.5 Lijn AM2160 en lijn AM1130...................................................................................... 137 5.6 Transiflex...................................................................................................................... 137
III
6 Kosten .................................................................................................................................... 138 7 Besluit .................................................................................................................................... 139 Literatuurlijst....................................................................................................................................... I Bijlagen ..................................................................................... Fout! Bladwijzer niet gedefinieerd.
IV
Lijst met figuren Fig. 1.1: Algemene structuur ..............................................................................................................................1 Fig. 1.2: Voorbeelden van papieren industriële zakken .....................................................................................2 Fig. 1.3: Eenvoudige weergave van de werkvloer..............................................................................................3 Fig. 1.4: Flowchart van het productieproces ......................................................................................................4 Fig. 1.5: De lijmproductie ..................................................................................................................................7 Fig. 1.6: Tekening van de lijmproductie ............................................................................................................9 Fig. 1.7: Werkomgeving van de lijmproductie in WinCC................................................................................21 Fig. 1.8: Lijmproductie in WinCC flex. Runtime.............................................................................................22 Fig. 1.9: Lijmrecept voor de lijmproductie.......................................................................................................23 Fig. 1.10: Een tweede recept voor de lijmproductie.........................................................................................24 Fig. 1.11: Datarecords voor het lijmrecept .......................................................................................................24 Fig. 1.12: Schema van de configuratie settings voor recepten .........................................................................25 Fig. 1.13: Configuratie instellingen voor een recept ........................................................................................25 Fig. 1.14: Transfer van recept datarecords .......................................................................................................26 Fig. 1.15: Receptuurbeeld voor het lijmrecept .................................................................................................27 Fig. 1.16: Receptuurbeeld voor het recept lijmperiode ....................................................................................27 Fig. 1.17: Eigenschappen van het receptuurbeeld ............................................................................................28 Fig. 1.18: De aanwezige knoppen in het receptuurbeeld..................................................................................29 Fig. 1.19: Voorbeeld van ImportDataRecords..................................................................................................29 Fig. 1.20: Voorbeeld van ExportDataRecords..................................................................................................29 Fig. 1.21: Voorbeeld van LoadDataRecord......................................................................................................30 Fig. 1.22: Events bij recepten...........................................................................................................................31 Fig. 1.23: User administration structuur ...........................................................................................................32 Fig. 1.24: “Groups” user administration...........................................................................................................32 Fig. 1.25: “Users” user administration .............................................................................................................33 Fig. 1.26: De “runtime security” voor het receptuurbeeld (lijmrecept) ............................................................33 Fig. 1.27: “Log in” scherm ...............................................................................................................................34 Fig. 1.28: “Logoff” en “Logon” events bij een knop .......................................................................................34 Fig. 2.1: Een order met de bijhorende zakgegevens .........................................................................................35 Fig. 2.2: De touch 90 en 65 van Datalogic .......................................................................................................38 Fig. 2.3: Opstelling van barcodescanner aan lijn AM2160 ..............................................................................38 Fig. 2.4: Manual Datalogic...............................................................................................................................39 Fig. 2.5: Null-modem verbinding .....................................................................................................................41 Fig. 2.6: Hardware implementatie aan lijn AM2160........................................................................................42 Fig. 2.7: Gesloten en open voorpaneel van de ET 200M .................................................................................43 Fig. 2.8: Open voorpaneel van de CP 341........................................................................................................44 Fig. 2.9: 9-Pin Sub D Male Connector op de CP 341.......................................................................................45 Fig. 2.10: Afsluitweerstanden voor PROFIBUS DP ........................................................................................46 Fig. 2.11: Toevoegen van een SIMATIC PC Station .......................................................................................47 Fig. 2.12: Structuur van het STEP 7 project met de virtuele bus .....................................................................47 Fig. 2.13: Invoegen van de “IE General” module en de HMI module “WinCC flexible RT”..........................48 Fig. 2.14: De rack van de virtuele bus Mo_Pop_Visual...................................................................................48 Fig. 2.15: De eigenschappen van “IE General”................................................................................................49 Fig. 2.16: De Station Configurator ...................................................................................................................50 Fig. 2.17: De PG/PC interface..........................................................................................................................51 Fig. 2.18: Overzicht van de hardwareconfiguratie aan de CPU 317-2 PN/DP.................................................51 Fig. 2.19: De configuratie van IM153-1 aan de CPU 317-2 PN/DP ................................................................52 Fig. 2.20: De configuratie (adresbereik) van de CP 341-RS 232C...................................................................53 Fig. 2.21: De parameters voor de Point-To-Point verbinding ..........................................................................53 Fig. 2.22: De instellingen van de data-indeling voor het ASCII-protocol........................................................54 Fig. 2.23: Schema van het criterium ”expiry of character delay time”.............................................................55 Fig. 2.24: De instellingen van de data-overbrenging voor het ASCII-protocol................................................56 Fig. 2.25: De instellingen van de ontvangen data voor het ASCII-protocol.....................................................56 Fig. 2.26: Overzicht van de 2 modules aan lijn AM2160.................................................................................57 Fig. 2.27: Implementatie van RS 232C LINK via PROFIBUS DP aan CPU 315-2 DP (ET 200M) ...............58
V
Fig. 2.28: Schema van de RS 232C LINK .......................................................................................................58 Fig. 2.29: Datacommunicatie van de RS 232C LINK ......................................................................................61 Fig. 2.30: De configuratie van de DP/RS 232C LINK .....................................................................................62 Fig. 2.31: De parameters van de DP/RS 232C LINK.......................................................................................62 Fig. 2.32: Binnenlezen van het ordernummer in DB43....................................................................................65 Fig. 2.33: Dataview van DB72 .........................................................................................................................66 Fig. 2.34: Binnenlezen van het ordernummer in ingangsbytes.........................................................................70 Fig. 2.35: Recept “zakgegevens” voor lijn AM2160........................................................................................71 Fig. 2.36: Ordernummerdata voor lijn AM2160 ..............................................................................................71 Fig. 2.37: De 3 toggles voor het scannen .........................................................................................................71 Fig. 2.38: Set Value bij nieuw ordernummer ...................................................................................................72 Fig. 2.39: Activate Screen bij eerste toggle......................................................................................................72 Fig. 2.40: ImportDataRecords bij de tweede toggle .........................................................................................72 Fig. 2.41: CSV-bestand voor het importeren van de datarecords. ....................................................................73 Fig. 2.42: LoadDataRecords bij de derde toggle ..............................................................................................73 Fig. 3.1: Schema van het datatransport.............................................................................................................74 Fig. 3.2: Opstelling van de hardware voor de afval..........................................................................................76 Fig. 3.3: Hardware implementatie voor de afval ..............................................................................................76 Fig. 3.4: De gewichtindicator PR1612/02 ........................................................................................................77 Fig. 3.5: Overzicht van de hardwareconfiguratie voor de afval .......................................................................78 Fig. 3.6: De weegschaal en registratie van het afval ........................................................................................79 Fig. 3.7: Datalogs in WinCC flexible ...............................................................................................................83 Fig. 3.8: Opslaglocatie en grootte van de datalog ............................................................................................84 Fig. 3.9: Restart Behaviour van de datalog ......................................................................................................84 Fig. 3.10: Type van de datalog .........................................................................................................................85 Fig. 3.11: De tags voor het afval ......................................................................................................................85 Fig. 3.12: De events bij de tag “bevestiging” ...................................................................................................85 Fig. 3.13: Logging bij de tag “afval_gewicht” .................................................................................................86 Fig. 3.14: Trendlijn van de gelogde waarden ...................................................................................................87 Fig. 3.15: Visualisatie van de afval in WinCC flex..........................................................................................88 Fig. 3.16: De scheduler voor de afvaltabel in WinCC flex...............................................................................90 Fig. 3.17: De scheduler voor de tag “WinCC_is_running” bij een shutdown ..................................................91 Fig. 3.18: De scheduler voor de tag “WinCC_is_running” bij een start runtime .............................................91 Fig. 4.1: Tabel met datarecords en velden........................................................................................................92 Fig. 4.2: Een nieuwe database maken in Access ..............................................................................................93 Fig. 4.3: De Access-omgeving .........................................................................................................................94 Fig. 4.4: Tabellen in Access .............................................................................................................................94 Fig. 4.5: De tabel “Ploegen” in de ontwerpweergave.......................................................................................95 Fig. 4.6: De tabel “Ploegen” in de gegevensbladweergave ..............................................................................95 Fig. 4.7: De afval-database in Waste_VB.mdb ................................................................................................96 Fig. 4.8: De 3 tabellen in Waste_VB.mdb........................................................................................................97 Fig. 4.9: Enkele belangrijke operatoren in SQL ...............................................................................................99 Fig. 4.10: De selectiequery “Qry Resultaat (11) in de ontwerpweergave.......................................................100 Fig. 4.11: De selectiequery “Qry Resultaat (11) in de gegevensbladweergave ..............................................101 Fig. 4.12: De selectiequery “Qry Resultaat (1) in de ontwerpweergave.........................................................101 Fig. 4.13: De selectiequery “Qry Resultaat (1) in de gegevensbladweergave ................................................102 Fig. 4.14: Component met bijhorende classes ................................................................................................103 Fig. 4.15: Een nieuw project in Visual Studio.NET .......................................................................................104 Fig. 4.16: Keuzescherm voor een nieuw project ............................................................................................105 Fig. 4.17: Programmeeromgeving in Visual Studio.NET ..............................................................................105 Fig. 4.18: Nieuwe gegevensbron maken ........................................................................................................107 Fig. 4.19: ODBC-instellingen voor Microsoft Access ...................................................................................107 Fig. 4.20: OLE DB-voorziening voor de connectie........................................................................................108 Fig. 4.21: Data Link-eigenschappen van de connectie ...................................................................................109 Fig. 4.22: De dataconnecties in de Server Explorer .......................................................................................109 Fig. 4.23: Tekenen in Visual Studio.NET ......................................................................................................111 Fig. 4.24: De String Collectie voor de combobox ..........................................................................................113 Fig. 4.25: De “DateTimePicker” ....................................................................................................................113 Fig. 4.26: Het hoofdscherm “frmAlgemeen” .................................................................................................114 Fig. 4.27: Het scherm “frmPermachine” ........................................................................................................114
VI
Fig. 4.28: De selectiequery “Qry Totaalperploeg” in de gegevensbladweergave...........................................116 Fig. 4.29: De selectiequery “Qry Totaalperploeg(1)” in de gegevensbladweergave......................................116 Fig. 4.30: De selectiequery “Qry Totaalperploeg_Crosstab” in de ontwerpweergave ...................................117 Fig. 4.31: Het scherm “frmAlgemeen” met de bijhorende datagrid ...............................................................117 Fig. 4.32: Toevoegen van het item “MSChart” in de toolbox ........................................................................119 Fig. 4.33: De COM componenten ..................................................................................................................120 Fig. 4.34: Verschillende grafiektypes in MSChart .........................................................................................123 Fig. 4.35: Setup and Deployment Projects .....................................................................................................125 Fig. 4.36: Setup Wizard (een projecttype kiezen) ..........................................................................................126 Fig. 4.37: Setup Wizard (de projectoutputs kiezen) .......................................................................................127 Fig. 4.38: Setup Wizard (bestanden toevoegen) .............................................................................................127 Fig. 4.39: Solution Explorer - Waste..............................................................................................................128 Fig. 4.40: Application Folder .........................................................................................................................128 Fig. 4.41: Application Folder (installatie-eigenschappen)..............................................................................129 Fig. 4.42: Eigenschappen van de shortcut ......................................................................................................129 Fig. 4.43: Een bestand toevoegen in het project.............................................................................................129 Fig. 4.44: Een icoon toevoegen aan de shortcut .............................................................................................130 Fig. 4.45: Configuration Manager ..................................................................................................................131 Fig. 4.46: Waste property pages .....................................................................................................................131 Fig. 4.46: Eigenschappen van het setup-bestand Waste .................................................................................132 Fig. 5.1: Verschillende pakketten van WinCC flexible ..................................................................................134 Fig. 5.2: Connecties maken in WinCC flexible..............................................................................................134 Fig. 5.3: Visualisatie van het transportsysteem ..............................................................................................135 Fig. 5.4: Visualisatie van de tubelijn AM2160...............................................................................................137 Fig. 5.5: Visualisatie van de transiflex ...........................................................................................................137
VII
Lijst met tabellen Tabel 1.1: Operator control elementen voor recepten ......................................................................................28 Tabel 2.1: Een aantal soorten barcodes ............................................................................................................37 Tabel 2.2: Verschil tussen DCE en DTE..........................................................................................................40 Tabel 2.3: 9-pins connector ..............................................................................................................................41 Tabel 2.4: Technische data ET 200M...............................................................................................................44 Tabel 2.5: Technische data CP 341 ..................................................................................................................46 Tabel 2.6: Technische data RS 232 interface voor RS 232C Link ...................................................................60
VIII
Lijst met bijlagen Bijlage 1: De lijmproductie (STEP 7) Ook op CD-R Bijlage 2: RS 232 parameters (Datasheet Datalogic) Bijlage 3: Inscannen aan de tubelijn (STEP 7) Bijlage 4: Barcodes afvalweging Bijlage 5: Inscannen aan de weegschaal (STEP 7) Bijlage 6: Scripts in WinCC flexible Bijlage 7: Visualisatie van de massa afval (Visual Studio.NET) Enkel op CD-R
IX
Inleiding Voorstelling Mondi Packaging Mondi maakt deel uit van het moederbedrijf Anglo American. Anglo American is een wereldleider in goud, diamanten, platina, kolen, koper, nikkel, zink, ijzerhoudende metalen, basismetalen, industriële mineralen en houtproducten. De groep heeft activiteiten en projecten in Afrika, Europa, Australië en Zuid- en Noord-Amerika. Anglo American bezit alle aandelen van Mondi Internationaal.
Fig. 1.1: Algemene structuur
Mondi Packaging maakt deel uit van de multinational Mondi en is gespecialiseerd in de verkoop en productie van papieren zakken, met grote inhoud (10 – 50 kg) voor industriële klanten. In Poperinge specifiek worden open mond zakken met of zonder PE- folie geproduceerd voor de voeding- en veevoederindustrie (zie fig. 1.2). Er wordt een omzet gemaakt van 25 miljoen euro en er werken in totaal 90 medewerkers nl. 74 arbeiders en 16 bedienden. Er wordt gewerkt in een 3 ploegenstelsel. Het productievolume bedraagt 70 miljoen zakken per jaar. De bedrijfsoppervlakte bedraagt 22.000m² waarvan 15.000 m² bebouwd.
1
Fig. 1.2: Voorbeelden van papieren industriële zakken
Al sedert 1956 worden er papieren industriële zakken geproduceerd in Mondi Packaging Poperinge. In 2006 was er een jubileum voor het 50-jaar bestaan van Mondi Packaging in Poperinge. Hieronder volgt een overzicht van het bedrijf door de jaren heen. • • • • •
1956 : Oprichting NV MULTISAC 1991 : Overname door S&M uit Vilvoorde. 1995 : Assidoman neemt S&M en Multisac over. 1999 : Herstructurering Assidoman Belgie: sluiting Vilvoorde. Alle activiteit gaat naar Poperinge. 2000 : Frantschach neemt alle zakfabrieken van Assidoman over.
•
2000-2003 : Het samenvoegen van de activiteit uit Poperinge en Vilvoorde in de nieuwe fabriek in Poperinge gaat moeilijk. Na een paar moeilijke jaren krijgt de layout een nieuwe vorm namelijk 3 productielijnen en 3 ploegen.
•
2003 : Bijkomende investeringen in de kernactiviteit. Een 2de productielijn wordt uitgerust met Rotaliner.
•
2004-2005 : Sluiting van 2 fabrieken in Frankrijk, waardoor volumes naar Poperinge worden getransfereerd. Verdere specialisatie van Poperinge naar open mond zakken. Beslissing tot machine-technische specialisatie door de transfer van productielijnen uit zusterbedrijven naar Poperinge. Naamswijziging : Frantschach wordt Mondi Packaging eind 2004.
2
De productie De productie kan opsplitst worden in 3 stappen: • Stap 1 : bedrukken van papierrollen Op flexo drukpersen worden de rollen afgewikkeld, bedrukt en dan weer opgewikkeld. • Stap 2 : produceren van hulzen (door de tubemachines) De (bedrukte) papierrollen worden afgewikkeld, de verschillende vellen worden aan elkaar gekleefd en versneden. Er worden bundels gemaakt en via een automatisch transportsysteem gaan de bundels met hulzen naar de volgende stap. • Stap 3 : eindafwerking: het sluiten van de onderkant van de zak (door de bodemmachines). Op figuur 1.3 is een eenvoudige weergave van stap 2 en stap 3 in het productieproces te zien. Links zijn de 4 lijnen voor het produceren van de hulzen te zien, rechts de 3 lijnen voor het maken van de bodem van de zak. Ook de transiflex is terug te vinden op het schema. Daar worden de hulzen van tubelijn AM 2160 en eventueel die van tubelijn AM 1130 via een transportsysteem naar toegebracht. In de transiflex worden die hulzen gestockeerd tot ze via het transportsysteem naar de bodemmachine worden gebracht. De bodemlijn is namelijk een vlugger proces dan de tubelijn. De tubelijnen moeten bovendien vaak worden stilgelegd om nieuwe rollen te plaatsen of door allerhande problemen. Door het stockeren via de transiflex kan de betreffende bodemlijn met een hoge snelheid blijven produceren.
Fig. 1.3: Eenvoudige weergave van de werkvloer
3
Op figuur 1.4 is een eenvoudige flowchart van het productieproces te zien. In het eindwerk wordt de focus gelegd op de tube- en bodemlijn namelijk de hoeveelheid geproduceerde afval en de visualisatie van het transportsysteem tussen de twee. In tweede instantie wordt de lijmproductie onder handen genomen.
Fig. 1.4: Flowchart van het productieproces
4
Beschrijving eindwerk Wanneer er een fout gebeurt ergens in het transportsysteem moet er via een hoogtewerker of trap gekeken worden waar het probleem zich bevindt. Pas dan kan er worden ingegrepen op de juiste plaats. Er wordt bijgevolg een visualisatie gemaakt van het transportsysteem via de SCADAapplicatie WinCC flexible. Elk order dat wordt geproduceerd heeft een eigen uniek ordernummer bestaande uit 8 cijfers. Dit ordernummer kan worden ingelezen via een barcode. Op de console kan het order op de transportband en het aantal stapels per station op de voet worden gevolgd. Wanneer een elektrische fout of een systeemfout optreedt wordt dit getoond op de console en kan er vlugger worden ingegrepen. Ook wordt er een visualisatie gemaakt van de verschillende bodemcontroles van de 3 lijnen. Zo kan vanuit 1 centraal punt (de console) de controles worden opgevolgd en verifiëren of de controles aan- of uitgeschakeld zijn. De tubelijnen AM 2160 en AM 1130 worden ook reeds gevisualiseerd. De snelheden, aantal zakken, enz. kunnen op het scherm worden afgelezen. In een apart scherm wordt tevens het aantal stapels en het bijhorende ordernummer weergegeven. Ook de automatisatie en visualisatie van de lijmproductie behoort tot het eindwerk. Momenteel wordt er gewerkt via een oud S5-programma dat niet altijd even optimaal werkt. Er wordt bijgevolg een nieuwe PLC geplaatst met een herschreven STEP 7-programma dat voldoet aan alle wensen. Via WinCC flexible kan de operator dan recepten ingeven (nl. hoeveelheid water, poeder, ontsmetter, whitener). Via de console wordt het ook mogelijk om parameters (starttijden, periodes, …) te veranderen van de lijmproductie. Aan iedere lijn wordt een bepaalde hoeveelheid afval gemaakt. Het is interessant om te weten hoeveel afval er precies wordt gemaakt per order, per lijn en per ploeg zodat er in de toekomst acties kunnen worden genomen. Centraal op de werkvloer staat er een weegschaal waar tijdens de productie de afval kan gewogen worden. Via een barcodescanner wordt het ordernummer en de ploeg ingelezen en verstuurd naar WinCC flexible. Dit ordernummer is afkomstig van het ERPsysteem (SAP). Voor elke order wordt er een uniek ordernummer gecreëerd dat via een barcode op het order wordt afgedrukt. Er worden ook een aantal barcodes voorzien als vrije parameters om bepaalde steekproeven te houden (bvb. reden van het afval). Deze gegevens worden bijgehouden in een Access-file die automatisch op het lokaal net terechtkomt. Via Visual Studio.NET worden verschillende grafieken gemaakt van die verkregen data. Bij de start van een nieuw order moet de lijnverantwoordelijke aan iedere lijn op het paneel het ordernummer, de breedte, de lengte en het artikelnummer van de zak intypen. Dit levert vaak fouten op en kan worden verholpen door gebruik te maken van een barcodescanner. Dan hoeft de machinebediener enkel het ordernummer in te scannen. Dit ordernummer wordt via een recept in WinCC Flexible uit een CSV-bestand gehaald met de bijhorende lengte, breedte en artikelnummer. Deze gegevens worden dan meteen doorgestuurd naar het betreffende paneel.
5
Doelstellingen • • • •
Visualisatie van het proces en het transportsysteem via WinCC flexible Automatisatie en visualisatie van de lijmproductie Het registreren van het geproduceerde afval aan de tube- en bodemmachines en het ontwikkelen van een applicatie in Visual Studio.NET. Implementatie van een barcodescanner aan de tubelijn waarbij het ordernummer bij elk nieuw order wordt ingescand en de bijhorende zakgegevens worden verstuurd naar het paneel.
6
1 Optimalisatie van de lijmproductie 1.1 Inleiding De automatisatie van de lijmproductie is sterk verouderd. Er wordt gewerkt met een S5-PLC die verbonden is met een oude computer voor het invoegen van de recepten. Wanneer er een fout gebeurt in de PLC is het niet meer mogelijk om in te grijpen in het S5-programma. De enige oplossing bestaat er dan in de PLC te resetten. Een nieuw STEP7-programma wordt gemaakt zonder behulp van het S5-programma. Alles wordt in rekening gebracht zodat er geen fouten meer kunnen ontstaan. Ook wordt er een visualisatie gemaakt in WinCC flexible waar recepten op een eenvoudige manier kunnen worden ingegeven en opgeslagen. De implementatie zelf van de S7-PLC is nog niet gebeurd wegens de grote investering. Dit zal pas in de komende jaren worden geïmplementeerd.
1.2 Productieproces
Fig. 1.5: De lijmproductie
7
De lijmproductie verloopt in verschillende stappen (zie figuur 1.6). Er wordt voor gezorgd dat de linkerbak altijd met poeder gevuld is via een grote zak die boven deze bak hangt. Het poeder wordt via een schroef en een lift naar de silo gebracht. Een sensor bovenaan de silo meldt of de silo al dan niet vol is. Een ventilator zorgt ervoor dat het stof dat ontstaat in een kleine zak verdwijnt die boven de silo hangt. De filter wordt af en toe in werking gezet om het poeder dat in de zak zit in de silo te laten vallen. Het mengsel bestaat uit water, poeder, ontsmetter en whitener. De mengtank wordt gewogen via een loadcell. Eerst wordt er water in de tank gedaan, dan pas het poeder. De ontsmetter en de whitener worden gedurende een bepaalde tijd in de tank gepompt. Wanneer het mengsel klaar is, wordt de lijm via een pomp naar één van de 2 bakken gebracht. Een sensor meldt of de bak vol is. Een pomp stuwt de lijm naar de machines. Het overschot van de lijm wordt opnieuw naar de bakken gebracht. Zo blijft de lijm constant in beweging.
8
2
3 7
4
5
6
1
Klep 3 10 8
Klep 2 9
11
Klep 1
Fig. 1.6: Tekening van de lijmproductie
1) schroef 2) lift 3) silo met bovenaan de ventilator en filter 4) mengtank met roerwerk en bovenaan de schuif 5) ontsmetter met pomp 6) whitener met pomp 7) water met klep 8) 2 pompen die de lijm naar opslagtanks brengt 9) Grote bak met roerwerk 10) Kleine bak met roerwerk 11) Pomp met kraan en flowmeter die de lijm via een gesloten circuit naar de tube- en bodemmachines brengt
9
1.3 Programma in STEP 7 Hier volgt een overzicht van het programma en wat uitleg over de manier van werken. Het volledige programma bevindt zich in bijlage 1.
1.3.1 Omzetting naar S5TIME De gegevens die ingevuld worden in het recept in WinCC flexible zijn van het datatype INT. Enkelen daarvan moeten eerst worden omgezet naar S5TIME. In STEP 7 bestaat er een functie FC40 ("TIM_S5TI") die een ‘time’ (of INT) kan omzetten in een S5TIME. Het resultaat staat dan wel in ms. In het recept worden weliswaar minuten ingegeven. Er moet dus eerst een conversie gebeuren naar minuten door het gegeven te vermenigvuldigen met 60000. L "gegeven".Whitener ITD L L#60000 *D T MD 60 CALL "TIM_S5TI" IN :=MD60 RET_VAL:="gegeven".tijd_whitener Zo wordt ook dezelfde functie gebruikt voor de resterende 5 timers.
1.3.2 Silo vullen met poeder De silo wordt bijgevuld wanneer de schuif onder de silo opnieuw dicht is. A "OUT_x_schuif silo" FN "GLOB_x_flankmerker1_1" = "GLOB_x_flankmerker1_2" De silo kan ook worden gevuld via een startknop. A FP =
"IN_x_startknop_silovulle" "GLOB_x_flankmerker2_1" "GLOB_x_flankmerker2_2"
AN "IN_x_volmelder silo" A( O "GLOB_x_flankmerker1_2" O "GLOB_x_flankmerker2_2" )
10
=
M
10.1
De silo wordt gevuld volgens een bepaalde procedure. Eerst wordt de filter in werking gezet, dan de ventilator, de lift en de schroef. Tussen de verschillende stappen zit telkens 5 seconden. Het is belangrijk dat eerst de lift en dan pas de schroef in gang wordt gezet. Dit om te beletten dat er verstopping zou voorkomen. A R R R S
M 10.1 T 3 T 4 T 5 "OUT_x_filter_DCE"
A M 10.1 L S5T#5S SS T 0 A T 0 S "OUT_x_M-VENT1_ventilator" A M 10.1 L S5T#10S SS T 1 A T 1 S "OUT_x_M-EL1_lift" A M 10.1 L S5T#15S SS T 2 A T 2 S "OUT_x_M-ST1_schroef" R M 10.1 Als de silo vol is, moet het vullen stoppen en de vorige procedure worden stopgezet. Er kan worden gestopt via een stopknop. O O S
"IN_x_volmelder silo" "IN_x_stopknop_silovulle" M 10.3
Bij het stoppen met vullen wordt de stappenlijst van daarnet omgekeerd en wordt eerst de schroef stilgezet. Pas daarna volgt de lift, de ventilator en de filter. A R
M T
10.3 0
11
R R R R
T 1 T 2 "OUT_x_M-ST1_schroef" M 10.1
A L SD A R
M 10.3 S5T#5S T 3 T 3 "OUT_x_M-EL1_lift"
A L SD A R
M 10.3 S5T#10S T 4 T 4 "OUT_x_M-VENT1_ventilator"
A L SD A R R
M 10.3 S5T#15S T 5 T 5 "OUT_x_filter_DCE" M 10.3
A =
"IN_x_volmelder silo" "OUT_x_lamp_silo_vol"
1.3.3 Vullen en ledigen van de mengtank Er wordt een jumplist gemaakt met de verschillende stappen. L
"GLOB_w_Stappen mengtank" JL stn JU st0 JU st1 JU st2 JU st3 JU st4 JU st5 JU st6 JU st7
stn: NOP 0
12
SET R T R T R T
6 7 8
L T
0 "GLOB_w_Stappen mengtank"
JU
end
In de eerste stap wordt bekeken of de tank wel leeg is. Is dat het geval dan kan worden overgegaan naar de volgende stap en wordt de klep van het inkomend water geopend. Er wordt wel rekening gehouden met een kleine marge ("gegeven".limiet_massa_mengtank) die kan worden ingegeven in het recept. st0: NOP 0 L "IN_w_massa mengtank" L "gegeven".limiet_massa_mengtank <=I JCN end L "GLOB_w_Stappen mengtank" L 1 +I T "GLOB_w_Stappen mengtank" SET S "OUT_x_toevoer water" JU
end
In het recept kan een percentage ("gegeven".start_roerwerk1_mengtank ) worden ingevuld. Bij dit percentage ingegeven water start het roerwerk in de mengtank. st1: NOP 0 L "gegeven".massa_water L "gegeven".start_roerwerk1_mengtank *I L 100 /R RND L "IN_w_massa mengtank" <=I JCN end
13
SET S "OUT_x_M-RW1_mengtank" L "GLOB_w_Stappen mengtank" L 1 +I T "GLOB_w_Stappen mengtank" JU
end
Als de massa water wordt bereikt, wordt de watertoevoer stopgezet. De waarde van de massa die via de loadcell wordt binnengelezen staat in BCD-code en moet bijgevolg worden omgezet naar een integer via de code BTI. st2: NOP 0 L "IN_w_massa mengtank" BTI L "gegeven".massa_water >=I JCN end SET R "OUT_x_toevoer water" Door de vertraging op de kleppen ontstaat er altijd wat naloop. Bij de eerste cyclus is het onmogelijk die naloop op te vangen. Die naloop kan wel vermindert worden bij de volgende cyclussen. Uit ervaring is geweten dat dit het best kan aanpakt worden door de helft van de naloop te nemen en die af te trekken van de ingegeven massa water met het oog op de volgende cyclus. L "IN_w_massa mengtank" BTI L "gegeven".massa_water -I L 2 /R RND T "GLOB_w_naloop water" L L -I T
"gegeven".massa_water "GLOB_w_naloop water"
L
"GLOB_w_Stappen mengtank"
"gegeven".massa_water
14
L 1 +I T "GLOB_w_Stappen mengtank" L "IN_w_massa mengtank" BTI T "GLOB_w_werk. massa water" JU
end
In deze stap wordt de schuif van de silo open gedaan en valt het poeder in de mengtank. Bij de juiste massa poeder wordt de schuif opnieuw dicht getrokken. st3: NOP 0 SET S "OUT_x_schuif silo" L "GLOB_w_werk. massa water" L "gegeven".massa_poeder +I L "IN_w_massa mengtank" BTI <=I JCN end SET R "OUT_x_schuif silo" Ook hier zal er weer naloop ontstaan. Bij het sluiten van de schuif zal er namelijk nog altijd wat poeder extra in de mengtank vallen. Dit wordt weer opgelost zoals in de vorige stap met het water. L "IN_w_massa mengtank" BTI L "GLOB_w_werk. massa water" -I L "gegeven".massa_poeder -I L 2 /R RND T "GLOB_w_naloop poeder" L L
"gegeven".massa_poeder "GLOB_w_naloop poeder"
15
-I T
"gegeven".massa_poeder
L "GLOB_w_Stappen mengtank" L 1 +I T "GLOB_w_Stappen mengtank" JU
end
Als de schuif dicht is wordt na een bepaalde tijd ("gegeven".start_whit_onts_naschuif) de pompen van de whitener en ontsmetter gestart. Er wordt tevens ook een timer T10 gestart om het roerwerk na een bepaalde tijd ("gegeven".tijd_roerwerk1_naschuif) stil te zetten. st4: NOP 0 A "GLOB_x_hulpmerker1" L "gegeven".start_whit_onts_naschuif SD T 6 A "GLOB_x_hulpmerker1" L "gegeven".tijd_roerwerk1_naschuif SS T 10 SET S "GLOB_x_hulpmerker1" A JCN L L +I T
T 6 end "GLOB_w_Stappen mengtank" 1 "GLOB_w_Stappen mengtank"
SET S "OUT_x_M-P2_whitener" S "OUT_x_M-P3_ontsmetter" R "GLOB_x_hulpmerker1" JU
end
Na een ingegeven tijd zal de pomp van de whitener en de ontsmetter worden stil gezet. Er wordt slechts naar de volgende stap gegaan wanneer beiden zijn stil gezet.
16
st5: NOP 0 A "GLOB_x_hulpmerker2" L "gegeven".tijd_whitener SD T 7 A "GLOB_x_hulpmerker2" L "gegeven".tijd_ontsmetter SD T 8 SET S "GLOB_x_hulpmerker2" A R
T 7 "OUT_x_M-P2_whitener"
A R
T 8 "OUT_x_M-P3_ontsmetter"
A A JCN L L +I T
T 7 T 8 end "GLOB_w_Stappen mengtank" 1 "GLOB_w_Stappen mengtank"
SET R "GLOB_x_hulpmerker2" JU
end
Als de timer T10 hoog wordt, moet het roerwerk van de mengtank worden stilgezet en kan worden overgegaan naar de volgende stap. st6: NOP 0 A T 10 JCN end SET R "OUT_x_M-RW1_mengtank" R T10 L
"GLOB_w_Stappen mengtank"
17
L 1 +I T "GLOB_w_Stappen mengtank" JU
end
In deze laatste stap wordt de mengtank geledigd. Alleen als één van de twee kleppen open is wordt de tank in de betreffende bak geledigd. st7: NOP 0 A "OUT_x_klep2_grote bak" AN "IN_x_volmelder grote bak" S "OUT_x_P0ledigen mengtank" A "OUT_x_klep3_kleine bak" AN "IN_x_volmelder kleinebak" S "OUT_x_P0ledigen mengtank" O O R
"IN_x_volmelder grote bak" "IN_x_volmelder kleinebak" "OUT_x_P0ledigen mengtank"
//indien tank leeg -> volgende stap L "IN_w_massa mengtank" L "gegeven".limiet_massa_mengtank <=I JCN end L "GLOB_w_Stappen mengtank" L 1 +I T "GLOB_w_Stappen mengtank" SET R "OUT_x_P0ledigen mengtank" JU
end
end: NOP 0 Er kan via het recept gekozen worden welke klep er open is. A S
"gegeven".klep2_open "OUT_x_klep2_grote bak"
18
R
"OUT_x_klep3_kleine bak"
A S R
"gegeven".klep3_open "OUT_x_klep3_kleine bak" "OUT_x_klep2_grote bak
1.3.4 Roerwerk 2 en 3 Het is niet nodig dat de roerwerken in bak 2 en 3 constant draaien. Daarom wordt er een cyclus geprogrammeerd. "gegeven".tussentijd_star_roerwerk = de tijd tussen elke start "gegeven".periode_roerwerk = de periode dat het roerwerk draait na iedere start A JCN R A = AN L SD
"OUT_x_klep2_grote bak" end "OUT_x_M-RW3_kleine bak" T 11 "GLOB_x_hulpmerker14_0" "GLOB_x_hulpmerker14_0" "gegeven".tussentijd_star_roerwerk T 11
A "GLOB_x_hulpmerker14_0" L "gegeven".periode_roerwerk SE T 12 A =
T 12 "OUT_x_M-RW2_grote bak"
end: NOP 0 A "OUT_x_klep3_kleine bak" JCN end2 R "OUT_x_M-RW2_grote bak" A T 13 = "GLOB_x_hulpmerker14_1" AN "GLOB_x_hulpmerker14_1" L "gegeven".tussentijd_star_roerwerk SD T 13 A "GLOB_x_hulpmerker14_1" L "gegeven".periode_roerwerk SE T 14 A T 14
19
=
"OUT_x_M-RW3_kleine bak"
end2: NOP 0
20
1.4 Visualisatie in WinCC flexible 1.4.1 Weergave van het proces De visualisatie van de lijmproductie gebeurt in WinCC flexible. Aan het project wordt een scherm toegevoegd. Links is de structuur van het project te zien, rechts verschijnen de tools waar allerhande bibliotheken in zitten. Bij het selecteren van een object verschijnen onderaan de eigenschappen van dit object. Dit attribuut kan gekoppeld worden aan tags of om een event te laten plaatsvinden (bvb. bij het klikken op een knop).
Fig. 1.7: Werkomgeving van de lijmproductie in WinCC
De figuren zelf worden in de werkomgeving geïmporteerd vanuit de aanwezige bibliotheek die zich rechts op het scherm bevindt. Deze figuren kunnen ook eerst worden aangepast in Paint. Ze kunnen dan worden opgeslagen in een aparte lijst van objecten. Hier krijgt de klep een groene kleur als de klep open (de betreffende tag staat op true) en een rode kleur als de klep gesloten is. Op de mengtank zelf wordt het actuele gewicht afgebeeld. Zo kan het productieproces op de voet worden gevolgd. Ook kunnen er alarmen worden gecreëerd wanneer er een fout optreedt (bvb. klep 2 en 3 open, massa mengtank te hoog). Op figuur 1.8 is het resultaat te zien in de runtime-omgeving.
21
Fig. 1.8: Lijmproductie in WinCC flex. Runtime
1.4.2 Recepten 1.4.2.1 Basisprincipes Een recept is een collectie van verbonden data. Deze data kan van het HMI toestel naar de controller verstuurd worden in één stap en zo kunnen de productievariabelen aangepast worden. Ook de omgekeerde beweging is mogelijk, nl. data kan getransfereerd worden naar het HMI toestel en geschreven worden in het recept. De volgende opties zijn allemaal mogelijk: •
Inkomende data tijdens de runtime Wanneer de productiedata op een frequente basis wordt veranderd, kan de data direct op het HMI-toestel worden verworven gedurende de runtime. Deze verworven productiedata kan van de PLC naar het HMI toestel getransfereerd worden en in het recept worden opgeslagen.
•
Dataimport tijdens de runtime Wanneer de productiedata opgeslagen is op een database op de Server kan deze worden geïmporteerd naar het HMI toestel via een csv-file tijdens de runtime.
22
•
Inkomende data tijdens de configuratie Als de productiedata toegankelijk is, kan deze meteen worden geïmporteerd in de recepten gedurende de receptconfiguratie.
1.4.2.2 Receptstructuur Een recept bestaat uit verschillende elementen zoals hier water, poeder, whitener en ontsmetter. Zo zijn er veel combinaties mogelijk voor de verschillende recepten. Deze vormen dan een datarecord bestaande uit een bepaalde dosis van elk element (zie fig. 1.11). De waarden van de aangemaakte datarecords in de werkomgeving kunnen niet worden veranderd in de runtime. Aan de linkerkant van het scherm kan in het menu ‘recipes’ een nieuw recept worden toegevoegd.
Receptnaam
Receptnummer
Elementnaam
Toegekende tag
Fig. 1.9: Lijmrecept voor de lijmproductie
Er moet ook een tweede recept worden aangemaakt voor de resterende gegevens. Dit recept ‘lijmperiode’ bestaat uit 8 elementen: - Start roerwerk 1 (percentage water): na een bepaald percentage van het water start het roerwerk in de mengtank - Tijd roerwerk1 na schuif toe: het roerwerk in de mengtank valt stil na een zekere tijd als de schuif dicht gaat - Start whitener en ontsmetter na schuif toe - Klep 2 open - Klep 3 open - Onderste limiet massa mengtank: de massa die nog in de mengtank blijft wanneer ze leeg is - Periode roerwerk bak: de periode dat het roerwerk draait in de bak - Tijd tussen 2 starts roerwerk bak
23
Fig. 1.10: Een tweede recept voor de lijmproductie
Ingevulde waarden
Recept data record nummer Recept data record naam
Fig. 1.11: Datarecords voor het lijmrecept
1.4.2.3 Configuratie Het is mogelijk om de configuratie aan te passen naargelang de applicatie. In de configuratie settings kan het gedrag van de tags, die gebruikt worden in het recept, gespecificeerd worden. In de volgende figuur worden de basisverschillen getoond wat de werking van de receptdata betreft.
24
Fig. 1.12: Schema van de configuratie settings voor recepten
Er kan dus uit 3 verschillende configuraties worden gekozen: Configuratie 1: Recept zonder ‘synchronize tags’ Data van een datarecord dat wordt binnengelezen wordt enkel afgebeeld en kan enkel worden bewerkt in het receptbeeld. Bij gebruik van deze tags buiten het receptbeeld zal dit de waarden niet beïnvloeden. Configuratie 2: Recept met ‘synchronize tags’ en met ‘tags offline’ De ‘synchronize tags’ optie betekent dat de data van een datarecord binnengelezen wordt vanuit de controller of uit de database en geschreven wordt naar de tags geconfigureerd voor dit recept. De ‘offline’ optie zorgt ervoor dat de inputdata naar de tags wordt geschreven maar niet wordt gestuurd naar de controller. Configuratie 3: Recept met ‘synchronize tags’ en zonder ‘tags offline’ De ‘synchronize tags’ optie betekent dat de data van een datarecord binnengelezen wordt vanuit de controller of uit de database en geschreven wordt naar de tags geconfigureerd voor dit recept. De inputdata wordt meteen naar de controller gestuurd.
Fig. 1.13: Configuratie instellingen voor een recept
25
1.4.2.4 Transfer van recept datarecords Recept datarecords kunnen in Runtime getransfereerd worden tussen een extern opslagmedium, HMI toestel en de controller. In de onderste figuur wordt getoond hoe recept datarecords kunnen worden getransfereerd. Een juiste configuratie is nodig voor deze transfer. In het receptscherm kunnen de systeemfuncties gebruikt worden voor deze toepassing.
Fig. 1.14: Transfer van recept datarecords
De HMI device slaat de recept datarecords op de harde schijf (of op een flash memory device). Het recept datarecord kan bewerkt worden in het receptscherm. 1) Save: Waarden die worden veranderd kunnen worden opgeslagen op de harde schijf. 2) Load: De load-functie wordt gebruikt om de waarden van de recept tags te updaten met de waarden van de recept datarecord in het opslagmedium. Deze functie overschrijft elke waarde die veranderd wordt op het receptscherm. De load functie wordt uitgevoerd in het receptscherm als de datarecord wordt geselecteerd. 3) Schrijf naar de controller: De waarden in het receptscherm worden gedownload naar de PLC. 4) Lees uit de controller: Deze functie zal de aangeduide waarden van het receptscherm updaten met de waarden vanuit de controller. Deze functie overschrijft elke waarde die veranderd wordt op het receptscherm. 5) Synchronisatie met controle: Er bestaat de mogelijkheid om de waarden in het receptbeeld te laten synchroniseren met de waarden van de recept tags. Na deze synchronisatie zijn zowel de waarden van de recept tags en van het receptbeeld geüpdatet. 6) Import, Export: De datarecords kunnen worden geëxporteerd naar een extern datamedium om bijvoorbeeld verder te bewerken in MS Excel. De data zelf wordt opgeslagen in *.csv formaat.
26
1.4.2.5 Het receptuurbeeld in de runtime De 2 schermen voor de 2 recepten in de runtime zien er als volgt uit:
Fig. 1.15: Receptuurbeeld voor het lijmrecept
Fig. 1.16: Receptuurbeeld voor het recept lijmperiode
In de volgende figuur zijn de eigenschappen van het receptuurbeeld voor het recept ‘lijmrecept’ te zien. Hier wordt zowel de ‘enable edit mode’ als de ‘display table’ aangevinkt. De waarden van het recept kunnen hier dus aanpast worden en naar de PLC gestuurd worden. Ook wordt via ‘display table’ de volledige tabel getoond.
27
Fig. 1.17: Eigenschappen van het receptuurbeeld
Hieronder volgt een tabel met de operator control elementen die geconfigureerd kunnen worden in het receptuurbeeld. Operator control element
Functie Toont de geconfigureerde operator aantekeningen van het gegeven receptuurbeeld Creëert een nieuw datarecord. De waarden worden ingevuld met de basiswaarden die ingevuld werden, wanneer het recept werd gemaakt Slaat het datarecord op dat momenteel getoond wordt in het receptuurbeeld. De opslaglocatie kan worden ingevuld via “Properties” > “Datamedium” Slaat het datarecord op dat momenteel getoond wordt in het receptuurbeeld onder een nieuwe naam. De opslaglocatie kan worden ingevuld via “Properties” > “Datamedium” Verwijdert het recept datarecord dat momenteel getoond wordt in het receptuurbeeld Synchroniseert de waarden van het recept record dat momenteel getoond wordt met de verbonden tags. Tijdens de synchronisatie worden alleen de waarden die werden veranderd in het receptuurbeeld naar de verbonden tags geschreven. De waarden worden dan gelezen vanuit de tags en gebruikt om het receptuurbeeld te updaten. Transfereert het aangeduide recept record naar de PLC Transfereert het recept record vanuit de PLC naar het HMI toestel en toont de waarden in het receptuurbeeld. Tabel 1.1: Operator control elementen voor recepten
Deze knoppen met de aansluitende commando’s kunnen in het receptuurbeeld toegevoegd of verwijderd worden in de eigenschappen (zie figuur 1.18).
28
Fig. 1.18: De aanwezige knoppen in het receptuurbeeld
In verband met de recepten kunnen er aan een willekeurige knop events worden gekoppeld. De events die handelen over de recepten zijn terug te vinden onder “Events” > “Recipe”. Enkele belangrijke events zijn: •
ImportDataRecords: Importeert één of alle datarecords van een recept vanuit een CSV- bestand. Als een pad wordt gespecificeerd, worden alle records van het gegeven bestand geïmporteerd. Syntax: file name, datarecord number/name, overwrite, output status message, processing status
Fig. 1.19: Voorbeeld van ImportDataRecords
•
ExportDataRecords: Exporteert één of alle datarecords naar een CSV- file. Er wordt één bestand gecreëerd per recept. Wanneer slechts één pad voor export gespecificeerd is, wordt de bestandsnaam automatisch gecreëerd van de respectievelijke receptnaam. Syntax: recipe number/name, record number/name, file name, overwrite, output status message, processing status
Fig. 1.20: Voorbeeld van ExportDataRecords
29
•
LoadDataRecord: Laad het gegeven recept datarecord vanuit het HMI geheugen in de recipe tags. Deze functie wordt bijvoorbeeld gebruikt om het recept datarecord af te beelden in het receptuurscherm. Syntax: recipe number/name, datarecord number/name, processing status
Fig. 1.21: Voorbeeld van LoadDataRecord
•
SaveDataRecord: Slaat de actuele waarden van de recept tags op in het geheugen van de HMI device. Deze functie wordt bijvoorbeeld gebruikt om een recept datarecord op te slaan in het receptuurscherm. Syntax: recipe number/name, record number/name, overwrite, output status message, processing status
•
SetDataRecordTagsToPLC: Transfereert de waarden van de recept tags naar de PLC. De recept tags bevatten de waarden van het datarecord dat afgebeeld wordt op de HMI device. Syntax: recipe number/name, processing status
•
GetDataRecordTagsFromPLC: Transfereert de waarden van het recept datarecord, welke is ingeladen in de PLC, naar de recept tag. Syntax: recipe number/name, processing status
•
DeleteDataRecord: Verwijdert het recept datarecord. Meerdere datarecords kunnen verwijderd worden van één of meer recepten. Syntax: recipe number/name, record number/name, confirmation, output status message, processing status
•
GetDataRecordFromPLC: Transfereert de gegeven recept datarecord van de PLC naar het geheugen van het HMI toestel. Syntax: recipe number/name, record number/name, confirmation, output status message, processing status
•
GetDataRecordName: Schrijft de naam van het recept datarecord en van het recept naar de gegeven tags. Syntax: recipe number or recipe name, datarecord number or datarecord name, processing status
30
•
SetDataRecordToPLC: Transfereert het gegeven recept datarecord meteen van het HMI geheugen naar de PLC. De waarden van het recipe datarecord hoeven niet worden afgebeeld op het HMI toestel. Syntax: recipe number/name, record number/name, output status message, processing status
•
SetRecipeTags: Verandert de status van de recept tags van ‘Online’ naar ‘Offline’ en vice versa. Deze functie wordt bijvoorbeeld gebruikt wanneer recept datarecord waarden worden afgesteld bij het opstarten van een machine. Syntax: recipe number/name, status, output status message, processing status
Fig. 1.22: Events bij recepten
1.4.3 User administration 1.4.3.1 Applicatie Het toegang veiligheidssysteem controleert de gebruikerstoegang tot data en functies in de runtime en verkomt ongemachtigde operaties. Veiligheidsrelevante operaties worden al gelimiteerd tot gespecificeerd usergroups wanneer een project wordt opgezet. Users en Usergroups worden opgericht en hebben karakteristiek toegangsrechten. Bijvoorbeeld, operators hebben alleen toegang tot enkele functies, ingenieurs daarentegen hebben ongelimiteerde toegang in de runtime.
1.4.3.2 Structuur van de user administration Machtigingen worden niet toegekend aan gebruikers zelf maar aan gebruikersgroepen. De gebruiker wordt bijvoorbeeld toegekend aan de groep “Commissioning Engineers” en krijgt bijgevolg alleen de machtiging die bij deze groep hoort. Dit zijn hier het veranderen van recept datarecords en het loggen van procesdata. De user administration scheidt de administratie voor de gebruikers met de configuratie van de machtigingen. Dit zorgt voor flexibiliteit in de toegangsbescherming.
31
Fig. 1.23: User administration structuur
1.4.3.3 Basisinstellingen In de user administration kunnen de users en user groups aangepast worden om controle te verwerven over de data en de functies in de runtime. In “Groups” is een tabel met de verschillende groepen en hun machtigingen te zien. Er kunnen groepen worden toegevoegd zoals Group_1 voor de lijmkeuken. Rechts kunnen dan “authorizations” worden gekozen voor de respectievelijke groep. Hier werd een nieuwe machtiging “Security level (3)” aangemaakt.
Fig. 1.24: “Groups” user administration
32
In het menu “Users” is een tabel met de gebruikers te zien. Er kan een gebruiker met een bijhorend paswoord worden toegevoegd aan de lijst. Aan de rechterkant kan dan de gewenste groep worden aangevinkt. Een gebruiker kan slechts aan één groep gekoppeld worden.
Fig. 1.25: “Users” user administration
1.4.3.4 Werkomgeving Via het menu “tools” kan een “user view” worden ingebracht op het scherm. Dit beeld toont in de runtime alle aanwezige gebruikers en groepen. Via dit beeld kunnen dan nieuwe gebruikers zich aanmelden. In de runtime wordt het veranderen van recepten alleen toegestaan voor de verantwoordelijke van de lijmproductie. In de eigenschappen van het receptuurbeeld “lijmrecept” wordt in “Security” de gewenste autorisatie geselecteerd.
Fig. 1.26: De “runtime security” voor het receptuurbeeld (lijmrecept)
Bij het klikken op het receptuurbeeld of op de knop “log in” in de runtime verschijnt het volgend scherm. Hier kan de gebruiker zich aanmelden.
33
Fig. 1.27: “Log in” scherm
In de werkomgeving kan gemakkelijk bij een knop de event “logoff” of “logon” gekozen worden.
Fig. 1.28: “Logoff” en “Logon” events bij een knop
34
2 Implementatie van barcodescanner aan tubelijn 2.1 Inleiding Aan de tubelijnen AM2160 en AM1130 moet telkens bij een nieuw order enkele parameters worden ingegeven op het micro-paneel. Het manueel intoetsen van de codes gaat gepaard met heel wat fouten. De parameters die ingevuld moeten worden, zijn het ordernummer, het artikelnummer, de zakbreedte en snijlengte. Dit probleem kan opgelost worden via een barcodescanner waarbij enkel de barcode met het ordernummer ingescand moet worden. Dit ordernummer is afkomstig van het ERP-systeem (SAP). Ieder ordernummer is uniek dus bij ieder ordernummer horen specifieke parameters. Deze resterende parameters moeten dan wel worden opgehaald uit een database en naar het micro-paneel gestuurd worden. De verantwoordelijke voor de lijn hoeft dan alleen nog maar de gegevens te bevestigen op het paneel.
Fig. 2.1: Een order met de bijhorende zakgegevens
35
2.2 Barcoding In technisch opzicht is de werking van de barcodetechniek vrij eenvoudig. De zwarte (of donkere) streepjes absorberen het licht, de witte (lichte) ruimtes ertussen reflecteren het licht. Er ontstaat door het streepjespatroon een onregelmatige reflectie van het licht die voor elk symbool specifiek is. Een fotocel registreert de lichtreflectie en geeft deze in digitale vorm door. Een decoder herkent en interpreteert de specifieke opbouw en structuur van de signalen en zet ze om in leesbare gegevens. Binnen de automatische productidentificatie is barcoding momenteel nog altijd de meest bekende en meest toegepaste methode. De gegevens die in de barcode zijn opgesloten worden in de meeste gevallen gelinkt aan één of ander databasesysteem waarin nog heel wat meer info te vinden is (productbeschrijving, prijs, …).
2.2.1 Barcode De barcode of streepjescode is een symbool met een patroon van zwarte streepjes en witte tussenruimtes. Elke barcode bevat een reeks individuele karakters die worden weergegeven als een unieke volgorde van smalle en brede streepjes. Naast de karakters die de informatie vertegenwoordigen bevatten de meeste barcodes ook een een vast start- en stopkarakter. Zijn deze verschillend van elkaar, dan kan de barcode zelfs bidirectioneel worden gelezen (een decoder achterhaald op basis van die karakters de leesvolgorde). Door in de barcode gebruik te maken van extra controlekarakters (checkdigits) kan ook worden gecontroleerd of er geen vervormingen zijn opgetreden (met foutieve identificatie als gevolg). Barcodes bestaan in veel soorten. De meest bekende zijn deze die terug te vinden zijn in supermarkten. Er bestaan echter nog heel wat andere. Elke industrietak heeft zo ongeveer een eigen unieke symbologie die onderling niet uitwisselbaar is.
36
Een aantal soorten barcodes worden hieronder afgebeeld.
Tabel 2.1: Een aantal soorten barcodes
Bij het scannen wordt hier gebruik gemaakt van EAN128. Het ordernummer bestaat uit 8 cijfers en de volgende 4 cijfers duiden aan of het om een tube- of bodemmachine gaat.
37
2.2.2 Barcodescanner Hier wordt de Touch 90/65 van Datalogic gebruikt.
Fig. 2.2: De touch 90 en 65 van Datalogic
Het toestel wordt rechtstreeks aangesloten op de COM poort van de CP341 (lijn AM2160) en van de DP-RS232 C-LINK (lijn AM1130).
Fig. 2.3: Opstelling van barcodescanner aan lijn AM2160
Enkele gegevens over de Datalogic 65/90: • • • • • • •
Scan rate 256 scans/sec USB, RS232, Wedge and Pen in a single model RSS code reading available 65 and 90 mm reading window PUZZLE SOLVER™ decoding system Complete data formatting and data editing (Pro models) EAS dedicated model
38
De RS232 standaardinstellingen zijn de volgende: • • • • • • • • • •
9600 baud No parity 8 databits 1 stopbit No handshaking Delay disabled Rx timeout 5 sec. Ack/nack disabled FIFO enabled Serial trigger lock disabled
Het toestel configureren gebeurt op basis van barcodes die terug te vinden zijn in bijlage 2.
Fig. 2.4: Manual Datalogic
Via 2 barcodes kan het toestel in configuratiemode gebracht worden en terug in gebruikerstoestand.
De volgende 2 barcodes horen bij de initiële setup voor RS232. De barcodes voor de verdere instellingen zitten in bijlage 2.
39
2.2.3 De RS 232 interface De meest bekende en meest toegepaste interface voor seriële communicatie is de EIA-232-D interface (RS 232). De volledige definitie van de interface luidt als volgt: ‘Interface between Data Terminal Equipement and Data Communication Equipement employing serial binary data interchange’.
Initieel is deze interface bestemt voor communicatie tussen een DCE en een DTE. Het meest bekende voorbeeld is de verbinding tussen een computer en de bijstaande randapparatuur.
Tabel 2.2: Verschil tussen DCE en DTE
Bij dit type communicatie wordt gebruik gemaakt van negen signaaldraden, waarvan afhankelijk van de toepassing een aantal gebruikt worden. De aansluiting op de verschillende toestellen kan gebeuren d.m.v. 25-, 20- en 9-pins SUB-D connectoren. Indien een verbinding wordt opgezet zonder gebruik te maken van externe communicatielijnen, kan het schema vereenvoudigd worden tot het volgende.
40
Zo’n verbinding tussen twee DTE toestellen wordt een null-modem verbinding genoemd. Eenmaal in die situatie wordt de term DTE dan ook niet meer gebruikt, daar er toch geen verschillende types meer aanwezig zijn. Bij de null-modem verbindingen is er nog een onderscheid tussen: • null-modem met besturingssignalen • null-modem zonder besturingssignalen Wanneer twee PC’s serieel verbonden moeten worden, kan dit gebeuren via de COM poorten. Op die manier is het gebruik van 9-pins connectoren reeds zeker. Hoe de pinnen van de COM poorten verbonden moeten worden is afhankelijk van z’n betekenis.
Tabel 2.3: 9-pins connector
Aangezien het hier gaat om twee toestellen van hetzelfde type, hebben ook de pinnen dezelfde betekenis. Als de verstuurde data van het ene toestel wordt gelezen door het andere en omgekeerd, dan zullen de lijnen van de kabel intern gekruist moeten worden.
Fig. 2.5: Null-modem verbinding
Toepassingen van null-modem verbindingen: • inlezen van gegevens: meetomvormer, barcode lezer, … • uitsturen van gegevens: printer, tekst display, …
41
2.3 Implementatie aan lijn AM2160 2.3.1 Hardware De hardware bestaat uit een ET200M en een CP341 waaraan de barcodescanner gekoppeld wordt. Deze modules zijn via PROFIBUS DP verbonden met de hoofd PLC van de lijn AM2160. Ertussenin zitten dan nog de modules voor het registreren van het afval.
CP 341 ET 200M Fig. 2.6: Hardware implementatie aan lijn AM2160
2.3.1.1 ET 200M De verdeelde I/O module, ET 200M, is een modulaire DP slaaf met een veiligheidsgraad IP20. De ET 200M heeft dezelfde configuratie als S7-300 automatisatiesystemen en bestaat uit een IM 153-x en I/O modules van de S7-300 reeks. De IM 153-1 bevat interface modules voor signaalmodules (SM), functiemodules (FM) en communicatie processoren (CP).
42
Fig. 2.7: Gesloten en open voorpaneel van de ET 200M
Power supply Input voltage • Rated value, DC 24 V • permissible range, lower limit (DC) • permissible range, upper limit (DC) Input current • Rated value at DC 24 V Output voltage • Rated value DC 5 V Output current • for backplane bus (DC 5 V), max. Current consumption Inrush current, typ. I²t Current consumption, max. Power loss, typ. Address area Addressing volume • Outputs • Inputs Hardware config. Number of modules per DP slave interface, max. Communication functions
Yes 20.4 V; Ripple included 28.8 V; Ripple included 625 mA Yes 1A 2.5 A 0.1 A²s 350 mA 3W
128 Byte 128 Byte 8
43
Bus protocol/transmission
PROFIBUS DP to EN 50 170
interfaces PROFIBUS DP, Output current, max interface physics, RS 485 Connection Point
90 mA Yes
PROFIBUS DP
9-pin Sub-D female connector
PROFIBUS DP
Transmission speed, max Node addresses automatic detection of transmission speed SYNC capability FREECE capability
12 Mbit/s 1 to 125 permitted Yes Yes Yes
Tabel 2.4: Technische data ET 200M
2.3.1.2 CP 341-RS 232C De CP 341 communicatie processor wordt gebruikt om data uit te wisselen tussen programmeerbare controllers of computers met behulp van een punt-tot-punt verbinding. Enkele eigenschappen van de CP341: • Transmissiesnelheid tot 76,8 Kbps, half duplex • Integratie van de belangrijkste transmissie protocols - 3964(R) procedure - RK 512 computer connectie - ASCII driver
Fig. 2.8: Open voorpaneel van de CP 341
44
De volgende LED indicators zijn te vinden op het voorpaneel van de CP 341: • SF (rood): Fout • TxD (groen): Interface aan het verzenden • RxD (groen): Interface aan het ontvangen De CP 341 is verkrijgbaar in 3 varianten met verschillende interfacetypes: • RS 232C • X27 (RS 422/485) • 20 mA TTY
Fig. 2.9: 9-Pin Sub D Male Connector op de CP 341
Supply voltages Rated value DC 24 V Current consumption from backplane bus DC 5 V, max. from supply voltage L+, max. Power loss, max. interfaces Number of interfaces interface physics, RS 232C (V.24) Transmission speed, max. Transmission speed, min. Connection point PtP Voltage supply Point-to-point Cable length, max. Integrated protocol driver 3964 (R) ASCII customer-specific drivers reloadable
Yes 70 mA 200 mA 4.8 W 1; electrically isolated Yes 76.8 kBit/s 0.3 kBit/s 9-pin Sub-D connector 3 screw terminals: L+, M, GND 15 m Yes Yes Yes
45
RK512
Yes
Telegram length, max. 3964 (R) ASCII RK 512 Transmission speed, RS232 with 3964 (R) protocol, max. with ASCII protocol, max.
1024 Byte 1024 Byte 1024 Byte 76.8 kBit/s 76.8 kBit/s; 0.3; 0.6; 1.2; 2.4; 4.8; 9.6; 19.2; 38.4; 57.6 and 76.8 kbps (76.8 kbps only achievable with half duplex) 76.8 kBit/s
with RK 512 protocol, max. Software Block FB length in RAM, max.
5500 Byte; Data communication, sending and receiving
Dimensions Width Height Depth Weights
40 mm 125 mm 120 mm
Weight, approx.
300 g Tabel 2.5: Technische data CP 341
2.3.1.3 PROFIBUS DP configuratie Wanneer gewerkt wordt met een PROFIBUS DP- netwerk dient in eerste instantie gezorgd te worden dat er 2 afsluitweerstanden aanwezig zijn. Het inschakelen van een afsluitweerstand gebeurt op de PROFIBUS DP- connector. Daar deze opgebouwd is volgens een wisselprincipe (afsluitweerstand of doorverbinden) is het verplicht om de afsluitweerstanden in te schakelen bij de twee uiterste modules.
Fig. 2.10: Afsluitweerstanden voor PROFIBUS DP
46
Een tweede aandachtspunt zijn de PROFIBUS DP- adressen van de aanwezige modules. Iedere module dient van een uniek adres voorzien te zijn dat bij voorkeur niet 0, 1 of 2 is. 0 standaardadres voor CP kaarten in de PC 1 standaardadres voor OP’s of TP’s 2 standaardadres voor CPU’s Het instellen van PROFIBUS DP- adressen gebeurt voor standaard slaves hardwarematig. Voor meer geavanceerde slaves kan dat eventueel via één of andere software instelling gebeuren.
2.3.2 Hardwareconfiguratie 2.3.2.1 Verbinding tussen WinCC flex. en CPU via de station configurator In het STEP 7 project wordt een virtuele bus toegevoegd via "Insert > Station > SIMATIC PC Station". In het dialoog dat geopend wordt, wordt SIMATIC PC station geselecteerd.
Fig. 2.11: Toevoegen van een SIMATIC PC Station
Het PC station krijgt een gepaste naam namelijk “Mo_Pop_Visual”.
Fig. 2.12: Structuur van het STEP 7 project met de virtuele bus
47
De hardware configuratie voor de virtuele bus wordt geopend. In de hardware cataloog is de “IE General” module terug te vinden die naar het rack op slot 2 wordt gesleept. Deze module is terug te vinden via "SIMATIC PC Station > CP Industrial Ethernet > IE General". WinCC flexible RT wordt op slot 3 toegevoegd via "Hardware Catalog > SIMATIC PC Station > HMI > WinCC flexible RT".
Fig. 2.13: Invoegen van de “IE General” module en de HMI module “WinCC flexible RT”
De rack van de virtuele bus Mo_Pop_Visual ziet er dan als volgt uit:
Fig. 2.14: De rack van de virtuele bus Mo_Pop_Visual
De eigenschappen van de “IE General” module worden geopend en er wordt verder gegaan naar de properties. Het veld “Set MAC address” wordt gedeactiveerd. Er wordt een uniek IP adres toegekend aan het netwerk en de bijhorende subnet mask wordt ingevuld. Het netwerk waar wij voor kiezen is een Ethernetverbinding.
48
Fig. 2.15: De eigenschappen van “IE General”
De Station Configurator wordt gestart via het icoontje in de taskbar.
In de Station Configurator voegen wordt een nieuw station toegevoegd met dezelfde naam als onze virtuele bus nl. “Mo_Pop_Visual”. In slot 2 voegen wordt een component toegevoegd en onder de lijst “Type” wordt “IE General” geselecteerd. Dezelfde procedure wordt gevolgd bij slot 3. Hier wordt WinCC flexible RT geselecteerd uit de lijst.
49
Fig. 2.16: De Station Configurator
Nu moet de PG/PC interface nog worden ingesteld. Dat gebeurt in de SIMATIC Manager via “Options > Set PG/PC Interface”. Er wordt gekozen voor het TCP/IP(Auto) protocol.
50
Fig. 2.17: De PG/PC interface
2.3.2.2 Configuratie van de ET 200M Er wordt verder gebouwd op een bestaande PROFIBUS DP- verbinding. De nieuwe ET 200M (13) wordt via PROFIBUS DP verbonden met de nieuwe ET 200M (14) voor de registratie van het afval. De ET 200M (13) wordt op zijn beurt verbonden met 2 reeds bestaande ET 200M’s die geconnecteerd werden met de CPU 317-2 PN/DP. Vanaf dit punt wordt dan de Ethernetverbinding gelegd die naar de console loopt voor de visualisatie in WinCC flexible RT.
Fig. 2.18: Overzicht van de hardwareconfiguratie aan de CPU 317-2 PN/DP
51
Wanneer bij een PLC configuratie gebruik wordt gemaakt van andere modules dan SM modules, dienen er altijd extra instellingen te worden gemaakt voor de interne processor. De gewenste module wordt aan de PROFIBUS DP- verbinding toegevoegd. Aan de rechterkant is de juiste module terug te vinden onder “PROFIBUS DP” > “ET 200M” > “IM 153-1”. Een PROFIBUS DP- adres kan aan de module gekoppeld worden. Hier is dat het adres 13.
Fig. 2.19: De configuratie van IM153-1 aan de CPU 317-2 PN/DP
2.3.2.3 Configuratie van de CP 341-RS 232C Aan de rechterkant is de juiste module terug te vinden onder “SIMATIC 300” > “CP 300” > “CP 341” > “CP 341-RS 232C”. De module wordt toegevoegd op slot 4. Bij het openen van de eigenschappen kan in eerste instantie nog eens het adresbereik van de module gecontroleerd worden. Vervolgens kan dan overgegaan worden tot het instellen van de communicatieprocessor.
52
Fig. 2.20: De configuratie (adresbereik) van de CP 341-RS 232C
Er wordt eerst even gekeken bij de parameters van deze module. In het venster dat geopend wordt dienen twee instellingen te gebeuren. De eerste noodzakelijke instelling is de keuze van het protocol dat gehanteerd moet worden om te communiceren. Het protocol “ASCII” wordt uit de lijst geselecteerd die bestaat uit “3964(R)”, “ASCII”, “RK 512”.
Fig. 2.21: De parameters voor de Point-To-Point verbinding
53
De volgende instelling is de instelling van de communicatiepoort. Er wordt hiervoor dubbelgeklikt op het icoon “Protocol”. Afhankelijk van het geselecteerde protocol worden er een aantal tabbladen ter beschikking gesteld om de poortinstellingen te doen. •
De instellingen voor de data-indeling:
Fig. 2.22: De instellingen van de data-indeling voor het ASCII-protocol
Gegevens zoals snelheid, aantal databits, stopbits en pariteit moeten overeenkomen met de instellingen van de barcodescanner. Voor de datatransmissie gebruik makende van het ASCII-protocol kan er gekozen worden uit 3 verschillende eindcriteria voor de dataerkenning. Het eindcriterium bepaalt wanneer een volledig berichtframe ontvangen wordt. De mogelijk eindcriteria zijn: - On Expiry of Character Delay Time Het berichtframe heeft noch een vaste lengte noch een gedefinieerd “end-of-text” karakter. Het einde van het bericht wordt bepaald door een pauze op de lijn (expiry of character delay time). - On Receipt of Fixed Number of Characters De lengte van de ontvangen berichtframes zijn altijd identiek. - On Receipt of End Character(s) Het einde van het berichtframe wordt markeerd door één of twee gedefinieerde “end-of-text” karakters. De “character delay time” bepaalt de maximum toegestane tijd tussen 2 opeenvolgende ontvangen karakters. De kleinste “character delay time” hangt af van de baud rate.
54
Baud rate 300 600 1200 2400 4800 9600 19200 38400 57600 76800
Character delay time (ms) 130 65 32 16 8 4 2 2 2 2
Hier wordt gekozen voor “On Expiry of Character Delay Time”. Als de data ontvangen wordt, wordt het einde van het berichtframe herkend wanneer de karakter delay time voorbij is. De ontvangen data wordt dan geaccepteerd door de CPU. In dit geval moet de “character delay time” zo ingesteld worden dat die tijd gemakkelijk vervalt tussen 2 opeenvolgende berichtframes. Het mag ook niet te lang worden genomen zodat het niet fout kan geïdentificeerd worden als de partner een pauze neemt in een berichtframe. De onderste figuur illustreert een “receive”-operatie met het criterium ”expiry of character delay time”.
Fig. 2.23: Schema van het criterium ”expiry of character delay time”
55
•
Aangezien er gebruik wordt gemaakt van de simpelste vorm van seriële communicatie zijn de databesturingssignalen hier niet van toepassing.
Fig. 2.24: De instellingen van de data-overbrenging voor het ASCII-protocol
De CP 341 ontvangstbuffer bevat 1024 bytes. Er kan gekozen worden of de data in de buffer al dan niet overschreven mag worden. Er kan ook een waarde (van 1 tot 250) worden invuld voor het aantal gebufferde ontvangen berichtframes. De ontvangstbuffer van de CP 341 is een ringbuffer: • Als 2 of meer berichtframes ontvangen worden in de buffer, zal het oudste berichtframe door de CP 341 verstuurd worden naar de CPU. • Als enkel het recentste berichtframe naar de CPU verzonden moet worden, moet het aantal gebufferd ontvangen berichtframes op 1 staan en moet “prevent overwrite” gedeactiveerd worden.
Fig. 2.25: De instellingen van de ontvangen data voor het ASCII-protocol
56
Tenslotte staat op de volgende figuur nog een overzicht van de geconfigureerde modules voor lijn AM 2160.
Fig. 2.26: Overzicht van de 2 modules aan lijn AM2160
57
2.4 Implementatie aan lijn AM1130 2.4.1 Hardware De DP/RS 232 interface wordt gebruikt om een seriële interface op PROFIBUS DP te koppelen in overeenstemming met de norm EN 50 170. In deze applicatie wordt het gebruikt als poort en werkt als een PROFIBUS DP- slave. Het kan bewerkt worden door elke standaard master. Er zijn 2 transmissie procedures mogelijk bij deze seriële interface. • De 3964R procedure, wereldwijd gebruikt door Siemens toestellen. • Een vrij ASCII protocol met controle over de “Character delay time”, “Start/End delimiter” of “constant data length”.
Fig. 2.27: Implementatie van RS 232C LINK via PROFIBUS DP aan CPU 315-2 DP (ET 200M)
Fig. 2.28: Schema van de RS 232C LINK
58
Hieronder volgt nog een overzicht van de technische data van de RS 232 interface. Parameter
Data
Standard
DIN 66020
Type of transfer
Asymmetrical, asynchronous, serial, full duplex
Transfer procedure
Master /Slave
Number of users : - Senders
1
- Receivers
1
Cable length: - maximum
15 m
- dependent on baud rate
no
Bus topology
Point-to-point
Data rate: - maximum
19.2 Kbit/s
- standard values
9.6 Kbit/s 19.2 Kbit/s
Parity
None, even, odd
Databits
8 (fixed setting, no parameters can be set)
Stopbit
1 (fixed setting, no parameters can be set)
Sender: - max. voltage
± 25 V
- signal without load
± 15 V
- signal with load
±5V
59
Receiver: - input resistance
3…7 Ohm
- max. input signal
± 15 V
- sensitivity
±3V
Send mode (SPACE): - voltage level
+3 ... +15 V
- logic level
0
Send pause (MARK): - voltage level
-3 ... -15 V
- logic level
1
Tabel 2.6: Technische data RS 232 interface voor RS 232C Link
2.4.2 Hardwareconfiguratie 2.4.2.1 Datacommunicatie De PROFIBUS DP- master zendt de outputdata cyclisch naar de gateway. De gateway vergelijkt dan de ontvangen data van de master met het vorige telegram. Als er veranderingen gedetecteerd worden stuurt de gateway de data naar het externe toestel in overeenkomst met de geselecteerde procedure. Wanneer er geen veranderingen gedetecteerd worden, wordt het telegram niet verstuurd (nl. elk telegram wordt slechts één keer naar het extern toestel gestuurd). De gateway zelf verstuurt de ontvangen data van het extern toestel altijd naar de master zonder wijzigingen. De gateway schrijft de ontvangen data van het extern toestel in het intern RAM geheugen van de SPC3. De vernieuwde data wordt door de gateway verstuurd gedurende de volgende “polling” cyclus. Alle data wordt consequent in beide richtingen door de gateway verstuurd. De maximum lengte van de vaste data moet mee geleverd worden tijdens de datacommunicatie tussen de master en de CPU. Dit hangt meestal af van de master interface en het type CPU.
60
Fig. 2.29: Datacommunicatie van de RS 232C LINK
2.4.2.2 Configuratie van de RS 232C Link Er wordt verder gebouwd op een bestaande PROFIBUS DP- verbinding. De DP/RS 232C Link wordt via PROFIBUS DP verbonden met een ET 200M (36). Die ET 200M wordt op zijn beurt verbonden met de CPU 315-2 DP. Vanaf dit punt wordt dan de Ethernetverbinding gelegd die naar de console loopt voor de visualisatie in WinCC flexible RT. Aan de rechterkant is de juiste module terug te vinden onder “PROFIBUS DP” > “Additional Field Devices” > “Gateway” > “DP/RS 232C Link”. De module wordt toegevoegd op slot 1. Bij het openen van de eigenschappen kan het node adres worden ingevuld op 38. Dit adres wordt ook ingesteld op de module zelf. Vervolgens kan dan overgegaan worden tot het instellen van de parameters.
61
Fig. 2.30: De configuratie van de DP/RS 232C LINK
Via het tabblad “Parameter Assignment” kunnen de parameters worden ingesteld voor de interface.
Fig. 2.31: De parameters van de DP/RS 232C LINK
62
De parameters worden even op een rijtje gezet. •
Baud rate Als snelheid wordt hier dezelfde baud rate genomen als voor de barcodescanner namelijk 9600 Baud.
•
Parity Net als bij de barcodescanner is er geen pariteit.
•
Protocol selection 3964R: Alleen als de RS 232 gebruiker dit protocol ondersteund. Delay between characters: Het einde van het bericht wordt herkend doordat er een bepaalde tijd niets meer werd ontvangen. Start- end character: De start en het einde van een bericht wordt herkend door geschikte karakters. Number of characters: Alle berichten hebben dezelfde lengte.
•
Triggerbyte- mode De datatransmissie op PROFIBUS DP gebeurt cyclisch. De gateway moet dus herkennen of er nieuwe data verstuurd moet worden naar de seriële interface. Normaal gezien gebeurt dit door de interne data te vergelijken met de nieuwe ontvangen data via PROFIBUS DP. In sommige gevallen zal deze procedure niet werken. Bijvoorbeeld, als dezelfde data twee keer verstuurd moet worden. De gebruiker kan dit gedrag beïnvloeden door een triggerbyte toe te voegen. In deze mode zal de data enkel verstuurd worden wanneer de triggerbyte verandert. In de normale mode zal de gateway niet kunnen detecteren of hij meerdere dezelfde telegrammen heeft gekregen. Maar als de triggerbyte wordt ingeschakeld zal de gateway de triggerbyte verhogen elke keer hij een nieuw telegram ontvangt. Als de triggerbyte wordt ingeschakeld is dit telkens de eerste byte van de data unit. Als de Send- Ready Trigger gebruikt wordt, worden de onderste 7 bits van de triggerbytes in de inputdata gebruikt zoals hier boven vermeld, hoewel de MSB “toggles” iedere keer dat een zend-telegram beëindigd wordt.
•
Start delimiter Alleen relevant in de start- end character mode: Waarde bepaald: Ontvangen bytes worden opgeslagen als het Start karakter ontvangen wordt. Waarde niet bepaald: Alle karakters worden opgeslagen.
•
Number of end Delimiters Hangt af van de barcodescanner waar 1 stopbit wordt gebruikt.
•
Length byte Zendrichting: Evenveel data verstuurd als ingevuld in de “length byte”.
63
Ontvangrichting: Het aantal ontvangen bytes is gelijk aan de “length byte”. •
Priority Alleen voor 3964R: interface priority: Welk toestel heeft de voorrang als het Link en RS232 toestel tegelijk zenden? High: de Link heeft prioriteit Low: het RS 232 toestel heeft de voorrang
•
Timeout monitoring Enkel voor 3964R: In de ontvangrichting wordt de tijd niet bijgehouden.
•
SendDone note In de trigger byte mode: De “trigger byte” wordt gewijzigd als de data naar het RS 232 toestel verzonden is.
•
Ext_Diag-bit Als de Link een fout detecteert start de OB82 in de S7-300/400. In andere systemen wordt het diagnostiek bericht uitgebreid.
•
Character delay time x 10ms Voor 3964R vastgesteld op 2s, anders kan zelf ingesteld worden.
•
First End Delimiter, Second End Delimiter, Start Delimiter Decimale waarde van het ASCII karakter
2.5 Binnenlezen van het ordernummer in STEP 7 2.5.1 Lijn AM2160 Eerst wordt het configuratiepakket geïnstalleerd met de parameterisatietools voor de CP 341, de bibliotheek met de functieblokken en een demoprogramma. Na deze installatie en de hardwareconfiguratie wordt er overgegaan naar het programmeren zelf in STEP 7. Alle blokken van het demoprogramma worden in het project gekopieerd. Sommige blokken van dit project krijgen dus een andere nummering en naam of worden aangevuld zodat er geen conflicten kunnen ontstaan. • • • • • •
FC21 FC FC22 FC DB21, DB22 DB40, DB41 DB42 DB43
with SEND with RECEIVE Instance DBs for the standard FBs Work DBs for the standard FBs The source DB for send The destination DB for received data
64
• • • • •
OB1 OB100 VAT1 FB7, FB8 SFC 58, 59
Cyclic OB Restart (warm start) OB Variables table Standard FBs for RECEIVE, SEND SFCs for the standard FBs
In het project wordt FC22 geopend en moet in de eerste lijn het adres “LADDR” van “272” naar “256” veranderd worden. De karakters van de barcode worden ontvangen in DB43. Hieronder is het ordernummer “50522200” te zien met achteraan nog 4 karakters die uitmaken of het om een bodemmachine of lijnmachine gaat.
Fig. 2.32: Binnenlezen van het ordernummer in DB43
De datablok DB72 wordt aangevuld met bijkomende informatie voor het scannen. De scannerdata zoals het ordernummer, het artikelnummer, zakbreedte en zaklengte worden hierin geplaatst.
65
Fig. 2.33: Dataview van DB72
Nu wordt er overgegaan naar het schrijven van een klein programma in STEP 7. Het eerste wat er wordt gedaan is de string omzetten naar BCD via onderstaande code. Zo komt het ordernummer in het dubbelwoord DB44 terecht. Dit wordt nog verder gebruikt in andere functieblokken. De karakters worden omgezet naar hun decimale waarde door 48 af te trekken van hun karakterwaarde. Het eerste getal wordt naar links verschoven met 28 bits, het tweede met 24, enz.. L L -I SLD L OD T L L -I SLD L OD T
DB43.DBB 48
0
28 "Ordernummer_Scanner".Ordernummer_Lezen "Ordernummer_Scanner".Ordernummer_Lezen DB43.DBB 1 48 24 "Ordernummer_Scanner".Ordernummer_Lezen "Ordernummer_Scanner".Ordernummer_Lezen
66
Als tweede worden de karakters in een string DB72.DBB20 gestoken. Deze worden gewoon één per één gekopieerd naar de datablok. L T T
8 "Ordernummer_Scanner".Stringlengte_max "Ordernummer_Scanner".Stringlengte_act
L T
DB43.DBB 0 "Ordernummer_Scanner".A_Nr_Char_1
L T
DB43.DBB 1 "Ordernummer_Scanner".A_Nr_Char_2
Enz. Als derde worden er 3 toggles gemaakt met het oog op de problemen in WinCC flexible. De reden van deze 3 toggles volgt in het volgende hoofdstuk. Iedere keer dat een nieuw ordernummer wordt ingescand verandert de eerste toggle van waarde na 2s, de tweede na 4s en de derde na 6s. Zo wordt er in WinCC na elke event een delay time gecreëerd. Drie timers worden gestart bij het wijzigen van het ordernummer. A DB72.DBX 38.0 L S5T#2S SD T 230 A DB72.DBX 38.0 L S5T#4S SD T 231 A DB72.DBX 38.0 L S5T#6S SD T 232 Als het oude ordernummer verschilt van het nieuwe dan wordt naar M002 gesprongen. L DB72.DBD L DB72.DBD <>D JC M001 L DB72.DBD L DB72.DBD <>D JU M002
22 64
26 68
67
M001: SET S DB72.DBX 38.0 M002: L DB72.DBD 22 T DB72.DBD 64 L DB72.DBD 26 T DB72.DBD 68
// hulpbitje // zet oude waarden op nieuwe waarden
AN DB72.DBX 38.3 JCN M004 Bij de eerste timer wordt de eerste toggle geïnverteerd en wordt een bit DB72.DBX38.3 geset voor de volgende timer. A T 230 A DB72.DBX 38.0 JCN M003 L "Ordernummer_Scanner".vrij_1 INVI T "Ordernummer_Scanner".vrij_1 SET S DB72.DBX 38.3 JU M003 //tweede delay M004: AN DB72.DBX 38.4 JCN M005 Bij de tweede timer T231 wordt de tweede toggle geïnverteerd en wordt een bit DB72.DBX38.4 geset voor de volgende timer. A DB72.DBX 38.3 A T 231 A DB72.DBX 38.0 JCN M003 L "Ordernummer_Scanner".vrij_5 INVI T "Ordernummer_Scanner".vrij_5 SET S DB72.DBX 38.4 JU M003
68
M005: A DB72.DBX 38.4 JCN M003 Bij de derde timer wordt de derde toggle geïnverteerd. Na de procedure wordt de hulpbit gereset. A T 232 A DB72.DBX 38.0 JCN M003 L "Ordernummer_Scanner".vrij_4 INVI T "Ordernummer_Scanner".vrij_4 SET R DB72.DBX 38.0 R DB72.DBX 38.4 R DB72.DBX 38.3 M003: NOP 0
2.5.2 Lijn AM1130 Hier wordt elk karakter afzonderlijk in een inputbyte gestopt. Het enige wat nu eerst moet gebeuren is de karakters in IB overzetten naar DB43. Voor de rest wordt dezelfde procedure gebruikt als in hoofdstuk 2.5.1.
69
Fig. 2.34: Binnenlezen van het ordernummer in ingangsbytes
2.6 WinCC flexible In WinCC flexible wordt er een recept “zakgegevens” en “zakgegevens2” gemaakt met de nodige data die verstuurd moet worden. De procedure voor lijn AM2160 is dezelfde als die voor lijn AM1130.
70
Fig. 2.35: Recept “zakgegevens” voor lijn AM2160
De nodige data wordt in WinCC flexible geïmporteerd:
Fig. 2.36: Ordernummerdata voor lijn AM2160
Er worden 3 toggles gebruikt omdat WinCC flex. verschillende events niet in 1 keer kan uitvoeren. Er is telkens een delay time tussen de verschillende opeenvolgende events.
Fig. 2.37: De 3 toggles voor het scannen
Zo wordt de procedure in 4 stappen doorlopen: 1) Set Value Bij het inscannen van een nieuw ordernummer wordt dit ordernummer in de tag “actualordernr” geschreven. Dit wordt gedaan om het STEP 7 programma volledig te scheiden met de WinnCC
71
flexible applicatie. De tag “actualordernr” is een interne tag in WinCC flex. en heeft dus geen verbinding met STEP 7.
Fig. 2.38: Set Value bij nieuw ordernummer
2) Activate Screen In de tweede stap wordt na 2s het receptuurscherm geopend met het recept “zakgegevens”.
Fig. 2.39: Activate Screen bij eerste toggle
3) Import Datarecords In de derde stap wordt nog eens 2s later de datarecords geïmporteerd vanuit een csv-bestand.
Fig. 2.40: ImportDataRecords bij de tweede toggle
Via ImportDataRecords wordt in de onderstaande lijst naar het ordernummer gezocht. Als het ordernummer in de lijst staat wordt de specifieke data naar de tags gestuurd.
72
Fig. 2.41: CSV-bestand voor het importeren van de datarecords.
4) Load Datarecord In de laatste stap wordt na 2s de data horende bij het ordernummer in het recept geladen via LoadDataRecord. In de eigenschappen van het recept wordt er voor “synchronize tags” en “tags online” gekozen. Zo wordt de data meteen naar de PLC gestuurd.
Fig. 2.42: LoadDataRecords bij de derde toggle
2.7 Besluit Bij lijn AM2160 werkt dit systeem goed. Zo kan er toch wat tijd worden uitgespaard doordat de operator nu de data niet meer hoeft in te typen. Vroeger ging het typen gepaard met fouten en moest de bediener de machine stil leggen en opnieuw instellen. Deze typfouten kunnen nu niet meer voorkomen. Er hoeft alleen even gecontroleerd te worden of dat de geïmporteerde data wel juist is. Bij lijn AM1130 werkt dit systeem niet naar behoren. Het ordernummer verschijnt wel degelijk op het paneel maar de bijhorende data niet altijd. Dit heeft waarschijnlijk te maken met de complexiteit van die procedure. Een oplossing voor dit probleem is gebruik te maken van OPC. Via een .NET-applicatie kan de bijhorende data dan in de PLC worden geschreven. Er zitten bovendien nog heel wat “bugs” in WinCC flexible. De toggletags moeten bijvoorbeeld op het hoofdscherm en op het receptuurscherm worden gezet in een textbox anders werkt het niet. WinCC flexible moet blijkbaar effectief de tag zien veranderen voor die event wordt uitgevoerd. Hopelijk zullen deze problemen verdwijnen door het installeren van de volgende “service pack”. Bovendien is WinCC flexible heel traag t.o.v. STEP 7.
73
3 Implementatie van barcodescanner en weegschaal 3.1 Inleiding Eén van de kernvragen in de productie is hoe de massa afval gereduceerd kan worden tot een minimum. Momenteel bedraagt het afval 6% van de totale productie. Om dit percentage te doen dalen moet eerst de hoeveelheid afval geregistreerd worden. Welke orders, machines, lijnen produceren het meeste afval? Waar liggen de hekelpunten in de productie? Een eerste stap is het wegen van de afval per machinetype in een centraal punt op de werkvloer. Deze gegevens worden dan in een database opgeslagen en verwerkt in VB.NET. Een volgende stap is dan Six Sigma waar die gegevens gebruikt kunnen worden. Six Sigma is een methode waar de gegevens statistisch worden geanalyseerd en waarbij de productie verhoogd kan worden. Dit programma valt buiten de doelstellingen van het eindwerk maar zal in de toekomst wel worden toegepast.
WinCC flexible 2005
DACO, productiegegevens
Intern
- ordergegevens - artikelgegevens
Extern
Intern/extern
ODBC ODBC
Excel
Query’s
Fig. 3.1: Schema van het datatransport
74
In de voorafgaande figuur wordt een schema getoond van het datatransport voor onder meer de registratie van het afval. Het opslaan van de afvalgegevens verloopt via SQL Server. Als database wordt gebruik gemaakt van Access omdat die tabellen eenvoudig te importeren zijn in Visual Studio.NET. Bovendien is Access toegankelijk voor iedereen en gebruiksvriendelijk wat niet het geval is bij SQL Server. De bijkomende data zoals productiegegevens, order- en artikelgegevens bevinden zich in andere databases zoals Oracle, Daco en SAP. De gegevens uit Oracle zijn nog onbekend. Het halen van data uit de SAP- gegevens valt buiten de doelstellingen van dit eindwerk.
75
3.2 Implementatie 3.2.1 Hardware De hardware bestaat uit een ET200M(14), een CP341 waaraan de barcodescanner gekoppeld wordt en een SM321 en SM322 voor de digitale ingangen en uitgangen. Deze modules zijn via PROFIBUS DP verbonden met de ET200M(13) van lijn AM2160.
ET 200M (13)
Fig. 3.2: Opstelling van de hardware voor de afval
Het instellen van de barcodescanner staat vermeld in hoofdstuk 2.2. De gegevens omtrent de ET 200M en de CP341 zijn terug te vinden in hoofdstuk 2.3.1. De SM321 is een module met 32 digitale ingangen die gebruikt wordt voor de verbinding met de weegschaal. De SM322 is een module met 16 digitale uitgangen.
SM 322 SM 321 CP 341 ET 200M Fig. 3.3: Hardware implementatie voor de afval
76
3.2.1.1 De weegschaal (PR1612/02) De weegschaal met de bijhorende loadcells en indicator waren reeds aanwezig op de werkvloer. De weegschaal is een PR1612/02 van Satorius. Er wordt gekozen voor de PR1608/00 interface, namelijk met BCD output.
Fig. 3.4: De gewichtindicator PR1612/02
De BCD uitgang van de indicator bestaat uit 26 draden die aangesloten worden op de SM321. 2) bruin 3) groen 4) geel 5) grijs
1 2 4 8
100
6) roze 7) blauw 8) rood 9) zwart
1 2 4 8
10) paars 11) roze-grijs 12) blauw-rood 13) groen-wit
1 2 4 8
102
14) groen-bruin 15) geel-wit 16) geel-bruin 17) wit-grijs
1 2 4 8
18) bruin-grijs 19) roze-wit 20) paars-bruin 21) blauw-wit
1 2 4 8
22) blauw-bruin 23) rood-wit 24) bruin-rood 25) wit-zwart
minus sign standstill error data hold/enable
1) wit 26) wit-zwart
GND (BCD/PLC output with common ground) GND
104
101
103
In principe zijn voor de registratie enkel de eenheden, tientallen en duizendtallen nodig.
77
3.2.2 Hardwareconfiguratie Er wordt verder gebouwd op een bestaande PROFIBUS DP- verbinding. De nieuwe ET 200M (14) wordt via PROFIBUS DP verbonden met de ET 200M (13) aan lijn AM2160. De ET 200M (13) wordt op zijn beurt verbonden met 2 reeds bestaande ET 200M’s die geconnecteerd werden met de CPU 317-2 PN/DP. Vanaf dit punt wordt dan de Ethernetverbinding gelegd die naar de console loopt voor de visualisatie in WinCC flexible RT.
Fig. 3.5: Overzicht van de hardwareconfiguratie voor de afval
Meer uitleg over de configuratie van de modules ET 200M en CP341 is terug te vinden in het hoofdstuk 2.3.2.
78
3.3 Procedure Aan iedere lijn staat er een kar waar al het afval op gegooid wordt. Wanneer de kar vol is of de shift van de respectievelijke ploeg is gedaan wordt de kar op de weegschaal gereden. De barcodes van het betreffende order, de ploeg en de machine worden ingescand. Ook kunnen steekproeven worden uitgevoerd via een vrije parameter. Er kan bijvoorbeeld een steekproef uitgevoerd worden waarbij de reden van het afval (bvb. slechte lijm, foutieve instelling, slechte druk, … ) wordt ingescand. Tenslotte wordt bevestigd met de barcode “Bevestigen”. Er zijn 3 verschillende ploegen namelijk “Fabien Cauwelier”, “David Ghelein”, Filip Maerten”. De respectievelijke barcodes beginnen steeds met de eerste letter van hun achternaam. Voor de vrije parameters worden barcodes gemaakt zoals bijvoorbeeld “V08” en “W05”. De volledige lijst met de barcodes bevindt zich in bijlage 4. Die data wordt opgeslagen in een datablok in STEP 7 en via WinCC flexible in een logfile geplaatst.
Fig. 3.6: De weegschaal en registratie van het afval
79
3.4 Programmeren in STEP7 Hier volgt een analyse van het STEP7- programma. Het volledige programma is te vinden in bijlage 5. De karakters van de barcode komen in DB47 terecht beginnende met het eerste karakter in DBB0. In het eerste netwerk wordt vergeleken of het eerste karakter een M (ploeg Maerten), G (ploeg Ghelein), C (ploeg Cauwelier) of een vrije parameter (V of W) is. Bij een vrije parameter worden de 2 opeenvolgende karakters samengevoegd en in een woord (in BCD) geplaatst. Alle data die in WinCC flexible wordt gebruikt, wordt opgeslagen in de databouwsteen DB74. In WinCC flexible kunnen trouwens geen “Strings” gelogd worden en bijgevolg moet daar rekening mee gehouden worden in STEP 7. In hetzelfde netwerk wordt ook gekeken of het eerste karakter een B (bevestigen) is. Als dit het geval is wordt een decimaal getal geïnverteerd voor WinCC flexible. Slechts wanneer opnieuw een andere barcode wordt ingescand kan opnieuw bevestigd worden en keert "Scannerdata_Afval".BEVESTIG van waarde om. A( L DB47.DBB 0 L 'B' ==I ) JCN end A "Scannerdata_Afval".hulpbit_1 JC end3 L "Scannerdata_Afval".BEVESTIG INVI T "Scannerdata_Afval".BEVESTIG SET S "Scannerdata_Afval".hulpbit_1 JU end3 end: SET R "Scannerdata_Afval".hulpbit_1 end3: NOP 0 In het tweede netwerk wordt gekeken of het eerste karakter een cijfer is. Dat wil betekenen dat het ordernummer werd ingescand. Ook hier moeten de 12 karakter omgezet worden naar BCD code. De methode is identiek aan die beschreven staat in hoofdstuk 2.5.1. In het derde netwerk wordt de massa afval naar DB74 overgedragen. De ingang I 62.4 wordt hoog als de massa negatief is en I 62.5 wordt hoog als de meting kalm is. Het gewicht komt als BCD-code toe op de ingangen. IB 60 geeft de eenheden en tientallen weer, IB 61 de honderdtallen en de duizendtallen. Ze worden beiden samengevoegd in een woord en omgezet naar een integer.
80
AN "I 62.4" A "I 62.5" A "actuele_Prod_data".WinCC_is_running A( L DB47.DBB 0 L 'B' ==I ) FP "Scannerdata_Afval".hulpbit_2 JCN M004 L IB 61 SLW 8 L IB 60 OW BTI T "Scannerdata_Afval".Gewicht_Decimaal S M 74.4 Wanneer het gewicht opnieuw negatief wordt, wordt de decimale waarde op nul gezet. M004: NOP 0 A "I 62.4" JCN Ma04 L 0 T "Scannerdata_Afval".Gewicht_Decimaal Ma04: NOP 0 In het vierde netwerk wordt een bit hoog gemaakt als het om een tubemachine gaat en laag gemaakt als het om een bodemmachine gaat. In het vijfde netwerk wordt bij een positief gewicht de vrije parameters op nul gezet. Bij iedere geldige scan hoort een bepaalde toon van de barcodescanner. Door het lawaai in de fabriek is dit niet te horen. Onder de kast hangt een lamp die een melding heeft wanneer er ingescand wordt. In het zesde netwerk knippert de lamp even als een scan wordt uitgevoerd. Als het eerste karakter een M, G, C, V, W of een cijfer is wordt de merker M74.4 geset. A M 74.4 L S5T#800MS SE T 474 R M 74.4 A
"I 62.4"
81
FN M 74.6 L S5T#30S SE T 475
//als het gewicht negatief wordt blijft de lamp nog 30s branden
A T 475 AN T 474 O A T 474 A "Taktmerker 2 Hz" = Q 58.1 In het zevende netwerk wordt de barcodescanner ieder uur 3s uit gezet. AN T 477 L S5T#1H SD T 476 A "I 62.4" A T 476 L S5T#3S SE T 477 A =
T 477 Q 58.0
In het achtste netwerk wordt de lamp bovenop de kast aangeschakeld als WinCC flexible runtime op de console aan het lopen is. Als dit niet het geval is, knippert de lamp. Bij deze melding kunnen de werknemers vlug zien dat de gewogen afval geregistreerd wordt. De bit "actuele_Prod_data".WinCC_is_running wordt in WinCC flex. op 1 en 0 gezet. A( L DB47.DBB 0 L 'B' ==I ) AN "actuele_Prod_data".WinCC_is_running A "Taktmerker 5 Hz" O "actuele_Prod_data".WinCC_is_running = Q 58.2
82
3.5 WinCC flexible 3.5.1 Logfile aanmaken Het scherm “Data Logs” wordt in de werkomgeving geopend via de map “Historical Data” aan de linkerkant van het scherm.
Fig. 3.7: Datalogs in WinCC flexible
In de algemene eigenschappen kan een naam worden gegeven aan onze datalog, namelijk “WINCCWASTE”. Voor de opslaglocatie kunnen kan gekozen worden uit “database” of “file”. Dat zijn respectievelijk een ODBC database en een csv-file. Er wordt hier gekozen voor de database. Voor de grootte van de datalog wordt het maximum genomen, namelijk 5000 datarecords per log. Het aantal datarecords is dus eindig. Dit wordt in Access opgevangen door telkens de laatst bijgekomen datarecord in een andere tabel te kopiëren.
83
Fig. 3.8: Opslaglocatie en grootte van de datalog
Het start-up gedrag van het loggen kan ook veranderd worden. Wanneer de “enable logging at runtime at start” wordt aangevinkt, start het loggen als runtime is gestart. Er kan dan ofwel gekozen worden om bij deze runtime-start het loggen te resetten of om de nieuwe data aan de vorige log bij te voegen.
Fig. 3.9: Restart Behaviour van de datalog
Een volgende eigenschap is de “Logging method”. Hier kan gespecificeerd worden wat er moet gebeuren als de log vol is. Er zijn 4 types: • •
• •
Circular log: Als de log vol is, wordt het oudste datarecord overschreven. Segmented circular log: Er worden meerdere logs van dezelfde grootte gecreëerd en die worden één voor één opgevuld. Als alle logs vol zijn, wordt de eerste log overschreven. Display system event at: Wanneer een bepaald percentage bereikt wordt, wordt een systeem bericht afgebeeld als waarschuwing. Trigger event: De “overflow” event wordt getriggerd als de log vol is.
84
Fig. 3.10: Type van de datalog
3.5.2 Logging tags In de volgende figuur worden alle tags die te maken hebben met het afval op een rijtje gezet.
Fig. 3.11: De tags voor het afval
Bij een veranderende waarde van de tag “afval_bevestiging” wordt de data in de datalog gestopt. Ook wordt hier een script “afval_tabel” aangesproken voor de visualisatie. In hoofdstuk 3.5.3 is er hierover meer terug te vinden.
Fig. 3.12: De events bij de tag “bevestiging”
85
Voor iedere tag kan een datalog gespecificeerd worden. De datalog neemt de waarden van de tags over maar ook andere informatie zoals het tijdstip wanneer de waarde werd gelogd. Er kan gedefinieerd worden wanneer de tag gelogd moet worden. Hiervoor kan gekozen worden uit 3 opties: • • •
On demand: De tagwaarden worden enkel gelogd wanneer de systeem functie “Log Tag” wordt opgeroepen. On change: De tagwaarden worden enkel gelogd wanneer de operator een verandering in de waarde van de tag ontdekt. Cyclic continuous: De tagwaarden worden enkel gelogd op regelmatige intervals. Er kan zelf een waarde worden ingevuld in “logging cycle”.
Verder kunnen de waarden worden gelogd wanneer ze binnen een bepaald tolerantiegebied zitten. Dit gebied kan worden ingesteld via “Logging Limits”.
Fig. 3.13: Logging bij de tag “afval_gewicht”
3.5.3 Trends Een trend is een grafische voorstelling van de waarden van een tag in de runtime. Een trendview kan op het scherm toegevoegd worden via “Enhanced objects” in de bibliotheek. Bij de configuratie van een trendlijn zijn er 4 verschillende trendtypes beschikbaar: •
Buffer bit triggered: De waarden die afgebeeld moeten worden, zijn gebufferd in de PLC en worden “bit-triggerd” gelezen in een blok. Deze trendlijn is geschikt voor de afbeelding van vlugge veranderingen en als het geheel van de curve belangrijk is en niet de individuele waarden. Er kan een switchbuffer in de PLC geconfigureerd worden zodat hij verder de nieuwe waarden kan schrijven terwijl de trendbuffer gelezen wordt. De switchbuffer zorgt ervoor dat de PLC de waarden niet overschrijft terwijl de operator de waarden leest voor de trendlijn.
86
•
Log: De trendlijn toont de gelogde waarden in een gedefinieerde tijdsperiode. Deze periode kan in de runtime door de gebruiker verschoven worden om de gewenste informatie te zien.
Fig. 3.14: Trendlijn van de gelogde waarden
•
Realtime bit triggered: De waarden die afgebeeld moeten worden, worden gestuurd via een event door een bit te zetten in “Trend transfer”. De bit wordt gereset als het lezen afgelopen is. Deze trendlijn wordt vooral toegepast bij vlug veranderende waarden zoals de injectiedruk.
•
Realtime cyclic triggered: De waarden die afgebeeld moeten worden zijn bepaald door een ingegeven tijdscyclus. Deze trendlijn wordt toegepast voor continue curves zoals bij de meting van de temperatuur van een motor.
3.5.4 Visualisatie en scripts Voor de afval wordt er een visualisatie gemaakt waarbij het actuele gewicht, het ordernummer, de ploeg en de lijn kunnen afgelezen worden. Ook wordt een tabel gemaakt waarbij de massa kan afgelezen worden per dag, per week en per maand en dit voor elke ploeg en lijn afzonderlijk. Iedere tekstvak wordt gekoppeld aan een interne tag die aangemaakt wordt. Deze tags worden telkens als er bevestigd wordt bijgewerkt via een script.
87
Fig. 3.15: Visualisatie van de afval in WinCC flex.
Een script is een programma in Visual Basic omgeving die doorlopen wordt bij een bepaalde event. Een script kan toegevoegd worden door links van het scherm te klikken op “add script”. Het volledige script staat in bijlage 6. Wat volgt is wat uitleg bij het script. Er wordt eerst vergeleken welke ploeg werd ingescand (“77” is de decimale waarde van het karakter “M”). Ook wordt meteen een onderscheid gemaakt tussen tube- of bodemlijn. Wat volgt is dan een simpele optelling van de massa’s voor de huidige dag, de huidig week en de huidige maand. Deze procedure wordt dan nog 2 keer herhaald voor de andere 2 ploegen. If SmartTags("afval_ploeg") = 77 And SmartTags("afval_tube/bodem")=False Then SmartTags("tube_M_vandaag")=SmartTags("tube_M_vandaag") + SmartTags("afval_gewicht") SmartTags("tube_M_week")=SmartTags("tube_M_week") + SmartTags("afval_gewicht") SmartTags("tube_M_afval")=SmartTags("afval_gewicht") SmartTags("bodem_M_afval")=0 SmartTags("bodem_G_afval")=0 SmartTags("bodem_C_afval")=0 SmartTags("tube_G_afval")=0 SmartTags("tube_C_afval")=0 End If
88
If SmartTags("afval_ploeg") = 77 And SmartTags("afval_tube/bodem")=True Then SmartTags("bodem_M_vandaag")= SmartTags("bodem_M_vandaag") + SmartTags("afval_gewicht") SmartTags("bodem_M_week")= SmartTags("bodem_M_week") + SmartTags("afval_gewicht") SmartTags("bodem_M_afval")= SmartTags("afval_gewicht") SmartTags("tube_M_afval")=0 SmartTags("bodem_G_afval")=0 SmartTags("bodem_C_afval")=0 SmartTags("tube_G_afval")=0 SmartTags("tube_C_afval")=0 End If If SmartTags("afval_ploeg") = 77 Then SmartTags("M_maand")=SmartTags("M_maand") + SmartTags("afval_gewicht") End If De nieuwe massa wordt bij de massa per maand gevoegd voor de juiste lijn. De totale massa afval aan de bodemlijn wordt vandaag en per week samengerekend van elke ploeg. Dezelfde procedure wordt toegepast voor de tubelijn. If SmartTags("afval_tube/bodem")=True Then SmartTags("bodem_maand")=SmartTags("bodem_maand") + SmartTags("afval_gewicht") End If SmartTags("bodem_vandaag")=SmartTags("bodem_M_vandaag")+SmartTags("bodem_G _vandaag")+SmartTags("bodem_C_vandaag") SmartTags("bodem_week")=SmartTags("bodem_M_week")+SmartTags("bodem_G_week ")+SmartTags("bodem_C_week") Tenslotte wordt opnieuw de som gemaakt van de tube- en bodemlijn, vandaag en per week. Op het einde wordt de totale som gemaakt. SmartTags("M_vandaag")=SmartTags("tube_M_vandaag")+SmartTags("bodem_M_vanda ag") SmartTags("C_vandaag")=SmartTags("tube_C_vandaag")+SmartTags("bodem_C_vandaa g") SmartTags("G_vandaag")=SmartTags("tube_G_vandaag")+SmartTags("bodem_G_vandaa g") SmartTags("M_week")=SmartTags("tube_M_week")+SmartTags("bodem_M_week") SmartTags("G_week")=SmartTags("tube_G_week")+SmartTags("bodem_G_week") SmartTags("C_week")=SmartTags("tube_C_week")+SmartTags("bodem_C_week") SmartTags("tot_vandaag")=SmartTags("tube_vandaag")+SmartTags("bodem_vandaag") SmartTags("tot_week")=SmartTags("tube_week")+SmartTags("bodem_week") SmartTags("tot_maand")=SmartTags("tube_maand")+SmartTags("bodem_maand")
89
3.5.5 Scheduler De scheduler is terug te vinden aan de linkerkant onder “device settings”. De scheduler is een soort tijdsrooster waar events cyclisch kunnen uitgevoerd worden. Op de volgende figuur wordt hier wekelijks op maandag om 5u de specifieke interne tags voor de tabel gereset. Hetzelfde gebeurt dan ook dagelijks en maandelijks voor de betreffende tags.
Fig. 3.16: De scheduler voor de afvaltabel in WinCC flex.
Er wordt ook een bit “WinCC_is_running” gecreëerd die enkel hoog is als WinCC flexible actief is op de console. Deze bit wordt naar de PLC gestuurd voor het aanschakelen van de lamp bovenop de kast. Bij het event “Shutdown” zetten wordt deze bit op ‘0’ gezet.
90
Fig. 3.17: De scheduler voor de tag “WinCC_is_running” bij een shutdown
Bij de event “Change screen” wordt de bit op ‘1’ gezet. Bij het starten van de runtime wordt eigenlijk al meteen van scherm veranderd.
Fig. 3.18: De scheduler voor de tag “WinCC_is_running” bij een start runtime
3.6 Besluit Dit systeem werkt goed en de waarden worden allemaal één voor één in de database opgeslagen. Die waarden worden in tabellen en grafieken geplaatst via Visual Studio.NET. Dit komt aan de beurt in het volgende hoofdstuk. Het valt op dat de geregistreerde massa afval slechts de helft bedraagt van de totale massa afval. Blijkbaar wordt er op andere punten van de productie ook redelijk wat afval gemaakt. Enkele punten zijn bijvoorbeeld de drukkerij, de verpakking en het opensnijden van de rollen papier. Om een globaal beeld te krijgen van de massa afval zal ook op die plaatsen in de toekomst het afval gewogen moeten worden.
91
4 Visual Studio.NET 4.1 Database 4.1.1 Tabel Tabellen zijn de basiselementen van een database en bevatten de werkelijke gegevens. In iedere tabel zitten records waarvan de data onderverdeeld is in vooraf bepaalde velden. Alle records die in dezelfde tabel staan bezitten dezelfde velden, en bevatten dus dezelfde soort gegevens. Op die manier kan een record nooit afwijken van de vooraf bepaalde structuur.
1
2
Fig. 4.1: Tabel met datarecords en velden
1. veld: stelt een categorie voor binnen een bepaalde tabel 2. record: is een element uit een bepaalde tabel van een database. Alle gegevens van dit element worden bijgehouden in verschillende categorieën. Het veld of de combinatie van velden die altijd een unieke inhoud bezitten t.o.v. de andere records van dezelfde tabel kunnen als primaire sleutel gedefinieerd worden. Dit heeft echter vooral impact wanneer met gerelateerde tabellen wordt gewerkt, wat in de toepassing hier niet het geval is.
4.1.2 Query Een query is een bewerking die door het RDBMS systeem van de database wordt uitgevoerd. Dit kan een vraag zijn op basis van een aantal ingestelde criteria (resultaat is een virtuele tabel of een recordset), maar dit kan ook een manipulatie van de originele gegevens zijn. Deze query’s worden dan ook in twee grote groepen onderverdeeld: •
Selectiequery: Dit type query’s doet niets anders dan een filter instellen voor één of meerder tabellen en het resultaat weergeven. De mogelijkheden voor het filteren zijn zeer uitgebreid. Er kan zowel gefilterd worden op het aantal velden als op de inhoud van records.
92
•
Actiequery: Het verschil met de vorige types is dat deze query wijzigingen aanbrengt aan de brongegevens uit de tabellen. Hier kan de actiequery nog verder worden onderverdeeld in: - Verwijderquery’s - Tabelmaakquery’s - Toevoegquery’s - Bijwerkquery’s
4.1.3 Databaseontwerp Microsoft Access is een programma dat gebruikt wordt om databases gegevens weer te geven en daarop acties te ondernemen. Daarnaast is het via Microsoft Access ook mogelijk om een nieuwe database aan te maken. Standaard is dit een JET database, maar met de nieuwste versies is het ook mogelijk om een MSDE database aan te maken.
Wanneer het programma wordt opgestart, wordt rechts op het scherm onmiddellijk de keuze verkregen: nieuwe lege database of een bestaande.
Fig. 4.2: Een nieuwe database maken in Access
93
De Access omgeving ziet er als volgt uit:
1 2 3 4
5
Fig. 4.3: De Access-omgeving
1. titelbalk van het programma Microsoft Access 2. database geopend met Microsoft Access 3. titelbalk van de database 4. ontwerpmogelijkheden van het geselecteerde database element 5. bewerkbare elementen binnen een database De beste manier om tabellen te creëren is door zelf eerst de veldenstructuur samen te stellen en daarna de records in te vullen.
Fig. 4.4: Tabellen in Access
94
Fig. 4.5: De tabel “Ploegen” in de ontwerpweergave
Eenmaal alle velden nauwkeurig ingesteld zijn, kan worden overgegaan tot het invullen van de records. Er wordt daarvoor overgegaan naar de Gegevensbladweergave.
De tabel wordt opgeslagen en krijgt de naam “Ploegen”.
Fig. 4.6: De tabel “Ploegen” in de gegevensbladweergave
95
4.1.4 Toepassing Waste_VB.mdb De belangrijkste tabel is de tabel “backup waste” waar ieder nieuw record komende van de SQL server automatisch in gekopieerd wordt. Hier is inderdaad te zien dat bij iedere bevestiging de 5 variabelen onder elkaar in de tabel worden opgenomen. Ook wordt het tijdstip van de bevestiging mee gegeven. De 5 variabelen zijn de volgende: • • • • • •
Afval_vrij_W: Wordt nog niet gebruikt. Afval_vrij_V: Het type machine (van 0 tot 10) Afval_gewicht: De massa afval in kg Afval_ploeg: De ploegletter in decimale waarde (77, 67 of 71) Afval_machinenummer: Een tube- of bodemlijn (bestaande uit 4 cijfers) Afval_ordernummer: Het ordernummer bestaande uit 8 cijfers
Alle waarden zijn decimaal behalve de ploeg (karakter) en het gewicht (integer). Daarmee zal rekening mee moeten gehouden worden bij het aanmaken van de query’s.
Fig. 4.7: De afval-database in Waste_VB.mdb
96
Er worden ook nog 3 andere tabellen gemaakt waarmee in de query’s relaties worden gemaakt met de vorige tabel. • • •
Ploegen Machinenummer Machinenaam
Fig. 4.8: De 3 tabellen in Waste_VB.mdb
97
4.2 SQL SQL of Structured Query Language is de taal die algemeen wordt toegepast voor het beheer van databases. M.b.v. SQL instructies uit een toepassing (front-end) worden gegevens toegevoegd, bewerkt of opgevraagd bij de Server database (back-end). SQL is geen systeem- of programmeertaal, maar een toepassingstaal om query’s uit te voeren bij relationele databases. Dat is de reden waarom SQL geen mogelijkheden biedt voor programmastructuren zoals lussen, beslissingen, … . Alle SQL instructies worden door de database-engine verwerkt en die levert dan op zijn beurt een antwoord in de vorm van een recordset. Wel belangrijk is dat recordsets tijdelijk en na afsluiting van de toepassing niet langer toegankelijk zijn. In een SQL instructie zijn altijd een aantal grote onderdelen te herkennen: •
Sleutelwoorden waarmee een commando begint. SELECT INSERT UPDATE DELETE CREATE
•
Sleutelwoorden waarmee een clausule binnen een commando begint. FROM WHERE
•
Andere sleutelwoorden voor opties in een clausule. ORDER BY AND OR
4.2.1 Verschillende query’s 4.2.1.1 Selectiequery Selectiequery’s zijn query’s die informatie uit één of meerdere tabellen ophalen en die aanbieden aan de gebruiker. Om zo’n query uit te voeren is er nood aan het SELECT sleutelwoord. Deze haalt records op en plaatst de informatie in een recordset, zodat de toepassing de gegevens verder kan verwerken. De eenvoudigste vorm van zo’n instructie is deze waarbij alle velden uit een tabel worden opgehaald. SELECT * FROM tabel1 Wanneer er specifiek een aantal velden uit een tabel worden geselecteerd, wordt het volgende verkregen. SELECT veld1, veld2 FROM tabel1
98
Op die manier werd er dus reeds gefilterd in de breedte. Is het wenselijk om ook te filteren op de inhoud van de velden, of filteren in de hoogte, dan is er nood aan het WHERE sleutelwoord. SELECT veld1, veld2 FROM tabel1 WHERE veld1 = ‘x’ OR veld1 = ‘y’ Bij vergelijkingen is er de keuze uit onderstaande mogelijkheden. Daarbij is het telkens van belang dat de expressies van hetzelfde type zijn.
Fig. 4.9: Enkele belangrijke operatoren in SQL
Als optie is het ook mogelijk om de volgorde van de records in de recordset vast te leggen. Dit gebeurt door achteraan het sleutelwoord ORDER BY toe te voegen. Er kan op één veld gesorteerd worden, maar ook op meerdere. SELECT * FROM tabel1 WHERE veld1 = ‘x’ ORDER BY veld1, veld2 De standaard sorteervolgorde voor alle velden is oplopend. Is het gewenst om voor bepaalde velden aflopend te sorteren, dan dient er gebruik te worden gemaakt van het sleutelwoord DESC. SELECT * FROM tabel1 WHERE veld1 = ‘x’ ORDER BY veld1 DESC, veld2
4.2.1.2 Bijwerkquery Een bijwerkquery dient om gegevens in een bepaalde tabel aan te passen. Om deze actie te kunnen uitvoeren, dient er gebruik te worden gemaakt van het UPDATE sleutelwoord. Het eenvoudigste wat gedaan kan worden, is één of meerdere volledige velden een bepaalde waarde toekennen. UPDATE tabel1 SET veld1 = ‘A’, veld2 = ‘B’
In de meeste gevallen is het echter de bedoeling dat enkel bij bepaalde records een wijziging wordt doorgevoerd. Dit is mogelijk door de SQL instructie uit te breiden met het WHERE sleutelwoord. UPDATE tabel1 SET veld1 = ‘A’, veld2 = ‘B’ WHERE veld2 = ‘x’
99
4.2.1.3 Verwijderquery Voor zo’n query’s is er nood aan een DELETE sleutelwoord. Het doel van deze query is een aantal records uit een tabel verwijderen. De eenvoudigste vorm ziet er als volgt uit. DELETE FROM tabel1 Deze vorm is echter niet zeer nuttig, daar hij alle records uit een tabel gaat verwijderen. Meestal wordt de SQL instructie uitgebreid met het WHERE sleutelwoord, zodat specifiek kan worden aangegeven welke records uit de tabel moeten verdwijnen. DELETE FROM tabel1 WHERE veld1 = ‘x’
4.2.1.4 Toevoegquery Een toevoegquery doet net het tegenovergestelde van een verwijderquery. In plaats van gebruik te maken van het DELETE sleutelwoord is er hier nood aan het INSERT sleutelwoord. Daarbij worden telkens de gewenste velden ingevuld die gewenst zijn, gevolgd door de respectievelijke inhoud ervoor. INSERT INTO tabel1 (veld1, veld2) VALUES (‘C’, ‘D’) Een uitbreiding op deze SQL instructie wordt verkregen wanneer een tabel wordt aangevuld m.b.v. een selectiequery. Dit is een veel gebruikte combinatie om gefilterde gegevens in een andere tabel te stoppen. INSERT INTO tabel1 SELECT * FROM tabel2 WHERE veld1 < 6
4.2.2 Toepassing Waste_VB.mdb De eerste query die gemaakt wordt is een selectiequery “Qry Resultaat (11)” waarbij de 6 ingescande waarden in 6 kolommen worden gestoken. Het is de bedoeling dat bij iedere bevestiging één datarecord wordt verkregen met de bijhorende 6 velden.
Fig. 4.10: De selectiequery “Qry Resultaat (11) in de ontwerpweergave
100
Via de volgende instructies wordt van een datarecord een veld gemaakt. Er wordt afgevraagd via de expressie IIF of de “Varname” = ”afval_ordernummer". Is dit het geval, dan wordt de eerste instructie uitgevoerd anders wordt een ‘0’ gezet. De decimale waarden worden in de instructie omgezet naar een hexadecimaal getal. Order: (IIf([Varname]="afval_ordernummer";Int(Str(Hex([Varvalue])));0)) Machnr: (IIf([Varname]="afval_machinenummer";Int(Str(Hex([varvalue])));0)) Ploeg: (IIf([Varname]="afval_ploeg";([varvalue]);0)) Gewicht: (IIf([Varname]="afval_gewicht";([varvalue]);0)) Vrij: (IIf([Varname]="afval_vrij_V";Int(Str(Hex([varvalue])));0)) Waste: (IIf([Varname]="afval_vrij_W";Int(Str(Hex([varvalue])));0)) In het veld “validity” wordt als criteria ‘1’ ingevuld.
Fig. 4.11: De selectiequery “Qry Resultaat (11) in de gegevensbladweergave
Nu staat nog steeds niet alles in één datarecord. Er wordt een nieuwe query gemaakt waar de bij elkaar horende records worden opgeteld en in één record worden gestoken.
Fig. 4.12: De selectiequery “Qry Resultaat (1) in de ontwerpweergave
101
In de gegevensbladweergave is te zien dat alle waarden nu in één datarecord staan. De andere aangemaakte tabellen kunnen dan in een volgend stadium gekoppeld worden aan deze query.
Fig. 4.13: De selectiequery “Qry Resultaat (1) in de gegevensbladweergave
102
4.3 COM Microsoft Windows is opgebouwd volgens een modulaire strategie. Dit betekent dat programma’s draaiende op dit platform niet bestaan als grote afzonderlijke gehelen, maar dat het toepassingen zijn die gebruik maken van allerlei componenten om tot hun gewenste functionaliteit te komen. Componenten zijn dus eigenlijk softwaremodules die op de computer terug te vinden zijn als fysieke elementen (DLL’s, EXE’s, …) en die inwendig een reeks van classes bezitten.
Fig. 4.14: Component met bijhorende classes
Wanneer componenten gebruik worden in toepassingen, worden classes geïnstancieerd tot objecten waarmee gewerkt kan worden. In tegenstelling tot componenten zijn objecten logische elementen met bepaalde eigenschappen, functies, … . Objecten kunnen niet op zichzelf functioneren, ze zijn altijd op één of andere manier met elkaar gelinkt. De manier waarop ze met elkaar in verbinding staan ligt vast in het Object Model dat bij de betreffende component hoort.
103
4.4 Visual Studio.NET In dit hoofdstuk wordt er dieper ingegaan op het werken met Visual Studio. NET. Er wordt beperkt tot een algemene uitleg en een overzicht van de componenten en methoden die gebruikt zijn in het eindwerk.
4.4.1 Een nieuw project in .NET Na het opstarten van het programma verschijnt volgend startscherm.
Fig. 4.15: Een nieuw project in Visual Studio.NET
In het startscherm verschijnen de meest recent geopende projecten. Via ‘New Project’ wordt een wizard getoond.
104
Fig. 4.16: Keuzescherm voor een nieuw project
In dit dialoogvenster kan links de programmeertaal worden gekozen. Rechts kan het type applicatie worden vastgelegd : een Windows applicatie, webapplicatie, smart applicatie, … Hier wordt gekozen voor een Windows applicatie. Na het geven van een naam en locatie wordt de programmeeromgeving geopend.
1
5
2
3
4 6
7
Fig. 4.17: Programmeeromgeving in Visual Studio.NET
105
1) Tabbladen, zo kan gemakkelijk van het ene venster naar het andere gegaan worden of van design naar code. 2) De form, het visuele venster dat naar wens kan worden aangepast door het toevoegen van componenten en aanpassen van opties. 3) Dit is een overzicht van de verschillende forms, modules en/of classes uit het project. Ook is het mogelijk mappen aan te maken om bepaalde elementen te groeperen en zo het project nog overzichtelijker te maken. 4) Dit zijn de opties van de actieve form, module of component. Die opties kunnen hier worden aangepast, alsook via code. 5 ) Debug toolbar: om het project te testen en zo te controleren op fouten. Ook F5 kan gebruikt worden om het project te starten. 6 ) Toolbox: Hier staan de componenten die gebruikt kunnen worden in een Windows applicatie. Deze worden later besproken. Componenten die niet zichtbaar zijn zoals een timer of een dataset zullen onderaan het venster worden geplaatst. 7 ) Als de debug wordt gestart, wordt de code eerst gecontroleerd op fouten. Die fouten verschijnen in het debugvenster.
4.4.2 ODBC connectie met Access De Access- database “waste_VB.mdb” bevindt zich op het intern netwerk. Om in Visual Studio.NET gebruik te maken van deze database moet die eerst worden ingeladen in de ODBCgegevensbronbeheer van de PC. Een ODBC-gegevensbronbeheer bevat gegevens over het tot stand brengen van een verbinding met de opgegeven gegevensvoorziening. Een gebruikersgegevensbron is alleen zichtbaar voor de gebruiker en kan alleen op de huidige computer worden gebruikt. Via Start > Configuratiescherm > Systeembeheer wordt er op “Gegevensbronnen (ODBC)” geklikt. Een nieuwe gegevensbron wordt aangemaakt door in het tabblad “Gebruikers-DSN” op “toevoegen” te klikken. Er wordt hier gekozen voor het stuurprogramma Microsoft Access.
106
Fig. 4.18: Nieuwe gegevensbron maken
De juiste database wordt geselecteerd en een naam wordt aan onze gegevensbron gegeven.
Fig. 4.19: ODBC-instellingen voor Microsoft Access
107
In Visual Studio.NET wordt een connectie in het project ingevoegd via de “Server Explorer” aan de linkerkant van het scherm. Er wordt op het icoon “Connect to database” geklikt.
Als OLE DB-voorziening wordt de OLEDB Provider voor ODBC Drivers gekozen.
Fig. 4.20: OLE DB-voorziening voor de connectie
108
De juiste gegevensbron wordt geselecteerd en de verbinding wordt getest.
Fig. 4.21: Data Link-eigenschappen van de connectie
Er wordt op “OK” geklikt en links verschijnt onze connectie met de bijhorende tabellen en query’s. Deze connectie wordt naar onze form gesleept en onderaan verschijnt de connectie in een apart vak. De eigenschappen kunnen nu worden aangepast en de naam van de connectie kan bijvoorbeeld veranderd worden in “Verbinding”.
Fig. 4.22: De dataconnecties in de Server Explorer
109
Bij het gebruik van deze connectie moet deze telkens worden geopend en na de instructies gesloten worden. verbinding.Open() verbinding.Close()
4.4.3 Ontwerp 4.4.3.1 Tekenen Het tekenen van eenvoudige figuren als cirkels, ellipsen en rechthoeken verloopt anders dan in Visual Basic. Hier moeten de figuren aangemaakt worden in de code. Ze kunnen niet zomaar in de ontwerpweergave worden toegevoegd. De tekeningen worden gemaakt in een bepaalde subroutine “OnPaint”. Protected Overrides Sub OnPaint( _ ByVal paintEvent As PaintEventArgs) End Sub De variabelen die nodig zullen zijn, worden gedeclareerd. Dim Dim Dim Dim Dim
myGraphics As Graphics myBrush As System.Drawing.Drawing2D.LinearGradientBrush myBrush3 As SolidBrush = New SolidBrush(Color.Gold) myBrush4 As SolidBrush = New SolidBrush(Color.Brown) myRectangle As Rectangle
Er wordt van de huidige form een vlak gemaakt waarin getekend kan worden. myGraphics = Graphics.FromHwnd(hwnd:=ActiveForm().Handle) Er wordt een rechthoek gecreëerd die het hele scherm vult. myRectangle = New Rectangle(x:=1, y:=1, Width:=Screen.PrimaryScreen.Bounds.Width, Height:=Screen.PrimaryScreen.Bounds.Height) “MyBrush” wordt opgemaakt voor onze rechthoek. Als gevolg van de onderstaande code wordt een tekenvlak verkregen waarbij het kleur vertikaal gradeert van oranje naar donkerrood. myBrush = New System.Drawing.Drawing2D.LinearGradientBrush( _ rect:=myRectangle, _ color1:=Color.Orange, _ color2:=Color.DarkRed, _ LinearGradientMode:=System.Drawing.Drawing2D.LinearGradientMode.Vertical)
110
Onze rechthoek wordt opgevuld met “my brush”. myGraphics.FillRectangle(Brush:=myBrush, rect:=myRectangle) De ellipsen worden via de startpositie (x, y), de breedte en de hoogte gemaakt.
myGraphics.FillEllipse(Brush:=myBrush4, rect:=New Rectangle(x:=-110, y:=-5, Width:=350, Height:=110)) myGraphics.DrawEllipse(Pen:=New Pen(Color.Brown, 5), rect:=New Rectangle(x:=-120, y:=90, Width:=350, Height:=80)) myGraphics.FillEllipse(Brush:=myBrush3, rect:=New Rectangle(x:=-120, y:=90, Width:=350, Height:=80)) Als voorbeeld wordt dan de volgende opmaak van de form verkregen.
Fig. 4.23: Tekenen in Visual Studio.NET
111
4.4.3.2 Selectiecriteria Er worden 2 forms gemaakt, namelijk frmAlgemeen en frmPermachine waarin verschillende opties mogelijk zijn voor het bekijken van de data. Er wordt een menubalk toegevoegd waar verschillende items aan toegevoegd kunnen worden. Deze tool kan toegevoegd worden via Toolbox > Windows Forms > Main Menu
Aan ieder toegevoegd item wordt een gepaste naam gegeven zoals mniAlgemeen en mniPermachine. Als er op een item wordt geklikt wordt ervoor gezorgd dat mniItem.checked = true is zodat die als voorwaarde kan gebruikt worden in de rest van het programma. Er kan eenvoudig worden overgegaan van het ene naar het andere scherm via de knoppen “Algemeen” en “per machine”. Eerst moeten de 2 forms gedeclareerd worden, dan wordt het huidige scherm verborgen, het andere scherm getoond en het huidige afgesloten. Private Sub mniPermachine_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mniPermachine.Click Dim F2 As New frmPermachine Dim F1 As New frmAlgemeen Me.Hide() F2.Show() F1.Close() End Sub
In de form “frmAlgemeen” is er onder het menu “Optie” de keuze uit 4 mogelijkheden: • • •
•
Massa Afval: De geproduceerde massa afval in kg. Aantal wegingen: Hier wordt het aantal wegingen per ploeg weergegeven. Per Order: De totale massa afval per order en het tijdstip van de laatste weging. Een extra tekstvak komt tevoorschijn waar kan gezocht worden naar de massa van een bepaald ordernummer. Fouten: De tijdstippen van de “fouten” worden weergegeven (bvb. WinCC flex. Runtime gestopt of gestart).
112
Linksboven op het scherm worden 2 “checkboxen” geplaatst, namelijk “per ploeg” en “per machinetype”. Er zijn dus 3 mogelijkheden: • • •
Alleen per ploeg: 3 kolommen voor de 3 ploegen Alleen per machinetype: 2 kolommen, nl. tube- en bodemlijn voor elke ploeg Per ploeg en per machinetype: 6 kolommen, nl. combinatie van de vorige twee
Er worden ook 6 “radiobuttons” geplaatst waarbij slechts één van de 6 kan geselecteerd worden. Zo kan er gekozen worden welke tijdsbasis gebruikt wordt om de tabellen te zien. De “combobox” wordt hier veel gebruikt om de bijvoorbeeld de gewenste maand te selecteren. Onder het menu “Items” in de eigenschappen van de combobox kan een collectie worden toegevoegd.
Fig. 4.24: De String Collectie voor de combobox
Voor de selectie “per dag” worden twee “DateTimePickers” ingevoegd. Hierbij kan de gevraagde dag geselecteerd worden.
Fig. 4.25: De “DateTimePicker”
In de volgende figuur wordt het bovenste deel van het hoofdscherm getoond waar alle nodige selecties kunnen gemaakt worden.
113
Fig. 4.26: Het hoofdscherm “frmAlgemeen”
In de form “frmPermachine” is er onder het menu “Optie” de keuze uit 2 mogelijkheden: • •
Massa: De geproduceerde massa afval in kg. Orders per machine: Hier worden de orders getoond per machinetype, per maand voor alle ploegen.
De structuur blijft dezelfde als bij de vorige form maar nu kan er specifiek gekozen worden welke ploeg men wil zien en welke machine. Voor het type machine kan gekozen worden tussen Algemeen, AM2160, 129, 1130, 2150, K66/1, K66/2, K66/3, OLYMPIA, STELLA, NOVOFLEX en ongedefinieerd.
Fig. 4.27: Het scherm “frmPermachine”
Een derde menu in het menu “Grafiek”. Hier kan gekozen worden uit 4 verschillende grafiektypes.
114
4.4.4 Datagrid en query’s 4.4.4.1 Datagrid Het component “Datagrid” kan gevonden worden in de toolbox. Een datagrid is een tabel waar data kan ingestopt worden die bijvoorbeeld afkomstig is van Excel of Access. Wanneer er iets in de datagrid wordt gestoken, moet eerst de verbinding met de database geopend worden. verbinding.Open() Een tweede stap is het declareren van de OdbcCommand, de OdbcDataAdapter en de DataSet. Een DataSet is een in- memory database waarin verschillende DataTable’s kunnen voorkomen. In de string “opdr” wordt de query geplaatst. Dim opdracht As New Odbc.OdbcCommand(opdr, verbinding) Dim objDataAdapter As New Odbc.OdbcDataAdapter(opdracht) Dim mijnDataset As New DataSet “MijnDataset” wordt opgevuld met de data van de “objDataAdapter”. Dit wordt dan de bron voor de datagrid “dtgAfval”. objDataAdapter.Fill(mijnDataset) dtgAfval.DataSource = mijnDataset mijnDataset.DataSetName = "Massa afval" De laatste stap is het sluiten van de verbinding. verbinding.Close()
4.4.4.2 Query’s Het enige wat er nu nog rest is het maken van de query’s rekening houdende met de gevraagde selectie. Het is onmogelijk om een beschrijving te geven van alle gemaakte query’s en methodes. Daarom wordt er beperkt tot één voorbeeld, namelijk de tabel voor de geproduceerde massa per ploeg. Er wordt gestart vanuit de query “Qry Resultaat (1)” (zie hoofdstuk 4.2.2.). Onze eerste voorbereidende query is “Qry Totaalperploeg” waar de volgende relatie wordt gelegd.
115
Hier volgen enkele instructies die standaard kunnen gebruikt worden in Access. Datum: (Format([timestring];"Korte datumnotatie")) Jaar: Year([timestring]) Maand: Month([timestring]) Dag: Day([timestring]) Week: Int(Format([Timestring];"ww")) Er wordt ook een veld “tijd” gemaakt met het oog op het maken van de grafieken via MSChart. Deze data wordt dan op de X-as gezet aangezien op de X-as alleen integers mogen staan. tijd: ([dag]+([maand]*100)+([jaar]*10000))
Fig. 4.28: De selectiequery “Qry Totaalperploeg” in de gegevensbladweergave
Een volgende voorbereidende selectiequery is “Qry Totaalperploegperdag(1). De datarecords worden omgezet naar velden via de volgende instructies. Maerten Filip: IIf([ploeg]=77;[SumOfGewicht];0) Ghelein David: IIf([ploeg]=71;[sumofgewicht];0) Cauwelier Fabien: IIf([ploeg]=67;[sumofgewicht];0)
Fig. 4.29: De selectiequery “Qry Totaalperploeg(1)” in de gegevensbladweergave
116
Nu staat de data nog niet per dag. Daarom moet in een volgende query (per dag) de som worden genomen in het veld “Cauwelier Fabien”, “Ghelein David” en “Maerten Filip”.
Fig. 4.30: De selectiequery “Qry Totaalperploeg_Crosstab” in de ontwerpweergave
Via deze query kunnen nu de andere query’s per maand, per week en per jaar worden afgeleid in Visual Studio.NET.
Fig. 4.31: Het scherm “frmAlgemeen” met de bijhorende datagrid
117
Wanneer in de form “frmAlgemeen” via de werkbalk op “per order” wordt geklikt, is het mogelijk om een bepaald ordernummer op te zoeken in de database.
Bij het klikken op de knop “Zoek” wordt de subroutine “ZoekenOrdernr()” aangesproken. Private Sub btnZoek_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoek.Click Call ZoekenOrdernr() End Sub Private Sub ZoekenOrdernr() verbinding.Open() cmdGrafiek.Enabled = False MSChart1.Visible = False dtgAfval.Visible = True MSChart1.TitleText = "Afval per ordernummer" Een query wordt opgebouwd via de query “Resultaat”. Van ieder ordernummer wordt de som gemaakt van de respectievelijke massa’s. Als datum wordt de datum van de laatste weging genomen. In de uiteindelijke tabel zal maar één datarecord zitten aangezien ieder ordernummer uniek is. Via de paarse instructie wordt enkel het datarecord met het gevraagde ordernummer in de tabel opgenomen. st1 = "SELECT Max(Resultaat.Datum) AS MaxVanDatum, Resultaat.Order, Sum(Resultaat.Gewicht) AS SomVanGewicht" st2 = " FROM Resultaat GROUP BY Resultaat.Order, Resultaat.Jaar, Resultaat.Maand HAVING (((Resultaat.Order)=" & Val(txtOrdernr.Text) & ")) ORDER BY Resultaat.Jaar, Resultaat.Maand, Max(Resultaat.Dag)" opdr = st1 & st2 Eerst wordt een OdbcCommand en een OdbcDataReader gedeclareerd. Via de OdbcDataReader kan de data en de datarecords gelezen worden die in “opdracht” staan. Via “dataLezer.Read()” wordt er overgegaan naar het volgende datarecord die gelezen wordt (dus het eerste en het enige datarecord). Dim opdracht As New Odbc.OdbcCommand(opdr, verbinding) Dim dataLezer As Odbc.OdbcDataReader =opdracht.ExecuteReader(CommandBehavior.CloseConnection)
118
dataLezer.Read() Als in de “dataLezer” weldegelijk data zit wordt van dit eerste datarecord het eerste en het derde veld, respectievelijk datum en massa in hun tekstvak geplaatst. Zit er geen data in de “dataLezer”, dan wordt er een waarschuwing getoond dat het ordernummer niet gevonden werd. If dataLezer.HasRows = True Then txtDatum.Text = dataLezer.GetValue(0) txtMassa.Text = dataLezer.GetValue(2) & " kg" Else MsgBox("Ordernummer niet gevonden", MsgBoxStyle.OKOnly, "Opgelet!") End If dataLezer.Close() verbinding.Close() End Sub
4.4.5 Grafieken maken via MSChart Van de gemaakte tabellen wordt telkens een grafiek gemaakt. Het item “MSChart” is niet standaard aanwezig in Visual Studio.NET. Het wordt toegevoegd door rechts op de toolbox te klikken en over te gaan naar “add/remove items”.
Fig. 4.32: Toevoegen van het item “MSChart” in de toolbox
In het geopende scherm wordt er naar het tabblad “COM components” gegaan en wordt “Microsoft Chart Control 6.0” aangevinkt.
119
Fig. 4.33: De COM componenten
Hieronder volgt wat uitleg over het maken van een grafiek die bij een bepaalde query hoort. Voor de grafiek zijn er slechts een aantal velden nodig uit de database. De integer “kolom” stelt het nummer van de eerste kolom voor, “aantalkol” het aantal kolommen die afgebeeld worden. Deze integers krijgen telkens een waarde bij het maken van de query. De integers “kolom” en “aantalkol” zijn beiden toegankelijk in heel het form. Private kolom As Short Private aantalkol As Short Private Sub cmdGrafiek_Click(ByVal eventSender As System.Object, ByVal System.EventArgs) Handles cmdGrafiek.Click
eventArgs
Dim X As Short Dim Y As Short Dim Dim Dim Dim Dim
j As Short kol As Integer kk As Integer test As String area As Integer
De verbinding wordt geopend en een OdbcCommand, OdbcDataAdapter en OdbcDataReader worden gedeclareerd. verbinding.Open() Dim opdracht As New Odbc.OdbcCommand(opdr, verbinding) Dim objDataAdapter As New Odbc.OdbcDataAdapter(opdracht)
120
Dim dataLezer As Odbc.OdbcDataReader = opdracht.ExecuteReader(CommandBehavior.CloseConnection) MSChart1.Visible = True dtgAfval.Visible = False cmdGrafiek.Enabled = False De legende onderaan de grafiek wordt opgemaakt. With MSChart1.Legend .Location.LocationType = MSChart20Lib.VtChLocationType.VtChLocationTypeBottom .TextLayout.HorzAlignment = MSChart20Lib.VtHorizontalAlignment.VtHorizontalAlignmentCenter .VtFont.VtColor.Set(64, 0, 64) .Backdrop.Fill.Style = MSChart20Lib.VtFillStyle.VtFillStyleBrush .Backdrop.Fill.Brush.Style = MSChart20Lib.VtBrushStyle.VtBrushStyleSolid .Backdrop.Fill.Brush.FillColor.Set(255, 255, 255) End With MSChart1.ShowLegend = True Bij de instructie “dataLezer.Read()” wordt telkens de volgende datarecord gelezen. Zo wordt een lus gecreëerd en kan het aantal datarecords geteld worden. Er wordt wel één datarecord te veel geteld, nl. bij het lezen van de laatste rij wordt “k” ook nog eens met 1 opgeteld. While dataLezer.Read() k += 1 End While kk = k - 1 dataLezer.Close() verbinding.Close() De “DataReader” en de verbinding wordt eerst gesloten en daarna opnieuw geopend. Hier gebeurt namelijk een nieuwe lezing waarbij een nieuwe “DataReader” wordt gemaakt en opnieuw vanaf de eerste datarecord wordt gelezen. verbinding.Open() Dim dataLezer1 As Odbc.OdbcDataReader = opdracht.ExecuteReader(CommandBehavior.CloseConnection) Er wordt een matrix gemaakt waarin de nodige data zal ingevuld worden. Er wordt ook een matrix gemaakt bestaande uit 1 kolom voor de waarden op de X-as. Dim chrtarr(kk, aantalkol) As Integer
121
Dim chrtarrlabel(kk, 1) As Integer X=0 De matrix wordt opgevuld met de waarden van de gemaakte query. Per gelezen datarecord wordt via een For-lus de waarden één voor één naar de matrix gekopieerd. Bij het grafiektype “2dArea” wordt per datarecord telkens de som genomen van de reeds ingevulde waarden. Ook wordt de eerste kolom van de query naar de matrix voor de X-waarden gekopieerd. While dataLezer1.Read() kol = kolom area = 0 For Y = 0 To aantalkol - 1 If mni2dArea.Checked = False Then chrtarr(X, Y) = dataLezer1.GetValue(kol) Else chrtarr(X, Y) = dataLezer1.GetValue(kol) + area area = chrtarr(X, Y) End If kol = kol + 1 Next Y chrtarrlabel(X, 1) = dataLezer1.GetValue(0) X=X+1 End While MSChart1.ChartData = chrtarr MSChart1.ColumnCount = aantalkol MSChart1.ColumnLabelCount = 5 De waarden van de eerste kolom worden op de X-as gezet. For X = 0 To kk MSChart1.Row = X + 1 MSChart1.RowLabel = chrtarrlabel(X, 1) Next X Als laatste wordt de legende opgemaakt. Aan iedere kolom geven wordt dezelfde waarde gegeven als die in de query zelf. With MSChart1 For j = 1 To aantalkol .Column = j .ColumnLabel = dataLezer1.GetName(kolom) kolom = kolom + 1 Next j
122
End With verbinding.Close() End Sub Er is keuze uit 4 verschillende grafiektypes.
Fig. 4.34: Verschillende grafiektypes in MSChart
123
4.4.6 Afdrukken van grafieken Via de toolbox wordt een “printdocument” en een “printdialog” toegevoegd aan het project. In de eigenschappen van de “printdialog” wordt als document het “printdocument” geselecteerd. Bij het klikken op het menu-item “Afdrukken” wordt het scherm “Printdialog” geopend en kunnen de eigenschappen voor het afdrukken worden aangepast indien nodig. Private Sub mniAfdrukken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mniAfdrukken.Click PrintDialog1.ShowDialog() If PrintDialog1.ShowDialog = DialogResult.OK Then PrintDocument1.DefaultPageSettings.Landscape = True PrintDocument1.Print() End If End Sub Bij de opdracht “PrintPage” wordt de grafiek gekopieerd en in de “Clipboard” geplakt als een bitmap. Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage MSChart1.EditCopy() Cursor = Cursors.AppStarting Dim bm As Bitmap bm = (Clipboard.GetDataObject().GetData(DataFormats.Bitmap)) e.Graphics.DrawImage(bm, e.Graphics.VisibleClipBounds) End Sub
124
4.4.7 Verdeling van het project Als de .NET applicatie is voltooid, is het de bedoeling om de applicatie te gebruiken op één of op verschillende computers. Er moet een setup aangemaakt worden voor het project met diverse instellingen.
4.4.7.1 Een deploymentproject aanmaken In het project maken wordt een nieuw bijkomend project gemaakt via File > New > Project. Een volgend scherm komt tevoorschijn.
Fig. 4.35: Setup and Deployment Projects
Er is nu keuze uit 5 verschillende mogelijkheden. De 5 sjablonen kunnen veel van de instellingen in het deploymentproject configureren. •
Cab Project: configureert het deploymentproject om een of meerdere cabinetbestanden voor het project te maken (de grootte van de bestanden zelf bepalen). Deze optie is voor het geval men wil dat gebruikers de solution downloaden van het internet.
•
Merge Module Project: een algemeen deploymentproject maken dat door verschillende Visual Basic applicaties kan worden gebruikt (de sjabloon maakt een msm-bestand dat in andere solutions kan worden opgenomen).
•
Setup Project: een setupprogramma maken dat de Windows Installer voor installatie gebruikt.
125
•
Web Setup Project: een setupprogramma maken dat de Windows Installer en een webserver gebruikt voor installatie via Internet.
•
Setup Wizard: dit is een wizard die een deployementproject bouwt, gebaseerd op hoe verschillende vragen worden beantwoord over installatiemedia, voorkeuren, … De Setup Wizard kan gebruikt worden om een cabinetproject, een samenvoegingsmoduleproject, een Windows installeerproject of een Windows Installeerproject voor het web te maken.
Er wordt gekozen voor de Setup Wizard en geven een bepaalde naam aan het project. Dit zal de naam zijn die terug te vinden is bij Software na het uitvoeren van de gemaakte setup. Daarnaast wordt ook Add Solution geselecteerd, dit wil zeggen dat de Setup toevoegd wordt aan het huidige project. Hierdoor weet de Wizard direct over welk project het gaat. Er wordt dan bevestigd met OK. Daarna verschijnt het eerste scherm van de wizard. Er wordt verder gegaan naar het volgende scherm. Er wordt hier gekozen voor een Windows applicatie als projecttype.
Fig. 4.36: Setup Wizard (een projecttype kiezen)
Het derde venster wordt gebruikt om de bestanden aan te geven die opgenomen worden in de systemen die de applicatie zullen uitvoeren. De optie Primary Output is verplicht. Als deze optie geselecteerd wordt, zal het EXE bestand voor het project opgenomen worden. Met de andere opties kan informatie worden opgenomen die nuttig kan zijn in applicaties die internationaal in gebruik worden genomen (Localized resources) en programma’s die nog meer debugging (Debug symbols) of ontwikkelwerk (Content Files of Source Files ) vereisen.
126
Fig. 4.37: Setup Wizard (de projectoutputs kiezen)
Nu verschijnt het vierde venster waar bestanden gekozen worden om toe te voegen aan de installatie. Deze bestanden zijn vb. Readme.txt, tips om problemen op te lossen, een handleiding voor het programma, …
Fig. 4.38: Setup Wizard (bestanden toevoegen)
Er wordt verder naar de volgende schermen gegaan en bevestigd met “Finish”.
127
In de “Solution Explorer” staan nu alle elementen die bijgevoegd werden.
Fig. 4.39: Solution Explorer - Waste
Als men dubbelklikt op “Primary output from Afval_visualisatie” komt men in volgende omgeving terecht:
Fig. 4.40: Application Folder
Na éénmaal klikken op Application Folder staat in het midden te zien wat de applicatie allemaal bevat. Indien het project references of speciale objecten gebruikt, wat hier het geval is met MSChart, kan dit een hele lijst worden naast de Primary output. Bij de properties van Application Folder kan gespecificeerd worden waar het project geïnstalleerd moet worden. Dit staat nu standaard ingesteld op ProgramFilesFolder\Manufacturer\ProductName waarvan Manufacturer en ProductName nog aangepast worden (zie later) maar hiervoor dit kan ook gewoon een vaste locatie worden.
128
Fig. 4.41: Application Folder (installatie-eigenschappen)
In de Application Folder kan een snelkoppeling gemaakt worden die in start of op het bureaublad te zien is. Dit kan door rechts te klikken op Primary output en te kiezen voor Create Shortcut. Hierna verschijnt en snelkoppeling. De naam kan aangepast worden en bij de opties van deze snelkoppeling kan een icoon gekozen worden.
Fig. 4.42: Eigenschappen van de shortcut
Er wordt tweemaal op “Browse” geklikt en het volgende scherm komt tevoorschijn.
Fig. 4.43: Een bestand toevoegen in het project
129
Hier wordt bovenaan voor “Application Folder” en dan voor “Add File” gekozen. Na het toevoegen van het gekozen icoon wordt er op “OK” geklikt.
Fig. 4.44: Een icoon toevoegen aan de shortcut
Daarna is het icoon te zien en moet er nog een keer op “OK” gedrukt worden. Vanaf nu is het bestand van het gekozen icoon toegevoegd aan de Application folder. Nu kan de snelkoppeling die gemaakt werd geknipt en geplakt worden in ofwel de User’s Desktop map of de User’s Programs Menu. Het eerstgenoemde zal zoals de naam al doet vermoeden een snelkoppeling op het bureaublad voorzien. Het User’s Programs Menu zal een snelkoppeling voorzien in Start. Het project is in principe klaar. Optioneel kunnen nog een paar dingen ingesteld worden. •
Het project instellen voor Release
In het menu Build kan gekozen worden voor Configuration Manager. Daar moet zowel het project als de setup aangevinkt worden voor Build en ingesteld als Release. Als Build niet is aangevinkt, zal Visual Studio dat project niet compileren als de opdracht Build Solution in het menu Build geselecteerd is. Het verwijderen van het vinkje bij het Setupproject kan handig zijn als er nog veel werk is aan het project zelf. Op die manier kan tijd uitgespaard worden bij het compileren, want het is niet nodig om steeds het Setupproject mee te compileren.
130
Fig. 4.45: Configuration Manager
•
Eigenschappen van de deployment aanpassen
Bij rechts klikken op het setupproject in de solution explorer, worden hier deze eigenschappen weergegeven.
Fig. 4.46: Waste property pages
In het dialoogvenster wordt de mogelijkheid verkregen om eventueel de Output file name, dus de naam van het Setup bestand, aan te passen. Hier is ook de link naar de Configuration Manager en zal ook .NET dit project aanmaken in de Release map van het project.
131
In het gewone venster Properties kunnen nog volgende zaken gebeuren: - een auteur toevoegen - laten detecteren of er al een versie van het programma is geïnstalleerd - taal instellen van het project - ontwikkelaar instellen - de naam van het project nogmaals aanpassen - verwijderen van vorige versie aan of uitzetten - telefoon/webpagina toevoegen
Fig. 4.46: Eigenschappen van het setup-bestand Waste
De meeste van deze instellingen zijn te zien wanneer bij Software de eigenschappen van dit programma opgevraagd worden. Het project is nu klaar voor gebruik. Om een installatiebestand aan te maken wordt er op het project in de solution explorer geklikt en daarna op Build. Bij de eerste keer is de optie Install/Uninstall gedeactiveerd. Dit is logisch want er is nog geen nooit een installatiebestand aangemaakt. Afhankelijk van de grootte van het project zal het een tijdje duren vooraleer het MSI bestand aangemaakt is.
132
5 WinCC flexible 2005 5.1 Inleiding Maximum transparantie is essentieel voor de operator die in een omgeving werkt waar het proces steeds complexer wordt. De “Human Machine Interface” (HMI) zorgt voor deze transparantie. HMI of Human Machine Interface is een verzamelnaam voor componenten in een besturingsinstallatie waarmee een operator communiceert met de machine of het proces. Met deze communicatie kan het procesverloop worden beïnvloed, maar ook worden gevolgd. Het HMI-systeem is als het ware de interface tussen de operator en het proces en zorgt voor de volgende taken: •
Procesvisualisatie: Het proces wordt gevisualiseerd via verschillende schermen.
•
Operator controle van het proces: De operator controleert het proces en kan waarden aanpassen.
•
Afbeelden van alarmen: Een alarm is een signaal dat aangeeft dat een bepaalde toestand van een procesvariabele buiten zijn grenswaarden komt. Het doel van een alarm is dat de procesoperator kan zien dat er een bepaald probleem is gesignaleerd. Het alarm wordt uitgeschakeld wanneer deze daarop heeft gereageerd.
•
Proceswaarden en alarmen loggen: Proceswaarden kunnen gelogd worden. Er kunnen ook rapporten worden gemaakt die dan worden afgedrukt.
•
Proces en machine parameter management : Het HMI-systeem kan parameters opslaan in recepten. Het is mogelijk om bijvoorbeeld deze parameters in één keer naar de PLC downloaden.
WinCC flexible is een systeem voor alle mogelijke taken. Er zijn vier verschillende pakketten beschikbaar naargelang de taken die uitgevoerd moeten worden. Er kan altijd naar een hogere editie worden overgegaan met de aankoop van een “Powerpack”. Hier werd gekozen voor het pakket “WinCC flexible 2005 Advanced” aangezien alle visualisaties en procescontroles op de PC moeten gebeuren.
133
Fig. 5.1: Verschillende pakketten van WinCC flexible
5.2 Connectie met de PLC Naast de instellingen in STEP 7 en het maken van een virtuele bus moet ook nog de connectie met de PLC in WinCC flexible gemaakt worden. Er wordt een connectie toegevoegd waarbij het IPadres wordt ingevuld van de PC en van het betreffende station.
Fig. 5.2: Connecties maken in WinCC flexible
134
5.3 Transportsysteem Op het hoofdscherm komt een overzicht van het transportsysteem. Die transportlijn zorgt voor de verbinding van de tubelijnen AM2160 en AM1130 met de transiflex en met de bodemlijn K66/3. De transiflex is een soort buffer waar de zakken voor een tijdje kunnen worden opgeslagen voor ze naar de tubelijn worden gebracht. De tuben die werden gemaakt door de AM 2160 kunnen ook meteen worden doorgestuurd naar de bodemmachine. Op iedere transportband wordt het aantal pakketten geteld. Eén pakket bevat een tiental zakken. Zo kan de operator het order op de voet volgen gedurende het transport tussen de tube- en bodemlijnen.
K66/3
AM 2160
Transiflex
AM 1130 Fig. 5.3: Visualisatie van het transportsysteem
Er wordt ook een identiek scherm als het vorige gemaakt waar de fouten worden afgebeeld. Bij een elektrische fout of een functiefout knippert er een rood licht bij de betreffende transportband. Er kan nu veel vlugger worden ingegrepen als er een fout gebeurt. De operator weet direct bij welke transportband het probleem ligt.
135
5.4 Bodemcontroles Aan de 3 bodemlijn gebeuren telkens 4 controles op de afmetingen van de zak. •
Bodemdriehoek controle: De positie van de bovenste fotocel wordt vergeleken met die van de onderste bij het begin en het einde van de tube.
•
Zakbreedte controle: De fotocel kijkt dwars op de tube om een eventueel verschoven dubbele tube er uit te werpen.
•
Controle meting FS: Met deze controle wordt de boven- en onderkant van de gespreide tube apart gemeten.
•
Afgewerkte zak eindcontrole: Met deze controle wordt de boven- en onderkant van de afgewerkte zak apart gemeten.
136
5.5 Lijn AM2160 en lijn AM1130 Er wordt een visualisatie gemaakt van de tubelijnen AM2160 en AM1130. Er werd nog geen verbinding gemaakt tussen de PLC en de console. In de toekomst kunnen verschillende gegevens worden binnengelezen nl. de snelheid, het aantal geproduceerde tubes, het ordernummer, de status en het type van iedere rol.
Fig. 5.4: Visualisatie van de tubelijn AM2160
5.6 Transiflex Er wordt tevens een scherm gemaakt waarbij het aantal geproduceerde stapels tubes worden bijgehouden die de transiflex ingaan. Dit wordt bewerkstelligd via een script die ook in de bijlagen staat. Per ordernummer is het aantal stapels te zien die momenteel in de transiflex zitten.
Fig. 5.5: Visualisatie van de transiflex
137
6 Kosten Prijs (€) Hardware en cablage
± 3000
Plaatsing en montage
± 2500
Server
± 1500
Software (WinCC flexible, Visual Studio.NET, STEP 7)
± 7500
Totaal
± 14500
138
7 Besluit Op de Server die op een centraal punt van de werkvloer staat, kan het transportsysteem op de voet worden gevolgd door de ploegleiders. Wanneer er een fout in dit systeem optreedt, wordt dit alarm gevisualiseerd en kan er meteen worden ingegrepen op de juiste plaats. Er werden reeds diverse visualisaties gemaakt van het productieproces zoals de lijmproductie, de bodemcontroles, de tubelijn en de transiflex. In de toekomst kan dit project in WinCC flexible 2005 nog worden uitgebreid. De geproduceerde massa afval wordt gewogen op een centraal punt in de fabriek. Deze massa is afkomstig van de verschillende machines op de tube- en bodemlijnen. De gegevens worden in een Access-database opgeslagen. Die waarden worden in tabellen en grafieken geplaatst via een applicatie in Visual Studio.NET. Dit project wordt dan verdeeld over de verschillende computers voor de ploegleiders en andere. Er is opgemerkt dat sommige machines tegen de verwachtingen in opvallend veel afval produceren. Het valt ook op dat de geregistreerde afval slechts de helft bedraagt van de totale massa afval, die in containers wordt opgehaald en 6% van de totale productie bedraagt. Blijkbaar wordt er op andere plaatsen van de productie ook redelijk wat afval gemaakt. Enkele belangrijke aandachtspunten zijn bijvoorbeeld de drukkerij, de verpakking en het opensnijden van de rollen papier. Om een globaal beeld te krijgen van de massa afval zal ook op die plaatsen in de toekomst het afval gewogen moeten worden. Een volgende interne stap is dan een Six Sigma- project waar die gegevens gebruikt kunnen worden. Six Sigma is een methode waar de gegevens statistisch worden geanalyseerd, oorzaken worden gezocht en verbeteringsprocessen worden opgestart. Dit project valt buiten de doelstellingen van het eindwerk maar zal in de toekomst wel worden toegepast. Er wordt gestreefd naar een afname van 2% afval wat neer komt op een winst van 250.000 euro per jaar. Bij de tubelijn hoeft de machinebediener bij een nieuw order enkel het ordernummer in te scannen via een barcodescanner. De bijhorende zakgegevens (zakbreedte, aflslaglengte, artikelnummer) worden via WinCC flexible uit een csv-bestand gehaald en terug naar de PLC gestuurd. De data verschijnt op het micro-paneel en de machinebediener hoeft enkel nog te bevestigen. Dit gaat gepaard met tijdswinst en typfouten kunnen nu niet meer voorkomen. Deze eindwerkopdracht was een leerrijke ervaring. Naast het lessenpakket aan de hogeschool is het ook eens interessant om effectief op de werkvloer te staan en in contact te komen met een productieproces. Dit heeft mijn kennis van industriële automatisering heel wat verrijkt.
139
Literatuurlijst Capoen, Henk, Vandenhoeke, Dieter, STEP 7, cursus gedoceerd in kader van het vak Geïntegreerde automatisering, Hogeschool West-Vlaanderen, departement Provinciale Industriële hogeschool, Kortrijk Vandenhoeke, Dieter, Visual Basic 6.0, cursus gedoceerd in kader van het vak Geïntegreerde automatisering, Hogeschool West-Vlaanderen, departement Provinciale Industriële hogeschool, Kortrijk
I