• No results found

Het programmeren van de Stand-alone Zipper

N/A
N/A
Protected

Academic year: 2021

Share "Het programmeren van de Stand-alone Zipper"

Copied!
46
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Eindverslag

Het programmeren van de Stand-alone Zipper

5-6-2012

PMB-UVA International

Student: Frank Valkenburg

Studentnummer: 2031790

PMB-UVA International

Avans Hogeschool Breda

(2)

2

I. Voorwoord

Voor u ligt mijn afstudeerverslag van mijn afstudeerperiode bij PMB-UVA International. Deze

afstudeerperiode is een afsluiting van de opleiding Mechatronica op het Avans Hogeschool te Breda. Tijdens het afgelopen halfjaar heb ik veel ervaring opgedaan in het PLC programmeren en het testen van machines.

In de eerste weken van de periode heb ik mijn machine grondig moeten bestuderen om een goed functioneel ontwerp te realiseren. Vervolgens kon ik beginnen met hetgeen waar het project om draait: Het programmeren van de Stand-alone Zipper.

Ik ben PMB-UVA dankbaar dat ze mij deze kans geboden hebben. Het is een fantastisch project, van begin tot eind. Verder wil ik mijn begeleider bedanken, Wouter Schrouff, voor zijn algemene begeleiding tijdens het project. Ik wil Luke Beelen bedanken voor de technische informatie en de kennis die hij mij heeft bijgebracht. Als laatste wil ik Marius Ponten bedanken voor het aanbieden van de afstudeeropdracht.

Eindhoven, Mei 2012

(3)

3

II. Samenvatting

De Stand-alone Zipper is een machine die zips (luchtdichte sluitingen) in plastic verpakkingen sealt. De machine kan tussen een productielijn geplaatst worden en zal de zips erin sealen zonder enige communicatie met een verpakkingsmachine die de folie erdoorheen trekt, vandaar de term Stand-alone.

Het is een prototype dat mogelijk nog op vele fronten verbeterd zal kunnen worden. In de testfase zal pas duidelijk worden of er aanpassingen benodigd zijn. PMB-UVA heeft de machine niet zelf geconstrueerd maar dit is uitbesteed aan MTA. Elke benodigde aanpassing moet dus in overleg met MTA gebeuren.

In de eerste fase van het project wordt een functioneel ontwerp gemaakt. Dit geeft een duidelijk beeld van hoe de software engineer zijn software gaat schrijven. Voor mensen die later wat te maken gaan krijgen met dit project is het zinvol om het functioneel ontwerp te lezen. Het functioneel ontwerp dient goed gekeurd te worden door de praktijkbegeleider.

Na goedkeuring kan begonnen worden met het schrijven van de software. Dit moet volgens de richtlijnen van PMB-UVA, zodat elke software engineer binnen PMB-UVA de software begrijpt en mogelijk later kan aanpassen. De flowcharts die in het functioneel ontwerp staan, moeten hierbij gebruikt worden. Wanneer er in de software toch op een andere manier iets uitgevoerd wordt moeten de flowcharts aangepast worden zodat beide overeenkomen.

De klant(Nestle, Argentië), die de Stand-alone Zipper waarschijnlijk gaat kopen, wil vooraf komen kijken of het bedachte principe wel gaat werken. Voordat de software helemaal af is moet er aangetoond worden dat de machine kan sealen.

De testfase is begonnen met nog niet complete software maar dat verder wel in de testopstelling doorontwikkeld kan worden. In deze fase is ook begonnen met het maken van de HMI. Dit maakt het testen gemakkelijker en geeft de klant een betere indruk tijdens het demonstreren.

Tijdens het testen zijn verschillende problemen naar voren gekomen, softwarematige fouten maar ook mechanische constructie fouten. Deze bevindingen moeten doorgespeeld worden naar MTA en in overleg met de projectleider opgelost worden.

Er hebben veel aanpassingen plaatsgevonden, waarbij de meeste hiervan enige tijd hebben gekost doordat de communicatie tussen beide bedrijven niet vlekkeloos verloopt. Tevens is de projectleider gepromoveerd tot directeur. Hij heeft hierdoor weinig tijd terwijl hij wel de beslissing moet nemen. Dit alles heeft als gevolg dat het project flink wat tijdvertraging opgeleverd heeft.

Al met al is het project goed verlopen. Wat er in de planning stond is alleen niet waar kunnen maken, aangezien het project nog niet af is. Met software schrijven is het zo dat het nooit helemaal af is, het kan altijd beter of sneller.

(4)

4

Inhoudsopgave

I. Voorwoord ... 2 II. Samenvatting ... 3 1. Inleiding ... 5 2. Doelstelling ... 6 3. Functioneel ontwerp ... 7 3.1 Werking modules ... 7 3.2 Machine cylcus ... 14 4. Software schrijven ... 22 4.1 Richtlijnen PMB-UVA ... 22 4.2 Mode ... 22

4.3 Zipper transport short stroke ... 23

4.3.1 Oud principe Zipper transport short stroke ... 23

4.3.2 Testen Zipper transport short stroke ... 23

4.3.3. Nieuw principe Zipper transport short stroke ... 24

4. 4 Tasks, Trends en I/O Configuration ... 25

4.5 Servomotor ... 27

4.5.1. CASE met Watchdog en Productiontime ... 27

4.6 Human Machine Interface ... 30

5. Testen ... 31

5.1 Software ... 31

5.2 Verbeteren van het prototype ... 31

5.3 Aanpassingen functioneel ontwerp ... 32

6. Conclusie ... 33

7. Verklarende woordenlijst ... 34

8. Bronnen ... 34

(5)

5

1. Inleiding

De Stand-alone Zipper is een machine die de een zip op de juiste plaats op de folie sealt. De zip kan in deze unit voorzien worden van een slider. Later op de verpakkingsmachine komt de zip dan op de juiste plaats in een zakje te zitten. Dit is een gemakkelijke (luchtdichte) sluiting die je vaker in plastic verpakkingen ziet.

Het begrip Stand-alone staat voor een machine die afzonderlijk werkt van andere

verpakkingsmachines en dus altijd tussen of vóór een andere productlijn geplaatst kan worden. De machine is inmiddels besteld maar de levertijd is zo dat er nog tijd genoeg is om hieraan komende maanden te ontwikkelen, daarom is dit een ideale afstudeeropdracht omdat er geen grote tijdsdruk achter zit.

De Stand-alone Zipper is bijna volledig ontwikkelt en hij zit vol met sensoren die gelezen en actuatoren die aangestuurd moeten worden. Het enige wat nog rest is de software zodat deze machine ook daadwerkelijk functioneert.

Voordat er met programmeren kan worden begonnen moet een Functioneel ontwerp geschreven worden. PMB-UVA heeft dit graag als naslagwerk en voor mij is dit een goede manier om de machine te benaderen en de werking ervan te begrijpen. Het uiteindelijke product dat opgeleverd wordt is de geschreven software voor de Stand-alone Zipper, dit is de PLC software en de visualisatie van de Human Machine Interface. Na dit gerealiseerd te hebben komt een werkende Stand-alone Zipper naar voren. De Stand-alone Zipper is besteld maar er zit geen tijdsdruk achter. De machine is al volledig opgebouwd, nu rest alleen de software nog. De machine wordt bestuurd door een Allen-Bradley PLC en zal volledig geprogrammeerd moeten worden in structured text.

