Waterschap Brabantse Delta · R&D-lab · research-artifact

KSB Calio 40-80 — Pompkarakterisering

R&D-lab gemeten 2026-06-23 → 06-24 versie 1.1 gereviewd
Kan een 3D-puntenwolk van gemeten pompprestaties (toerental × systeemdruk) worden ingepast in de rotatingMachine cubic-spline-voorspeller, en voorspelt de uitgerolde digital-twin dan de echte output? We hebben de KSB Calio 40-80 op de RevPi181033 pilot-opstelling end-to-end gemeten (1617 steady-state-punten), de nq/np-curve per drukfamilie gefit, live gevalideerd tegen de echte output en de curve opgeslagen in de asset-catalogus + Postgres. De voorspeller haalt een mediane debietfout van ~1,4% (binnen de UFM-nauwkeurigheid) en ~1,37 W op het vermogen; de resterende afwijking zit in de gesmoorde shutoff-hoek. Voor WBD is dit een werkende, gevalideerde pomp-twin met een reproduceerbaar karakteriseringsrecept.

Aanleiding & vraag

De EVOLV digital-twin heeft voor elke roterende machine een prestatiecurve nodig die zijn echte gedrag voorspelt. Deze karakterisering meet de KSB Calio 40-80 (RevPi181033 pilot-testopstelling testopstelling_1, pump1, gekoppeld aan de pump1- & pump3-twins, 2026-06-23 → 06-24) end-to-end en past de puntenwolk in de rotatingMachine cubic-spline-voorspeller als nq/np-slices per druk, gevalideerd tegen de echte output en opgeslagen in de asset-catalogus.[1]

Data & methode

Apparatuur & meetopzet

Externe sweep-controller (rig_sweep.js, hergebruikt de offline geteste brain engine.js) — de Node-RED van de pi is CPU-verzadigd, dus het aansturen van sweep-timing/heartbeat daarbinnen riskeerde een valse watchdog-trip.

uitgangen: piTest CV1 + pump1 debiet/dP: piTest ft1/pt1/pt2 (realtime) toerental/vermogen: directe Modbus stabilisator: vlakke trend op debiet+dP, adaptieve verblijftijd heartbeat: fs.utimes elke tick dynamische nul-debiet-skip (dalend onder 40%) systemd watchdog · pump2 nooit aangedreven

Raster: fijn 2%×2% (klep 100→54%, oplopend) + grof 3%×4% aflopend met nul-debiet-skip (54→1%). InfluxDB 2.7 + Grafana 11.3 (dashboard rig-pump-curve); engineering-schalen afgelezen uit de Node-RED sensorbereiken (debiet 0–10 m³/h, druk −200…1000 mbar).

Gemeten werkgebied (engineering-eenheden)

Gemeten werkgebied in engineering-eenheden per grootheid, met de ruwe→eng-schaal en de geschatte BEP. Zo is te zien over welk bereik de karakterisering geldig is.
Debiet (UFM ft1)0.09 – 6.69 m³/hruw 4150–14697 · schaal (ft1−4000)/1600
Differentiële head (Vega pt2−pt1)0.4 – 7.9 m (42 – 773 mbar)dP_mbar = dp_raw × 0.075
Toerental (Modbus)1020 – 3530 rpm2–10 V analoge aansturing
Asvermogen (Modbus)2 – 165 Wcontrol% = (V−2)/8 × 100
BEP (geschat)47.4% @ 5.30 m³/h · 4.96 m · 151 Wη = ρgQH/P

Resultaten

Live gesloten lus — voorspeld vs gemeten (rotatingMachine-node)

De rotatingMachine-node (model ksb-calio-40-80) aangedreven op 6 echte werkpunten: voorspeld debiet/vermogen (zijn predict-engine + de curve) vs de gemeten echte output. De uitgerolde node laadt de curve en voorspelt live (gestabiliseerd ctrl 100% → 3.18 vs 3.10 m³/h in de runtime).

Live gesloten lus: de uitgerolde rotatingMachine-node op 6 echte werkpunten — voorspeld vs gemeten debiet en vermogen, met Δ. Debiet binnen ~0,1–0,2 m³/h en vermogen binnen ~2 W over het werkbereik; het zwakkere punt (80% @ 581 mbar) ligt op de hoge-head/gesloten-klep-rand.
control%dPvoorsp. debietgem. debietΔ debietvoorsp. vermogengem. vermogenΔ vermogen
40230 mbar2.702.87 m³/h−0.174345 W−2
563602.162.33 m³/h−0.176059 W+1
703805.295.30 m³/h−0.01125125 W0
805812.132.91 m³/h−0.78100111 W−11
904425.755.77 m³/h−0.02156155 W+1
1006572.993.10 m³/h−0.11132133 W−1

