MONSTER vertaalt het AQUON-rooster en de voorspelling van het influentvolume naar een plan voor debietproportionele bemonstering. De uitvoering past bij de veldopstelling; FROST levert de gegevens aan de backend.
Open de nieuwe Node-RED-tab om de flow en de HTML van de node te bekijken. Meld je aan in Node-RED om de proefbediening te gebruiken.
De JSON bevat alleen de nieuwe proeftab: 61 nodes inclusief configuratie. Het ZIP bevat de MONSTER-code, gerichte measurement-patch, AQUON-container, schema’s, documentatie en controle-uitkomsten. Geheimen staan uitsluitend in de serveromgeving. Raadpleeg het README vóór hergebruik.
De node ontvangt straks mediaan debiet vanuit een VPS-service. De input medianFlow bewaart waarde, eenheid, uitgiftetijd en optioneel monsterpunt, historieperiode en aantal metingen. Min/max vormen geen lokale schatting. Een ontvangen mediaan verandert nog geen plan en activeert geen fallback.
{ "command": { "medianFlow": {
"value": 1250, "unit": "m3/h",
"issuedAt": "2026-09-30T12:00:00Z",
"samplePointId": "112150"
} } }In de proef is 1.250 m³/h ontvangen en behouden na herdeploy; status: stored-not-used. Het toekomstige VPS-endpoint en de regels voor geldigheid en activering worden later toegevoegd. De proefforecast blijft de rekenbasis.
Teruggelezen uit FROST na een gesimuleerde handmatige PLC-start en stop. Het setpoint is de werkelijk aangeleverde PLC-waarde in de proef.
{
"runId": "mvps-monster-field-node-1790773568544-5",
"reason": "plc-stopped",
"source": "plc-feedback",
"endedAt": 1790773570412,
"startedAt": 1790773568544,
"m3PerPulse": 105,
"pulseCommands": 0,
"setpointKnown": true,
"measuredVolumeM3": 0.588
}A · De edge integreert het werkelijk gemeten debiet en geeft een puls zodra het ingestelde volume is gepasseerd. De puls loopt via de PLC of rechtstreeks naar een digitale uitgang.
MONSTER verwerkt kalender, forecast en runstatus. Koppelingen worden om de node heen ingericht.
| In MONSTER | Om MONSTER heen |
|---|---|
| Kalender vertalen en forecast verwerken | AQUON-API en forecast-API aanroepen |
| Verhouding berekenen | Ruw analoog signaal naar engineering units schalen vóór de 1-op-1-doorvoer |
| Edge- of PLC-uitvoering selecteren | PLC-transport en directe digitale uitgang aanpassen aan de installatie |
| Runstatus en grenzen bewaken | EVOLV-telemetrie naar FROST vertalen |
| Starttijd en runsetpoint vastleggen | Backend voor inzicht en dashboard |
Bij de start wordt het werkelijk geaccepteerde m³/puls samen met het startmoment bewaard voor Z-Info. Ontbrekende terugmelding wordt expliciet als onbekend vastgelegd.
Illustratief rekenvoorbeeld. Pas de waarden aan om beide schrijfwijzen van de verhouding te zien. Dit zijn voorbeeldinstellingen. De toekomstige fallback gebruikt mediaan debiet van de VPS. De aansluiting is voorbereid; fallback blijft uit.
Aantal deelmonsters = monsterinhoud ÷ deelmonstervolume, afgerond naar een heel aantal. m³ per puls = verwacht influentvolume ÷ aantal deelmonsters. Pulsen per m³ = de omgekeerde verhouding.
Voer drie eindige, positieve waarden in. De monsterinhoud moet minstens één deelmonster toelaten.
Voorstel: getypeerde OPC UA-tags voor Siemens. LREAL ↔ Double voor m³/puls; BOOL ↔ Boolean voor running/storing; UDINT ↔ UInt32 voor versies; LDT ↔ DateTime voor tijden waar ondersteund. Kalender kan als vaste arrays/velden of UDT worden aangeboden. Concrete PLC-tags volgen later.
{
"kind": "setpoint",
"m3PerPulse": 210.52631578947367,
"predictedVolumeM3": 36000,
"planVersion": 1,
"samplePointId": "112150"
}Siemens datatypebasis: S7-1500 Communication manual. Write-consistentie: OPC UA Write service. Het advies voor losse tags met acceptatie is een ontwerpkeuze; ondersteuning van UDT/arrays/methoden hangt af van CPU, firmware, TIA en client.
m³/puls en kalender worden afzonderlijk bijgewerkt. De PLC moet updates tijdens een run zelf weigeren en de actieve waarde vastleggen: dit voorkomt een start tussen status lezen en setpoint schrijven. Losse OPC UA-writes zijn geen gegarandeerd atomaire planoverdracht; commit/acceptatie moet in het PLC-contract worden afgesproken.
Debiet en andere numerieke waarden zijn met expliciete eenheden opgeslagen via CoreSync. Start- en eindregistraties staan als volledige JSON-objecten in een aparte Datastream, inclusief FeatureOfInterest. Controle gebeurt door de opgeslagen observaties terug te lezen.
Bekijk proef-Thing 196 en de Datastreams · Bekijk opgeslagen JSON-runrecords
De backend kan deze records gebruiken voor Z-Info. Externe Z-Info-aanlevering is nog niet aangesloten. Credentials blijven in de serveromgeving.
| Onderdeel | Gewenste werking | Status |
|---|---|---|
| PLC-influentdebiet | Blijft via analoge of digitale invoer of OPC UA binnenkomen. Measurement geeft het debiet 1-op-1 door, zonder afvlakking of filtering. Analoge schaling naar m³/h blijft mogelijk. | Vastgelegd |
| AQUON | De bestaande bron blijft. Rechtstreeks ophalen uit de veldflow verhuist naar een eigen containerdienst op de VPS, later verplaatsbaar naar Azure. | Vastgelegd |
| Influentvoorspelling | De bestaande centrale modeldienst wordt gebruikt voor de voorspelling van 24 uur vooruit. | Vastgelegd |
| Weer-API | De afzonderlijke weerkoppeling en lokale voorspelling op basis van regen verdwijnen uit de MONSTER-keten. | Vastgelegd |
| MONSTER | Twee uitvoeringsvormen, vereenvoudigde code en vastlegging van starttijd en geaccepteerd runsetpoint. | Vastgelegd |
| PLC-output | Pulsen of afzonderlijke OPC UA-waarden voor m³/puls en kalender. JSON is het interne berichtformaat; PLC-tags en mapping volgen later. | Transport / schema open |
| Dashboard-API | De bestaande dashboard-API verdwijnt; de backend gebruikt FROST. | Vastgelegd |
| Dbase / InfluxDB | De bestaande databasekoppeling wordt vervangen door output naar FROST. | Vastgelegd |
| Oude code | Verwijderen bij de refactor zodra de functie is vervangen; git bewaart de geschiedenis. | Vastgelegd |
Kalender dagelijks doorzetten. Tijdens idle elk uur de laatste 24-uursforecast verwerken. Bij start het geaccepteerde setpoint vastleggen en updates blokkeren tot stop of maximaal 24 uur.
m³/puls wordt een getypeerde OPC UA-waarde. PLC-tags, kalenderstructuur en acceptatieprotocol volgen later. Running-feedback is vereist om handmatige starts te herkennen.
Haal gegevens zoveel mogelijk uit de kast. Nu is alleen storing beschikbaar. Running, actief setpoint en bevestiging van genomen deelmonsters zijn aanvullende koppelingen.
Nieuwe forecast ontvangen → m³/puls berekenen → beschikbaar stellen aan de PLC. Kalender dagelijks afzonderlijk doorgeven. Fallback blijft uit.
Automatische of handmatige start terugmelden. Het door de PLC geaccepteerde m³/puls en de starttijd vastleggen. De start zet de blokkering direct aan.
Nieuwe forecasts mogen binnenkomen, maar veranderen de actieve runwaarde niet. Pas na stop of uiterlijk 24 uur na start mogen nieuwe waarden uit.
De VPS-proef bewaart de runvergrendeling in de persistente Node-RED-contextstore monsterRuns. Behoud van run-ID, starttijd en setpoint is bij herdeploy getest. Bij timeout staat de reden “timeout”; dit is geen bevestigde fysieke stop.
Veldafspraken en refactor van 30 september 2026. De proef draait in een nieuwe tab op flow.wbd-rd.nl. Alle bestaande zeven tabs en 149 nodes zijn behouden. De MONSTER-editor en browserbediening zijn gecontroleerd op desktop en mobiel.
De modeldienst POST https://forecast.wbd-rd.nl/predict is de beoogde productiebron. In deze proef gebruiken forecast en PLC-feedback expliciete voorbeelddata. De AQUON-container draait op dezelfde VPS met een fixture-CSV; de SFTP-code en env-configuratie zijn beschikbaar voor echte inloggegevens en latere Azure-hosting. Fysieke PLC-aansturing en Z-Info-import volgen later.
35 MONSTER-tests, 136 measurement-tests, 4 AQUON-tests en 16 controles op Node-RED/FROST geslaagd. De gegevens in FROST zijn herkenbare proefgegevens. MONSTER-project · SensorThings-standaard: OM_Observation voor volledige runobjecten.