De machine die uiteindelijk de zippers op de verpakking zal gaan sealen, is gestald op de testafdeling van PMB-UVA. De opdrachtgever is PMB-UVA en de begeleider is Wouter Schrouff, tevens zal hij het

(6)

6

2. Doelstelling

Hoofddoel: Het programmeren van de Stand-alone Zipper

De complete machine moet aangestuurd worden. De machine is min of meer opgebouwd in modules en elke module zal met de andere goed moeten communiceren. In de testfase zal blijken of dit alles goed functioneert. Niet al het testwerk zal in de testfase plaatsvinden, een tussentijdse test zal ook regelmatig plaats vinden wanneer dit nodig is. Het doel is niet bereikt wanneer de machine volledig werkt, want de code die ontwikkelt is zal ook aan de normen van PMB-UVA moeten voldoen. Immers de collega software engineers zullen de code ook moeten begrijpen, indien ze later nog ooit iets aan moeten passen.

Tijdens het project zal er regelmatig overlegd worden met de praktijkbegeleider. Tevens zal hij feedback geven op de werkzaamheden, met het oog op de werkzaamheden die komen gaan. Bij opkomende, onverwachte problemen zal de praktijkbegeleider benaderd worden en wordt samen met hem naar een oplossing gezocht, indien dit niet zelfstandig opgelost kan worden.

Het doel van dit project heeft een grote kans op slagen. Dit wil niet zeggen dat doel makkelijk te behalen is. De uitvoerende van dit project heeft geen ervaring met het software pakket en de manier waarop het software geschreven wordt. De eerste fase van dit project is dus een leerproces. Dit is nodig om het projectdoel te kunnen behalen.

Het project begint 30 januari 2012 en zal eindigen vóór 22 juni 2012. Wanneer een werkende machine inclusief een HMI gerealiseerd is, en de code gemaakt is volgens de normen van PMB-UVA, is het projectdoel bereikt. Een verwachte einddatum is moeilijk in te schatten omdat er knelpunten kunnen ontstaan bij het schrijven van de code en/of het testen van de machine.

(7)

7

3. Functioneel ontwerp

3.1 Werking modules

3.1.1. Zipper transport Short Stroke

De Zipper transport short stroke unit zorgt voor het transport van de zipper. Op het juiste moment zal de zipper 20 mm(slaglengte van cilinder) vooruit worden geduwd zodat de Zipper Transport unit de zipper vast kan klemmen en kan transporteren naar de seal unit.

Deze module bestaat uit twee actuatoren, namelijk twee kleine pneumatische cilinders. Eén zorgt voor het klemmen van de zipper, de clamping cilinder(enkelwerkend), en de andere neemt het schuiven van de zipper, de zipper transport, voor zijn rekening. Een éénrichtingwerkend lager leidt de zipper die van de rol af komt. Dit lager wordt door middel van een veer naar onder getrokken om voldoende druk uit te oefenen op de Zipper. Het lager zorgt er dus voor dat de zipper nooit terug kan schuiven wanneer de clamping cilinder tijdelijk de zipper loslaat.

Figuur 3-1, Begin situatie Zipper transport short stroke

(8)

8

3.1.2. Zipper Transport

Het module zipper transport zorgt voor het transport van de op maat geknipte zipper naar de seal unit.

De zipper transport unit bestaat uit drie actuatoren, namelijk de Servomotor die via de tandriem de slede van de lineaire geleiding aanstuurt, de pneumatisch aangestuurde klem(Clamping cilinder zipper transport) en het mes dat de zipper doorknipt(Cutting Knife). Een Homing sensor en twee eindstandmelders geven extra terugkoppeling aan de Servodrive.

Voordat het transport van de zipper kan plaatsvinden, moet de zipper verplaatst worden door de Zipper transport short stroke naar de juiste positie. Deze handeling zal in de cyclus Zipper transport short stroke al uitgevoerd zijn.

Figuur 3-3, Start situatie Zipper transport

Vervolgens zal de gripper de zipper vastknijpen. De door de operator ingestelde variabele "Zip lengte" bepaald de volgende stap. Deze stap is het doortrekken van de lange zip, tot hij zijn ZipperLength bereikt heeft, en doorgeknipt kan worden. Tijdens dit transport wordt het Vacuüm gestart, dit gebeurt wanneer de Zipper op de helft van zijn Zipperlength positie is.

(9)

9

De zipper wordt hierna verder getransporteerd naar de vaste positie waar hij gesealed gaat worden.

Figuur 3-5, tussen situatie Zipper transport

Wanneer de zipper door de clamping cilinder wordt vrijgegeven, blijft de zipper vastgezogen aan de Sealbalk. Om de cyclus af te sluiten wordt de gripper door de Servomotor teruggebracht naar beginpositie nadat eerst de clamping cilinder omhoog is gebracht.

(10)

10

3.1.3 Seal unit

Deze module zal de door vacuüm vastgezogen zipper vast sealen in de verpakking.

Op het moment dat de zipper op de Seal position gesitueerd is, zal de vacuümbalk zijn werk doen en de zipper vast blijven zuigen, zoals beschreven in 3.1.2.

Figuur 3-7, Start situatie Seal unit

De sealbalk wordt omhoog gebracht door een pneumatische cilinder, de Seal unit, die al verhit is. Het Vacuüm zal stoppen wanneer de sealbalk omhoog gebracht is. Aan de hand van de variabele "Seal tijd" wordt de sealtijd ingesteld door de operator. In deze sealbalk zit ook een PT100 (analoge temperatuurmeter) die constant de temperatuur meet. Met de variabele "Seal Temp" kan ingesteld worden op welke temperatuur het sealen moet gebeuren. De PID temperatuur regeling in de software zorgt ervoor dat de seal unit rond de ingestelde temperatuur blijft.

Figuur 3-8, eind situatie Seal unit

Wanneer het sealen gebeurd is, zal de sealbalk zakken en is de cyclus rond waarop een andere cyclus opnieuw zal starten.

(11)

11

3.1.4 Positioning applicator

De module Positioning applicator zorgt ervoor dat de positie van de zipper op de verpakkingsfolie juist is. De afstand tussen de rechterkant, waar de folie doorloop geregistreerd wordt, en de rechterzijde van de folie is de "Zip positie".

De zip positie wordt bepaald door de operator. Dit zijn twee sensoren die handmatig versteld kunnen worden. Deze sensoren geven aan of de folie er juist doorheen loopt. Vervolgens zorgt de software ervoor dat de Unit zo verplaatst wordt dat de folie juist tussen de sensoren loopt. Een motor stuurt een schroefspindel aan die zorgt voor de verplaatsing van de unit.