Overeenkomst: debiet binnen ~0.1–0.2 m³/h en vermogen binnen ~2 W over het hele werkbereik (het ene zwakkere punt, 80% @ 581 mbar, ligt op een rand met hoge head en gesloten klep van het gesplinede gebied). Over de volledige dataset van 1617 punten zijn de mediane fouten ~1.4% debiet / 1.37 W vermogen (zie Validatie hieronder). Let op: de live auto-capture van 6 punten in Node-RED liep tegen een Port-0 delta-compressie-race voor tussenliggende punten; de uitgerolde node zelf voorspelt correct (de engine + curve hier zijn precies wat hij draait) — een settle-gated capture is een kleine vervolgactie.

In één oogopslag

1617
steady-state-punten gelogd
42
klepstanden (100%→~1%)
16
dP-familiesleutels (curve)
~1.4%
debietvoorspellingsfout (mediaan)
1.37 W
vermogensvoorspellingsfout (mediaan)
0
watchdog-trips / pump2 aangedreven

Pompkaart — debiet & vermogen vs control%, per head-niveau van 100 mbar

Bemonsterd via de rotatingMachine predict-engine over het haalbare control-%-venster van elk niveau.

Pompkaart: per head-niveau (100 mbar-stappen) het haalbare control%-venster en het debiet/vermogen min→max, bemonsterd via de predict-engine. Fysisch consistent — hogere head vereist een hoger minimumtoerental en snijdt bij vol toerental het debiet richting shutoff.
dPheadhaalbaar ctrl%debiet min→maxvermogen min→max
100 mbar1.0 m15–23%1.74 → 3.17 m³/h14 → 27 W
200 mbar2.0 m35–49%2.73 → 4.91 m³/h38 → 70 W
300 mbar3.1 m49–67%2.41 → 5.99 m³/h51 → 122 W
400 mbar4.1 m62–100%2.98 → 6.30 m³/h (piek ~78%)77 → 161 W
500 mbar5.1 m71–100%2.37 → 5.13 m³/h85 → 153 W
600 mbar6.1 m80–100%0.88 → 3.93 m³/h78 → 143 W
700 mbar7.1 m92–100%~2.13 m³/h~120 W

Fysisch consistent: debiet stijgt met toerental bij elke head; hogere head vereist een hoger minimumtoerental; bij vol toerental snijdt smoren (↑head) het debiet richting shutoff (6.3→5.1→3.9→2.1 m³/h voor 400→700 mbar).

Validatie — voorspeld vs echte output (binnen ruis)

De rotatingMachine-voorspeller (predict-klasse + de ksb-calio-40-80-curve) gedraaid over alle 1617 gemeten punten; residu = gemeten − voorspeld.

Validatie over alle 1617 gemeten punten: residu (gemeten − voorspeld) per segment en grootheid — bias, |mediaan|, |p95|, |max|. Binnen werkgebied is de mediaan 0,062 m³/h (~1,4%) en 1,37 W; de staarten zijn de shutoff-hoek en de UFM-ruisvloer bij bijna nul debiet.
segmentgrootheidbias|mediaan||p95||max|
binnen werkgebied (n=1276)debiet+0.050.062 m³/h0.63 m³/h1.71 m³/h
binnen werkgebied (n=1276)vermogen+1.41.37 W15.1 W27.2 W
alle punten (n=1617)debiet+0.040.109 m³/h1.33 m³/h2.50 m³/h
alle punten (n=1617)vermogen+0.01.20 W17.2 W46.3 W

