De uitdaging
DairyFresh BV — 95 medewerkers, continue pasteurisatie + UHT tower + 3 Tetra Pak filling lines, 18 SKU's. Stack vóór de transformatie: Siemens S7-1500, Allen-Bradley CompactLogix, AVEVA Wonderware InTouch, papieren MES, gebroken Wonderware historian, Microsoft Dynamics 365, stand-alone LIMS-spreadsheet. Eén failed Power BI pilot. Eén failed predictive-maintenance pilot.
De aanhoudende pijn: SKU-S04 (Heavy Cream Premium, 35% vet) CIP-cycli draaiden 41-45 minuten in plaats van de 28-minuten baseline. De QA officer wilde — terecht — niet inkorten zonder fail-safe.
De oplossing — 7 stappen
- Connect — Raspberry Pi 5 in IP65-behuizing leest 11 OPC-UA tags (caustic temp, conductivity, turbidity, pasteurizer hold-temp, NIR fat-pct, CIP recipe-ID, CIP phase) en duwt ze via outbound MQTT/TLS naar MonsterMQ op een €5,77/mnd VPS. Een LIMS-bridge accepteert TVC swab-resultaten via webhook.
- Condition — Eenheden normaliseren, deadbands. Hold-temp tag is niet deadband-filtered — audit trail vereist continue 1Hz (EU Regulation 853/2004 compliance).
- Model — ISA-95 + ISA-S88 master recipes voor CIP.
cip_classesmap metphase_setpointsper klasse: CIP-CL-A (heavy-fat removal) heeft alkali setpoint 82°C / 720s. De map houdt ooksolve_short_recipe_overrides(-5°C, -300s) entvc_max_cfu_cm2: 10. De beslissingsruimte zit in het model, niet in de PLC. - Store — MongoDB 7 time-series, enriched met
cip_id,cip_class,phase,prev_sku. Sister-collections:cip_cycles(S88 batch records met hygiene-flags) enlims_results(TVC swab outcomes). - Orchestrate — Zeven N8N workflows.
wf-006-cip-watchpast de short-recipe override alleen toe als beide gates pass: recipe class + last-18-hygiene-pass conditie. Zusterworkflowwf-003-hygiene-watchrolt de override automatisch terug als een swab boven 10 cfu/cm² komt. - Visualize — Grafana voor de QA officer (TVC-distributie, alkali pressure profile, short-recipe effectiveness scatter); Next.js voor operators. Beide via FastAPI.
- Distribute — FastAPI exposeert 12 endpoints.
POST /api/cip-recipe-overrideschrijft de override naar MongoDB en publiceert een retained MQTT command. De edge-subscriber zet dat om in een OPC-UA write naar de CIP-skid recipe namespace — gegrendeld door PLC-side minima (alkali_temp_min: 75°C, duration_min: 360s; de cloud kan dat niet overrulen).
De val (lees dit twee keer)
Na stap 7 had DairyFresh een prachtige data layer. Tags streamden, ISA-95+S88 gemodelleerd, MongoDB queryable, Grafana toonde de slagroom-CIP overshoot in heldere kleuren. Audit-ready, demo-able, "we hebben een data layer."
En slagroom-CIP draaide nog steeds 45 minuten.
Omdat niemand iets besliste. De QA officer zag het dashboard, kende het patroon, maar wilde geen kortere recipe autoriseren — en terecht zonder een fail-safe. Detectie zonder gesloten loop is surveillance, geen controle. In een voedselfabriek is dat niet alleen een architectuur-gat, het is een regulatoire showstopper.
Solve — de loop, gesloten (met hygiene fail-safe)
De Solve vraag: als een CIP-cyclus volgt op een heavy-cream batch (fat_pct > 25%), kunnen we dan autonoom een 5°C lagere caustic-temperatuur en 5 minuten kortere alkali-spoeling toepassen — en bewijzen dat TVC swab counts onder 10 cfu/cm² blijven?
De loop draait autonoom. En rolt zichzelf automatisch terug als een TVC boven de limit komt — de QA officer houdt haar baan, de fabriek houdt haar licentie, en de architectuur houdt haar mandaat.
Resultaat
| Metric | Voor | Na |
|---|---|---|
| Heavy-cream CIP duur | 45 min | 28 min |
| Caustic per cyclus | 240 L | 165 L |
| Stoom per cyclus | 38 kg | 24 kg |
| Productverlies op cream-CIP dagen | 6,8% | 1,2% |
| TVC hygiene pass-rate (short-recipe runs) | n.v.t. | 18/18 = 100% |
| Marginale infra-kost jaar 1 | n.v.t. | €165 |
| Jaarlijkse opportunity (cream recipes) | onbenut | €87K/jaar |
ROI jaar 1 op alleen de cream recipes: 530×.
Wat dit bewijst
Open source kan wat een Tetra Pak Plant Master integratie van €60K/jaar zou doen — maar dat is het proof point, niet de pitch. De villain is de ontbrekende laag waardoor AI faalt in gereguleerde industrieën. Stap 3 (ISA-95 + S88 modelling met klasse-aware setpoints + hygiene-drempels) is het hart. Solve met twee-assige meting — duur én TVC — sluit de loop.
Je kunt alle 7 stappen bouwen en alsnog falen — als Solve niet de regulatoire constraints embedt waar de fabriek onder opereert.
"You're missing one layer — and AI can't fix what it can't understand."
Wil jij ook zulke resultaten?
Plan een gratis AI check van 30 minuten en ontdek welke quick wins er voor jouw bedrijf mogelijk zijn
Plan Gratis AI Check