Op de binnenkant van het frame zitten twee eindschakelaars die een signaal afgeven wanneer de unit zich op de meest rechtse of linkse positie bevindt, zodat er niets geforceerd kan worden.

(12)

12

3.1.5 Adjusting Film Buffer

De zipper moet altijd op dezelfde positie van de verpakking gesealed worden. De Zip positie doorvoer is een variabele die de operator kan instellen. Op elke verpakking zit eenspot op dezelfde plaats. Wanneer deze geregistreerd wordt door de Photo eye telt een encoder de afstand tot het moment dat de folie stil staat. Deze afstand moet gelijk zijn aan de ingestelde waarde Zip positie doorvoer. Wanneer dit niet het geval is, moet die afstand gecompenseerd worden. Dit wordt gedaan door een verstellus die aangestuurd wordt door een motor. Afhankelijk van de fout van de zip positie zal de motor de verstellus naar boven of beneden moeten bewegen.

Figuur 3-10, schematische tekening van Adjusting film buffer 3.1.6 Missing zip detectie

Achter de verstellus die de Zip positie doorvoer regelt, is een sensor geplaatst die de aanwezigheid van de zipper zal controleren. De 'Zip present sensor' is te zien in de schematische tekening van Adjusting film buffer. Wanneer er geen zipper aanwezig is wordt er een error/alarm signaal verstuurd en zal de machine stoppen.

(13)

13

3.1.8 Zipper prefeed

De zipperfolie die later in de machine geknipt en gesealed gaat worden zit op een rol die

aangedreven wordt door een frequentie geregelde motor. Omdat de snelheid van de zipper vaak varieert en omdat de spanning in de zipper film constant moet blijven, zit er een buffer tussen de rol en de Zipper Short Stroke. In deze buffer ligt een rol die omhoog en omlaag kan verplaatsen, en zo verschillende sensoren activeert. Op deze manier regelt de motor de ziptoevoer, en kan deze buffer de verschillende snelheden makkelijk overbruggen en staat de zipper altijd op spanning.

(14)

14

3.2 Machine cylcus

De machinecyclus is totaal afhankelijk van de Film transport(zie 3.2.10). Zolang deze loopt kan er geen zipper geseald worden. Op het moment dat deze stil staat moet de zipper opde folie worden geseald.Tijdens de folietransport kan de volgende zip wel alvast juist gepositioneerd worden. 3.2.1 Initialize

De status Initialize staat los van het daadwerkelijke produceren en deze taak wordt uitgevoerd om de machine te initialiseren.

Wanneer er geproduceerd moet gaan worden, kan de machine in elke toestand staan op het moment dat hij uitgezet wordt. Om te zorgen dat hij klaar staat om te produceren moet er met één druk op de knop de machine geïnitialiseerd kunnen worden indien deze nog niet in deze toestand staat.

In deze taak wordt de module Zipper transport short stroke uitgevoerd. Tegelijk wordt de Servomotor 'gehomed', dit wordt verder toegelicht in 3.2.4 Zipper transport. Wanneer dit gebeurd is, wordt de Zipper transport naar zijn startpositie gebracht. Dat is op de positie waar de gripper de zipper vastgrijpt.

Nu staat de machine klaar om te beginnen met produceren en wacht hij op het startsignaal. Indien de Initialize taak doorlopen is zal een ready-signaal worden vrijgegeven zodat de Producing taak, na het krijgen van een startcommando, kan starten met produceren.

In Bijlage 9.3 is de flowchart van Initialize te vinden. 3.2.2 Producing

De machine kan pas in de Producing status komen wanneer deze eerst geïnitialiseerd is. Wanneer de machine eerst geïnitialiseerd is zal de Zipper Transport Short Stroke niet doorlopen worden. Dit is namelijk al gebeurd tijdens het initialiseren.

De Zipper Transport maakt de zipper op lengte en schuift naar Seal Positie. Wanneer de zipper op zijn Seal positie is én Film Transport stil staat, moet de Seal unit beginnen met sealen en moet de Zipper Transport Short Stroke alvast doorlopen worden om tijdwinst te maken. Wanneer de zipper gesealed is, staat de volgende zipper al klaar om getransporteerd te worden naar de Seal unit.

(15)

15

3.2.3 Zipper transport short stroke

In de Initialize taak wordt de Zipper transport short stroke voor het eerst uitgevoerd. Daarna wordt deze taak meerdere keren aangeroepen wanneer de status van de machine Producing is.

Het volgende gebeurd wanneer de taak Zipper transport short stroke aangeroepen wordt:

De zipper wordt geklemd door de Clamping cilinder, waarna de zipper naar voren geschoven wordt door de Transport cilinder. Vervolgens laat de Clamping cilinder de zipper los gevolgd door het inschuiven van de Transport cilinder.

De slag van deze Transport cilinder is 20mm en is van belang bij de ingestelde waarde van de ZipperLength. Dit wordt verder toegelicht in 3.2.4 Zipper transport.

De tijd dat deze cilinders aangestuurd zijn, is een instelling. Dit is nodig omdat de ene cilinder sneller in zijn eindpositie zal zijn dan een andere. Deze tijd kan bepaald worden door deze cyclus in de praktijk te testen met verschillende wachttijden. Deze tijden dienen met de HMI kunnen worden ingesteld.

In Bijlage 9.5 is de flowchart van de Zipper transport short stroke te vinden.

Zipper transport

Zipper Transport short stroke

Clamping cilinder

Zipper transport short stroke

Zipper ready for transport

(16)

16

3.2.4 Zipper transport

Wanneer vanuit de Zipper transport short stroke het signaal,'Zipper ready for transport', komt moet deze taak gestart worden.

De Clamping cilinder zipper transport zal de zipper vastgrijpen. Wanneer verzekerd is dat deze clamping cilinder zijn eindpositie heeft bereikt, moet het transport van de zipper beginnen. De eindpositie van deze beweging wordt bepaald door de ingestelde variabele ZipperLength min(-) de Zipper transport short stroke. De zipper heeft van deze module namelijk al 20 mm lengte

meegekregen

De Knife start time is een instelling dat negatief of positief kan worden ingesteld. Deze instelling wordt ingevoerd op de HMI en kan het mes met een vertraging laten opkomen, of juist laten activeren voordat de Zipper transport zijn Zipperlength heeft bereikt. Om zeker te zijn dat de zipper doorgesneden is door de Cutting knife, wordt door middel van een ingestelde tijd, de Cutting knife uitgestuurd.

Het Vacuüm wordt gestart wanneer de Zipper transport op de helft is van zijn ingestelde waarde ZipperLength. Door middel van de encoder is dit gemakkelijk te realiseren.

De volgende stap is verplaatsen naar de Seal position. De Servomotor, die de slede van de lineaire geleiding verplaatst, stopt op het moment dat de zipper zijn Seal position heeft bereikt. Hierna mag de grijper, de Clamping cilinder, de zipper loslaten. Door het aanwezige vacuüm blijft de zipper vastgezogen aan de Sealbalk.

