Documentatie
Een simulatie van één frezer met één Hermle C42 (palletwisselaar + gereedschapsmagazijn) die laat zien wat een planningswijze doet met de output van de machine en met de levertijd.
1. Doel van de simulator
De huidige werkwijze is: als er spoed is, laat alles vallen, werk alleen aan de spoed en ga daarna pas verder met het reguliere werk. De stelling die deze simulator onderbouwt:
- Die werkwijze levert op korte termijn die ene spoedorder wél op tijd.
- Maar de machine staat vaker stil (vooral 's nachts en in het weekend), er ontstaat achterstand, daardoor worden méér orders spoed, en uiteindelijk wordt er minder vaak op tijd geleverd. Spoed veroorzaakt spoed.
- Een vaste werkwijze die de machine zo lang mogelijk laat lopen, stelt de eerste spoedklant misschien teleur, maar levert daarna vaker op tijd en maakt meer uren.
Beide machines krijgen exact dezelfde orders op exact hetzelfde moment (zelfde seed). Het enige verschil is de beslisregel van de frezer.
2. Zo presenteer je het (± 10 minuten)
- Uitleg (1 min). Laat de twee rijen zien: boven Efficiëntie, onder Ultra spoed. Zelfde machine, zelfde frezer, zelfde orders.
- Eerste weken live (3 min). Zet de snelheid op 4 uur / sec en druk op Start. Wijs aan: pallets die klaargezet worden (blauw), de machine die 's nachts onbemand doorloopt, de frezer die taken afwerkt.
- De eerste spoedorder (3 min). In week 3, dinsdag 09:00 komt de spoedorder binnen (logboek, ). Zet eventueel op 1 uur / sec. Onderaan zie je dat Ultra spoed de machine stopt, pallets afpakt en de order op tijd levert. Efficiëntie maakt eerst de nacht vol en levert te laat. "Dit is waarom we het nu zo doen."
- Het hele jaar (2 min). Druk op Rest van het jaar. Bespreek de drie kaarten bovenaan de vergelijking: output per week, % op tijd en doorlooptijd, en de eerste spoedorder.
- Waarom (1 min). Laat de grafiek Waar gaat de machinetijd heen? zien: bij ultra spoed staat de machine vaker stil (versleten gereedschap, spanenbak vol, geen pallets klaar voor de nacht). En de grafiek Aantal orders dat spoed wordt: steeds meer spoed.
3. Wat zie je op het scherm
- Palletwisselaar
- 24 vakjes: bovenste rij 12 kleine pallets (1 klem, tot 200 mm), onderste rij 12 grote pallets (2 klemmen, tot 500 mm). Het nummer is het ordernummer. Kleuren: grijs = vrij, paars = opspanning gebouwd en wacht op instellen, blauw = klaargezet, groen = in de machine, oranje = gereed product dat eruit moet. Een rode rand betekent: spoedorder.
- Wisselloket & robot
- Geel in het loket: de frezer is daar aan het opspannen of wisselen.
- Machine
- Statuslamp en tekst: AUTOMAAT, INSTELLEN, PALLETWISSEL, OPWARMEN, WACHT OP INSTELLEN, ALARM of STIL (met de reden). Onder het venster de voortgang van de huidige pallet.
- Gereedschapsmagazijn
- Bezetting van de 200 plaatsen. Een order kan pas gereedschap laten inzetten als er plek is. Plek komt pas vrij als een order afgemeld is.
- Spanenbak / koelwater
- Loopt vol of leeg tijdens het frezen. Vol of leeg betekent dat de machine stopt tot de frezer het onderhoud doet.
- Frezer
- De taak waar hij nu mee bezig is. De orderbak toont openstaande orders op levertijd (rood = spoed, omkaderd = de spoedorder waar ultra spoed zich nu op richt).
- Kengetallen
- Output deze week, gemiddelde output per week, % op tijd, doorlooptijd en hoe vaak een order spoed werd. De minigrafiek toont de output per week tegen het werk dat binnenkwam (stippellijn).
4. Het model: de freesafdeling
De simulatie is discrete-event: de klok springt van gebeurtenis naar gebeurtenis (taak klaar, pallet klaar, order binnen, dienst begint of eindigt) en rekent in minuten. Week 1 begint op maandag 00:00.
Machine (Hermle C42)
- Op de automaat haalt de robot de klaargezette pallets één voor één naar binnen (wissel 30 sec). De machine kiest de pallet van de order met de vroegste levertijd. Bij Ultra spoed gaat een spoedorder altijd eerst.
- Na 8 uur stilstand moet de machine eerst 10 minuten opwarmen.
- Tijdens het instellen draait er niets anders. De eerste pallet van een order levert na het instellen direct 1 product op.
- De spanenbak is vol na 40 uur frezen en het koelwater is op na 60 uur. Dan gaat de machine in alarm tot de frezer de spanenbak leegt (2 min) of koelwater bijvult (5 min). Normaal doet hij dat 1x per dag.
Palletwisselaar
- 12 kleine pallets (1 product per pallet) en 12 grote pallets (2 producten per pallet, 2 klemmen). Groot kan niet op klein en andersom.
- Er staan orders op meerdere pallets tegelijk, zo veel als efficiënt is. Er blijven pallets vrij voor orders die binnenkort ingesteld moeten worden.
- Tijdens het instellen kan er niet gewisseld worden (er is maar 1 frezer).
Gereedschapsmagazijn en standtijd
- 200 plaatsen. Elke order heeft 5 tot 30 gereedschappen, meer bij groter en moeilijker werk.
- Het zwaarst belaste gereedschap bepaalt de standtijd: 60 tot 300 min snijtijd. Dat gereedschap snijdt ongeveer 20% van de cyclustijd mee. Is de standtijd te kort voor de volgende pallet, dan slaat de machine die order over. Kan geen enkele pallet meer, dan staat hij stil met de melding "gereedschap versleten".
- Wisselen kost 5 min per versleten gereedschap (1 tot 3 per keer). Bij de werkwijze Efficiëntie zet de frezer aan het eind van de dag ook zustergereedschap bij (max. 2). Dan haalt de order de nacht of het weekend.
5. Taken van de frezer
De frezer werkt dagdienst: ma t/m vr, 07:00 tot 15:00 (40 uur). Hij doet één taak tegelijk.
| Taak | Duur | Toelichting |
|---|---|---|
| Order uitgeven | 9 min | Gereedschap uitgeven (2), programma controleren (2), meetmiddelen en mallen halen (5). Daarna duurt het 2 uur tot 2 dagen voordat het gereedschap bij de machine is. |
| Programmeren | 0,5 tot 3 u (klein), 3 tot 6 u (groot) | Bij ± 20% van de orders. Mag onderbroken worden, maar elke onderbreking kost 5 min extra. |
| Gereedschap inzetten | 5 tot 20 min | Controleren, lengtes meten en in het magazijn zetten. Kan alleen als er plek is. |
| Opspanning bouwen | 15 min | In het wisselloket. De machine kan ondertussen doorlopen. |
| Instellen | cyclustijd + 30/60/90/120/180 min | De machine gaat na de huidige pallet van de automaat (bij Ultra spoed direct, midden in een pallet). Het programma wordt stap voor stap gecontroleerd. Alleen de onderbrekingen tellen als insteltijd, de cyclustijd telt als output. |
| Pallet wisselen | 1 tot 5 min + 30 sec robot | Gereed product eruit, nieuw ruwdeel erin. Een extra pallet voor een order opspannen kost 10 min extra. |
| Meten | 2 tot 15 min | Het eerste product en daarna 1 op de 5. |
| Afbramen / afwerken | 2 tot 5 min per product | Slijpen, afbramen, oplappen, verzinken. |
| Gereedschap wisselen | 5 min per gereedschap | Als de standtijd op is (zie boven). |
| Order afmelden | 7 min | Gereedschap eruit (5) en opruimen (2). Maakt plek in het magazijn. |
| Onderhoud | 2 + 5 min | Spanenbak legen en koelwater bijvullen, 1x per dag. |
Een order is geleverd als alle producten gefreesd, uitgehaald, afgebraamd en gemeten zijn.
6. De twee werkwijzen
De frezer kiest steeds de taak met de hoogste prioriteit. De twee werkwijzen verschillen alleen in hoe die prioriteit wordt bepaald.
Machine 1: Efficiëntie
"Nooit werk laten liggen dat ervoor zorgt dat de machine langer doorloopt, pas dan levertijd prioriteren."
- Staat de machine stil of dreigt hij binnen 45 min stil te vallen? Dan eerst pallets wisselen, gereedschap wisselen of instellen.
- Laatste 90 minuten van de dienst: de machine vullen voor de nacht of het weekend. Alle pallets laden, versleten gereedschap wisselen en zustergereedschap bijzetten, spanenbak legen en koelwater bijvullen. Er wordt dan niet meer ingesteld.
- Instellen alleen als het nog binnen de dienst past en er daarna tijd over is om pallets te laden. De machine gaat pas van de automaat als de huidige pallet klaar is.
- Daarna het voorbereidende werk (uitgeven, gereedschap inzetten, opspanning, programmeren), op volgorde van levertijd.
- Een spoedorder krijgt geen voorrang buiten de gewone volgorde op levertijd.
Machine 2: Ultra spoed
"Levertijd halen, ultra spoed. Alles laten liggen en alleen de spoedorder maken. Niet met ander werk bezig zijn. Pas daarna efficiëntie."
- Is er een spoedorder, dan krijgt die altijd voorrang. Uitgeven gaat buiten de werkvoorraad om, lopend programmeerwerk wordt onderbroken (+5 min), de machine wordt midden in een pallet gestopt om in te stellen, en er worden pallets afgepakt van andere orders (die moeten later opnieuw opgespannen worden).
- Daarna de andere spoedorders, op levertijd.
- Daarna ander werk, ook weer puur op levertijd. De nacht wordt niet voorbereid. Onderhoud wordt pas gedaan als de spanenbak of het koelwater bijna op is en er geen spoed is, of als de machine al in alarm staat.
- De eerste spoedorder van de demonstratie is door de manager als ultra spoed aangemerkt en gaat vóór alle andere orders.
7. Wanneer is iets spoed?
Een order is spoed zodra de levertijd binnen 2 dagen valt en de order nog niet geleverd is. Een order die met een korte levertijd binnenkomt is dus direct spoed. Een order die te lang blijft liggen, wordt vanzelf spoed. De grafiek Aantal orders dat spoed wordt per week telt dat voor beide werkwijzen op dezelfde manier. Je ziet daar dat achterstand leidt tot nog meer spoed.
De eerste spoedorder (demonstratie): komt binnen in week 3, dinsdag 09:00, 10 kleine producten van 25 min, 60 min insteltijd, geen programmering, gereedschap binnen 2 uur. De klant wil hem woensdag 15:00 hebben.
8. Orderstroom
- Per week komt er 115 uur werk binnen (insteltijd + cyclustijd × aantal). Dat is voor beide machines gelijk. De orders komen verspreid over de werkdagen binnen.
- 50% kleine en 50% grote pallets. De moeilijkheidsgraad varieert en bepaalt de cyclustijd, de insteltijd, het aantal gereedschappen en de meettijd.
- Klein: cyclustijd ± 15 tot 140 min per product, 8 tot 50 stuks. Groot: ± 40 tot 275 min per product, 3 tot 20 stuks.
- Levertijd: 10% binnen 1 tot 2 dagen, 30% binnen 3 tot 9 dagen, 60% binnen 10 tot 30 dagen (altijd op een werkdag, 15:00).
- De orderbak is live gesorteerd op levertijd. De frezer pakt steeds de eerste. Er staan maximaal 6 uitgegeven orders in voorbereiding.
9. Kengetallen
- Output: het aantal machine-uren dat is gefreesd (cyclustijd van elk gemaakt product, inclusief het eerste product tijdens het instellen), per week bekeken.
- Op tijd: het percentage geleverde orders met leverdatum ≤ levertijd.
- Doorlooptijd: de tijd van binnenkomst tot levering, gemiddeld over de geleverde orders.
- Achterstand: het aantal orders dat binnen is maar nog niet geleverd.
- Machinetijd: snijden, instellen, wisselen, opwarmen, wachten op instellen, gereedschap versleten, alarm (spanenbak/koelwater) en geen werk klaargezet.
10. Aannames & parameters
Een model is een vereenvoudiging. De belangrijkste keuzes (aan te passen in js/sim-engine.js, object DEFAULTS):
| Parameter | Waarde |
|---|---|
| Dienst | ma–vr 07:00–15:00 (shiftStart/shiftEnd) |
| Werk per week | 115 u (workPerWeek, ook instelbaar op de pagina) |
| Spoedgrens | 2 dagen (spoedHorizon) |
| Max. orders in voorbereiding | 6 (maxPrep) |
| Nachtvoorbereiding Efficiëntie | laatste 90 min (eodWindow) |
| Spanenbak / koelwater | 40 u / 60 u snijden (binCapacity/coolantCapacity) |
| Aandeel zwaar gereedschap in cyclustijd | 20% (heavyToolShare) |
| Programmeren nodig | 20% van de orders (programShare) |
| Meten | 1e product + 1 op de 5 (measureEvery) |
Niet gemodelleerd: ziekte en verlof, storingen, afkeur, pauzes en overwerk. Die treffen beide werkwijzen, dus het verschil tussen de twee blijft zichtbaar. Er wordt niet gewerkt met gereedschap dat te laat binnenkomt of met spoedlevering van gereedschap. Alleen de spoedorder van de demonstratie heeft zijn gereedschap binnen 2 uur.
11. Techniek
- Frontend: HTML + Bootstrap 5.3 + JavaScript, met grafieken van Chart.js 4. De bibliotheken staan lokaal in
lib/, dus de pagina werkt ook zonder internet. - Simulatie:
js/sim-engine.js(gebruikt geen andere bestanden, draait in de browser en in Node). Een heel jaar voor beide machines kost ± 0,5 sec. - AJAX:
js/api.jspraat metapi/runs.php(fetch/JSON). Resultaten worden automatisch opgeslagen als het jaar klaar is. - Backend: PHP 8 met PDO, MySQL 8.0 (database
cnc_planning_sim).
GET api/health.php databasecontrole
GET api/runs.php laatste 100 runs
GET api/runs.php?id=12 één run met resultaten en weekcijfers
POST api/runs.php run opslaan (JSON)
POST api/runs.php?action=delete {"id":12} run verwijderen
Tabellen: sim_run (één regel per simulatie), sim_result (kerncijfers per strategie) en sim_week (weekcijfers per strategie).
12. Installatie
- Zet de bestanden in de webmap (IIS:
wwwroot).index.htmlstaat al in de standaarddocumenten vanweb.config. - Zorg dat PHP 8 met de extensie
pdo_mysqlin IIS actief is (FastCGI). - Maak de database aan als MySQL-root:
mysql -u root -p < db\schema.sql
Dit maakt de database, de tabellen en de gebruikercnc_simmet alleen SELECT/INSERT/DELETE-rechten. - Controleer
api/config.php(het wachtwoord moet gelijk zijn aan dat inschema.sql). Wijzig het wachtwoord bij voorkeur in beide. - Open de site. Rechtsboven moet database verbonden staan. De simulator werkt ook zonder database, dan wordt er alleen niets opgeslagen.