Masterproef CAD/CAM voor Soenen Perforatiepers
Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica Academiejaar 2009-2010
Davy Feys
Masterproef CAD/CAM voor Soenen Perforatiepers
Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica Academiejaar 2009-2010
Davy Feys
WOORD VOORAF In mijn derde jaar elektronica kwam ik in contact met het bedrijf Soenen. Omdat automatisatie een sector is die mij erg boeit, vroeg ik of het bedrijf Soenen een masterproef voor mij had. De masterproef die het bedrijf op dat ogenblik had, was het ontwikkelen van nieuwe software. Omdat mijn studies master elektronica vooral gebaseerd zijn op ontwerptechnieken was dit voor mij een grote uitdaging. Dit was een goede kans om mijn kennis op andere domeinen uit te breiden. Ik ging de uitdaging aan en heb er nadien nooit spijt van gehad. Ik heb tijdens het uitvoeren van de masterproef af en toe problemen gekend die niet altijd eenvoudig op te lossen waren. Gelukkig kon ik rekenen op verschillende mensen die mij steeds met een glimlach hielpen. Op het einde van het masterjaar ben ik erin geslaagd om de software te ontwikkelen die het bedrijf Soenen wenste. Dankzij de masterproef is mijn kennis op vele vlakken sterk vooruit gegaan. Graag zou ik nog volgende mensen in het bijzonder willen bedanken voor hun hulp, advies en begrip tijdens de masterproef. Mijn promotor, Erwin Mannens, diensthoofd automatisatie bij Soenen, die mij de masterproef toevertrouwde en hielp begeleiden. Mijn interne promotor, Benjamin Samyn, voor de vele tijd die hij vrijmaakte om mij met een goed resultaat te laten eindigen. Nick Kindt die een vooronderzoek naar de masterproef uitvoerde. Steven Coene, Christ Vansteeland en Frederick Grumieaux die steeds mijn vragen betreffende het schrijven van de software probeerden op te lossen. De vele mensen die mijn masterproeftekst nalazen op mogelijke spellingfouten. Mijn vriendin, Valerie, die mij onvoorwaardelijk bleef steunen. Tot slot mijn ouders, het Jeugd Rode Kruis Roeselare en vrienden die veel begrip toonden voor de momenten waarop ik er niet kon zijn.
I
ABSTRACT This thesis is developed in association with Soenen, constructor of perforating presses. The purpose is to achieve a CAM-software for a perforating press. This CAM-software, which isn’t commercially available yet, must be able to generate CNC-code from a CAD-drawing. This thesis has a huge added value for Soenen. At this moment, Soenen uses software called PerfEditor for generating the CNC-code. All parameters of the perforation plate must be filled in manually. This isn’t the most ideal solution because it takes a lot of time and the fault rate is higher. The CAMsoftware which is developed in this thesis must be used in the AutoCAD framework. After making a CAD-drawing, the CAM-software will be loaded. By using an algorithm the drawing will be inspected quickly. Building the algorithm was also part of the thesis. The algorithm can detect all the different zones. It will search the right pattern for each zone from the drawing. The algorithm will also detect the presence of subzones. All parameters are filled in automatically. The tools of the perforating press which can produce the product are detected from the drawing. The CNC-code will be generated a lot faster with the CAM-software than with the current software.
II
INHOUDSOPGAVE WOORD VOORAF ................................................................................................................ I ABSTRACT ......................................................................................................................... II INHOUDSOPGAVE ............................................................................................................. III LIJST VAN FIGUREN .......................................................................................................... VI LIJST VAN TABELLEN ...................................................................................................... VIII INLEIDING.......................................................................................................................... 1 1 BEDRIJFSVOORSTELLING .............................................................................................. 2 1.1 Geschiedenis ............................................................................................................ 2 1.2 Algemene gegevens .................................................................................................. 2 1.3 Aanbod .................................................................................................................... 2 1.3.1 Perforatiepersen ................................................................................................. 3 1.3.2 Strekmetaalpersen .............................................................................................. 3 1.3.3 Andere mechanische persen ................................................................................ 4 1.3.4 Kniplijnen ........................................................................................................... 4 1.3.5 Automatische ponslijnen ...................................................................................... 4 1.3.6 Transformatorlijnen ............................................................................................. 4 1.3.7 Tailor-made productielijnen ................................................................................. 5 1.3.8 Andere productielijnen......................................................................................... 5 2 PERFORATIEPERS ......................................................................................................... 6 2.1 Perforatieplaat.......................................................................................................... 6 2.2 Werking stempels ..................................................................................................... 8 2.3 Bepalen patronen ................................................................................................... 10 2.4 Bepalen werktuigen ................................................................................................ 12 3 PERFEDITOR .............................................................................................................. 14 3.1 Situering ................................................................................................................ 14 3.2 Werking ................................................................................................................. 14 3.2.1 Werktuig .......................................................................................................... 14 3.2.2 Product ............................................................................................................ 15 3.2.3 CNC-code ......................................................................................................... 17 3.2.4 XML-bestand .................................................................................................... 17 3.2.5 Voordelen......................................................................................................... 19 3.2.6 Nadelen ........................................................................................................... 19 4 SORTEERALGORITME ................................................................................................. 20 4.1 Doel ...................................................................................................................... 20 4.2 Ontwikkelen ........................................................................................................... 21 4.2.1 Methode 1 ........................................................................................................ 22 4.2.1.1 SQR of PAR controle ................................................................................ 22 4.2.1.2 Aantal perforaties voorafgaand bij PAR ..................................................... 23 4.2.1.3 Voordelen van deze manier van werken .................................................... 23 4.2.1.4 Nadelen van deze manier van werken ....................................................... 24 4.2.2 Methode 2 ........................................................................................................ 24 III
4.2.2.1 SQR of PAR controle ................................................................................ 24 4.2.2.2 Subzones................................................................................................ 25 4.2.2.3 Aantal perforaties voorafgaand ................................................................. 26 4.2.2.4 Voordelen van deze manier van werken .................................................... 27 4.2.2.5 Nadelen van deze manier van werken ....................................................... 27 4.2.3 Methode 3 ........................................................................................................ 28 4.2.3.1 Geen (sub)zones ..................................................................................... 28 4.2.3.2 Subzones of nieuwe zones ....................................................................... 29 4.2.3.3 Voordelen ............................................................................................... 31 4.2.3.4 Nadelen ................................................................................................. 31 4.2.4 Besluit.............................................................................................................. 32 5 CAM-SOFTWARE ......................................................................................................... 33 5.1 Beschrijving ........................................................................................................... 33 5.2 Eisen ..................................................................................................................... 33 5.3 Eigen keuzes .......................................................................................................... 33 5.4 Opbouw cam-software ............................................................................................ 35 5.4.1 CAD-tekening ................................................................................................... 35 5.4.2 Inladen en opstarten PerfCAM ............................................................................ 36 5.4.3 Coördinaten perforaties en perforatieplaat .......................................................... 37 5.4.3.1 Vroeger onderzoek .................................................................................. 37 5.4.3.2 Coördinaten binnen PerfCAM .................................................................... 39 5.4.4 Sorteren perforaties .......................................................................................... 43 5.4.5 Sorteeralgoritme ............................................................................................... 44 5.4.5.1 Δx-waarden ............................................................................................ 44 5.4.5.2 Zones ..................................................................................................... 46 5.4.5.3 Subzones................................................................................................ 47 5.4.5.4 SQR of PAR ............................................................................................ 48 5.4.6 Bepalen patronen.............................................................................................. 48 5.4.6.1 Selectie patronen XML-bestand ................................................................ 48 5.4.6.2 Visualisatie zones .................................................................................... 49 5.4.7 Selectie werktuigen ........................................................................................... 51 5.4.8 First punch ....................................................................................................... 52 5.4.9 Controle patronen en werktuig ........................................................................... 53 5.4.9.1 Aantal rijen werktuig ............................................................................... 54 5.4.9.2 Functie tussen patroon en werktuig .......................................................... 54 5.4.10 Selectie patronen .............................................................................................. 56 5.4.10.1 Grafische weergave patronen ................................................................... 56 5.4.10.2 Wijzigen patroon ..................................................................................... 57 5.4.11 XML-bestand product ........................................................................................ 58 5.4.11.1 Aanmaken XML-bestand .......................................................................... 58 5.4.11.2 CNC-code genereren ............................................................................... 59 5.5 Voorbeeld gebruik perfcam ...................................................................................... 60 5.5.1 Voorbeeld 1: Subzones ...................................................................................... 60 5.5.2 Voorbeeld 2: Zonder Subzones ........................................................................... 64 IV
5.6 Voorwaarden van PerfCAM ...................................................................................... 72 CONCLUSIES .................................................................................................................... 73 LITERATUURLIJST............................................................................................................... 1 BIJLAGEN ........................................................................................................................... 2 Bijlage 1 CNC-code low level ............................................................................................. 2 Bijlage 2 AutoCAD tekening .............................................................................................. 6 Bijlage 3 flowchart ophalen coördinaten van de cirkels ........................................................ 7 Bijlage 4 flowchart sorteeralgoritme .................................................................................. 9
V
LIJST VAN FIGUREN Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur
1 Werkhuizen Soenen Roeselare ................................................................................. 2 2 Perforatieplaat ....................................................................................................... 3 3 Strekmetaal ........................................................................................................... 3 4 Chassis vrachtwagen .............................................................................................. 4 5 Transformator ........................................................................................................ 5 6 Product via Tailor methode...................................................................................... 5 7 Soenen Perforatiepers............................................................................................. 6 8 Bewerken perforatieplaat ........................................................................................ 6 9 Perforatieplaat ....................................................................................................... 7 10 Perforatieplaat met zones ...................................................................................... 7 11 Perforatieplaat met subzones ................................................................................. 7 12 Technische tekening werking stempels ................................................................... 8 13 Perforatieproces stempel ..................................................................................... 10 14 Patroon R4A ....................................................................................................... 11 15 Patroon R2NFU ................................................................................................... 11 16 Voorbeeld zonder en met gagbar B ...................................................................... 11 17 Werktuig perforeert perforatieplaat ...................................................................... 13 18 Werktuig stempels voor subzones ........................................................................ 13 19 Werktuig stempels voor opvulling......................................................................... 13 20 PerfEditor tabblad ‘Tool’ ...................................................................................... 14 21 XY-coördinaten werktuig ..................................................................................... 15 22 Parameters stempels........................................................................................... 15 23 PerfEditor tabblad ‘Product’ ................................................................................. 16 24 PerfEditor tabblad ‘Cnc’ ....................................................................................... 17 25 XML-bestand Product .......................................................................................... 18 26 PAR en SQR ....................................................................................................... 21 27 Aantal perforaties vooraf ..................................................................................... 21 28 SQR/PAR controle methode 1 1/2 ........................................................................ 22 29 SQR/PAR controle methode 1 2/2 ........................................................................ 22 30 Perforaties vooraf PAR methode 1 ........................................................................ 23 31 SQR/PAR controle methode 2 .............................................................................. 24 32 Voorbeeld SQR methode 2 .................................................................................. 25 33 Voorbeeld subzones methode 2 ........................................................................... 25 34 Probleem methode 2 ........................................................................................... 27 35 Tabelleren kolommen methode 3 ......................................................................... 28 36 SQR of PAR controle methode 3 ........................................................................... 28 37 SQR of PAR voorbeeld methode 3 ........................................................................ 29 38 Bepalen subzones methode 3 .............................................................................. 30 39 Voorbeeld van de haalbaarheid subzones.............................................................. 31 40 List .................................................................................................................... 34 41 Bouwstenen CAM-software .................................................................................. 35 42 User interface CAM ............................................................................................. 37 43 GUI test Coördinaten .......................................................................................... 38 44 Knoppen Perforation Plate en Circles .................................................................... 39 46 Messagebox selecteer perforatieplaat ................................................................... 40 47 Screenshot UI Plate Length en Plate Width ........................................................... 40 45 Voorbeelden selectie perforatieplaat ..................................................................... 40 48 List coördinaten cirkels ........................................................................................ 41 49 Left Border, Right Border en Perforation Width...................................................... 42 50 PerfCAM Left Border, Right Border en Perforation Diameter.................................... 43 VI
Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
Sorteren van cirkels volgens QuickSort ................................................................. 44 Voorbeeld QuickSort ........................................................................................... 44 Lijst met per kolom de verschillende zones ........................................................... 45 Deel perforatieplaat met 1 gat vooraf ................................................................... 46 XML-bestand R2PSAR.......................................................................................... 48 XML-bestand Configuration .................................................................................. 49 Screenshot PerfCAM voor het inladen van de gaten ............................................... 50 Screenshot PerfCAM na het inladen van de gaten .................................................. 50 XML-bestand werktuig......................................................................................... 51 Screenshot PerfCAM 'Tool Name'.......................................................................... 52 First Punch ......................................................................................................... 52 Screenshot PerfCAM FirstPunch............................................................................ 53 Functies van patronen uit de database ................................................................. 54 PerfCAM patroon voor inladen werktuig ................................................................ 56 PerfCAM patroon na inladen werktuig ................................................................... 57 Form Patroon ..................................................................................................... 57 Voorbeeld XML-bestand product na PerfCAM ......................................................... 59 Voorbeeld XML-bestand product na PerfEditor ....................................................... 60 AutoCAD met ingeladen tekening ......................................................................... 61 Select .dll-bestand .............................................................................................. 61 User interface PerfCAM ....................................................................................... 62 Vul productnaam en commentaar in ..................................................................... 62 Plaatlengte en plaatbreedte invullen ..................................................................... 63 Selecteren van de perforatieplaat ......................................................................... 63 Selecteren van de perforaties in de CAD-tekening ................................................. 64 Messagebox 'Subzones not allowed' ..................................................................... 64 Voorbeeld2 zonder subzones ............................................................................... 65 User interface PerfCAM na inladen perforaties ....................................................... 65 Messagebox 'Select a tool' ................................................................................... 66 Messagebox 'Not all fields are filled in' .................................................................. 66 Mogelijke werktuigen bij CAD-tekening ................................................................. 66 Patronen voor en na ingeven van werktuig ........................................................... 67 First Punch na ingeven werktuig .......................................................................... 67 User interface PerfCAM na selecteren werktuig...................................................... 67 Form selecteren patroon ..................................................................................... 68 Patroon selecteren .............................................................................................. 68 Load product in PerfEditor ................................................................................... 70 Genereren van de CNC-code ................................................................................ 70 CNC-code van het product ................................................................................... 71 Preview product in PerfEditor............................................................................... 71 XML-bestand example2 ....................................................................................... 72
VII
LIJST VAN TABELLEN Tabel 1 Betekenis naam patroon......................................................................................... 12 Tabel 2 Subzones methode 2 ............................................................................................. 26 Tabel 3 Subzones methode 3 ............................................................................................. 30
VIII
INLEIDING Deze masterproef heeft als doel het ontwerpen van de CAM-software voor het genereren van CNC-code voor een perforatiepers. Deze software is nog niet commercieel beschikbaar en kan voor de firma Soenen, constructeur van perforatiepersen, een grote toegevoegde waarde creëren. Momenteel wordt gebruik gemaakt van het programma PerfEditor waar beschikbare waarden van de perforatieplaat manueel ingegeven dienen te worden. Uit de verschillende werktuigen zal het beste werktuig voor het product gekozen moeten worden. Op dit ogenblik worden de werktuigen van de perforatiepers voor een bepaald product manueel bepaald. Hierdoor wordt niet altijd de meest optimale oplossing gekozen voor het perforeren van de plaat. PerfEditor kan geen verband leggen tussen het gekozen werktuig en het gewenste patroon van de perforaties. Dit heeft als voordeel dat producten met niet bestaande patronen toch gemaakt kunnen worden. Nadeel hiervan is dat de gebruiker van de software een grondige kennis van de werktuigen en de patronen moet hebben. Via de CAM-software die in deze masterproef ontwikkeld is, zal het genereren van de CNC-code efficiënter verlopen. Met de CAM-software kan er een drastische vermindering van fouten in de programmatie van de perforatiepers optreden. Indien de omzetting van een tekening naar de correcte CNC-code automatisch verloopt, zal de programmatietijd eveneens aanzienlijk verkorten. Via CAM is het alsook mogelijk op de meest efficiënte manier de perforatiepers te gebruiken. Indien CAM automatisch de beste werktuigen weergeeft, zullen er misschien oplossingen geboden worden die men momenteel over het hoofd ziet. De CAM-software werd gerealiseerd in het AutoCAD framework. Nadat de CAD-tekening gemaakt is, zal deze in de CAM-software ingeladen worden. Deze CAM-software zal uit de gegevens van de tekening automatisch de CNC-code genereren voor de perforatiepers. De CAMsoftware heeft hierbij nood aan een goed werkend sorteeralgoritme. Dit sorteeralgoritme zorgt ervoor dat het correcte patroon van de perforaties gedetecteerd kan worden. Onmogelijke oplossingen tussen de selectie van het patroon en de werktuigen kunnen door dit sorteeralgoritme niet meer voorkomen. Indien er fouten optreden in de CAD-tekening of als de gebruiker de CAM-software niet correct hanteert, zal de CAM-software hiervan een foutmelding weergeven.
1
1 BEDRIJFSVOORSTELLING 1.1
GESCHIEDENIS
De firma Soenen, die door Romain Soenen werd bestuurd, is ontstaan in 1924 met het vervaardigen van gereedschap en kleine persen. Enige tijd later heeft Soenen zich gespecialiseerd in de bouw van excentrische scharen en persen. Vanaf de jaren ‘60 richtte Soenen zich op de plaatstaalindustrie. Hierbij vervaardigde de firma machines die op maat gemaakt werden. Vanaf 1975 werden enkel nog geautomatiseerde machines ontwikkeld. Deze bevatten besturingssystemen die binnenshuis ontworpen worden. Anno 1998 heeft Soenen zijn werkterrein uitgebreid naar China waar men zich op de Chinese markt focust. Tot heden is in de stad Beijing een verkoopskantoor gevestigd met 3 administrators en een technieker. Dit verkoopskantoor wordt bestuurd vanuit België.
1.2
ALGEMENE GEGEVENS
De hoofdzetel van Soenen bevindt zich in Roeselare. Soenen heeft ook 2 dochterbedrijven, namelijk Soenen Controls en Assema. Soenen Controls bevindt zich in Roeselare en is gebaseerd op het zoeken naar oplossingen van hardware en software. Assema bevindt zich in Servië en is gespecialiseerd in de bouw van draad- en foliewikkelmachines. De export van Soenen bedraagt gemiddeld 95%. Soenen is aanwezig in verschillende landen. Zo zijn er verschillende agenten in Duitsland, Frankrijk, Spanje, Italië, Turkije, Rusland, Brazilië, India, Korea, China en Japan. Momenteel werken er ongeveer 130 mensen voor de Soenen Groep. De jaaromzet van Soenen bedraagt ongeveer € 20 000 000.
Figuur 1 Werkhuizen Soenen Roeselare
1.3
AANBOD
Momenteel richt Soenen zich op de ontwikkeling van een aantal CNC-machines en productielijnen. Op de volgende pagina’s volgt een korte beschrijving van deze machines en productielijnen.
2
1.3.1 Perforatiepersen De perforatiepersen worden gebruikt voor het perforeren van materialen om hoogwaardig geperforeerde producten te realiseren. Deze ontwikkelde producten worden veel in de architectuur, de industrie en in de consumptiegoederensector gebruikt. De verschillende materialen die de perforatiepers kan perforeren varieert voornamelijk van plaatstaal tot latex, plastieksoorten, papier, hout, etc. Voorbeelden van deze producten zijn: filters, koelingmaterialen, producten voor geluidsreductie, etc. Er is de mogelijkheid om speciaal op maat gemaakte persen te realiseren waardoor de klant een optimaal resultaat bekomt voor zijn producten.
Figuur 2 Perforatieplaat
1.3.2 Strekmetaalpersen De strekmetaalpersen worden gebruikt voor het vervaardigen van metalen netstructuren zoals afgebeeld op onderstaande afbeelding. De strekmetaalplaten zijn gelijkaardig aan geperforeerde platen. Het grote voordeel van strekmetaalpersen is het volledig benutten van het materiaal. Er is dus geen afval na het maken van het product.
Figuur 3 Strekmetaal
3
1.3.3 Andere mechanische persen Deze persen worden gemaakt in functie van het product. Een voorbeeld van een dergelijke pers werd gemaakt voor het vervaardigen van nummerplaten. Een andere pers werd ontworpen voor het persen van radiatoronderdelen.
1.3.4 Kniplijnen Plaatstaal dat op rollen gewikkeld is, kan via kniplijnen op de juiste lengte gesneden of geknipt worden. Hierdoor worden staalplaten bekomen met een hoge nauwkeurigheid die dan gebruikt kunnen worden voor het vervaardigen van producten.
1.3.5 Automatische ponslijnen Deze ponslijnen kunnen materialen in 3D-perspectief ponsen. Ze zijn ontworpen voor de bouw van vrachtwagens. Zo kunnen bijvoorbeeld de ophangingen van vrachtwagens met hoge snelheden vervaardigd worden. De ponslijnen zijn flexibel ontworpen zodat ieder type vrachtwagen gebouwd kan worden volgens orde van bestelling.
Figuur 4 Chassis vrachtwagen
1.3.6 Transformatorlijnen Deze productielijnen hebben als doel om kernen van transformatoren te produceren. Een transformatorkern bestaat uit grote hoeveelheden geknipte platen die juist op elkaar gestapeld worden. Deze machines zullen deze platen knippen aan hoge snelheid en ze daarna stapelen volgens vastgelegde patroonmodellen.
4
Figuur 5 Transformator
1.3.7 Tailor-made productielijnen Een andere productielijn die door Soenen gemaakt werd is de tailor-made productielijn. Hierbij kunnen producten in 1 keer vervaardigd worden door welding1 toe te passen.
Figuur 6 Product via Tailor methode
1.3.8 Andere productielijnen Er zijn ook productielijnen ontworpen voor het vervaardigen van metalen meubelen en ook voor de grafische industrie.
1
Welding is het smelten van metaal tot 1 product. 5
2 PERFORATIEPERS De masterproef handelt specifiek over de perforatiepers waardoor de werking ervan uitgebreider besproken wordt.
Figuur 7 Soenen Perforatiepers
2.1
PERFORATIEPLAAT
De perforatieplaat is de plaat die geperforeerd wordt. De plaat wordt geperforeerd aan de hand van een rij stempels. Deze stempels zullen een bepaald patroon vormen op de perforatieplaat. Later zal dieper ingegaan worden op het patroon. In de onderstaande afbeelding is een stalen plaat (a) weergegeven die via de perforatiepers bewerkt wordt (b). Als resultaat wordt een geperforeerde plaat (c) bekomen.
b
a
c Figuur 8 Bewerken perforatieplaat
6
Een perforatieplaat heeft een x-richting en een y-richting volgens het perforeren van de plaat.
perforatiebreedte
y x
perforatielengte Figuur 9 Perforatieplaat
De x-richting is de richting waarin de perforatieplaat door de perforatiepers beweegt. Indien de stempels van de perforatiepers een rij perforeren, dan is deze volgens de y-richting. Het perforatiegebied heeft een bepaalde lengte en breedte. De perforatieplaat kan verschillende zones bevatten. Later zal de manier waarop zones gecreëerd worden aan bod komen. In onderstaand voorbeeld is een perforatieplaat met twee zones afgebeeld.
Zone 1
Zone 2
Figuur 10 Perforatieplaat met zones
In een zone kan er een subzone voorkomen. Soms kan het voorkomen dat er een bepaald gebied in de zone geen perforaties bevat. In deze situatie heeft men dan met subzones te maken. Soms zijn de perforaties op een andere manier geperforeerd waardoor er een verschil merkbaar is. Hieronder zijn twee voorbeelden gegeven van perforatieplaten die subzones bevatten.
Subzone a
Subzone b
Subzone c
Figuur 11 Perforatieplaat met subzones
7
2.2
WERKING STEMPELS
De stempels perforeren de plaat. Daartoe worden de stempels in een bepaald werktuig geplaatst. Dit werktuig kan meerdere rijen stempels bevatten. Afhankelijk van het patroon van de perforaties wordt een werktuig gekozen en in de perforatiepers geplaatst. De stempels drukken meestal ronde perforaties. In uitzonderlijke gevallen kan de perforatie ook een andere vorm hebben. In volgende figuur is een technische tekening weergegeven met de samenstelling van de stempels. Daarna volgt een nadere uitleg van de verschillende onderdelen op de technische tekening. De nummers van de verschillende onderdelen die besproken worden, komen overeen met de omcirkelde nummers van de technische tekening. 1 2 3 B
A
7
4 5
6
Figuur 12 Technische tekening werking stempels
8
1
Stoter De stoter of ram heeft als functie de stempels door de te perforeren plaat te drukken. De stoter van de perforatiepers kan een drukkracht produceren van 800 tot 6000 kN. Dit is afhankelijk van het type perforatiepers. De aandrijving van de stoter gebeurt met behulp van een vliegwiel. De snelheid waarmee de stoter de stempels door het materiaal drukt, kan oplopen tot 800 slagen per minuut. In de figuur is de stoter niet getekend. Dit omdat de stoter groot is in vergelijking met de rest van de technische figuur.
2
Gagbars Het werktuig met de stempels wordt bediend via 2 gagbars (A en B). De gagbars kunnen afzonderlijk bediend worden. Ze zijn in drie verschillende standen instelbaar. De gagbars dienen voornamelijk om zones op te vullen in het begin en het einde van de perforatieplaat. Subzones kunnen gecreëerd worden via gagbars met lange en korte stempels. In de middenstand perforeren enkel de lange stempels de perforatieplaat. In de laagste stand perforeren zowel de lange als de korte stempels de perforatieplaat. Gagbar B bevindt zich in de perforatiepers aan de kant waar de blanke plaat aangevoerd wordt.
3
Stempelhouder De stempelhouder heeft als doel om de stempels op hun plaats te houden. De stempels worden bovenaan vastgehouden tijdens het ophalen van de stempels uit de perforatieplaat.
4
Stripper of aftrekplaat Bij het drukken van de stempels door de plaat zal de plaat zich rond de stempels klem zetten. Na het perforeren worden de stempels uit de perforatieplaat getrokken. De stripper zorgt ervoor dat de geperforeerde plaat tegengehouden wordt.
5
Opening voor perforatieplaat De te perforeren plaat wordt van links naar rechts door de opening geschoven met een bepaalde voeding.
6
Ondermatrijs De ondermatrijs houdt de perforatieplaat tegen wanneer de stempels door de plaat gedrukt worden. Het afval van de perforaties wordt verzameld in een verzamelbak onderaan de perforatiepers.
9
7
Lange en korte stempels Er zijn 2 soorten stempels: de lange stempels en de korte stempels. In 1 werktuig kunnen stempels met verschillende lengtes gebruikt worden. Hierdoor kan men subzones maken. Subzones zien er totaal anders uit indien enkel de lange stempels gebruikt worden dan wanneer zowel de lange stempels als de korte stempels gebruikt worden. In een rij van stempels kiest de ontwerper waar de lange en waar de korte stempels geplaatst worden. Een stempel heeft onderaan een snijzijde. De stempel zal de plaat op 2/3de van de dikte doorsnijden. 1/3de van de plaatdikte breekt af tijdens het doordrukken van de stempel. snijden
breken Figuur 13 Perforatieproces stempel
2.3
BEPALEN PATRONEN
Een patroon is een bepaalde terugkerende weergave van de perforaties op de perforatieplaat. Veel gebruikte patronen werden opgeslagen in een database. Op deze manier kan op een vlotte manier de correcte CNC-code voor de perforatiepers gegenereerd worden. In het verdere vervolg van deze masterproef worden de patronen van de database ‘standaardpatronen’ genoemd. De patronen worden bekomen met behulp van een bepaalde groep werktuigen. In sommige gevallen kan een werktuig verschillende patronen genereren. Er zijn verschillende patronen mogelijk indien het werktuig bestaat uit lange en korte stempels. Doordat de stempels bediend worden door 2 gagbars samen of afzonderlijk, kunnen er verschillende patronen ontstaan. Bij een bepaald werktuig zijn dus veel patronen mogelijk. De lange en korte stempels zullen gebruikt worden voor subzones of om het begin en einde van zones op te vullen. Hieronder is een voorbeeld van een 4-rijig standaardpatroon (R4A) weergegeven. Het is een standaardpatroon die een 4-rijig werktuig de juiste instructies geeft om het bepaald patroon, dat op de figuur afgebeeld staat, te perforeren. De gekleurde cirkels stellen de rijen van het werktuig voor. De afstand tussen de rijen is afhankelijk van het werktuig. De letter A op de figuur staat voor gagbar A en de letter B voor gagbar B. De perforatieplaat wordt van rechts naar links verschoven ten opzichte van het werktuig. Dit is in de figuur aangeduid via de pijl rechtsboven. De voeding, waarmee de perforatieplaat wordt aangedreven, is F. Na iedere voeding zal de perforatiepers de plaat perforeren. In dit voorbeeld is het enkel gagbar A die actief is. Door de voeding F zouden anders vlug de perforaties van gagbar B opnieuw geperforeerd worden door de stempels van gagbar A.
10
Figuur 14 Patroon R4A
Het patroon is gemaakt voor een 4-rijig werktuig en zal alle instructies aan het werktuig geven die nodig zijn om dit patroon te maken. Het werktuig zal nog moeten bepalen hoe groot de voeding moet zijn en wat de afstand is tussen de verschillende rijen. In een volgend voorbeeld wordt hetzelfde patroon gerealiseerd maar is het standaardpatroon ontworpen voor een 2-rijig werktuig. De plaat wordt terug van rechts naar links verschoven ten opzichte van het werktuig. Zowel gagbar A als B zijn actief. De letter T op de figuur stelt de afstand tussen de twee rijen voor.
Figuur 15 Patroon R2NFU
Indien bij het tweede voorbeeld de eerste perforatie van de perforatieplaat zou gebeuren met gagbar B en daarna met zowel gagbar A en B, dan zou de perforatieplaat niet starten met een niet volledig opgevulde perforatie. Hieronder is een voorbeeld weergegeven van het starten zonder eerst gagbar B te gebruiken (links) en een voorbeeld waarmee de perforaties starten met gagbar B (rechts).
Figuur 16 Voorbeeld zonder en met gagbar B
11
Hetzelfde resultaat kan bekomen worden door lange en korte stempels te gebruiken. Dit wordt verder uitgelegd onder de subtitel ‘Bepalen werktuigen’. Afhankelijk van de start van de perforaties zal de CNC-code aangepast worden. De standaardpatronen hebben een specifieke naamgeving. Aan de hand van de naamgeving kan vlug informatie bekomen worden. Het eerste gedeelte van de naam geeft het aantal rijen weer waarvoor het patroon bedoeld is. Het tweede gedeelte geeft meer specificaties van de perforaties zelf weer. Hieronder volgt een tabel met deze specificaties. Later zullen enkele van deze specificaties uitgebreider besproken worden. Code A
Enkel perforeren met gagbar A van het werktuig
Code B
Enkel perforeren met gagbar B van het werktuig
Code FU
De perforatie is opgevuld. Gagbar A en B zullen afzonderlijk geselecteerd worden.
Code NFU
De perforatie is niet opgevuld. Gagbar A en B worden altijd samen gebruikt.
Code PSAR
Perforatie start met gagbar A
Code PSAR2
Zelfde als PSAR maar met een andere werktuiglay-out
Code PSBR
Perforatie start met gagbar B
Code PSBR2
Zelfde als PSBR maar met een andere werktuiglay-out
Code SL
Korte en lange stempels
Code SQR
Square perforatie werktuig
Code SS
Slechts 1 strook
Tabel 1 Betekenis naam patroon
2.4
BEPALEN WERKTUIGEN
Afhankelijk van de werktuigen die het bedrijf bezit kunnen verschillende patronen gemaakt worden. Momenteel moet de programmeur van de CNC-code weten welk werktuig de fabrikant wil gebruiken om zijn product te maken. De programmeur bezit een database met alle mogelijke patronen voor ieder werktuig. Er zal een standaardpatroon geselecteerd worden dat voldoet aan de wensen van het product en dat haalbaar is voor het gekozen werktuig. Het werktuig zal via het gekozen standaardpatroon, de gewenste voeding kunnen bepalen. Er zal nagegaan worden wat de diameter is van een perforatie. Indien alles bepaald is, kan de CNC-code gegenereerd worden. Het is belangrijk om de richting van het werktuig en de perforatieplaat te kennen om een correct product te bekomen. Hieronder volgt een voorbeeld van een perforatieplaat die geperforeerd wordt door een werktuig. Het werktuig is niet volledig gevuld met stempels omdat voor dit product een kleinere zone stempels gevraagd wordt. De perforatieplaat schuift vanaf de invoer van de perforatiepers door het werktuig naar de uitvoer van de perforatiepers. De stempels aan de uitvoer van het werktuig worden bediend door gagbar A van de perforatiepers. De stempels aan de invoer van het werktuig worden bediend door gagbar B. De xy-richting van de stempels blijft steeds dezelfde. 12
A
B
Werktuig Perforatieplaat
y
x
Figuur 17 Werktuig perforeert perforatieplaat
Zoals eerder vermeld zijn er lange en korte stempels. Deze worden gebruikt voor het perforeren van subzones of om zones vooraan en achteraan op te vullen. Zones vooraan en achteraan opvullen is belangrijk om een mooi begin en einde van de zone te krijgen bij bepaalde patronen. In een eerste voorbeeld worden lange en korte stempels gebruikt om een zone op te vullen. De stempels zijn steeds lang of kort in de y-richting van het werktuig. In figuur 17 is een 4-rijig werktuig weergegeven dat lange en korte stempels bevat om zones op te vullen. A
B
Lange stempel Korte stempel
Figuur 19 Werktuig stempels voor opvulling
A
B
Lange stempel Korte stempel
Figuur 18 Werktuig stempels voor subzones
De eerste slag kan bijvoorbeeld met gagbar A gemaakt worden en enkel de lange stempel. Daarna wordt gestempeld met beide gagbars en zowel de lange als de korte stempels. Op deze manier kan de zone opgevuld beginnen. Dezelfde methode wordt tevens gebruikt om het einde van de zone af te werken. In een tweede voorbeeld worden de stempels gebruikt voor subzones. De stempels zijn dan niet meer steeds lang in de y-richting. Figuur 18 geeft dit weer. Indien alle stempels gebruikt worden, worden alle kolommen geperforeerd. Indien slechts de lange stempels gebruikt worden zullen bepaalde kolommen niet geperforeerd worden. 13
3 PERFEDITOR 3.1
SITUERING
De huidige versie van de software PerfEditor[1] is ontwikkeld voor de Soenen perforatiepers in 2003. Via deze software kan een werktuig en een patroon geprogrammeerd worden. Nadat de werktuigen aangemaakt zijn en de patronen beschikbaar zijn, kan de CNC-code voor het maken van een perforatieplaat geschreven worden. Dit programma is een link tussen de CNC-code en de vereisten van het product. Hierdoor is het mogelijk om de CNC-code voor een product te genereren zonder de code te programmeren in de CNC-taal.
3.2
WERKING
De werking van de PerfEditor wordt kort toegelicht. Dit om een beter idee te creëren van de masterproef.
3.2.1 Werktuig PerfEditor heeft 3 tabbladen. Het eerste tabblad ‘Tool’ dient om een werktuig aan te maken.
Figuur 20 PerfEditor tabblad ‘Tool’
Via het tabblad tool wordt een werktuig in de database van de werktuigen geplaatst. Dit is belangrijk om later de CNC-code te genereren. In dit tabblad wordt gevraagd wat de naam van het werktuig is. Tevens moet weergegeven worden hoe groot de voeding is en wat de afstand is 14
tussen de verschillende kolommen. Verder wordt weergegeven hoeveel rijen er zijn en waar ze starten en stoppen. Y-max2
First Punch
Y-min2
X2
X
Distance Y
A B
Y
X1
Y-min1 Y-max1
Figuur 21 XY-coördinaten werktuig
In bovenstaande figuur zijn enkele afmetingen weergegeven die ingevuld moeten worden. Meer informatie is terug te vinden in de handleiding PerfEditor V5.00_English.
VSTR +
VSTR -
DSH PEG
LPL LPS
LEP
VSTR DSTR CL PE
DM
Figuur 22 Parameters stempels
De parameters uit bovenstaande figuur worden ook ingegeven bij het tabblad ‘werktuigen’. Deze parameters zorgen voor de afmetingen van de stempels, stripper, ondermatrijs en de verplaatsing van de stempels. Hierdoor zullen de stempels niet te diep in de perforatieplaat gedrukt worden. Meer informatie is terug te vinden in de handleiding PerfEditor V5.00_English.
3.2.2 Product Nadat de werktuigen gemaakt zijn en in de database opgeslagen zijn, kan een product aangemaakt worden. Dit gebeurt via het tweede tabblad ‘Product’. In dit tabblad zijn 3 grote blokken gemaakt: General, X-Zones en Y-zones.
15
Figuur 23 PerfEditor tabblad ‘Product’
Bij General worden de afmetingen van de perforatieplaat ingevuld. Ook de perforatiezone in de y-richting wordt daar ingevuld. Verder moet ingegeven worden of de afmetingen volgens het centerpunt ingegeven worden of volgens de rand van de perforaties. Er kan gekozen worden of de perforaties continu of via bepaalde zones moeten verlopen. Indien ‘continue’ geselecteerd is blijft de perforatiepers voortdurend perforeren zonder onderbrekingen uitgenomen wanneer de plaat moet afgesneden worden. Bij zones kunnen er onderbrekingen van perforaties voorzien worden. Er is ook een mogelijkheid om de plaat af te snijden op een bepaalde lengte. Het opgeslagen werktuig in de database kan opgevraagd worden en ingegeven worden bij ‘Tool Name’. Tot slot moet een naam voor het product gedefinieerd zijn zodat later het juiste product in de perforatiepers geladen wordt. Om het product beter te omschrijven is er een veld ‘Comment’ voorzien. Daar kan eventueel commentaar geplaatst worden. In het blok ‘X-Zones’ worden de verschillende zones volgens x-richting van de perforatieplaat ingevuld. Per zone wordt de voeding (Feed), het patroon (Pattern), de referentie (Ref.), BPZ en EPZ gevraagd. BPZ is het begin van de zone in de x-richting en EPZ is het einde van de zone in de x-richting. Daarnaast is er de mogelijkheid om subzones binnen een bepaalde zone te voorzien. Dit kan via de kolom #SZ. Indien verschillende zones zich herhalen voor een aantal keer binnen de perforatiezone, dan kan dit vereenvoudigd ingegeven worden door gebruik te maken van ‘Zonerepetition’ en ‘Zonelength’ binnen PerfEditor. In de ‘Zonerepetition’ wordt het aantal keer dat de zone terugkeert weergegeven. De ‘Zonelength’ zal de afstand weergeven wanneer de zone terugkeert. In het laatste blok ‘Y-Zones’ wordt bepaald hoe het werktuig gevuld moet worden met stempels. Er wordt nagegaan waar lange en korte stempels aanwezig moeten zijn en vanaf welke plaats de stempels starten.
16
Wanneer alle parameters van het product ingegeven zijn, wordt dit opgeslagen. Hiervoor maakt PerfEditor een XML-bestand1 aan. Later wordt er dieper op het XML-bestand ingegaan.
3.2.3 CNC-code Nadat alle parameters van het product ingegeven zijn, kan PerfEditor automatisch de CNC-code genereren. Daarna is het mogelijk om op een gebruiksvriendelijke manier de CNC-code te bekijken en aan te passen in het tabblad ‘Cnc’. Er is de mogelijkheid om nog commentaar bij te plaatsen. Wanneer de CNC-code in orde is, kan een preview van het product steeds bekomen worden. Dit is een grafische controle van het product uitgaande van de CNC-code.
Figuur 24 PerfEditor tabblad ‘Cnc’
De CNC-code die weergegeven wordt, is nog steeds een ‘high level’ CNC-code. Dit is zo om de gebruiker op een eenvoudige manier de CNC-code te begrijpen. De CNC-code kan ook teruggevonden worden onder een ‘low level’. In bijlage 1 is een afbeelding weergegeven van een ‘low level’ CNC-code.
3.2.4 XML-bestand Alle gegevens van het tabblad ‘Product’ en de eigenlijke CNC-code worden in het XML-bestand van het product geplaatst. Er werd gekozen voor een XML-bestand omdat dit een eenvoudige manier is om alle data te structureren. Een XML-bestand is enkel een tekstbestand dat opgemaakt is in een bepaalde standaard. Hierdoor is het mogelijk dat andere systemen een XML-bestand kunnen lezen. Dit is met een gewoon tekstbestand veel moeilijker. XML wordt veel toegepast om bestanden te versturen over het internet. Een XML-bestand zegt niet hoe de data 1
Extensible Markup Language bestand waarin gegevens worden verwerkt. 17
moet weergegeven worden op het scherm. Wanneer men toch wil dat dit meegegeven wordt, is het eenvoudiger om HTML1 te gebruiken. Hieronder wordt een voorbeeld weergegeven van een product in de vorm van een XML-bestand.
Figuur 25 XML-bestand Product
In het XML-bestand van het product zijn verschillende elementen en attributen weergegeven. Een element is een onderdeel van het document. Het eerste element is het ‘startelement’. Indien er elementen zitten onder het startelement, dan zijn dit ‘kinderelementen’ van het startelement. In het XML-bestand van het product is ‘General’ een kinderelement van het startelement ‘Product’. Een attribuut is een onderdeel van een element dat een naam of waarde heeft. In het XML-bestand van het product is ‘Toolname’ een attribuut van het element ‘General’. In bepaalde gevallen kan een attribuut ook een andere betekenis hebben. In dit XMLbestand van het product heeft het attribuut ‘Xzone’ verschillende onderdelen zoals AbsBPZ, AbsEPZ, AbsRel, Feed, Pattern en Punches. In het XML-bestand van het product is alles terug onderverdeeld in de 3 grote blokken General, X-Zones en Y-zones. Daarnaast is er ook een blok voor de CNC voorzien. Indien dit XML-bestand doorgestuurd wordt naar de perforatiepers zal deze perforatiepers het product kunnen maken.
1
HyperText Markup Language is een opmaaktaal voor de specificatie van documenten. 18
3.2.5 Voordelen PerfEditor heeft als grote voordeel dat de CNC-code automatisch gegenereerd wordt. Hierdoor is de applicatie gebruiksvriendelijk.
3.2.6 Nadelen Momenteel is er geen link tussen het patroon en het werktuig. Daardoor zijn er onmogelijke combinaties mogelijk want niet ieder werktuig kan elk patroon aannemen. Alle parameters moeten manueel ingevuld worden. Dit kan fouten veroorzaken.
19
4 SORTEERALGORITME 4.1
DOEL
Om automatisch een CAD-tekening om te zetten naar de bijhorende CNC-code is er nood aan bepaalde algoritmes. Het is belangrijk om na te gaan welk patroon er zich bevind in de gaten dat op de tekening staan. Door het ontwikkelen van een correct sorteeralgoritme[2] kan het programmeren van de CAM-software efficiënter verlopen. Er wordt van volgende veronderstellingen uitgegaan. Het sorteeralgoritme moet gebaseerd zijn op de middelpunten van de gaten op de tekening. Het sorteeralgoritme moet op elke tekening van een perforatieplaat een antwoord bieden. Het sorteeralgoritme moet in staat zijn om (sub)zones te detecteren via de gaten op de tekening. De tekening is nauwkeurig getekend. Het ontwikkelen van een 100% correct sorteeralgoritme is een complexe opdracht. Door het toepassen van het ontwikkelde sorteeralgoritme op allerhande tekeningen kan nagegaan worden of het sorteeralgoritme voor alle tekeningen een oplossing biedt. Indien dit niet zo is wordt het algoritme verbeterd of niet gebruikt. Er werd ook nagegaan of het sorteeralgoritme op basis van patroonherkenning[3] in multimedia kon gebruikt worden. Via Vision[4] is het mogelijk om zones en subzones van een tekening op te sporen. In eerste instantie wordt de tekening omgezet naar een afbeelding. Op die afbeelding wordt een tweede programma uitgevoerd die enkel naar de grafische eigenschappen van de tekening kijkt. Het programma werkt niet op basis van de centerpunten van de perforaties. Voor Vision zijn de exacte coördinaten van de perforaties niet belangrijk, maar wel dat de perforaties duidelijk merkbaar zijn, ook moeten de perforaties onderscheiden kunnen worden van andere objecten in de afbeelding zoals maataanduidingen, etc. Deze methode zou ook haalbaar zijn voor het vinden van de zones en subzones op een tekening. Na het bespreken van de mogelijke uitwerkingen met de firma Soenen werd gekozen om niet op basis van Vision de zones en subzones te bepalen.
20
4.2
ONTWIKKELEN
Het bepalen van een goed sorteeralgoritme is niet evident. Dit moet zeer efficiënt zijn en voor alle mogelijke perforaties een oplossing bieden. In eerste instantie zal nagegaan worden of het sorteeralgoritme een ‘Square’ of een ‘Parallel’ structuur heeft. In volgende figuur is het verschil tussen een perforatie in ‘Square’ en een perforatie in ‘Parallel’ weergegeven. Bij ‘Square’ is er geen verschuiving waar te nemen tussen de perforaties van de verschillende kolommen. Onder ‘Parallel’ wordt verstaan dat de kolommen van perforaties verschoven zijn ten opzichte van elkaar. Meestal is dit onder een hoek van 60°.
Parallel
Square
Figuur 26 PAR en SQR
Daarnaast zal onderzocht worden of er vooraf perforaties gemaakt worden voordat het eigenlijke patroon begint. Deze kunnen afkomstig zijn door de gagbars niet afzonderlijk te bedienen. Bij het afzonderlijk bedienen kunnen deze perforaties vooraf vermeden of opgevuld worden.
2 perforaties vooraf
1 perforatie vooraf
Figuur 27 Aantal perforaties vooraf
Vervolgens zal nagegaan worden of er subzones aanwezig zijn in de perforatiezone. Nadat dit onderzocht is zal het patroon bepaald kunnen worden. Om daarna het werktuig te selecteren zal nog meer informatie nodig zijn. Deze informatie wordt later verder uitgewerkt. Om een efficiënt sorteeralgoritme op te stellen worden er verschillende methodes onderzocht.
21
4.2.1 Methode 1 Aan de hand van de coördinaten van de cirkels en de afstanden tussen de cirkels kan een eenvoudig algoritme bekomen worden. 4.2.1.1
SQR of PAR controle Rij 2 Rij 1
Voorbeeld:
Kolom 1 Kolom 2 Δ 𝑋1 Δ 𝑋2 Δ 𝑋3 Δ 𝑋4 Δ 𝑋5 Δ 𝑋6 Figuur 28 SQR/PAR controle methode 1 1/2
1 2 3 4 5 6 7
aantal rijen opvragen in de eerste kolom (7 hier); aantal rijen opvragen in de tweede kolom (6 hier); x-coördinaat opvragen eerste rij, eerste kolom; x-coördinaat opvragen eerste rij, tweede kolom; als beide x-coördinaten gelijk zijn => SQR; (Δ 𝑋1 = 0); opnieuw maar voor tweede rij, tweede kolom(Δ 𝑋2 = 0); dit voor alle rijen van de tweede kolom doen; Kolom 1 Kolom 2 Δ 𝑋1 Δ 𝑋2 Δ 𝑋3 Δ 𝑋4 Δ 𝑋5 Δ 𝑋6 Figuur 29 SQR/PAR controle methode 1 2/2
22
8 zelfde als voorgaande maar nu vanaf de tweede rij in de eerste kolom; 9 dit voor alle rijen eerste kolom doen; 10 als SQR ooit tijdens dit onderzoek als uitkomst is geweest, dan is het antwoord SQR. Anders is het antwoord PAR. 4.2.1.2
Aantal perforaties voorafgaand bij PAR
Voorbeeld: Kolom 1
𝑦
Kolom 2 𝑥31
𝑥21
𝑥11
0
𝑥
𝑥12 Figuur 30 Perforaties vooraf PAR methode 1
1 2 3 4
5
x-coördinaat eerste rij van de eerste kolom opvragen (hier 𝑥11 ); x-coördinaat eerste rij van de tweede kolom opvragen (hier 𝑥12 ); kijken welke x-coördinaat het grootst is ( bij negatieve waarden is -1 groter dan -5); indien de x-coördinaat van de eerste kolom groter is dan die van de tweede kolom: kijken of 𝑥11 groter is dan 𝑥12 (normaal moet dit zo zijn want deze voorwaarde werd in puntje 3 al onderzocht; o Indien dit zo is, dan ligt de perforatie zeker voor de start van de eerste perforatie in de tweede kolom; kijken of 𝑥21 groter is dan 𝑥12 ; o Indien dit zo is, dan ligt de perforatie zeker voor de start van de eerste perforatie in de tweede kolom; dit doen voor alle rijen van de eerste kolom; Het aantal keer dat de x-waarde van de eerste kolom groter is dan de x-waarde van de eerste rij in de tweede kolom is de uitkomst (hier 2); indien de x-coördinaat van de tweede kolom groter is dan die van de eerste kolom: zelfde als voorgaand maar dan omgekeerd te werk gaan. Waarden van de rijen in de tweede kolom vergelijken met x-waarde van de eerste rij in de eerste kolom.
4.2.1.3
Voordelen van deze manier van werken
Bij het foutief tekenen van een cirkel zal dit vlug opgemerkt worden en kan er een waarschuwing volgen. De gegevens van de cirkels zullen nog nodig zijn om de correcte tools te bepalen.
23
4.2.1.4
Nadelen van deze manier van werken
Enorm veel bewerkingen maken vooraleer een goed besluit genomen kan worden. Hierdoor is de efficiëntie niet meer optimaal. Veel gegevens kunnen voor verwarring zorgen bij de programmering ervan. Bij een probleem in de gegevens duurt het zelfstandig zoeken naar de fout lang. Slechts de eerste twee rijen worden gecontroleerd op de positie van de cirkels. Bij subzones treden er grote problemen op. Deze data zijn dan niet meer geldig. Met de gegevens om SQR of PAR te bepalen is het niet mogelijk om het aantal perforaties vooraf te bepalen. Hiervoor moeten nieuwe gegevens opgevraagd worden.
4.2.2 Methode 2 In deze methode wordt niet elke cirkel afzonderlijk bekeken. De bewerkingen die het algoritme bepalen zijn gebaseerd op de kolommen en rijen van de cirkels. De waarden van de kolommen worden bekomen door iedere y-waarde waarop een cirkel bestaat als een kolom te aanzien. De rijen worden bepaald door de eerste cirkel te bekijken en deze in een rij te brengen. Hetzelfde geldt met de volgende cirkel. Daarna deelt men de afstand tussen deze twee cirkels en zal gecontroleerd worden of daar opnieuw cirkels liggen. Hierdoor kan nagegaan worden of het patroon van het type SQR of PAR is. 4.2.2.1
SQR of PAR controle
Voorbeeld PAR:
Aantal rijen in een kolom 7 6 7 6 7 6 7 6
4 4
4
4 4
4 4 4
4 4
4
4 0 4
Aantal kolommen in een rij Figuur 31 SQR/PAR controle methode 2
24
Voorbeeld SQR:
Aantal rijen in een kolom
Bij SQR is dit anders.
7 6 7 6 7 6
64 0 6 0 6 0 6 0 6 0 6
0 3
Aantal kolommen in een rij Figuur 32 Voorbeeld SQR methode 2
Als de som van de rijen 2, 4, 6, etc. gelijk is aan 0, dan is het patroon SQR. Anders is het PAR. 4.2.2.2
Subzones Subzone
Voorbeeld
Aantal rijen in een kolom
2 2 4
4 3
Kolomnummer
7
1
4
2
6
3
4
4
7
5
6
6
5
7
6
8
4 4
4
4 2
4
4
4
Aantal kolommen in een rij
1 1 3 2
1 1
1 9 8 7 6 5 4 3 0
2
1
Rijnummer
Figuur 33 Voorbeeld subzones methode 2
25
Door de vele varianten is het moeilijk om een goed algoritme te vinden dat alle subzones kan detecteren. Met de huidige gegevens kan niet de exacte locatie van een subzone bepaald worden. Hierdoor is er nood aan een extra gegevenstabel die de subzones bepaalt. Iedere rij heeft een oplopend nummer. Deze kunnen al bij het programmeren verkregen worden door het aantal kolommen van een rij in een array te plaatsen. Vervolgens zal iedere kolom doorzocht worden op gaten. Is de Δx van een bepaalde kolom anders, dan zal nagegaan worden of er een perforatie niet aanwezig is. Indien dat zo is dan wordt deze waarde in een tabel gestopt volgens rijwaarde. Uit voorgaand voorbeeld wordt volgende tabel verkregen: Kolomnummer subzone
Laatste rijnummer voor subzone
Eerste rijnummer na subzone
2
0
3
4
0
3
6
0
3
8
0
3
2
5
11
3
6
10
4
5
11
7
2
6
7
6
10
(1)
(2)
Tabel 2 Subzones methode 2
Indien de tabel bestudeerd wordt dan zal deze als volgt gelezen worden: Voor (1) De vierde kolom zal pas starten aan rijnummer 3. Voor (2) De derde kolom zal geen perforaties meer vertonen na rijnummer 6 en zal terug starten bij rijnummer 10. 4.2.2.3
Aantal perforaties voorafgaand
Door de subzones te bepalen kan in de tabel van de subzones nagegaan worden of er al dan niet perforaties zijn voorafgegaan.
26
4.2.2.4
Voordelen van deze manier van werken
Op een eenvoudige manier kunnen subzones weergegeven worden. De arrays van de kolommen en de rijen zijn veel overzichtelijker dan bij de array met alle perforaties in. Bewerkingen op de arrays van de kolommen en rijen zijn veel sneller dan bij de array die alle perforaties bevat.
4.2.2.5
Nadelen van deze manier van werken
Moeilijk om de array van de rijen te coderen. Dat komt omdat bij SQR er telkens een nul geplaatst moet worden tussen de rijen. Anders kan geen onderscheid gemaakt worden tussen SQR of PAR.
Hieronder is een voorbeeld weergegeven: SQR
PAR Aantal rijen in een kolom
Aantal rijen in een kolom
3
3
3
3 3
3
3
3
3
3
3
3
34
3
3
3
3
Aantal kolommen in een rij
3
3 3
3 3
3
3
Aantal kolommen in een rij Figuur 34 Probleem methode 2
De array van de rijen en de kolommen is zowel bij SQR als bij PAR identiek.
De arrays zijn vlugger ingevuld ten opzichte van vorige methode, maar zullen niet veel informatie bieden. De tijd die gebruikt werd om de array te bouwen is dus niet echt nuttig.
27
4.2.3 Methode 3 Deze methode is bijna identiek aan de 2de methode. Het grote verschil is dat in plaats van het aantal perforaties per kolom, er met de Δx-waarde tussen de perforaties wordt gewerkt. Deze Δx-waarden worden opgeslagen in een array. Δ 𝑋1 Δ 𝑋2
Δ 𝑋1 Δ 𝑋2
Δ 𝑋3 Δ 𝑋4
Δ 𝑋1 Δ 𝑋2
Δ 𝑋2
Δ 𝑋1 Δ 𝑋2
Δ 𝑋3𝑠1
Δ 𝑋3 Δ 𝑋4
Δ 𝑋1
Δ 𝑋4
Δ 𝑋4
Δ 𝑋2 Δ 𝑋3
Δ 𝑋4
Δx1 k1 k2 Δx2 = k3 Δx3 , Δx3s1 k4 Δx4
Δ 𝑋1
Δ 𝑋3 Δ 𝑋4
Figuur 35 Tabelleren kolommen methode 3
Slechts bij (sub)zones zal de Δx variëren. Dus in dit voorbeeld zou Δx1 = Δx2 = Δx3 = Δx4 . 4.2.3.1
Geen (sub)zones
Wanneer er geen (sub)zones zijn, is iedere Δx gelijk. Dit betekent ook dat in het voorbeeld er geen Δx3s1 aanwezig is.
4.2.3.1.1
SQR of PAR D
C
B
A
Figuur 36 SQR of PAR controle methode 3
Bovenstaande uitwerking kan toegepast worden om na te gaan of het patroon SQR of PAR is. Telkens wordt onderzocht of er zich tussen twee cirkels van dezelfde kolom nog andere cirkels bevinden. Indien een cirkel gevonden wordt, is het patroon PAR. Indien nergens een cirkel gevonden wordt, is het patroon SQR. In bovenstaand voorbeeld wordt eerst nagegaan of er zich cirkels tussen A en B bevinden. Indien geen cirkels gevonden zouden worden, dan wordt gekeken tussen B en C. Dit blijft zo verder gaan voor alle rijen van de bovenste twee kolommen. In dit voorbeeld zijn er cirkels gevonden tussen A en B, dus is het patroon PAR. 28
Per zone wordt deze methode uitgevoerd om na te gaan of het PAR of SQR is. Het is best mogelijk dat er twee zones zijn met een verschillend patroon SQR of PAR. Dit is nogmaals geïllustreerd in volgend voorbeeld. D
C
B
A
D
PAR
C
B
A
SQR Figuur 37 SQR of PAR voorbeeld methode 3
Op bovenstaand voorbeeld is een perforatieplaat weergegeven met twee zones. De eerste zone is PAR en de tweede zone is SQR. 4.2.3.2
Subzones of nieuwe zones
Om de juiste Δx te bepalen die geen subzone is, wordt de lijst Δx1 k1 k Δx bekeken en de Δx die het meest voorkomt bepaalt de normale 2 2 = k Δx , Δx 3 3 3s1 afstand tussen de perforaties. Indien deze afstand verandert, wordt k4 Δx 4 van een subzone gesproken. Indien in iedere kolom twee Δxwaarden staan, zal nagegaan worden of deze Δx-waarden in iedere Vergelijking 1 2-dimensionale kolom dezelfde zijn. Indien deze zo zijn, wordt gesproken van een array methode 3 nieuwe zone. Om zeker te zijn dat er geen vergissing begaan wordt, zal het nogmaals gecontroleerd worden bij een tweede tabel. De tweede tabel bevat de locaties van de subzones of nieuwe zones. Als de tweede Δx-waarden op dezelfde lijn starten, is het zeker een nieuwe zone.
4.2.3.2.1
De subzone tabel
Om de subzones een locatie te geven worden deze in een tabel geplaatst. Dit idee is afkomstig van de tweede methode.
29
𝑦 perforatieplaat Δ 𝑋1 Δ 𝑋2
Δ 𝑋1 Δ 𝑋2
Δ 𝑋3 Δ 𝑋4
Δ 𝑋1 Δ 𝑋2
Δ 𝑋2
Δ 𝑋1 Δ 𝑋2
Δ 𝑋3𝑠1
Δ 𝑋3 Δ 𝑋4
Δ 𝑋1
Δ 𝑋4
Δ 𝑋4
𝑥2
Δ 𝑋1 Δ 𝑋2
Δ 𝑋3 Δ 𝑋4
Δ 𝑋3 Δ 𝑋4
𝑥1
𝑜
𝑥
Figuur 38 Bepalen subzones methode 3
Δx1 = Δx2 = Δx3 = Δx4 In dit voorbeeld is Δx3s1 niet gelijk aan de andere Δx − waarden. Deze is dus een subzone. kolom
X-waarde start subzone
𝐤𝟑
X-waarde einde subzone
𝑥1
𝑥2
Tabel 3 Subzones methode 3
4.2.3.2.2
SQR of PAR bij subzones
De SQR of PAR controle wordt op dezelfde manier berekend als bij de methode waar geen subzones aanwezig zijn. Er is nog meer controle nodig bij de subzones zelf. Hier wordt niet dieper op ingegaan omdat de subzones tijdens deze masterproef enkel gedetecteerd worden, maar niet worden uitgewerkt.
4.2.3.2.3
Controle haalbaarheid subzones
Momenteel worden de subzones enkel gecontroleerd op aanwezigheid. Indien er subzones op de tekening gevonden worden, dan zal de gebruiker hiervan op de hoogte gebracht worden. Daar wordt niet dieper op ingegaan. Niet alle subzones kunnen voorkomen wegens de beperkingen van de stempels. Dit wordt momenteel nog niet gecontroleerd op haalbaarheid. Hieronder is een voorbeeld weergegeven van een perforatiezone met subzones die niet haalbaar is om te creëren. De subzones uit onderstaand voorbeeld zijn niet realiseerbaar voor de stempels. Dit komt omdat de stempels enkel bestaan uit lange en korte stempels.
30
Figuur 39 Voorbeeld van de haalbaarheid subzones
4.2.3.3
Nieuwe zones of subzones zijn gemakkelijk te detecteren door de tabel met de Δxwaarden te bestuderen. De gegevens die gebruikt worden om SQR en PAR te controleren, kunnen ook gebruikt worden om het aantal perforaties vooraf te detecteren. De Δx-waarden kunnen ook gebruikt worden om later de tools te detecteren. De perforatiesnelheid kan hieruit ook afgeleid worden. Er zijn geen Δy-waarden nodig om SQR en PAR te controleren; De gebruikte tabellen zijn behoorlijk klein. Het aantal bewerkingen is relatief laag. Bijgevolg is de snelheid van het sorteeralgoritme hoog.
4.2.3.4
Voordelen
Nadelen
Bij het gebruik van subzones zijn nog steeds 2 tabellen nodig. Wanneer de subzones in groot aantal voorkomen zal de tabel van de subzones ook groot worden. De controle of de subzones haalbaar zijn voor de perforatiepers zit nog niet ingewerkt in de huidige algoritmen. Hiervoor moet nog een extra algoritme gevonden worden. Wegens de complexiteit werd beslist dat subzones nog niet aan het programma toegevoegd moesten worden.
31
4.2.4 Besluit Er wordt voor de derde methode gekozen omdat deze geschikt is om later subzones toe te voegen. Er kan verder gebouwd worden op het huidig algoritme. Ook de snelheid waarmee het algoritme toegepast wordt, is hoog genoeg voor een optimale werking. Uit de tabel van de kolommen wordt een nieuwe tabel van de zones gemaakt. Hierin wordt per zone de beginwaarde van de zone en de eindwaarde van de zone in x-richting meegegeven. Dit zijn steeds absolute waarden ten opzichte van de perforatieplaat. Ook de afstand tussen twee perforaties in de x-richting per zone wordt meegegeven. Dit zijn steeds de afstanden tussen de middelpunten van de cirkels.
32
5 CAM-SOFTWARE 5.1
BESCHRIJVING
Nadat het vooronderzoek gebeurd is van het sorteeralgoritme, kan de CAM-software gemaakt worden. Deze software heeft als doel om een CAD-tekening van de perforatieplaat automatisch om te zetten naar de CNC-code voor de perforatiepers. Hierbij zijn enkele eisen vooropgesteld.
5.2
5.3
EISEN De firma Soenen Werkhuizen wil in de nabije toekomst de nieuwe software ontwerpen in de programmeertaal C#. Hierdoor is het aangewezen om de CAM-software in C# te schrijven. De CAM-software moet gebruikt worden binnen de AutoCAD 2010 omgeving. De software moet gebruikersvriendelijk zijn. Iemand die niet weet welke werktuigen gebruikt kunnen worden voor het vervaardigen van het product, moet toch in staat zijn een correcte CNC-code te genereren. De gebruiker van de CAM-software moet feedback krijgen wanneer bepaalde keuzes gemaakt worden. De code van de software bevat commentaar die in het Engels geschreven is. De software moet in het Engels geschreven zijn. De software moet op alle tekeningen van het product automatisch de juiste CNC-code genereren. Indien er perforaties buiten de perforatieplaat liggen, moet de gebruiker van de CAMsoftware hiervan op de hoogte gebracht worden. Het sorteeralgoritme moet toegepast worden. De verschillende zones moeten gedetecteerd kunnen worden en weergegeven worden. Subzones kunnen gedetecteerd worden. Nagaan of het geselecteerde standaardpatroon past met het patroon van de tekening. Alle mogelijke patronen weergeven waaruit een selectie gemaakt wordt. Alle mogelijke werktuigen voor dat product weergeven. De link tussen het werktuig en het patroon moet in de CAM-software aanwezig zijn. In PerfEditor is dat nog niet aanwezig. Het XML-bestand van het product moet automatisch aangemaakt kunnen worden. Het XML-bestand van het product moet ingeladen kunnen worden in PerfEditor. Via PerfEditor kan dan de uiteindelijke CNC-code toegevoegd worden aan de tekening.
EIGEN KEUZES
Er wordt gebruik gemaakt van ‘AutoCAD 2010 student version’ omdat dat een gratis versie is van AutoCAD voor studenten. Er werd gekozen om het .NET-framework te gebruiken omdat dit snel applicaties kan compileren. Een ander voordeel is dat veel standaardfuncties[5] aanwezig zijn in .NET zodat het eenvoudiger wordt om een programma te maken. Het .NET-framework bevat CLR1. Dit is de 1
Common Language Runtime 33
virtuele machine van .NET. Bij het gebruik van CLR wordt in een hogere programmeertaal geschreven zoals C# of VB.NET. CLR zorgt ervoor dat het programma niet meer hardwareafhankelijk is. Hierdoor kan dit op ieder willekeurig systeem uitgevoerd worden. Nadeel van de CLR is dat de applicatie iets trager zal verlopen. Als naam voor de software werd PerfCAM gekozen omdat uit de naam onmiddellijk afgeleid kan worden dat het een CAM-software is voor de perforatiepers. Een volgende keuze was het gebruik van ‘doubles’. Dit werd gekozen omdat een double 64-bit data bevat. Een decimaal bevat 128-bit data maar de grote nauwkeurigheid van een decimaal is in deze software niet noodzakelijk. Een double is een floating-point zodat kommagetallen gebruikt kunnen worden. De nauwkeurigheid van een double is 16 numerieke waarden wat voldoende is voor deze software. De firma Soenen werkt nagenoeg altijd met ‘doubles’ waardoor het voor de firma beter is ook ‘doubles’ in deze software te gebruiken. In de code werden waarden van variabelen opgevraagd via het commando ‘get’. Soms kunnen de variabelen weggeschreven worden vanuit een andere klasse via het commando ‘set’. Hierdoor kunnen de variabelen binnen de klasse blijven en is de data niet rechtstreeks bereikbaar. Zo kan ervoor gekozen worden om bepaalde klassen de toestemming te geven om een variabele te lezen maar niet om deze aan te passen. Het gebruik van ‘list<>’1 binnen C# is zeer handig voor deze software omdat vooraf moeilijk kan bepaald worden hoeveel cirkels opgevraagd worden. Er bestaat binnen C# geen dynamische array. Via een ‘list’ kunnen telkens elementen toegevoegd worden zonder de ‘list’ vooraf een bepaalde grootte te geven. Een ‘list’ bestaat uit data die verbonden wordt met elkaar via een index. Onderstaand voorbeeld is een ‘list’ met drie ‘doubles’. 1,3
7,4
3,8 Figuur 40 List
Een ‘list’ is nieuwer dan een ‘arraylist’. Een ‘arraylist’ bestaat al sinds het begin van .NET terwijl een gewone ‘list’ slechts in .NET 2.0 toegevoegd werd. ‘list’ is sneller dan ‘arraylist’ en ‘type-safe’ (bevat enkel integers, ‘doubles’, etc.). Doorgaans is een ‘list’ eenvoudiger in gebruik dan een ‘arraylist’. De software werd ontwikkeld met behulp van Microsoft Visual Studio 2008. Hierin is het mogelijk om een applicatie te maken en te debuggen binnen een andere software. Zo werd ingegeven dat wanneer de ontwikkelde software gedebugd moest worden, het moest gebeuren binnen de software AutoCAD. Binnen Visual Studio kunnen referenties meegegeven worden. Hierdoor kunnen standaardfuncties en complexe functies om applicaties te schrijven binnen AutoCAD ingevoegd worden.
1
Een list is een lijst waarin elementen opgeslaan worden. Deze lijst kan steeds verder aangroeien. 34
5.4
OPBOUW CAM-SOFTWARE
Vooraleer de software geschreven wordt, moeten de grote bouwstenen van de software vastgelegd worden. Vanuit de bouwstenen wordt de software geschreven. Hieronder volgt een schema van de grote bouwstenen met bij elke bouwsteen de nodige uitleg om tot de softwarecode te komen.
CAD-tekening van het product voor de perforatiepers
Opstarten PerfCAM
Coördinaten perforaties en perforatieplaat vastleggen
Zones bepalen van de perforatieplaat
Sorteeralgoritme toepassen op de perforaties
Sorteren van de perforaties
Patroon van de zones bepalen van de patronen uit de database
Mogelijke werktuigen voor het product bepalen
Controle of patronen haalbaar zijn met geselecteerde werktuig
Creëer XML-file van het product
Nagaan of alles correct is ingevuld
First punch berekenen
Figuur 41 Bouwstenen CAM-software
5.4.1 CAD-tekening De gebruiker van de CAM-software heeft het programma AutoCAD nodig om daarin de CAMsoftware te gebruiken. Het tekenen van de CAD-tekening of het inladen ervan heeft niks met de CAM-software zelf te maken. De tekening moet wel ingeladen of getekend worden in AutoCAD. 35
Hierdoor kunnen slechts bepaalde formaten ingevoegd worden. Enkel bestanden van het type DWG, DWF, DXF, DWS en DWT zijn toegelaten. De ingeladen tekening mag meer bevatten dan enkel de perforatieplaat en zijn perforaties. Er mogen maataanduidingen op de tekening staan, cirkels buiten de perforatieplaat, randinformatie, etc. De tekening mag om het even welke lay-out hebben. De kleur van de lijnen is gelijk. De perforatieplaat moet getekend zijn met behulp van één enkele lijn of meerdere lijnen. De getekende cirkels die de perforaties voorstellen mogen tot twee maal toe in een blokreferentie1 geplaatst worden. Daarna zal de CAM-software de cirkels niet meer terugvinden. In bijlage 2 is een printscreen van AutoCAD met een ingeladen technische tekening weergegeven.
5.4.2 Inladen en opstarten PerfCAM Bij het opstarten van AutoCAD wordt PerfCAM ingeladen. De software die in .NET geschreven werd, is omgezet in een .dll-bestand2. Dit bestand kan automatisch in AutoCAD ingeladen worden. Om ervoor te zorgen dat AutoCAD niet meteen vastloopt in de testfase van het programma, wordt dit .dll-bestand nog manueel ingebracht. Dit gebeurt via het commando NETLOAD binnen AutoCAD. Daarna kan het .dll-bestand geselecteerd worden. Nadat de tekening gemaakt of ingeladen is, wordt de CAM-software uitgevoerd. Het is steeds veiliger indien de tekening nogmaals opgeslagen werd vooraleer de CAM-software uit te voeren. Via het commando PerfCAM wordt het programma opgestart. Dit is meteen merkbaar door de user interface3 die zichtbaar wordt. De volgende figuur toont een printscreen van de user interface. De termen in de user interface zijn steeds in het Engels omdat 98% van de perforatiepersen bij Soenen in het buitenland gebruikt worden. De user interface bestaat uit twee grote zones. De zone ‘General’ en de zone ‘X-Zones’. Bij ‘General’ worden de algemene gegevens van de perforatieplaat ingevuld en is er mogelijkheid om commentaar te geven. Het is mogelijk om bij ‘General’ het werktuig in te vullen en ‘first punch4’ wordt er ook weergegeven. Bij ‘X-Zones’ zullen de verschillende zones met daarbij de nodige informatie zoals het patroon weergegeven worden. De user interface heeft de naam PerfCAM en bevat het icoon van Soenen.
1
Verschillende objecten van een tekening worden samengevoegd tot 1 object. Dynamic Link Library is een uitvoerbaar bestand dat door programma's wordt gebruikt om code en andere bronnen te delen. Deze zijn nodig om bepaalde taken uit te voeren. 3 Op een grafische manier interactie voorzien tussen de gebruiker en de computer. 4 Locatie van de eerste stempel in het werktuig. 36 2
Figuur 42 User interface CAM
Nadat de user interface ingeladen is kunnen enkele velden ingevuld worden. Deze velden bevinden zich onder ‘General’. Product Name
Hiermee kan het juiste XML-bestand van het product teruggevonden worden nadat het gecreëerd werd. De naam van het XML-bestand is dezelfde als de tekst die ingevuld werd bij Product Name.
Comment
In het veld Comment is er de mogelijkheid om commentaar te plaatsen. Deze commentaar wordt ook opgenomen in het XML-bestand dat op het einde gecreëerd wordt.
5.4.3 Coördinaten perforaties en perforatieplaat 5.4.3.1
Vroeger onderzoek
In het begin van de masterproef werd nagegaan of het mogelijk was om de coördinaten van een CAD-tekening op te vragen. Hiervoor werd een testprogramma geschreven dat de coördinaten van de geselecteerde cirkels van de tekening weergeeft in een lijst. De radius werd ook reeds opgevraagd en weergegeven. Om dit te bekomen moesten enkele referenties naar bestanden van AutoCAD in Visual Studio geladen worden. Die bestanden zijn bibliotheken die standaardfuncties en complexe functies bevatten om software te schrijven voor AutoCAD. De bestanden bevinden zich in de directory van AutoCAD. De gebruikte bestanden van AutoCAD voor visual studio zijn: - AcCUI - AcDbMgd - AcMgd - Autodesk.AutoCAD.Interop - Autodesk.AutoCAD.Interop.Common
37
Wanneer de bestanden ingevoegd werden, konden functies[6] voor AutoCAD gebruikt worden. Hieronder is een voorbeeld van een dergelijke functie geschreven. Deze functie heeft als doel om onderdelen op een AutoCAD tekening te selecteren door de gebruiker. Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; PromptSelectionResult psrselection = ed.GetSelection();
Onderstaande figuur geeft de user interface weer van het testprogramma. Wanneer op start geklikt wordt dan werden bovenstaande coderegels uitgevoerd. Hierdoor konden alle cirkels geselecteerd worden waarvan men de coördinaten wenste te weten. De code van het testprogramma wordt niet uitgewerkt omdat deze ongeveer dezelfde is als de code voor het ophalen van de gaten in PerfCAM.
Figuur 43 GUI test Coördinaten
Uiteindelijk werd erin geslaagd om de coördinaten van de geselecteerde cirkels op te vragen uit de database1 van AutoCAD en weer te geven. De radius werd ook reeds ingevuld bij Perforation Width. Dit was om na te gaan of er bewerkingen op de coördinaten konden gebeuren.
1
Een digitaal opgeslagen archief van gegevens. Het grote voordeel is het efficiënt raadplegen van de gegevens. 38
5.4.3.2
Coördinaten binnen PerfCAM
Om alle afmetingen van het product te weten zijn de perforatieplaat en de perforaties van de tekening nodig.
5.4.3.2.1
Coördinaten Perforatieplaat
Er worden twee acties gedaan om de controle uit te voeren dat de perforaties binnen de perforatieplaat liggen. Bij de eerste actie wordt de perforatieplaat geselecteerd. Dit gebeurt nadat op de knop ‘Perforation Plate’ van de UI geklikt werd. Het is niet mogelijk om op de knop ‘Get Holes’ te klikken vooraleer de perforatieplaat geselecteerd is.
Figuur 44 Knoppen Perforation Plate en Circles
Nadat op de knop ‘Perforation Plate’ gedrukt is, verdwijnt de UI. De computermuis pointer verandert in een vierkant wanneer de computermuis in het tekengebied van AutoCAD komt. Alle objecten kunnen nu geselecteerd worden van de CAD-tekening. Het commando ALL selecteert alle objecten van de tekening. De perforatieplaat moet in deze geselecteerde objecten zitten. Het is niet toegestaan dat de perforatieplaat een blokreferentie is. De perforatieplaat moet bestaan uit enkele lijnen of meervoudige lijnen. Dit werd al vermeld bij het aanmaken van de CAD-tekening. Er mogen nog lijnen of meervoudige lijnen in de perforatieplaat geselecteerd worden. Het is niet toegestaan dat lijnen of meervoudige lijnen buiten de perforatieplaat geselecteerd worden. De software zal de buitenste lijnen als de perforatieplaat beschouwen. De volgende figuur geeft enkele voorbeelden weer die juist of verkeerd zijn. Voorbeelden (a) en (c) zijn juist en voorbeelden (b) en (d) zijn verkeerd. Dit omdat telkens de buitenste lijnen de perforatieplaat voorstellen. De coördinaten van de perforatieplaat zijn steeds de grootste coördinaten die gevonden worden van de lijnen. Zo zal voorbeeld (c) van de figuur de coördinaten van het vierkant, dat in streeplijnen is getekend, krijgen. 39
Perforatieplaat
(a)
Perforatieplaat
(b)
Perforatieplaat Perforatieplaat
(c)
(d)
Figuur 45 Voorbeelden selectie perforatieplaat
Na de selectie van de perforatieplaat kan via de toets ‘enter’ terug naar de UI gegaan worden. Indien niets geselecteerd is, dan wordt hiervan een foutmelding gegeven via een messagebox. Hieronder is deze messagebox afgebeeld.
Figuur 46 Messagebox selecteer perforatieplaat
Indien de perforatieplaat correct geselecteerd is, zullen de uiterste coördinaten gebruikt worden om de lengte en breedte van de perforatieplaat te berekenen. Als dit berekend is, worden deze waarden weergegeven in de zone ‘General’ bij ‘Plate Length’ en ‘Plate Width’. De waarde is afgerond tot 4 cijfers na de komma, maar zal weergegeven worden tot 6 cijfers na de komma.
Figuur 47 Screenshot UI Plate Length en Plate Width
40
5.4.3.2.2
Coördinaten cirkels
Na het selecteren van de perforatieplaat en het bepalen van de breedte en lengte, kunnen de perforaties zelf ook geselecteerd worden. De perforaties moeten van het type ‘circle’ zijn in AutoCAD. De cirkels mogen wel tot tweemaal toe in een blokreferentie geplaatst worden. Veel perforatieplaten zijn op deze manier getekend omdat het veel vlugger gaat dan wanneer telkens de cirkels apart getekend worden. Dit werd ook al vermeld bij CAD-tekening. Er mogen meerdere objecten geselecteerd worden. Let wel op voor boorgaten die nadien in de perforatieplaat worden aangebracht. Indien deze op de tekening staan zou PerfCAM dit aanzien als een perforatie. De cirkels kunnen geselecteerd worden op de tekening nadat de perforatieplaat ingegeven is. Vanaf dat ogenblik is het mogelijk om op de knop ‘Select Circles’ te klikken in de UI. Het selecteren van alle objecten gebeurt op dezelfde manier als bij het selecteren van de perforatieplaat. De database van de geselecteerde objecten wordt opgevraagd en daarop kunnen bewerkingen uitgevoerd worden. Een eerste bewerking is het nagaan of er cirkels en blokreferenties aanwezig zijn. Indien er cirkels aanwezig zijn, dan worden de coördinaten van elke gevonden cirkel opgeslagen in een ‘list’ van arrays die ‘doubles’ bevat. Onderstaande figuur geeft dergelijke ‘list’ weer. De straal van de eerste cirkel wordt ook opgeslagen. Deze straal wordt dan omgezet naar de diameter en ingevuld in de UI onder ‘Perforation Diameter’. Dit is voor de gebruiker eenvoudiger omdat op deze manier onmiddellijk de breedte van de stempels kan afgelezen worden. [ X-coördinaat C1, Y-coördinaat C1] [ X-coördinaat C2, Y-coördinaat C2] [ X-coördinaat C3, Y-coördinaat C3] [ X-coördinaat C4, Y-coördinaat C4] [ X-coördinaat C5, Y-coördinaat C5] [ X-coördinaat C6, Y-coördinaat C6] [ X-coördinaat C7, Y-coördinaat C7] Figuur 48 List coördinaten cirkels
De blokreferenties worden gedegroepeerd in een nieuwe lijst en daarop wordt terug hetzelfde onderzoek gedaan. Zijn er cirkels aanwezig of blok referenties? De gevonden cirkels worden terug bij de lijst van cirkels gevoegd. De blokreferenties worden terug gedegroepeerd in een nieuwe ‘list’. Na de tweede keer dat de blokreferenties gedegroepeerd zijn, wordt enkel nog naar cirkels gezocht. Eventuele blokreferenties worden niet verder onderzocht. Indien geen cirkels gevonden werden zal een messagebox de melding geven ‘no circles selected’. Als er cirkels buiten de geselecteerde perforatieplaat liggen, zal de melding ‘holes outside perforationplate’ weergegeven worden. De cirkels buiten de perforatieplaat worden niet in de lijst met coördinaten geplaatst. 41
In bijlage 3 is een flowchart1[7] toegevoegd die het ophalen van de cirkels en het plaatsen ervan in een ‘list’ weergeeft.
5.4.3.2.3
Right Border, Left Border en Perforation Width
De Right Border, Left Border en Perforation Width worden ook berekend. Left Border Perforation Width
y
Right Border x Figuur 49 Left Border, Right Border en Perforation Width
De x-richting is altijd dezelfde als de richting waarin de perforatieplaat door de perforatiepers schuift. Links van de pijl is de Left Border en rechts van de pijl is de Right Border. In bovenstaande figuur is de bovenkant van de plaat de Left Border en de onderkant is dan de Right Border. Eerst wordt van alle cirkels, vooraleer ze opgeslagen worden in de lijst van de coördinaten, ook nagegaan of die cirkel een grotere/kleinere y-waarde of x-waarde heeft dan de andere opgeslagen cirkels. Hieruit worden de maximum en minimum y-waarde en de maximum en minimum x-waarde gehaald. Deze waarden worden opgeslagen. De Left Border, Right Border en Perforation Width is eenvoudig te berekenen doordat alle maximum en minimum waarden van de perforaties en de coördinaten van de perforatieplaat gekend zijn. Als controle zou de waarde van de plaatbreedte gelijk moeten zijn aan de waarden van de perforatiebreedte met de twee Borders.
1
Een flowchart is een schematische voorstelling van een proces. 42
Figuur 50 PerfCAM Left Border, Right Border en Perforation Diameter
5.4.3.2.4
Controle cirkels en perforatieplaat
Er wordt nagegaan of de cirkels binnen de perforatieplaat liggen of erbuiten vallen. Telkens wanneer een cirkel bij de lijst van cirkels gevoegd wordt, wordt de ligging van de cirkel bekeken ten opzichte van de perforatieplaat. Vandaar dat het belangrijk is om te weten waar de perforatieplaat ligt en dat eerst de perforatieplaat geselecteerd moet worden. Indien de cirkels geselecteerd zijn en de perforatieplaat opnieuw ingegeven wordt, dan worden de velden: Perforation Width, Left Border, Right Border, Perforation Diameter, First Punch en Tool Name leeg gemaakt.
5.4.4 Sorteren perforaties Om de zones en de subzones te bepalen wordt veel gebruik gemaakt van de lijst met coördinaten. Hierdoor is het handig als die lijst gesorteerd is. In .NET is een functie Icomparer ingebouwd. Hiermee kan eenvoudig een lijst van coördinaten gesorteerd worden. Hiervoor maakt .NET gebruik van het QuickSort algoritme. QuickSort sorteert de cijfers op basis van recursie en omwisseling. Wanneer er een lijst van coördinaten gesorteerd moet worden, dan gebeurt dit eerst op basis van de x-coördinaat. Het middelste element van de lijst is de spilwaarde. Rond de spilwaarde wordt gezocht naar een coördinaat die groter is dan de waarde van de spil aan de linker kant en een coördinaat die kleiner is dan de waarde van de spil aan de rechter kant. Deze cirkels worden dan omgewisseld. Dit wordt gedaan tot de pointers terug in het midden bij de spilwaarde zijn. Alle gegevens zijn dan links van de spil kleiner dan rechts van de spil. QuickSort wordt nu terug toegepast op de linkerkant van de spil en op de rechterkant van de spil met terug telkens een spilwaarde in het midden van die kant. Zo gaat dit verder tot de QuickSort nog moet uitgevoerd worden over slechts 1 coördinaat. Hieronder is een voorbeeld weergegeven van een QuickSort op een lijst van integerwaarden.
43
Nadat alle cirkels volgens de x-coördinaten gesorteerd zijn, worden ze opnieuw gesorteerd volgens de y-coördinaten.
Figuur 51 Sorteren van cirkels volgens QuickSort
Figuur 52 Voorbeeld QuickSort
Naast QuickSort zijn er nog vele andere algoritmes die gebruikt worden. Enkele voorbeelden hiervan zijn: Bubble Sort, Insertion Sort, Shell Sort, Merge Sort, Heap Sort, Bucket Sort, Radix Sort, etc. Deze zijn echter niet zo efficiënt als de Quick Sort om in een korte tijd vele gegevens te sorteren.
5.4.5 Sorteeralgoritme 5.4.5.1
Δx-waarden
Eerder werd een sorteeralgoritme opgesteld om te gebruiken voor PerfCAM. Uit dit sorteeralgoritme moeten de zones en de subzones uit de tekening gehaald worden. Er wordt gebruik gemaakt van de derde methode in het hoofdstuk sorteeralgoritme. In deze methode werden alle kolommen van de perforatieplaat bekeken en daaruit de verschillende Δx-waarden per kolom gehaald. Er werd dan ook een tabel gemaakt die alle begin en einden van de 44
(sub)zones bevatten. Dit werd berekend afgaande van Δx-waarden. Nu wordt dit toegepast bij PerfCAM. Er is een kleine wijziging gebeurd ten opzichte van methode 3. Bij PerfCAM wordt slechts gebruik gemaakt van 1 lijst. Iedere Δx krijgt onmiddellijk begin- en eindpunt mee. Hierdoor is het eenvoudiger om de juiste Δx met de juiste zone te linken. In volgende figuur is een voorbeeld weergegeven van de lijst.
Δx1 , einde zone, begin zone Δx2 , einde zone, begin zone Δx3 , einde zone, begin zone; Δx3s1 , einde zone, begin zone Δx4 , einde zone, begin zone
k1 k2 = k3 k4
Δx1 , einde zone, begin zone Δx2 , einde zone, begin zone Δx3 , einde zone, begin zone; Δx3s1 , einde zone, begin zone Δx4 , einde zone, begin zone
Δx1 , einde zone, begin zone Δx2 , einde zone, begin zone Δx3 , einde zone, begin zone; Δx3s1 , einde zone, begin zone Δx4 , einde zone, begin zone
Δx1 , einde zone, begin zone Δx2 , einde zone, begin zone Δx3 , einde zone, begin zone; Δx3s1 , einde zone, begin zone Δx4 , einde zone, begin zone
Figuur 53 Lijst met per kolom de verschillende zones
Om de lijst op te stellen worden een aantal stappen doorlopen in de code: Overloop alle cirkels die in de array van de coördinaten zitten. Maak een array aan om de Δxwaarden van 1 kolom in te plaatsen. Overloop de cirkels per twee van dezelfde kolom. Indien de eerste cirkel dezelfde y-waarde heeft als de tweede wordt nagegaan of de eerste cirkel ook de eerste cirkel van de kolom is. Indien dit zo is, wordt de Δx-waarde berekend. De x-waarde die de start van de zone aanduidt, wordt opgeslagen in de lijst. Vervolgens wordt de Δx-waarde vergeleken met de volgende Δx-waarden van de kolom. Indien deze dezelfde zijn, gebeurt er 45
niets tot het einde van de kolom. Daarna wordt de laatste x-waarde opgeslagen. Indien er voor het einde van de kolom al een andere Δx-waarde zich voordoet, dan wordt het begin waar de nieuwe Δx-waarde start opgeslagen als het einde van de vorige zone en wordt het einde opgeslagen als het begin van een volgende zone. Vanaf dan wordt terug alles opnieuw gedaan voor die zone. Op het einde van de kolom is een lijst aanwezig met alle verschillende zones in die kolom en daarin staat per zone de Δx-waarde en het begin en einde van de zone. Dit wordt uitgevoerd voor alle kolommen. En deze kolommen komen allemaal terecht in een lijst. In bijlage 4 wordt de flowchart weergegeven die de stappen van het sorteeralgoritme in de software nader uitlegt. 5.4.5.2
Zones
Aan de hand van de lijst met de Δx-waarden worden de zones die aanwezig zijn op de perforatieplaat bepaald. Per kolom worden alle zones vergeleken met deze van de volgende kolom. Als de eerste kolom vroeger eindigt dan wanneer de tweede kolom start, is er een nieuwe zone. Deze zone wordt daarbij opgeslagen in een nieuwe lijst met zones. Hierbij wordt, telkens in de x-richting, de startwaarde en de eindwaarde van de zone opgeslagen als BPZ en EPZ van de zone. Eveneens wordt de Δx-waarde opgeslagen. Nadat alle zones opgeslagen zijn, worden deze zones gesorteerd. Dit gebeurt aan de hand van een quicksort algoritme. De zones worden gesorteerd volgens BPZ en daarna volgens EPZ. Tot slot worden alle duplicaten verwijderd. Hierdoor wordt nog een kleine lijst overgehouden. Bij iedere zone wordt nagegaan of deze start met gaten vooraf. Dit betekent dat de zone niet mooi opgevuld is in het begin en start met enkele afzonderlijke perforaties. Hieronder is een voorbeeld weergegeven.
Figuur 54 Deel perforatieplaat met 1 gat vooraf
De manier waarop het aantal gaten vooraf bepaald wordt, werd reeds besproken in het hoofdstuk sorteeralgoritme. Om dit te realiseren in de software werd eerst een kopie van de lijst 46
met alle coördinaten van de perforaties gemaakt. Daarna werd nagegaan welke perforaties niet in de zone liggen waarvan het ‘aantal gaten vooraf’ moet bepaald worden. Deze coördinaten worden daarbij verwijderd. De overige coördinaten worden doorlopen tot twee coördinaten een verschillende y-waarde hebben. Dit betekent dat de laatste coördinaat op een nieuwe rij begint. Deze coördinaat wordt vergeleken met de eerste coördinaat van de vorige rij. Om het ‘aantal gaten vooraf’ te berekenen wordt volgende bewerking uitgevoerd: De x-coördinaat van de nieuwe kolom wordt afgetrokken van de x-coördinaat van de vorige kolom. De uitkomst hiervan wordt gedeeld door de Δx-waarde van de zone. De uitkomst hiervan wordt afgerond naar de dichtstbijzijnde gehele waarde. Indien de uitkomst na het afronden groter is dan de oorspronkelijke uitkomst, dan wordt er van de uitkomst na het afronden de waarde 1 afgetrokken. De uitkomst van deze bewerking is het aantal gaten vooraf. Dit kan ook geschreven worden in formulevorm: 𝑋 𝑥1 , 𝑦2𝑛−1 − 𝑋(𝑥1 , 𝑦2𝑛 ) ∆𝑥 Vergelijking 2 Formule aantal gaten vooraf
De uitkomst wordt in de formule steeds naar beneden afgerond (notatie = … ). Het resultaat van deze bewerking wordt opgeslagen in de lijst van de verschillende zones met bijhorende BPZ en EPZ. Indien het ‘aantal gaten vooraf’ bepaald is, wordt overgegaan naar de volgende zone die gecontroleerd moet worden. 5.4.5.3
Subzones
Nadat gecontroleerd werd hoeveel gaten vooraf er aanwezig zijn per zone, wordt overgegaan naar de controle op subzones. Hierbij is het van belang dat subzones gedetecteerd worden, maar de subzones worden nog niet verwerkt tot een uitkomst in de geschreven software. De software die de subzones detecteert, werkt als volgt: Er wordt nagegaan of er nog zones zijn die in een andere zone liggen en die geen subzone zijn. Dit gebeurt aan de hand van de controle op de EPZ en de BPZ van elke twee opeenvolgende zones. Indien er twee zones elkaar overlappen, wordt overgegaan naar de volgende bewerking. Het verschil tussen de twee zones ten opzichte van de BPZ wordt vergeleken met de afstand van de eerste perforatie tot de zone volledig opgevuld is met gaten. Als er perforaties vooraf gebeuren, wordt dit ingerekend. Wanneer het verschil van de twee zones kleiner is dan de berekende afstand van de eerste perforatie tot een volledig gevulde zone, dan wordt een nieuwe controle uitgevoerd. In de tweede controle wordt het verschil van de twee zones ten opzichte van de BPZ vervangen door het verschil tussen de twee zones ten opzichte van de EPZ kant. Indien deze afstand ook kleiner is dan de berekende afstand van de eerste perforatie tot een volledig gevulde zone, dan is dit geen subzone. In het andere geval wel. Indien het geen subzone is, wordt de kleinste zone verwijderd. Anders zal de foutmelding weergegeven worden dat subzones niet toegelaten zijn. 47
5.4.5.4
SQR of PAR
Als laatste onderdeel van het sorteeralgoritme wordt nagegaan welk patroon de verschillende zones hebben. Er wordt onderzocht of het patroon SQR of PAR is. Het bouwen van de software is ook gelinkt aan het ontwikkelde sorteeralgoritme. Iedere zone zal onderzocht worden naar het patroon SQR of PAR. In de bovenste kolom van de zone zal telkens tussen twee gaten gezocht worden of er nog gaten aanwezig zijn op de perforatieplaat. Indien dit tussen alle cirkels niet zo is, zal het patroon SQR zijn. Indien er wel cirkels gevonden worden zal het patroon PAR zijn.
5.4.6 Bepalen patronen 5.4.6.1
Selectie patronen XML-bestand
Nadat alle zones bepaald zijn en nagegaan is of het patroon van elke zone PAR of SQR is, kan onderzocht worden of het patroon overeenstemmingen heeft met de standaardpatronen. In de software worden alle XML-bestanden van de patronen opgevraagd en uit de XML-bestanden worden de nodige gegevens gehaald. Er werden voor de masterproef extra gegevens toegevoegd aan de XML-bestanden van de patronen. Hieronder is een printscreen weergegeven van een XML-bestand van een patroon.
Figuur 55 XML-bestand R2PSAR
48
Er werden 4 nieuwe attributen aan het XML-bestand toegevoegd. Deze attributen zijn NumberRows, HolesBefore, Type en Function. Deze attributen zullen helpen bij het selecteren van het correcte patroon per zone. In een eerste instantie wordt voor elke zone een lijst gemaakt met alle standaardpatronen in. Hiervoor wordt naar de map gegaan waar alle patronen zijn opgeslagen. Dit gebeurt aan de hand van een XML-bestand waar het pad in opgegeven is. Dit bestand wordt automatisch aangemaakt indien het niet teruggevonden wordt onder de debugmap van het programma. Hieronder is een screenshot weergegeven van deze XML-file. Het pad van het product, het werktuig en het icoon is ook opgegeven. Er is ook een afrondingswaarde voorzien. Hiermee kan de nauwkeurigheid van de berekeningen meegegeven worden.
Figuur 56 XML-bestand Configuration
Nadat de map met alle patronen gevonden is, wordt ieder patroon afzonderlijk ingeladen voor elke zone. Bij elk patroon volgt de controle of het SQR of PAR is. Dit is weergegeven in het attribuut ‘Type’ die eerder aangemaakt werd. Indien het type overeenkomt met de SQR of PAR die in de zone gevonden werd, wordt een nieuwe controle uitgevoerd. Er wordt nagegaan of het aantal gaten vooraf in de zone groter is dan nul. Indien dit zo is, zal het patroon ook gecontroleerd worden op het aantal gaten vooraf. Dit is meegegeven in het attribuut ‘HolesBefore’. Wanneer dit getal groter is dan nul zal het patroon toegevoegd worden aan de lijst met patronen voor die zone. Als het aantal gaten vooraf nul is van de geselecteerde zone, zal het attribuut ‘HolesBefore’ ook de waarde nul moeten weergeven. Wanneer dit zo is, wordt het patroon ook toegevoegd aan de lijst voor de patronen van de zone. Op het einde van de eerste controle wordt per zone een lijst overgehouden met alle mogelijke patronen. Deze lijsten worden in een grote lijst geplaatst. 5.4.6.2
Visualisatie zones
Binnen PerfCAM worden de verschillende zones ook grafisch weergegeven. Dit gebeurt met behulp van een datagridview. Een datagridview wordt gebruikt omdat het een efficiënte manier is om data geordend weer te geven aan de gebruiker.
49
In de onderstaande screenshots is een voorbeeld weergeven waarin de gaten worden ingeladen en twee zones gedetecteerd werden.
Figuur 57 Screenshot PerfCAM voor het inladen van de gaten
Figuur 58 Screenshot PerfCAM na het inladen van de gaten
In de groupbox ‘X-Zones’ is het aantal zones weergegeven naast ‘Number Zones’. In dit voorbeeld zijn er twee zones gedetecteerd. Per zone wordt de x-afstand weergegeven tussen twee perforaties. De berekende BPZ en EPZ zijn per zone ook weergegeven. De referentie is steeds absoluut omdat de zones berekend worden aan de hand van de middelpunten van de cirkels. Aangezien er geen subzones toegelaten zijn in de CAD-tekening is het aantal subzones momenteel op nul geplaatst. In een latere fase waarin subzones toegelaten zijn in de CADtekening zal dit eenvoudig kunnen aangepast worden in de kolom ‘SZ’ van de datagridview. Er is een kolom ‘Punches’ voorzien die zal detecteren of de lange en de korte stempels steeds gebruikt worden of als het afhankelijk is van het geselecteerde patroon. Tot slot is er een kolom 50
‘Pattern’ voorzien. Per zone zal in de lijst van de patronen het eerste element van de lijst weergegeven worden. In dit voorbeeld is het eerste patroon van de eerste zone R2PSAR. Dit wordt weergegeven om aan te duiden dat de patronen reeds in lijsten geplaatst zijn. Er kan niks manueel aangepast worden in de datagridview. Wanneer dubbel geklikt wordt op een patroon van een zone zal dit een messagebox weergeven met de melding dat er nog geen werktuig geselecteerd is. Het product is nog niet compleet om in een XML-bestand om te zetten. Indien op de knop ‘Create Product’ gedrukt wordt, zal de messagebox ‘Not all fields are filled in’ weergegeven worden. In dit voorbeeld is er nog een tekort aan een productnaam en een werktuig.
5.4.7 Selectie werktuigen De werktuigen worden uit de database gehaald door naar de map van de werktuigen te gaan. Dit gebeurt op dezelfde manier als bij het zoeken naar de map van de patronen. De XMLbestanden van de werktuigen mogen niet gewijzigd worden omdat in PerfEditor deze bestanden gecreëerd kunnen worden. Indien er aanpassingen gebeuren in de XML-bestanden, kan men geen nieuwe werktuigen meer maken zolang PerfEditor ook niet aangepast is. In onderstaande afbeelding is het XML-bestand van een werktuig weergegeven.
Figuur 59 XML-bestand werktuig
De werktuigen worden in eerste instantie geselecteerd op basis van de tekening. Hierbij wordt de diameter van de perforaties op de tekening vergeleken met de waarden van het attribuut ‘PunchSizeX’ en ‘PunchSizeY’. Indien deze waarden kloppen, wordt nagegaan of de Δy-waarde tussen twee kolommen van de perforaties gelijk is aan de waarde van het attribuut ‘DistY’ van 51
het XML-bestand. Als dit ook zo is, wordt het werktuig in een lijst geplaatst met alle werktuigen die haalbaar zijn voor die CAD-tekening. De lijst wordt daarna in de user interface ingeladen in een combobox onder de groupbox ‘General’ bij ‘Tool Name’.
Figuur 60 Screenshot PerfCAM 'Tool Name'
5.4.8 First punch Nadat een werktuig geselecteerd wordt, zal de ‘First Punch’ van het werktuig berekend worden. Dit is de afstand van het begin van het werktuig tot het eerste gat waar een stempel dient geplaatst te worden. Werktuig Perforatieplaat Right Border
y x
Left Border First Punch Figuur 61 First Punch
Om de ‘First Punch’ te berekenen zijn enkele zaken nodig. Van het gemaakte werktuig wordt het laatste element ‘XYCoordinate’ van het XML-bestand opgevraagd. Uit dat element worden de attributen ‘Ymax’ en ‘Ymin’ gehaald. Om het midden van het werktuig te bepalen wordt volgende bewerking gedaan: 𝑌𝑚𝑎𝑥 − 𝑌𝑚𝑖𝑛 𝑚𝑖𝑑𝑑𝑒𝑛 𝑣𝑎𝑛 𝑒𝑡 𝑤𝑒𝑟𝑘𝑡𝑢𝑖𝑔 = 2 Vergelijking 3 Midden van het werktuig
52
Het midden van de perforatieplaat uit de CAD-tekening wordt ook berekend. 𝑚𝑖𝑑𝑑𝑒𝑛 𝑝𝑒𝑟𝑓𝑜𝑟𝑎𝑡𝑖𝑒𝑝𝑙𝑎𝑎𝑡 ≈
𝑝𝑒𝑟𝑓𝑜𝑟𝑎𝑡𝑖𝑒𝑏𝑟𝑒𝑒𝑑𝑡𝑒 2
Vergelijking 4 Midden van de perforatieplaat
Om de afstand te bekomen van het midden van de perforatieplaat tot de First Punch wordt volgende bewerking gedaan. 𝐴𝑓𝑠𝑡𝑎𝑛𝑑 𝑚𝑖𝑑𝑑𝑒𝑛 𝑝𝑒𝑟𝑓𝑜𝑟𝑎𝑡𝑖𝑒𝑝𝑙𝑎𝑎𝑡 𝑡𝑜𝑡 𝐹𝑖𝑟𝑠𝑡 𝑃𝑢𝑛𝑐 =
𝑝𝑒𝑟𝑓𝑜𝑟𝑎𝑡𝑖𝑒𝑏𝑟𝑒𝑒𝑑𝑡𝑒 − 𝐿𝑒𝑓𝑡 𝐵𝑜𝑟𝑑𝑒𝑟 2
Vergelijking 5 Midden perforatieplaat tot First Punch
Om de afstand te bekomen van het begin van het werktuig tot de theoretische First Punch wordt volgende bewerking gedaan: 𝑌𝐹𝑖𝑟𝑠𝑡𝑃𝑢𝑛𝑐
=
𝑌𝑚𝑎𝑥 − 𝑌𝑚𝑖𝑛 𝑝𝑒𝑟𝑓𝑜𝑟𝑎𝑡𝑖𝑒𝑏𝑟𝑒𝑒𝑑𝑡𝑒 − − 𝐿𝑒𝑓𝑡 𝐵𝑜𝑟𝑑𝑒𝑟 2 2 Vergelijking 6 Theoretische First Punch
Dit is de Y-waarde van de theoretische First Punch. De stempels van het werktuig liggen niet altijd op de theoretische plaats van de First Punch. De theoretische plaats van de First Punch zal ook verschillen van product tot product. Om de correcte plaats van de eerste stempel te bepalen, wordt de dichtstbijzijnde plaats waar een stempel kan geplaatst worden ten opzichte van de theoretische First Punch genomen. Dit gebeurt door de waarde van ‘Ymin’ telkens op te tellen met de waarde van ‘distY’. Wanneer de bekomen waarde hoger is dan de waarde van de First Punch, wordt de vorige waarde de werkelijke First Punch. Wanneer het werktuig geselecteerd is, zal het veld ‘First Punch’ automatisch ingevuld worden.
Figuur 62 Screenshot PerfCAM FirstPunch
Indien een nieuw werktuig gekozen wordt, zal de First Punch herberekend worden.
5.4.9 Controle patronen en werktuig Wanneer het werktuig geselecteerd wordt, zullen ook de patronen opnieuw gecontroleerd moeten worden. Niet elk patroon klopt met het geselecteerde werktuig. In PerfEditor was deze link nog niet aanwezig.
53
5.4.9.1
Aantal rijen werktuig
In een eerste instantie wordt nagegaan hoeveel rijen het geselecteerde werktuig heeft. Hierdoor zal het niet meer mogelijk zijn om patronen te kiezen met een aantal rijen die niet gelijk zijn aan het aantal rijen van het gekozen werktuig. Om het aantal rijen van het werktuig te bepalen, wordt nagegaan hoeveel keer het element ‘XYCoordinate’ voorkomt in het XML-bestand. Deze hoeveelheid is het aantal rijen die het werktuig bevat. Daarna wordt ieder patroon vergeleken met het aantal rijen die het werktuig heeft. In het XML-bestand van het patroon staat bij het element ‘NumberRows’ hoeveel rijen er voor dit patroon nodig zijn. Ieder patroon dat niet voldoet aan het aantal rijen van het werktuig, wordt in een lijst geplaatst met alle foute patronen. Alle patronen die per zone in een lijst zitten worden gekopieerd naar een nieuwe lijst. Er wordt geen link voorzien tussen de twee lijsten. De foutieve patronen, die in een lijst opgeslagen zitten, worden nu van de gekopieerde lijst met patronen geëlimineerd. Op deze manier wordt voor iedere zone een lijst gemaakt met enkel de patronen die haalbaar zijn volgens de CADtekening en die hetzelfde aantal rijen hebben als het geselecteerde werktuig. De vorige lijst met patronen zonder de selectie van het gekozen werktuig blijft ook bestaan voor het geval er een ander werktuig gekozen wordt. 5.4.9.2
Functie tussen patroon en werktuig
Om een functie tussen het patroon en het werktuig te voorzien is er in het XML-bestand van het patroon een attribuut ‘function’ toegevoegd. De functie die ingegeven wordt, is identiek aan de manier waarop het patroon gemaakt wordt. Hieronder zijn 2 voorbeelden weergegeven van functies die de standaardpatronen gebruiken.
Figuur 63 Functies van patronen uit de database
54
In de lijst van de gekopieerde patronen wordt ieder patroon doorlopen. Om na te gaan of het patroon haalbaar is met het gekozen werktuig wordt de waarde van ‘function’ uit het XMLbestand van het patroon gehaald. Die waarde geeft een tekst weer die hetzelfde voorstelt als de functie van het patroon. Er zijn verschillende functies. Elke verschillende functie heeft soms andere parameters. Hieronder is een lijst weergegeven van de verschillende functies. 𝐹 =4𝑇 𝐹 =2𝑇 3 𝐹= 𝑇 2 𝐹=𝑇 6 𝐹= 𝑇 7 4 𝐹= 𝑇 5 2 𝐹= 𝑇 3 2 𝐹= 𝑇 5 1 𝐹 = ∙𝑇 𝑖 1 𝐹= ∙𝑇 𝑖 + 1,5 𝐹>𝑇 𝐹 = 3 ∆𝑥 𝐹 = 4 ∆𝑥 𝐹 = 6 ∆𝑥 Vergelijking 7 Vergelijkingen patroon van de database
In de software zal gekeken worden naar de letters van de functie. Afhankelijk van de letters van een functie zal de bepaalde functie gecontroleerd worden. Hierdoor is het noodzakelijk om de functie goed in te geven in het patroon. Hieronder staan enkele situaties weergegeven van mogelijke functies. 1
Als een ‘x’ gevonden wordt in de functie, beperkt de functie zich tot volgende drie gevallen: 𝐹 = 3 ∆𝑥, 𝐹 = 4 ∆𝑥 𝑒𝑛 𝐹 = 6 ∆𝑥. De ∆𝑥-waarde werd vroeger reeds berekend voor iedere zone. Dit kan nu gebruikt worden om deze functie op te lossen. Indien de bekomen waarde van de vermenigvuldiging de voeding van het werktuig als resultaat geeft, zal er niets gebeuren met het patroon. Als het een ander resultaat geeft, wordt het patroon uit de lijst verwijderd.
2
Wanneer een ‘T’ gevonden wordt in de functie zal dieper gezocht worden in de functie. Als de letter ‘i’ teruggevonden wordt, zijn er nog maar enkele functies meer mogelijk. 1
Deze functies zijn: 𝐹 = 𝑖 ∙ 𝑇 𝑒𝑛 𝐹 =
1 𝑖+1,5
∙ 𝑇. Indien er een haakje in de functie staat,
zullen alle letters verwijderd worden behalve het getal die tussen haakjes staat. In dit 55
voorbeeld van de functie hierboven is dit 1,5. Wanneer later een nieuwe functie gecreëerd wordt met een andere waarde, zal deze waarde opnieuw overblijven. Deze tekst wordt omgezet in een ‘double’. Deze waarde zal dan in een functie ingevuld worden. Hieronder is deze functie weergegeven. 𝑇 = 𝐹 𝑎𝑙𝑠 𝐹 ∙ 𝑖 + 1,5 < 𝐿𝑒𝑛𝑔𝑡𝑒 𝑣𝑎𝑛 𝑑𝑒 𝑧𝑜𝑛𝑒 𝑖 + 1,5 In de functie wordt voor T gekozen voor de maximale waarde dat T kan bereiken. Dit is de waarde als het aantal rijen van het werktuig vermenigvuldigd wordt met Δx. Hierbij wordt de helft van Δx nog eens bijgeteld indien de zone PAR is, omdat de functie enkel gebruikt wordt bij PAR-patronen. Wanneer 1 van de uitkomsten inderdaad de voeding is van het werktuig, dan zal dit patroon niet verwijderd worden uit de lijst. In alle andere gevallen wel. 1
Indien er geen haakje staat in de functie, dan is de functie 𝐹 = 𝑖 ∙ 𝑇. Op dezelfde wijze als voorgaande formule wordt nagegaan of het patroon uit de lijst verwijderd moet worden. 3
Als het symbool ‘>’ teruggevonden wordt in de tekst, zal nagegaan worden of 𝑇 > 𝐹. T wordt op dezelfde manier berekend als in de vorige situatie.
5.4.10 Selectie patronen 5.4.10.1
Grafische weergave patronen
Uit de lijst van de patronen, die passen bij de CAD-tekening, wordt per zone de naam van het eerste standaardpatroon uit de lijst in een datagridview weergegeven. Dit voordat een werktuig geselecteerd is. Hieronder is hiervan een printscreen weergegeven.
Figuur 64 PerfCAM patroon voor inladen werktuig
56
Indien de lijst leeg is en er dus geen standaardpatronen zijn, zal er niets in de datagridview weergegeven worden. Als het werktuig geselecteerd wordt, zal de lijst van patronen aangepast worden. De patronen van de datagridview worden terug ingeladen per zone. Het is mogelijk dat het standaardpatroon wijzigt indien het vorige niet meer overeen kwam met het geselecteerde werktuig. Hieronder is ook een printscreen weergegeven van het patroon na het selecteren van een werktuig.
Figuur 65 PerfCAM patroon na inladen werktuig
5.4.10.2
Wijzigen patroon
Per zone kan het patroon gewijzigd worden. Indien op het woord ‘Pattern’ in de datagridview geklikt wordt, zal de melding ‘Select a cell’ weergegeven worden. Er is geen mogelijkheid om alle zones in 1 keer op een ander patroon te brengen. Tevens dient er eerst een werktuig geselecteerd te worden vooraleer het patroon gewijzigd kan worden. Als op de naam van een patroon geklikt wordt van een bepaalde zone in de datagridview, wordt een nieuwe form ‘Pattern’ geladen. Deze form is in onderstaande figuur weergegeven.
Figuur 66 Form Patroon
57
In deze form zijn slechts drie mogelijke patronen om te selecteren. Dit zijn de enige patronen die haalbaar zijn voor de CAD-tekening en het geselecteerde werktuig. Links kan in de lijst met standaardpatronen een patroon geselecteerd worden. Rechts is een visuele weergave van het geselecteerde patroon te zien. Wanneer op OK gedrukt wordt, zal het patroon dat geselecteerd is voor die zone gebruikt worden. Dit is ook merkbaar doordat de naam van het patroon eventueel verandert in de datagridview.
5.4.11 XML-bestand product Om het product te creëren voor de perforatiepers, wordt een XML-bestand van het product aangemaakt. Daarna wordt het XML-bestand in PerfEditor ingeladen. Binnen PerfEditor wordt dan de CNC-code gegenereerd en toegevoegd aan het XML-bestand. Het XML-bestand die aangemaakt wordt in PerfCAM moet compatibel zijn voor PerfEditor. 5.4.11.1
Aanmaken XML-bestand
Vooraleer het XML-bestand gemaakt kan worden, zal nagegaan worden of alle nodige gegevens voor het bestand gegeven zijn. Als niet alle gegevens ingevuld zijn, zal de foutmelding ‘not all fields are filled in’ weergegeven worden. Wanneer alle gegevens beschikbaar zijn, kan het XMLbestand in PerfCAM aangemaakt worden. Om dit te doen worden alle berekende, ingevulde en geselecteerde waarden die van belang zijn voor het XML-bestand opgevraagd. In het -
productbestand moeten volgende gegevens ingevuld worden: naam van het Product; eventuele commentaar; gekozen werktuig; gebruikte methode van stempelen; of de perforatie continue of in zones verdeeld is; plaatlengte; plaatbreedte; perforatiebreedte; leftborder; rightborder; of er zones zijn die zich herhalen; de lengte van de zone indien deze zich herhaalt; afmetingen ten opzichte van de perforaties; of het product afgesneden moet worden en waar; de verschillende zones met hun patroon, voeding, EPZ, BPZ; hoe de zones geperforeerd worden met de stempels (L of L + S); of er stempels weggelaten worden in de rij; de eigenlijke gegevens voor de CNC-code (toplevel).
Niet alle gegevens moeten ingevuld worden. Soms is er bijvoorbeeld geen commentaar voorzien bij een product of alle rijen zijn volledig gevuld met stempels. 58
De attributen en elementen om de CNC-code aan toe te voegen, zijn ook reeds voorzien bij het aanmaken van het XML-bestand in PerfCAM. Onderstaand voorbeeld geeft het XML-bestand van een product weer dat gecreëerd werd binnen PerfCAM.
Figuur 67 Voorbeeld XML-bestand product na PerfCAM
5.4.11.2
CNC-code genereren
Om de CNC-code te genereren wordt PerfEditor opgestart. Binnen PerfEditor wordt het XMLbestand ingeladen. In deze thesis werd de EPZ en BPZ van de zones niet gecontroleerd. Binnen PerfEditor gebeurt dit wel en wanneer de EPZ en BPZ niet correct zijn zal dit via een foutmelding weergegeven worden. Daarna kan de code gegenereerd worden. Er is zelfs de mogelijkheid om een preview van het product te zien binnen PerfEditor. Indien alles zonder fouten verlopen is, zal de preview gelijk zijn aan de CAD-tekening. Na het genereren van de CNC-code en het opslaan van het product zal in het XML-bestand de nodige CNC-code toegevoegd worden. Onderstaande figuur geeft het XML-bestand van het product weer na het genereren en opslaan van de CNC-code in PerfEditor.
59
Figuur 68 Voorbeeld XML-bestand product na PerfEditor
5.5
VOORBEELD GEBRUIK PERFCAM
Om PerfCAM eenvoudig te hanteren zijn hieronder 2 voorbeelden van perforatieplaten uitgewerkt.
5.5.1 Voorbeeld 1: Subzones In een eerste instantie wordt AutoCAD opgestart en de CAD-tekening ingeladen of getekend. Hieronder is AutoCAD afgebeeld met de ingeladen tekening.
60
Figuur 69 AutoCAD met ingeladen tekening
Daarna wordt het .dll-bestand van PerfCAM in AutoCAD geladen via het commando ‘netload’. Er wordt een form weergegeven waarbij het juiste .dll-bestand geselecteerd wordt.
Figuur 70 Select .dll-bestand
Via het commando ‘perfcam’ wordt de user interface van PerfCAM geladen. Hieronder is de user interface van PerfCAM weergegeven.
61
Figuur 71 User interface PerfCAM
Vul de naam van het product in en eventuele commentaar. In dit voorbeeld wordt de naam van het product ‘Example1’ genoemd en de ingegeven commentaar is ‘This is the first example with subzones’.
Figuur 72 Vul productnaam en commentaar in
Klik op ‘PerforationPlate’ voor het selecteren van de perforatieplaat. De user interface van PerfCAM verdwijnt en alle objecten van de perforatieplaat moeten geselecteerd worden. Via het commando ‘all’ wordt alles geselecteerd.
62
Figuur 73 Selecteren van de perforatieplaat
Wanneer de perforatieplaat geselecteerd is, wordt op enter gedrukt. In de user interface zijn enkele waarden ingevuld, namelijk de plaatlengte en de plaatbreedte.
Figuur 74 Plaatlengte en plaatbreedte invullen
63
Dan worden alle cirkels opgehaald. Dit gebeurt via de knop ‘Get Holes’. Nu worden alle cirkels geselecteerd die tot de perforatieplaat behoren. Het commando ‘all’ is nog steeds geldig. De perforatieplaat is nu visueel blauw gekleurd in de CAD-tekening om een controle te hebben dat het programma de correcte perforatieplaat verwerkt heeft.
Figuur 75 Selecteren van de perforaties in de CAD-tekening
Tot slot wordt op enter gedrukt na het selecteren van de cirkels. De user interface wordt terug geladen en er verschijnt een messagebox.
Figuur 76 Messagebox 'Subzones not allowed'
Nadat op OK gedrukt is, wordt terug de user interface getoond en is er niks in gewijzigd. Wanneer terug iets op de CAD-tekening geselecteerd wenst te worden of als PerfCAM afgesloten wordt, zijn alle geselecteerde perforaties blauw gekleurd.
5.5.2 Voorbeeld 2: Zonder Subzones In dit voorbeeld wordt een CAD-tekening van een perforatieplaat zonder subzones gebruikt. De eerste stappen zijn identiek als voorgaande stappen. Deze worden niet meer herhaald. Hieronder is de perforatieplaat van de CAD-tekening weergegeven.
64
Figuur 77 Voorbeeld2 zonder subzones
Na ingeven van een productnaam, commentaar, perforatieplaat en perforaties wordt volgende user interface bekomen:
Figuur 78 User interface PerfCAM na inladen perforaties
Bijna alles is ingegeven en berekend. - De plaatlengte is 850,016 mm. - De plaatbreedte is 1003,000 mm. - De perforatiebreedte is 974,500 mm. 65
-
De Left Border is 15,500 mm. De Right Border is 13,000 mm. De diameter van de perforaties is 10,000 mm. De gebruikte methode staat nu op Coil To Coil. Er zijn 2 zones gedetecteerd. Met tussen de rijen een afstand van 15 mm. Van de eerste zone is de BPZ 50 en de EPZ 185. Van de tweede zone is de BPZ 432,5 en de EPZ 665. Er zijn voor beide zones standaardpatronen die passen.
Het is nog niet mogelijk om een standaardpatroon te wijzigen. Wanneer er op de naam van het patroon van een zone geklikt wordt, zal een messagebox weergegeven worden.
Figuur 79 Messagebox 'Select a tool'
Er werd inderdaad nog geen werktuig geselecteerd. Het is ook niet mogelijk om een XMLbestand van het product reeds te maken. Dit door het feit dat niet alle velden ingevuld zijn. Ook dit wordt weergegeven in een messagebox wanneer men toch op ‘Create Product’ klikt.
Figuur 80 Messagebox 'Not all fields are filled in'
Er is de keuze uit volgende werktuigen die passen bij deze CAD-tekening.
Figuur 81 Mogelijke werktuigen bij CAD-tekening
66
Na het selecteren van een werktuig, worden de patronen van de zones gecontroleerd op haalbaarheid met het werktuig. Indien de patronen niet haalbaar zijn, worden deze gewijzigd door een ander patroon die zowel haalbaar is voor de CAD-tekening als voor het geselecteerde werktuig.
Figuur 82 Patronen voor en na ingeven van werktuig
Tevens wordt de First Punch berekend van het werktuig na het kiezen van een werktuig.
Figuur 83 First Punch na ingeven werktuig
Hieronder is de user interface weergegeven na het selecteren van een werktuig.
Figuur 84 User interface PerfCAM na selecteren werktuig
67
Na het selecteren van een werktuig is er nu wel de mogelijkheid om de patronen aan te passen. Indien er bijvoorbeeld op het patroon van zone 1 geklikt wordt, zal volgende form zichtbaar worden:
Figuur 85 Form selecteren patroon
Door nu in de lijst met namen van de patronen te klikken op een patroon, wordt rechts uitleg getoond over het patroon.
Figuur 86 Patroon selecteren
68
Indien op OK gedrukt wordt, zal het nieuwe patroon ingevuld worden in de user interface. In deze applicatie wordt ervoor gekozen om ‘R2A’ te behouden als patroon. Als nu terug op ‘Create Product’ geklikt wordt, zal geen foutmelding weergegeven worden. Alle velden van de user interface zijn immers correct ingevuld. Wanneer er nog geen XML-bestand bestaat met die naam, zal volgende messagebox weergegeven worden:
Als er wel reeds een XML-bestand bestaat met die naam, zal een keuze gemaakt kunnen worden tussen het overschrijven van het bestand of niet.
Indien op ‘Yes’ gedrukt wordt, zal het bestand overschreven worden, anders niet. Wanneer het bestand overschreven wordt zal terug een messagebox ‘File created’ te zien zijn. In een laatste stap moet de CNC-code nog aan het XML-bestand van het product toegevoegd worden. Dit gebeurt binnen PerfEditor. Eerst wordt het product ingeladen in PerfEditor.
69
Figuur 87 Load product in PerfEditor
Daarna wordt de CNC-code gegenereerd.
Figuur 88 Genereren van de CNC-code
70
In het tabblad ‘Cnc’ wordt de CNC-code op high-level niveau weergegeven.
Figuur 89 CNC-code van het product
Tot slot kan een preview weergegeven worden van het ingeladen product. Dit is hetzelfde als de CAD-tekening indien de XY-assen gerespecteerd worden.
Figuur 90 Preview product in PerfEditor
71
Nadat het product binnen PerfEditor nogmaals is opgeslagen, is het XML-bestand van het product ‘Example2’ volledig af.
Figuur 91 XML-bestand example2
5.6
VOORWAARDEN VAN PERFCAM
Enkele regels van PerfCAM moeten gehanteerd worden voor een correcte werking van de software. -
-
1 rij perforeren over een ganse perforatieplaat is niet mogelijk. Indien het patroon PAR is van een zone, moet die zone minimaal 4 rijen bevatten. Als het patroon SQR is van een zone, moet die zone minimal 2 rijen bevatten. De perforatieplaten zijn niet op schaal getekend. Subzones zijn niet toegelaten. Er wordt met afrondingen gewerkt die standaard ingesteld staan op 3 cijfers na de komma. Dit kan aangepast worden in de XML-file PerfCAM binnen de Debugmap van de perforatiepers. De tekening moet nauwkeurig gemaakt worden. Anders zal het programma verkeerde oplossingen weergeven. De taal van de software is momenteel Engels. De taal kan eenvoudig veranderd worden binnen C#.
72
CONCLUSIES De masterproef is op een vlotte manier verlopen. Voor buitenstaanders was het niet altijd evident om de vorderingen binnen de masterproef te zien omdat het sorteeralgoritme veel tijd in beslag nam. Dit was nodig om alle mogelijke perforatieplaten met het ontwikkelde sorteeralgoritme tot een goede CNC-code te leiden. Het sorteeralgoritme is voorzien om later subzones toe te voegen. De ontwikkelde software voldoet aan alle vooropgestelde eisen. Zo werd de software in C# geschreven en binnen AutoCAD 2010 uitgevoerd. De user interface is gebruiksvriendelijk en geeft feedback aan de gebruiker weer. De software en de commentaar zijn in het Engels geschreven. Indien er perforaties buiten de perforatieplaat liggen, wordt dit gemeld aan de gebruiker van de software. Door een goed sorteeralgoritme te maken werd erin geslaagd op een vlotte manier alle zones te definiëren. Subzones worden ook gedetecteerd. Alle mogelijke werktuigen om het product te genereren worden weergegeven en de mogelijke standaardpatronen zijn beschikbaar. Uit deze standaardpatronen heeft de gebruiker de mogelijkheid een standaardpatroon te wijzigen. Het XML-bestand van het product wordt automatisch aangemaakt en kan worden ingeladen binnen PerfEditor. PerfEditor is in staat het XML-bestand van de juiste CNC-code te voorzien. Via een preview van het product in PerfEditor kan nagegaan worden of de CNC-code correct gemaakt is.
73
LITERATUURLIJST [1] [2] [3] [4] [5] [6] [7]
S. Coene and C. Vansteeland, PerfEditor V5.00, 2008. N. Kindt, "AutoCAD Drawing to PerfEditor/CNC-code Converter," ed, 2009. M. L. Cortés, "Progress in pattern recognition," ed: Springer, 2005. J. H. M. Byne and J. A. D. W. Anderson, "A CAD-based computer vision system," Image and Vision Computing, vol. 16, pp. 533-539, 1998. Troelsen and Andrew, Pro C# with .NET 3.0: Apress, 2007. K. Walmsley, "Through the Interface," ed. H. H. Cheng, C for Engineers and Scientists.
1
BIJLAGEN BIJLAGE 1 CNC-CODE LOW LEVEL ;###################################### ; ; ORDER: 13880-10 ; ; Date: 31-03-2009 ; Time: 12:40:05 ; Version Jobprocess: 9.6.0.0 ; ;###################################### ; ; ; String variables ; D0001 @s1: _OrderName = "13880-10" ; Name of order D0002 @s2: _ProductName = "138880-10" ; Name of product D0003 @s3: _ToolName = "L 09-soenen" ; Name of tool ; ; ; ; Integer variables ; D0004 @i1 : _OrderType = 1 ; Type of order: CTOC (0), CTOS (1), STOS (2) D0005 @i2 : _Perforation = 0 ; Kind perforation: Zones (0), Continue (1), None (2) D0006 @i3 : _SlitCount = 1 ; Number of products increment when slitting D0007 @i4 : _StrokeNumber = 1 ; Strokenumber D0008 @i5 : _ProAccel = 10 ; Feeder procentual acceleration D0009 @i6 : _PerfStrokes = 570 ; Total number of strokes for one product ; D0010 @i10 : _ProductsTodo = 10 ; Number of products to do D0011 @i11 : _ProductsDone = 0 ; Number of products done D0012 @i12 : _ProductsLoopsDone = 0 ; Number of product loops done D0013 @i13 : _BatchTodo = 0 ; Number of product in a batch to do D0014 @i14 : _BatchDone = 0 ; Number of products in a batch done D0015 @i15 : _QualityTodo = 0 ; Number of products for quality control to do D0016 @i16 : _QualityDone = 0 ; Number of products for quality control done D0017 @i17 : _StrokeCounter = 2429222 ; Number of strokes done with tool D0018 @i18 : _MaxStrokeCounter = 0 ; Maximum number of strokes before message Maintenance ; D0019 @i20 : _Line ; Original CNC Line D0020 @i21 : _Lrep ; Linerep variable D0021 @i22 : _Gb ; Gagbar CNC variable D0022 @i23 : _Gbn ; Next gagbar CNC variable D0023 @i24 : _M1 ; Clutch CNC variable
D0024 @i25 : _M2 ; Free programmable CNC variable D0025 @i26 : _M3 ; Free programmable CNC variable D0026 @i27 : _Clutch ; Variable for clutch D0027 @i28 : _Tool = 0 ; Tool action variable D0028 @i29 : _ToolSeqDone = 0 ; All tool sequences done D0029 @i30 : _FeedOutBusy = 0 ; Feedout activated ; ; ; Real variables ; D0030 @r1 : _PlateLength = 2276.60000 ; Length of product D0031 @r2 : _PlateWidth = 475.00000 ; Width of product D0032 @r3 : _PlateThickness = 0.00000 ; Thickness of material D0033 @r4 : _FeedCorrRollX1 = 1.00000 ; Length correction factor D0034 @r5 : _FeedCorrRollX2 = 1.00000 D0035 @r6 : _NonPerfTime = 0.23471 ; Time used for non-perforating actions D0036 @r7 : _BeginFeed = 24.30500 ; Cnc Border Begin Feed D0037 @r8 : _EndFeed = 27.50500 ; Cnc Border End Feed ; D0038 @r11 : _X ; Feed variable D0039 @r12 : _Xn ; Feed + nextfeed variable D0040 @r13 : _Feed ; Feed variable D0041 @r14 : _PerfDistance = 0.000000 ; Distance to first perforation D0042 @r15 : _ToolSeqDistance ; Next tool distance D0043 @r16 : _Material ; Material Counter D0044 @r17 : _FeedNominal = 3.90000 ; Nominal Feed from Tool D0045 @r18 : _FeedRollDistance = 0.00000 ; Feed before takeover with X2 D0046 @r19 : _StripperRamColl = -28.65000 ; Compairing constant for collision detection ; D0047 @r20 : _PosGuideLeft = 237.15000 ;Calculated position for Left guide Adj. D0048 @r21 : _PosGuideRight = 237.85000 ; Calculated position for Right guide Adj. D0049 @r22 : _PosTable = 2.05000 ; Calculated position for Table Adj. D0050 @r23 : _PosStripper = 0.00000 ; Calculated position for Stripper Adj. D0051 @r24 : _PosRam = 11.05000 ; Calculated position for Ram Adj. D0052 @r25 : _PosPUnitLeft_Y = 237.15000 ; Calculated position for Punit Left Y Adj. D0053 @r26 : _PosPUnitRight_Y = 237.85000 ; Calculated position for Punit Right Y Adj. D0054 @r29 : _ToolXn = 4.87500 ; Biggest tool row distance in X ; ;
2
; Structures ; D0055 @t: _CncToolSeq = { 1699.445000, 1, 1, 0 3976.045000, 1, 10, 1 0, 0, 0, 0 } ; Tool sequence array ; D0056 @c: _CncCam = { 232, 128, ; Cam Feed 234, 128, ; Cam Start 224, 60, ; Cam Gagbar On 180, 60, ; Cam Gagbar Off 300, 136 } ; Cam Gagbar Test ; D0057 @p: _CncNonePerfTime = { 0.23471, ; Acceleration at 100% 0.24649, ; Acceleration at 90% 0.26041, ; Acceleration at 80% 0.27722, ; Acceleration at 70% 0.29809, ; Acceleration at 60% 0.32495, ; Acceleration at 50% 0.36134, ; Acceleration at 40% 0.41466, ; Acceleration at 30% 0.50411, ; Acceleration at 20% 0.70601, ; Acceleration at 10% 1.55809 } ; Acceleration at 2% ; ; ; N-CNC program ; N0001 .HandleFeedIn ; Label HandleFeedIn N0002 _PerfDistance - _ToolSeqDistance BMI .MainLoop ; If infeed tools done then branch to label MainLoop N0003 _PerfDistance= _PerfDistance _ToolSeqDistance ; Calculate Next feeding N0004 G91 X2= _ToolSeqDistance ; Start feeding and wait until done N0005 H24 H09 ; Activate tool + Update tool sequences N0006 H07 H05 ; Check batch/quality + wait for auto N0007 BRA .HandleFeedIn ; Branch to label HandleFeedIn ; N0008 .MainLoop ; Label MainLoop N0009 _ProductsTodo - _ProductsLoopsDone BEQ .HandleFeedOut ; If products made then branch to label HandleFeedOut N0010 BSR .Product ; Call subroutine .Product N0011 BRA .MainLoop ; Branch to label MainLoop ; N0012 .HandleFeedOut ; Label HandleFeedOut N0013 _FeedOutBusy = 1
; Set FeedOutBusy variable N0014 H17 H16 ; Wait on feed/gagbar cam + wait on work cam N0015 .FeedOut ; Label FeedOut N0016 _ToolSeqDone BNE .End ; When all tolls sequences done then branch to label End N0017 G91 X2= _ToolSeqDistance ; Start feeding and wait until done N0018 H24 H09 ; Activate tool + Update tool sequences N0019 H05 ; Wait for auto N0020 BRA .FeedOut ; Branch to label FeedOut ; N0021 .End ; Label End N0022 END ; End Program ; ; ; N0023 .Product ; Label Product N0024 BSR .Line1 ; Call subroutine Line1 N0025 BSR .Line2 ; Call subroutine Line2 N0026 _Lrep = 564 ; Assign LRep variable N0027 .LoopLine3 ; Label LoopLine3 N0028 BEQ .LoopLine3Done ; When Lrep equal to 0 branch to label LoopLine3Done N0029 BSR .Line3 ; Call subroutine Line3 N0030 _Lrep-; Decrement LRep N0031 BRA .LoopLine3 ; Assign LRep variable N0032 .LoopLine3Done ; Assign LRep variable N0033 BSR .Line4 ; Call subroutine Line4 N0034 _Lrep = 2 ; Assign LRep variable N0035 .LoopLine5 ; Label LoopLine5 N0036 BEQ .LoopLine5Done ; When Lrep equal to 0 branch to label LoopLine5Done N0037 BSR .Line5 ; Call subroutine Line5 N0038 _Lrep-; Decrement LRep N0039 BRA .LoopLine5 ; Assign LRep variable N0040 .LoopLine5Done ; Assign LRep variable N0041 BSR .Line6 ; Call subroutine Line6 N0042 RTS ; Return from subroutine ; N0043 .Line0 ; Label Line0 - First CNC line of Order N0044 _X = _PerfDistance ; Assign _X variable N0045 _Xn = _PerfDistance + 3.910000 ; Assign _Xn variable N0046 BSR .HandleLine
3
; Call subroutine HandleLine N0047 RTS ; Return from subroutine ; N0048 .Line1 ; Label Line1 N0049 _Line = 1 ; Original CNC line N0050 _X = 51.810000 ; Assign _X variable N0051 _Xn = 55.720000 ; Assign _Xn variable N0052 _Gb = 13 ; Assign _Gb variable N0053 _Gbn = 13 ; Assign _Gbn variable N0054 _M1 = 11 ; Assign _M1 variable N0055 _M2 = 0 ; Assign _M2 variable N0056 _M3 = 0 ; Assign _M3 variable N0057 _ProductsLoopsDone BEQ .Line0 ; For first line of order branch to Line0 N0058 BSR .HandleLine ; Call subroutine HandleLine N0059 RTS ; Return from subroutine ; N0060 .Line2 ; Label Line2 N0061 _Line = 2 ; Original CNC line N0062 _X = 3.910000 ; Assign _X variable N0063 _Xn = 7.820000 ; Assign _Xn variable N0064 _Gb = 13 ; Assign _Gb variable N0065 _Gbn = 33 ; Assign _Gbn variable N0066 _M1 = 21 ; Assign _M1 variable N0067 _M2 = 0 ; Assign _M2 variable N0068 _M3 = 0 ; Assign _M3 variable N0069 BSR .HandleLine ; Call subroutine HandleLine N0070 RTS ; Return from subroutine ; N0071 .Line3 ; Label Line3 N0072 _Line = 3 ; Original CNC line N0073 _X = 3.910000 ; Assign _X variable N0074 _Xn = 7.820000 ; Assign _Xn variable N0075 _Gb = 33 ; Assign _Gb variable N0076 _Gbn = 33 ; Assign _Gbn variable N0077 _M1 = 11 ; Assign _M1 variable N0078 _M2 = 0 ; Assign _M2 variable N0079 _M3 = 0 ; Assign _M3 variable N0080 BSR .HandleLine ; Call subroutine HandleLine N0081 RTS ; Return from subroutine ; N0082 .Line4 ; Label Line4 N0083 _Line = 3
; Original CNC line N0084 _X = 3.910000 ; Assign _X variable N0085 _Xn = 7.820000 ; Assign _Xn variable N0086 _Gb = 33 ; Assign _Gb variable N0087 _Gbn = 31 ; Assign _Gbn variable N0088 _M1 = 21 ; Assign _M1 variable N0089 _M2 = 0 ; Assign _M2 variable N0090 _M3 = 0 ; Assign _M3 variable N0091 BSR .HandleLine ; Call subroutine HandleLine N0092 RTS ; Return from subroutine ; N0093 .Line5 ; Label Line5 N0094 _Line = 4 ; Original CNC line N0095 _X = 3.910000 ; Assign _X variable N0096 _Xn = 7.820000 ; Assign _Xn variable N0097 _Gb = 31 ; Assign _Gb variable N0098 _Gbn = 31 ; Assign _Gbn variable N0099 _M1 = 11 ; Assign _M1 variable N0100 _M2 = 0 ; Assign _M2 variable N0101 _M3 = 0 ; Assign _M3 variable N0102 BSR .HandleLine ; Call subroutine HandleLine N0103 RTS ; Return from subroutine ; N0104 .Line6 ; Label Line6 N0105 _Line = 5 ; Original CNC line N0106 _X = 3.910000 ; Assign _X variable N0107 _Xn = 55.720000 ; Assign _Xn variable N0108 _Gb = 31 ; Assign _Gb variable N0109 _Gbn = 13 ; Assign _Gbn variable N0110 _M1 = 22 ; Assign _M1 variable N0111 _M2 = 0 ; Assign _M2 variable N0112 _M3 = 0 ; Assign _M3 variable N0113 _ProductsLoopsDone++ ; Increment productsloopsdone N0114 _ProductsTodo - _ProductsLoopsDone BEQ .Line7 ; For last line of order branch to Line7 N0115 BSR .HandleLine ; Call subroutine HandleLine N0116 RTS ; Return from subroutine ; N0117 .Line7 ; Label Line7 N0118 _M1 = 22 ; Assign _M1 variable N0119 BSR .HandleLine ; Call subroutine HandleLine N0120 RTS
4
; Return from subroutine ; ; ; N0121 .HandleLine ; Label HandleLine N0122 H05 ; Wait for auto N0123 _ToolSeqDistance - _X BMI .SplitFeed ; If splitfeed branch to label SplitFeed N0124 _Tool=0 ; No tool actions N0125 _Feed= _X ; Assign a Feed variable N0126 .HandleLineCycle ; Label HandleLineCycle N0127 H20= _Gb H21= _Gbn ; Set gagbars + set next gagbars N0128 H28=7 H23= _Gb ; Calculate clutch + wait on gagbars if clutch is not in N0129 G71 X2= _Feed H15 ; Load feeding + wait on feedcam and start feeding N0130 _Clutch-2 BNE .WaitMoveStopped ; if clutch != 2 branch to label WaitMoveStopped N0131 H27=2 ; Set Clutch to H02 N0132 .WaitMoveStopped ; Label WaitMoveStopped N0133 G85 X2 ; Wait until feeding is stopped N0134 H10= _Feed ; Update feeding counters N0135 _Tool BNE .ActivateTools ; If Tool action branch to label ActivateTools N0136 _Clutch-2 BEQ .WaitOnCams ; If clutch = 2 branch to label WaitOnCams N0137 H27= _Clutch ; Set clutch to calculated value N0138 .WaitOnCams ; Label WaitOnCams N0139 H17 H22= _Gb ; Wait on feed-gagbartest cam + test gagbars inposition N0140 _Tool BNE .HandleLine ; When tool action branch to label HandleLine
N0141 RTS ; Return from subroutine ; N0142 .SplitFeed ; Label SplitFeed N0143 _Tool=1 ; Set _Tool variable N0144 _Clutch=0 ; Set Clutch variable N0145 _X= _X - _ToolSeqDistance ; Calculate rest feed N0146 _Feed= _ToolSeqDistance ; Calculate current feed N0147 BRA .HandleLineCycle ; Branch to label HandleLineCycle ; N0148 .ActivateTools ; Label ActivateTools N0149 H24 H09 ; Activate tool + update toolseq counters/distances N0150 H07 H05 ; Check batch/quality + wait for auto N0151 BRA .HandleLine ; Branch to label HandleCncLine ; ;
5
BIJLAGE 2 AUTOCAD TEKENING
6
BIJLAGE 3 FLOWCHART OPHALEN COÖRDINATEN VAN DE CIRKELS
7
8
BIJLAGE 4 FLOWCHART SORTEERALGORITME
9