De gebruikte Servomotor heeft niet alleen een eigen terugkoppeling naar de PLC maar er zittenook drie reedcontacten gemonteerd die de positie van de Clamping cilinder zipper transport registreren. Twee van deze sensoren zitten op de meeste uiterste posities links en rechts van de geleiding. Deze twee sensoren zijn dus eindschakelaars en wanneer deze sensoren de slede detecteren, wordt direct de Servomotor uitgeschakeld om mechanische schade te voorkomen. Één sensor die in het midden van de lineaire geleiding zit, is de Homing sensor. Tijdens het Initialiseren zal de Servomotor zich gaan 'homen' deze sensor. De positie van de sensor is belangrijk en komt nauwkeurig: op het moment dat de Servomotor 'gehomed' is, krijgt hij een vooraf ingestelde waarde. Dit is het verschil van Grip Zipper Position tot de Homing sensor in mm.

In Bijlage 9.6 is de flowchart van de Zipper transport te zien.

Cutting knife

Zipper transport

Clamping cilinder zipper transport

Knife start time = -50ms Knife start time

V+

V-Zipper length

Vacuüm

Seal position

Zipper ready for transport

(17)

17

3.2.5 Seal unit

De zogenoemde Seal unit wordt omhoog bewogen door een pneumatische cilinder. De enige voorwaarde is dat de Clamping cilinder Zipper transport terug gaat naar beginpositie zodat de Seal unit gestart kan worden. Wanneer het sealen begonnen is, mag het vacuüm stoppen omdat de zipper dan niet meer vast gezogen hoeft te worden. Dit gebeurd met een kleine vertraging omdat de Seal unit tijd nodig heeft om omhoog te komen. De tijd dat geseald wordt, hangt af van de ingestelde variabele Sealtime. Deze variabele moet door de operator kunnen worden ingesteld op het HMI. Wanneer het sealen gebeurd is, wordt de Seal unit omlaag bewogen en wordt het signaal Zipper Sealed vrijgegeven.

Het is belangrijk dat de temperatuur van de Seal unit goed geregeld is. De temperatuur wordt gemeten met een PT100, deze meet 100Ω bij 0˚C. De gehele regelkring wordt geregeld met een PID regelaar. Deze temperatuur is ook in te stellen door de operator, Seal temperature wordt deze genoemd. In Bijlage 9.7 is de flowchart van de Seal unit te vinden.

Figuur 3-13, weg-tijd diagram van de Seal unit Hieronder is de regelkring te zien van detemperatuur regeling van de sealbalk:

(18)

18

3.2.6 Positioning applicator

Er zitten twee sensoren die de folie moeten "zien". Zogenaamde 'Fiber-optic Reflex sensors'. Deze sensoren zitten naast elkaar op een beugel en de afstand tussen beide is instelbaar voor de operator. Deze sensoren worden eenmalig, ten opzichte van de applicator, versteld zodat de zip positie vanaf dat moment altijd gelijk is totdat hij opnieuw versteld wordt.

Stel, de sensor zit aan de rechterkant van de folie en de sensoren zijn allebei niet hoog, dan moet de gehele applicator naar rechts geschoven worden. Als ze allebei hoog zijn dan moet de applicator naar links verschoven worden. Wanneer de meest linkse sensor hoog is en de rechtse laag, staat de applicator op de goede positie en houdt hij deze positie aan.

Het kan gebeuren dat de folie constant van links naar rechts schuift tussen de unit. Het is niet de bedoeling dat de applicator blijft corrigeren, in het ergste geval kan de heel de unit gaan resoneren. Om dit te voorkomen wordt er een gemiddelde genomen per 5 zakken die erdoor komen. De variabele Quality edge houdt de 'kwaliteit' van de positie bij. Zolang deze +1 blijft hoeft de unit niet gecorrigeerd te worden. In Bijlage 9.8 is de flowchart van de Positioning applicator te vinden en te zien hoe hij bijgeregeld wordt.

Figuur 3-15, weg-tijd diagram van Positioning applicator Onderstaand schematisch plaatje ter verduidelijking:

(19)

19

3.2.7 Adjusting Film buffer

Op alle folie die door de Stand-alone zipper loopt zitten zwarte spots.

Op het moment dat de Photo eye een spot detecteert, is er één verpakking voorbij gekomen. Op dat moment wordt de waarde van de encoder vastgelegd. Wanneer de folietransport stopt om te gaan sealen, wordt de waarde van de encoder opnieuw vastgelegd. Aan dit verschil van deze actuele waarde en de vorige waarde is een afstand te koppelen. Deze afstand moet dus gelijk zijn aan de ingestelde zip-positiedoorvoer. De afstand is belangrijk voor het verpakkingsproces wat na de Stand-alone zipper komt. Om deze afstand juist te krijgen moet de automatische verstellus omhoog of omlaag geplaatst worden. Een motor met schroefspindel zal deze beweging realiseren.

Het signaal Motor V+ en Motor V- wordt uitgestuurd wanneer dit nodig is. In Bijlage 9.9 is de flowchart van de Adjusting Film buffer te vinden. Hieronder een schematische tekening van de Adjusting Film buffer:

(20)

20

3.2.9 Zipper Prefeed

De bufferrol waar de zipper vanaf komt wordt aangedreven met een frequentiegeregelde motor. Aan de hand van de vraag naar meer of minder zipper in de buffer zal deze motor langzamer of sneller moetengaan draaien. Op deze buffer zitten vier sensoren. Elk van deze sensoren worden hoog wanneer de bufferrol ervoor staat. Deze sensoren zitten per 2 bij elkaar, laag en hoog tussen de geleiding. Maar ze zitten niet op de uiterste uiteinde van de geleiding. Het kan dat de bufferrol onder of boven de sensoren zit en er dus geen sensoren hoog zijn.

Wanneer de bufferrol op zijn laagste punt ligt, kan het zo zijn dat de zipper ergens geknapt is. Hangt de rol boven de hoogste sensoren, dan kan het zijn dat de zipperrol leeg is en zal de zipper eerst op spanning komen te staan voordat hij los schiet en naar de laagste positie valt.

De meest gunstige positie is tussen de sensoren in. Zo heeft de buffer de meeste speling en kan de motor rustig de zipper toevoeren. Uiteindelijk zal de bufferrol altijd een keer een lage sensor

activeren en moet de zipperrol een bepaalde tijd langzamer lopen waarna hij zijn oude snelheid weer terugpakt. Of hij loopt langzamer totdat hij een hoge sensor activeert en weer terug zakt naar zijn oude snelheid.

Deze posities krijgen een cijfer van 0 tot 8. 0 is de laagste positie, 8 de hoogste(zie figuur 3-18). Aan elke positie wordt een frequentie gekoppeld dat de motor moet gaan draaien.In positie 4 zal de motor steeds harder moeten gaan lopen als hij langer in deze positie staat. Uiteindelijk zal hij weer een keer in positie 3 komen en begint het verhaal opnieuw.

Hieronder is de weg- tijd diagram van de sensoren en een schematisch tekening van de buffer te zien.

In Bijlage 9.10 is de flowchart van de Zipper Prefeed te vinden.