Mediane debietovereenkomst ~1.4% van de meetwaarde — binnen de typische UFM-nauwkeurigheid (1–2%). Staarten (p95/max) zijn de shutoff-hoek (enkele niet-splinebare lijn, predict clamp't) en de UFM-ruisvloer bij bijna nul debiet — per definitie buiten het gekarakteriseerde werkgebied. De live uitgerolde twin laadt de curve schoon (geen fouten); het sluiten van de live operationele lus (de pomp-dP voeden + de Modbus-eenheden van de residu-node uitlijnen) is de resterende bedradingsstap.

Discussie & beperkingen — de p95-staart

Oorzaak en de toegepaste fix

Oorzaak (geen vertragingen, geen instabiele punten): de slechtste 5%-staart was slechts voor 5% instabiel (= het baseline-percentage) en die punten waren goed gestabiliseerd (σ ~0.01-0.03 m³/h). Het was een systematische over-voorspelling bij zwaar gesmoorde punten dicht bij shutoff (klep ~19-25% open, echt debiet ~1.0-1.5 m³/h, curve voorspelt ~2.3-2.95). Dicht bij de shutoff van elk pomptoerental heeft de debiet-vs-dP-curve een steile cliff; met slechts 16 dP-familiesleutels (44 mbar uit elkaar) vlakte de familie-interpolatie van de voorspeller die knik af. Erger nog, de bovenste omsluitende familie mist vaak het opgevraagde control-niveau (bijv. control 60% kan fysiek geen 424 mbar bereiken), dus de voorspeller clamp'te naar het debiet van een hoger toerental en mengde dat erin.

Fix: de curve opnieuw opgebouwd met 40 dP-familiesleutels geconcentreerd bij de gesmoorde hoek (~14 mbar afstand bij hoge dP vs ~26 bij lage dP; γ=0.8-plaatsing). Dichtere sleutels bij de shutoff van elk toerental laten de familie die dat control-niveau wél vasthoudt het instortende debiet dragen. De sleuteldichtheid is afgetopt op het punt waar de monotone-cubic-spline zou gaan ringen (overshoot) op de steile cliff — dichter gaan introduceerde opnieuw onfysische rimpeling, dus dit is de praktische limiet van de engine.

Debiet-|residu| binnen werkgebied vóór (16 sleutels) vs na (40 sleutels) het verdichten bij de gesmoorde hoek. p95 halveert (0,630 → 0,319, −49%) en de hoge-dP-banden verbeteren sterk; de absolute max blijft ongewijzigd (structurele engine-limiet).
debiet |residu| binnen werkgebiedvóór (16 sleutels)na (40 sleutels)
p950.6300.319 (−49%)
p900.4270.241
mediaan0.0620.048
500-650 mbar p950.8490.676
650-800 mbar p951.2360.31
vermogen p9515.1 W6.1 W
absolute max1.711.81 (ongewijzigd)

Eerlijke kanttekening: de absolute max verbeterde niet. Een handvol cliff-rand-punten bij midden-control (bijv. control 52% bij dP 339, precies op de shutoff van dat toerental) voorspellen nog steeds ~1.5-1.8 m³/h verkeerd, omdat de opgevraagde dP net boven het punt zit waar enige familie dat control-niveau nog kan vasthouden, wat de clamp afdwingt. Dat is de structurele limiet van de predict-engine (normalisatie per familie + clamping), niet een van sleuteldichtheid — het wegnemen ervan vereist feasibility-aware of lineaire interpolatie, een engine-wijziging die hier niet is gedaan. De punten hieronder weerspiegelen nu de 40-sleutel-curve; de live twins op RevPi181033 (pump_1, pump_3) en de catalogus/Postgres zijn dienovereenkomstig bijgewerkt.

Interactieve dataverkenner — alle 1617 punten

scrollwiel = zoom · slepen = pannen · hover = puntdetails · dubbelklik = reset. Wissel de weergave en de kleuring.

kleur:
Interactieve verkenner van alle 1617 gemeten punten. Wissel tussen debiet gem-vs-voorsp, debietresidu vs dP, debiet vs control% en vermogen gem-vs-voorsp; kleur naar dP / klep% / control% / stabiel; optioneel alleen binnen werkgebied. Databron: empirische sweep + offline residu-analyse met de live rotatingMachine predict-engine.

Opslag & levering

Waar de gekarakteriseerde curve is opgeslagen en geleverd: curve-JSON, catalogus-spec, lokale + cloud-Postgres, de gekoppelde twin-modellen en de openstaande PR's. Zo is het leverpad end-to-end traceerbaar.
Curve (nq/np, eng-eenheden)curves/ksb-calio-40-80.json16 dP-sleutels
Catalogus-spec-vermeldingcatalog/rotatingmachine.json + seedtoegevoegd
Postgres curve-store (lokaal)asset_curve / asset_spec op de pigeladen + geverifieerd
Postgres source-of-truth (cloud-pad)seed/curves/…json.gz → CI/deploygeseed
Twin-model gekoppeldpump1 + pump3 → ksb-calio-40-80uitgerold
PR — generalFunctionsRnD/generalFunctions #14open
PR — EVOLVRnD/EVOLV #79open

Testopstelling hersteld

pump1 = 10000 (vol)pump3 = 10000pump2 = 0 (uit)CV1 = 20000 (open)watchdog actief + ontwapendNode-RED + twin + dashboard onlineModbus-polling hervat

Bronnen

  1. Empirische sweep KSB Calio 40-80, RevPi181033 pilot-testopstelling testopstelling_1 — 1617 steady-state-punten over 42 klepstanden; InfluxDB 2.7 + Grafana 11.3 (dashboard rig-pump-curve). gemeten 2026-06-23 → 06-24
  2. rotatingMachine predict-engine + ksb-calio-40-80-curve, rig_sweep.js / engine.js / tools/rig/RESULTS.md (EVOLV rotating-machine tooling).
  3. PR RnD/generalFunctions #14. link ↗ open 2026-06-24
  4. PR RnD/EVOLV #79. link ↗ open 2026-06-24
  5. KSB Calio 40-80, pompgegevens / datasheet (fabrikant KSB).
Data-vintage Empirische sweep RevPi181033 · gemeten 2026-06-23 → 06-24 (1617 punten)
Methode nq/np cubic-spline-fit per drukfamilie (40 dP-sleutels); residu = gemeten − voorspeld over de predict-engine; mediaan/p95/max per segment
Code & reproduceerbaarheid rig_sweep.js / engine.js / tools/rig/RESULTS.md; data + logica in dit bestand (view-source); Plotly uit /artifacts/lib/
Contact R&D-lab · lab.wbd-rd.nl