Sensor 1 Sensor 2 Sensor 3 Sensor 4 POS 0 1 2 3 4 4 5 6 7 8 Buffer

(21)

21

3.2.10 Film transport

De Film transport of , op zijn nederlands, folietransport is een belangrijk onderdeel binnen de machine. De term 'Stand-alone' heeft hier veel mee te maken. Stilstaande folie is de enige voorwaarde dat de Stand-alone zipper mag gaan sealen. Of de folie loopt of stilstaat wordt

gedetecteerd met de encoder die gemonteerd is tegen een rol aan waar de folie tussendoor loopt. Door op verschillende momenten pulsen, die van de encoder af komen, te registreren, is te bepalen of de folie loopt of stilstaat. Als het aantal pulsen vergeleken wordt met het aantal pulsen dat op een later tijdstip geregistreerd wordt (ongeveer 5 of 10 ms), en er is een groot verschil tussen beide, dan loopt de folietransport. Indien het verschil minimaal is, en het valt binnen de ingestelde tolerantie, staat de folie stil. Er moet met een tolerantie gewerkt worden omdat een encoder heel precies is en het starten en stoppen van de folie niet. Folie kan namelijk wat uitrekken bij hoge acceleraties en deceleraties.

Na een x aantal omwentelingen springen de counters van 2147483648 naar -2147483648. Om verassingen te voorkomen wordt de counter tussentijds gereset naar 0.

(22)

22

4. Software schrijven

4.1 Richtlijnen PMB-UVA

Het is belangrijk dat de software geschreven wordt op de manier zoals ze dit bij PMB-UVA doen. Zo kan elke software engineer binnen het bedrijf de code begrijpen en eventueel aanpassen.

Er is software geschreven door PMB-UVA die vrijwel in alle machines gebruikt wordt, dit is de module 'Mode'. Wanneer deze code gebruikt wordt in een machine mag deze niet aangepast worden, zodat deze routine altijd op één en dezelfde manier blijft werken en dus ook begrijpbaar blijft voor iedereen.

4.2 Mode

Elke machine, door PMB-UVA gemaakt, heeft verschillende statussen. Enkele statussen zijn Idle, Initialize, Standby, Production, Service en Error. Deze statussen worden in de meeste software van verpakkingmachines gebruikt.

In de Stand-alone zipper zal de status 'Standby' minder nuttig zijn omdat de zipper maar op één signaal wacht en dat is de start van de folietransport. 'Standby' en 'Production' hebben in de zipper een soortgelijke functie. Wanneer vanuit status 'Idle' het startsignaal wordt gegeven zal hij wel door de statussen 'Initialize' en 'Standby' lopen maar gebeurt er in de status 'Standby' niks behalve dat hij meteen doorspringt naar 'Production'. In 'Production' wacht hij op het startsignaal zodat hij kan beginnen met één cyclus.

Wanneer er een stopsignaal wordt gegeven vanuit de HMI, krijgt hij het commando 'Idle'. Dit betekent dat hij via de bekende weg terug moet naar 'Idle'. Om de productie veilig te verlaten loopt hij eerst door de cyclus 'Leave Production'(niet weergeven in de status structure). Hierin staat code die ervoor zorgt dat hij zijn cyclus netjes afmaakt en uiteindelijk in 'Standby' modus komt om vervolgens in de status 'Idle' terecht te komen.

In de flowchart van Bijlage 9.1 is de status structure weergegeven dat door PMB-UVA wordt gebruikt. In de flowchart van Bijlage 9.2 is te zien hoe deze statussen doorlopen worden.

(23)

23

4.3 Zipper transport short stroke

Aan de hand van de short stroke transport, is te zien hoe de code tot stand is gekomen. Tijdens de testfase is er veel code aangepast .Dit wil zeggen dat de flowcharts in het functioneel ontwerp ook aangepast moeten worden wil het

overeenkomen.

4.3.1 Oud principe Zipper transport short stroke

Hiernaast is te zien hoe de eerste flowchart eruit zag. De Short stroke transport module omvat 2 cilinders die in totaal 4 bewegingen realiseren. In de flowchart is te zien dat hij 4 acties uitvoert (rechthoekige symbolen); elke actie is één cilinderbeweging. Daarbij hoort een timer die een constante waarde als instelling gebruikt. Dit is de tijd die moet aflopen voordat de volgende actie mag beginnen. Zo heeft de aangestuurde cilinder zijn eindstand zeker behaald.

Wanneer de variabele Zipper transport short stroke hoog is, loopt hij dus de hele cyclus af en wacht hij weer op hetzelfde signaal.

De softwarecode is op deze manier

geschreven. Deze structuur zoals hiernaast is heel goed in een CASE te zetten. Elke

beslissing en actie word dan in één

casenummer gezet. Een grotere versie van deze flowchart is in de bijlage terug te vinden.

4.3.2 Testen Zipper transport short stroke

In de testfase kwam het voor, dat door de terugbeweging van de Seal-unit cilinder een lichte dreun plaatsvond. Door deze dreun kon de Zip lichtjes terugschieten de zipper prefeed in. Dit verschijnsel kan voorkomen worden door de clamping cilinder van de Short Stroke Transport vroegtijdig te laten klemmen. Softwarematig is dit relatief snel op te lossen door per casenummer een extra voorwaarde te gebruiken die vanuit een andere routine geactiveerd wordt.

(24)

24

4.3.3. Nieuw principe Zipper transport short stroke In elke beslissing staat nou een

extra voorwaarde, deze wordt geactiveerd vanuit een andere routine. Deze variabelen moet globaal zijn zodat andere routines deze kunnen schrijven en/of lezen. Nog een extra variabele is te zien, namelijk 'First Cyclus'. Deze variabele wordt hoog gemaakt bij de eerste cyclus die de PLC maakt. Op deze manier wordt alvast de zip klaargezet voor transport terwijl de productie nog niet is gestart.

Figuur 4-2, flowchart Zipper transport short stroke, nieuw principe

(25)

25

4. 4 Tasks, Trends en I/O Configuration

Hiernaast zijn alle taken te zien die de Stand-alone Zipper aansturen. Er zijn snelle taken, zoals hiernaast te zien zijn dat de FastTasks 5ms. En er zijn minder snelle taken zoals de MainTemperatureControl PID 2000ms.

In de snelle taken zitten alle actuatoren verwerkt die meewerken met het behalen van de cyclustijd van 1 zak/sec sealen. In de andere taken zitten functies die minder vaak doorlopen hoeven worden, puur omdat deze niet snel hoeven zijn.

Zoals bij 'P20_ZipperShortStroke' zitten er achter elke module drie of meer routines. De lokale variabelen zitten achter de 'Program Tags'.

In routine 'R00_Main' staat gecodeerd dat in de eerste PLC-cyclus de initialisatieroutine 'R01_Shortstroke_Init' eenmaal wordt doorlopen. Daarna zal alleen routine

'R10_Shortstroke_Main' doorlopen worden.

In de initialisatieroutine worden variabelen weggeschreven die belangrijk zijn binnen die taak. Vaak zijn dit HMI-instellingen die later ook aangepast kunnen worden door middel van de HMI te gebruiken.

De processor die al het rekenwerk doet, zit op de eerste plek benoemd als '1769-L32E Stand_a_lone_zipper', waarbij de eerste twee nummers het type PLC is gevolgd door een gekozen naam.

Daaronder hangt de ethernetkaart. Deze kaart zet het netwerk op waaraan twee gekoppelde apparaten hangen. Namelijk de Servodrive en de HMI (niet zichtbaar in deze boom).

De volgende I/O kaarten zijn onderdeel van de PLC die is ingebouwd in de Stand-alone zipper: [1] - High speed counter kaart. Hierop is de encoder aangesloten

[2] - Digitale input kaart 1. 16 ingangen [3] - Digitale input kaart 2. 32 ingangen [4] - Digitale output kaart. 32 uitgangen

[5] - Analoge input RTD/Resistance. Meet weerstand van PT100

[6]- Analoge output. Analoog signaal 0 - 10 V naar de frequentieregelaar die de zipper prefeed aandrijft.

(26)

26

In een Trend kunnen verschillende signalen gesimuleerd worden. Voornamelijk worden deze trends gebruikt om uitgangen te simuleren, omdat dit nou eenmaal de acties zijn de machine uitvoert. De positie van de Servomotor is hier ook duidelijk in te zien. Hieronder een voorbeeld van een complete simulatie van de Stand-alone Zipper met zijn uitgangen.

- Knipt Zipper door wanneer deze op zipper lengte is - Klemt zipper om vervolgens te transporteren - Transporten van de short stroke transport - Klemmen van de short stroke transport - Actuele positie van de Servomotor

- Vacuüm houdt de zipper vast aan vacuümbalk - Seal-unit cilinder

(27)

27

4.5 Servomotor

De Servomotor wordt aangestuurd door de Servodrive. Vanuit de software worden er commando's gegeven aan de Servodrive . Er is gekozen om de Servomotor naar absolute posities te sturen. Positie 0 is de meeste linkse positie die behaald kan worden, tevens is dit de positie waar de zipper gegrepen gaat worden. De meest rechtse positie op de lineaire geleiding is 340, deze ligt vast omdat dit het einde van de lineaire geleiding is.

In onderstaande code wordt bij elke 5 ms(snelle taak, zie hoofdstuk 4.4) afgevraagd in welke positie hij is.

Deze drie posities zouden kunnen zijn : - Positie 0, grip zipper position

- Positie ZipperLength, instelbaar op HMI. - Positie Seal position, instelbaar op HMI

////Checking constantly at which position Servo is

if (Zipper_drive:I.ActualPosition = 0) then

dPositionServo := gstConst.cdGRIP_ZIP_POS;

elsif (Zipper_drive:I.ActualPosition = gstHMISettings.stZipper.rSealPosition) then dPositionServo := gstConst.cdSEAL_POS;

elsif (Zipper_drive:I.ActualPosition = (gstHMISettings.stZipper.rZipperLength -

gdDistanceZipperTransportShortstroke)) then dPositionServo := gstConst.cdZIPPERLENGTH_POS;

end_if;

4.5.1. CASE met Watchdog en Productiontime

De Watchdog en Productiontime is een Add-on instruction door PMB-UVA geschreven, dit maakt het programmeren van cases eenvoudiger. Deze functies zijn bedacht zodat er geen oneindige lus binnen een CASE vormt. Wanneer er binnen een casenummer een IF-voorwaarde gebruikt wordt, moeten er altijd van een Watchdogtime OF Productiontime gebruik gemaakt worden.

Onderstaande code komt uit de Main routine. Als voorwaarde word terugkoppeling van de Cutting knife en de Servomotor gebruikt. Als zij klaar zijn met hun activiteit wordt een waarde 0

teruggestuurd.

Elk casenummer heeft een eigen watchdogtime, dit is de eerste variabele in het casenummer. Deze watchdog controleert of de PLC Controller niet langer dan 200ms over dit casenummer doet(zie softwarecode beneden deze tekst).

In feite wacht hij dus alleen op de Cutting knife en de Servomotor.

Indien er langer over gedaan wordt, zal een Watchdogerror signaal hoog worden. In de software zit een functie waarbij je kan terugvinden in welke casenummer de watchdog hoog is geworden. Als de Watchdogtime niet gebruikt wordt, kan er van de ProductionTime gebruik worden gemaakt. In feite is dit een Timer die start zodra de PLC controller in het betreffende casenummer terecht komt. Vervolgens wordt opgevraagd: If bTimerended then ... Zodra de Timer is afgelopen zal hij verder gaan.

(28)

28

560: //Knife Cut and on servo on zipperlength->knife cut false and servo to seal position stZipperTransportMainSeq.dWatchdogTime := 200;

stZipperTransportMainSeq.dProdTime := 0;

gstMode.dStsProduction := gstConst.cdZipperTransport;

if (dComZipperTransportCuttingKnifeCtrl = 0) AND (dComServoCtrl = 0) then

rSetAcc := rMaxAccDecWithZip * (gstHMISettings.stZipper.rAccLimitToSealPOS / 100); rSetDec := rMaxAccDecWithZip * (gstHMISettings.stZipper.rDecLimitToSealPOS / 100); rSetVel := rMaxVelocityWithZip * (gstHMISettings.stZipper.rVelLimitToSealPOS / 100); rSetPosition := gstHMISettings.stZipper.rSealPosition;

dComServoCtrl := gstConst.cdMOVE_TO_ABS_POS;

dComZipperTransportCuttingKnifeCtrl := gstConst.cdZIPPERTRANSPORT_NOT_KNIFE; stZipperTransportMainSeq.dStep := 570;

end_if;

In dit casenummer worden de acceleratiesnelheid, deceleratiesnelheid, snelheid en positie berekent en/of verwezen naar een variabele rSetAcc, rSetDec of rSetVel.

In de volgende routine wordt de Move to absolute position commando gegeven. De berekende of verwezen variabelen in de code hierboven is hieronder terug te zien. Vervolgens wordt het startmotion bit hoog gemaakt en zal de Servomotor zijn beweging uitvoeren met de ingestelde waardes en springt daarna naar casenummer 255.

250 : // Move to absolute position Grip Zipper Position (startposition) stZipMotionSeq.dWatchDogTime := 0;

stZipMotionSeq.dProdTime := 0;

stAxisStatus.dServoStatus := gstConst.cdMOVE_TO_ABS_POS; // Settings Servo motion

Zipper_drive:O.accelerationlimit := rSetAcc; Zipper_drive:O.decelerationlimit := rSetDec; Zipper_drive:O.commandposition := rSetPosition; Zipper_drive:O.velocitylimit := rSetVel; //Start Servomotor Zipper_drive:O.startmotion := True; stZipMotionSeq.dstep := 255;

(29)

29

255: // Check if Servo Started

stZipMotionSeq.dWatchDogTime := 10000; stZipMotionSeq.dProdTime := 0;

ifZipper_drive:I.PositiveOvertravelInput OR Zipper_drive:I.NegativeOvertravelInputthen dComServoCtrl := gstConst.cdSTOP;

gstAlarmClass1.b0310_ServoReachedLimitSwitch := True;

gstMode.dCommand := gstConst.cdERROR;

stZipMotionSeq.dStep := 1000;

elsif NOT Zipper_drive:I.positionlockstatusthen

stZipMotionSeq.dStep := 260;

end_if;

Tijdens deze beweging wordt er constant gecontroleerd of de Servomotor niet zijn Limit switches bereikt. Wanneer dit wel gebeurt, wordt een AlarmClass1 hoog gemaakt. Dit betekent dat alles direct stopt en vervolgens wordt in casenummer 1000 een commando gegeven dat snelheid van de

Servomotor gelijk is aan 0.

Zolang er geen Error optreedt, checkt casenummer 255 enkel of de Servomotor vertrokken is van zijn startpositie en gaat vervolgens naar casenummer 260.

260 : // Servo on position?

//Command set without error?

stZipMotionSeq.dWatchDogTime := 60000; stZipMotionSeq.dProdTime := 0;

ifZipper_drive:I.PositiveOvertravelInput OR Zipper_drive:I.NegativeOvertravelInputthen dComServoCtrl := gstConst.cdSTOP;

gstAlarmClass1.b0310_ServoReachedLimitSwitch := True;

gstMode.dCommand:= gstConst.cdERROR;

stZipMotionSeq.dStep := 1000;

elsifZipper_drive:I.positionlockstatus AND Zipper_drive:I.MotionCompletethen

Zipper_drive:O.startmotion := False; dComServoCtrl := 0;

stZipMotionSeq.dStep := 0;

end_if;

In casenummer 260 blijft hij controleren of er geen Limit switch bereikt wordt, waarna hij controleert of hij zijn eindpositie bereikt heeft. De startmotion bit wordt laag, hij stuurt een 0 terug naar

dComServoCtrl zodat in de Main routine 'weet' dat hij zijn actie succesvol uitgevoerd heeft. Vervolgens springt hij naar casenummer 0 en wacht op een nieuw commando, wat

(30)

30

4.6 Human Machine Interface

Het testen van de machine gaat makkelijker wanneer een werkende HMI aanwezig is. Settings hoeven niet meer via de programmeersoftware ingesteld te worden, dit kan dan op de HMI

gebeuren. Tegelijk kunnen actuele waardes goed gevisualiseerd worden en een HMI oogt veel netter tegenover de klant op het moment dat deze komt kijken. Bij het maken van de HMI geldt nog altijd dat het volgens de richtlijnen van PMB-UVA moet gebeuren. De displays moeten visueel hetzelfde ogen en voor andere functies zoals bijvoorbeeld start/stop, alarmen, operator mode, service mode, settings en switches geldt uiteraard hetzelfde.

Hieronder een aantal displays ter voorbeeld.

Het normale startscherm. Op dit moment staat de machine in Idle. Er kan dus nu alleen op start(production) gedrukt worden en/of settings veranderen.

Op dit moment staat de machine in Production. Nu kan alleen op stop(idle) gedrukt worden.

Wanneer op bovenstaande 'Home' knop gedrukt wordt, komt het Access level scherm naar voren. De operator heeft dus niet

voldoende toegang om de machine andere acties te laten uitvoeren.

Na succesvol ingelogd te hebben zal dit scherm verschijnen. Vanuit dit scherm kunnen weer andere functies geactiveerd worden. Deze functies zijn alleen bedoeld voor de service engineer.

En als laatste een display die alarmen en/of waarschuwing laat zien. Dit is een kleine greep van HMI displays die geprogrammeerd zijn. Deze displays zijn enkel gebruikt voor de testopstelling en dus onderdeel van het prototype. Net als de softwarecode is het HMI nog niet af.

(31)

31

5. Testen

De testfase begon met een aantal sensoren opnieuw aansluiten. Namelijk de Hard limit switches en de homing sensor op de Servodrive. Omdat de Servodrive tijdens het configureren en het simuleren ervan op kantoor heeft gestaan, moet deze nog terug in de machine gebouwd worden.

5.1 Software

Omdat er geen eindstandmelders op de pneumatische cilinders zitten, moet er softwarematig timers gestart worden bij elke beweging die de cilinder moet maken. Dit om zeker te zijn dat de cilinder zijn eindstand bereikt heeft. Een kleine cilinder, bijvoorbeeld de Clamping cilinder van de short stroke transport(zie hoofdstuk 3.1.1.), heeft een hele kleine slag en een kleine zuiger waardoor deze snel zijn eindstand bereikt heeft. In tegenstelling tot de Seal unit clamping cilinder(zie hoofdstuk 3.1.3.), deze heeft een grote slag en grote zuiger waardoor deze trager is. In de software heeft elke ingaande en uitgaande slag een constante meegeven, deze constante is de tijd in ms die als timer afloopt. Als standaardwaarde is 50 ms gebruikt, waarbij enkele timers langer ingesteld staan. De optimale waardes kiezen, kan pas in de testfase gedaan worden.

De Servomotor heeft een tijd lang bij de testopstelling op kantoor gelegen. Toen de Servomotor gemonteerd was, kon het daadwerkelijk testen ervan beginnen. De Servomotor kan nu niet meer oneindig één kant op draaien omdat deze een lineaire geleiding aandrijft. Bij het draaien van 6 omwentelingen één richting op, zou de slede van de geleiding mechanisch aanlopen. Dit wordt voorkomen door zogenaamde “Hard Limit Switches”, dit zijn reedcontacten gemonteerd op de lineaire geleiding. Softwarematig zal de Servomotor nooit naar een positie gestuurd worden voorbij deze switches, deze zijn dus gemonteerd uit voorzorg dat het fout kan gaan. Met het, op een ‘voorzichtige’ manier, testen van de software wordt duidelijk of deze limit switches naar behoren werken.

5.2 Verbeteren van het prototype

Tijdens het testen is duidelijk geworden dat met de invoer van de zip al wat knelpunten naar voren kwamen. De rol van de zipper prefeed heeft een bepaald gewicht, dit om de zipper op spanning te houden. Deze spanning zorgt ervoor dat de zip recht de short stroke binnenschuift. Het

eenrichtingslager zou ervoor moeten zorgen dat de Zip niet terug zou schuiven de zipper prefeed in. De veer moet ervoor zorgen dat de druk groot genoeg is, dus voldoende wrijving moet aanwezig zijn. Dit was in eerste instantie niet het geval. Tijdens het starten en stoppen van aanvoeren van zip, komt er een dusdanige kracht op de zip die het rolletje niet kan tegenhouden. De oplossing lag voor handen: de rol die in de zipper prefeed ligt moet lichter worden gemaakt. Dit was een relatief kleine aanpassing omdat het overtollig kunststof, dat toch geen functie heeft, er makkelijk uitgedraaid kon worden.

Tijdens het testen van de software zijn verschillende problemen naar voren gekomen. Enkele hiervan zijn fouten in de software maar het grotendeels mechanische constructiefouten. Deze problemen horen nou eenmaal bij het maken van een prototype. Het product wordt net zo lang verbeterd tot het perfect is. Onverwachte activiteiten kunnen dus zijn, het verbeteren van het prototype terwijl dit niet gepland is. Wanneer de machine mechanisch in orde is en er zich geen problemen meer

(32)

32

De zipper word elke cyclus doorgeschoven door de short stroke transport. Tijdens dit transport komt het regelmatig voor dat de zipper opgekruld achter het mes blijft hangen. Door de ruimte tussen het mes en de aanslag ervan groter te maken, wordt de kans beperkt dat de zip erachter blijft hangen. Het sealen van de zip gaf ook problemen. Wanneer de zip gepositioneerd is hangend onder de vacuümbalk, komt de verhitte sealbalk omhoog en sealt de zip in de folie.

Het gebeurde vaak dat de rechterkant van de sealbalk niet goed sealde. Dit komt omdat de sealbalk niet goed horizontaal onder de vacuümbalk stond. Dus op het moment dat de sealbalk op de vacuümbalk aanslaat krijg je een drukverschil dat aan de ene kant hoger is dan aan de andere kant. Het gevolg is dat er op sommige plekken vele malen beter geseald wordt. Een mogelijke oplossing is langer sealen, maar dit kan op sommige plekken verbrande folie opleveren.

Het blijkt zo te zijn dat door middel van RVS-bekken op een RVS-aanslag sealen een lastig principe is. Ook dit probleem is doorgespeeld naar MTA, zij die de machine ontworpen hebben. In afwachting tot een oplossing zal dit probleem even rusten, het testen kan immers gewoon doorgaan.

5.3 Aanpassingen functioneel ontwerp

De software vloeit voort uit de flowcharts uit het functioneel ontwerp. Door deze aan te houden is het duidelijk voor iedereen hoe de code opgebouwd is en tevens is dit ter controle voor de software engineer.

In deze fase wordt eigenlijk pas duidelijk of de software in de praktijk ook werkt. Er zijn veel

softwarematige aanpassingen gedaan. Deze aanpassingen moeten allemaal doorgevoerd worden in het functioneel ontwerp zodat het functioneel ontwerp altijd up-to-date blijft.

(33)

33

6. Conclusie

Het opstellen van het functioneel ontwerp heeft enige tijd gekost. Dit komt omdat het principe van het functioneel ontwerp uit schetsen naar voren is gebracht. De machine zelf stond er namelijk nog niet, deze was nog in ontwikkeling. Later is het functioneel ontwerp goedgekeurd en kon ik aan de slag met het schrijven van de software.

Deze fase was voor mij het meest interessant. Ik moest eerst voldoende kennis opdoen over het programmeerpakket, software schrijven in Structured Text en richtlijnen binnen PMB-UVA. In deze fase heb ik veel geleerd over het programmeren in Structured Text en het debuggen ervan, wat een belangrijk onderdeel is. Tot aan deze fase liep alles nog volgens planning.

In de testfase is alles achterop planning gaan lopen. Dit had niet met de software te maken, maar met constructiefouten. Er zijn bepaalde principes gerealiseerd die niet blijken te werken. Op zich is dit niet erg, dit hoort namelijk bij een prototype. Mijn taak als software engineer is deze problemen doorspelen naar Engineering. Omdat de gehele Stand-alone zipper geconstrueerd is bij een extern bedrijf genaamd MTA, leverde de communicatie tussen beide bedrijven veel vertraging op. Elke aanpassing moest namelijk tussen MTA en de projectleider gecommuniceerd worden. Later is de projectleider van dit project gepromoveerd tot directeur van PMB-UVA, dit is ook niet ten goede gekomen van het project omdat deze persoon minder tijd kon vrijmaken. In week 17 van de

stageperiode heeft de machine voor het eerst mechanisch goed gefunctioneerd. Vanaf dat moment kon mijn software pas echt goed getest worden, omdat ik niet meer vastliep op problemen, zoals bijvoorbeeld in het gevaldat de Zip bleef hangen.

Voordat de software grondig getest was, kwam een mogelijke, toekomstige klant kijken naar de Stand-alone Zipper. Deze klant was tevreden naar wat hij gezien had. De machine hoefde nog niet compleet te werken, alleen het principe moest aangetoond worden en deed de machine perfect. Het project is niet volgens planning gelopen, de redenen hiervan zijn al genoemd. Buiten dit alles werkt de software tot zover dat er goed zips geseald kunnen worden. Er isgenoeg documentatie en geschreven software om de volgende software engineer een eind vooruit te helpen.

Ik had me geen beter afstudeerproject voor kunnen stellen. Ik heb hiervan heel veel geleerd en om dit werk in de toekomst, of misschien binnenkort , als beroep uit te oefenen lijkt me een mooi toekomstbeeld.

(34)

34

7. Verklarende woordenlijst

HMI - Human Machine Interface. Een manier van communiceren tussen een mens en een machine.

Structured text - Programmeertaal voor PLC's. Binnen PMB-UVA wordt alle software in ST geprogrammeerd.

I/O : Input / Output, de in- en uitgangen van een besturing.

Servomotor - Een synchrone motor met hieraan vast een terugmelding zodat de stand van de motoras constant bekend is.

Servodrive - Stuurt de Servomotor aan.

PLC - Programmable Logic Controller, een besturingssysteem met een processor en digitale in- en uitgangen.

RSLogix5000 - Programmeersoftware voor het programmeren van Allen-Bradley's PLC's

8. Bronnen

User manuals Allen-Bradley:

− Kinetix 300 EtherNet/IP Indexing Servo Drives − Compact High-speed Counter Module

− Powerflex 4M Adjustable Frequency AC Drive − RSLogix5000 - Structured Text

(35)

35

9. Bijlage

(36)

36

(37)

37

(38)

38

(39)

39

(40)

40

(41)

41

(42)

42

(43)

43

(44)

44

(45)
(46)

46

Referenties

Outline

GERELATEERDE DOCUMENTEN

19 Lipidated conjugates of Coil-K and Coil-E have been synthesised and incorporated into liposomes and, upon mixing, a parallel coiled coil is formed which forces the two

I’ll protect you from the wind and I will find a shelter In the night I’ll light a fire so you won’t get cold In the dark I’ll be around you like a guardian angel I’ll be

plaatsgevonden is zijn deze relaties nog vermoedelijk. Om de studie en daarmee het eindproduct als valide te kunnen beschouwen zal er een representatieve steekproef

Beheermaatregelen als begrazen en maaien mitigeren deels de ver- mestende werking van stikstofdepositie, maar zijn niet geschikt om de aantasting van de buffercapaciteit door

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the

Publisher’s PDF, also known as Version of Record (includes final page, issue and volume numbers).. Please check the document version of

A crosslayer scheduler then chooses a different resource allocation setting for each time slot by defining a utility function for each user n, and solving the corresponding network

In 2012, sealers killed over 325,000 seals with an additional 10,000 seal quota allowed for the traditional hunt by the First Nation peoples.. Both the quotas and the number of