pumpingStation schema: add flow dead-band, output formats, level-armed shift
- general.flowThreshold: configurable m3/s dead-band for steady-flow detection - output.process / output.dbase: enum for port-0 / port-1 payload format - control.levelbased.enableShiftedRamp: hysteresis toggle - control.levelbased.shiftLevel: arming level for the shifted ramp - inflowLevel description clarified as "bottom/invert of inlet pipe" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,14 @@
|
||||
"description": "The default flow unit used for reporting station throughput."
|
||||
}
|
||||
},
|
||||
"flowThreshold": {
|
||||
"default": 0.0001,
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Flow dead-band in m3/s below which the station treats net flow as steady."
|
||||
}
|
||||
},
|
||||
"logging": {
|
||||
"logLevel": {
|
||||
"default": "info",
|
||||
@@ -127,6 +135,50 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"process": {
|
||||
"default": "process",
|
||||
"rules": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
{
|
||||
"value": "process",
|
||||
"description": "Delta-compressed process message."
|
||||
},
|
||||
{
|
||||
"value": "json",
|
||||
"description": "JSON payload."
|
||||
},
|
||||
{
|
||||
"value": "csv",
|
||||
"description": "CSV-formatted payload."
|
||||
}
|
||||
],
|
||||
"description": "Format of the process payload emitted on output port 0."
|
||||
}
|
||||
},
|
||||
"dbase": {
|
||||
"default": "influxdb",
|
||||
"rules": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
{
|
||||
"value": "influxdb",
|
||||
"description": "InfluxDB telemetry payload."
|
||||
},
|
||||
{
|
||||
"value": "json",
|
||||
"description": "JSON payload."
|
||||
},
|
||||
{
|
||||
"value": "csv",
|
||||
"description": "CSV-formatted payload."
|
||||
}
|
||||
],
|
||||
"description": "Format of the telemetry payload emitted on output port 1."
|
||||
}
|
||||
}
|
||||
},
|
||||
"asset": {
|
||||
"uuid": {
|
||||
"default": null,
|
||||
@@ -240,7 +292,7 @@
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Height of the inlet pipe measured from the basin floor (m)."
|
||||
"description": "Bottom/invert height of the inlet pipe measured from the basin floor (m)."
|
||||
}
|
||||
},
|
||||
"outflowLevel": {
|
||||
@@ -248,7 +300,7 @@
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Height of the outlet pipe measured from the basin floor (m)."
|
||||
"description": "Top height of the outlet or pump-suction pipe measured from the basin floor (m)."
|
||||
}
|
||||
},
|
||||
"overflowLevel": {
|
||||
@@ -438,7 +490,7 @@
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Below this level the MGC shuts down all pumps (unconditional stop). Above dryRunLevel (safety), below startLevel (DEAD ZONE)."
|
||||
"description": "Below this level the MGC shuts down all pumps (unconditional stop). Between minLevel and the active ramp start, demand is held at 0 %."
|
||||
}
|
||||
},
|
||||
"startLevel": {
|
||||
@@ -446,7 +498,7 @@
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Level at which the pump demand ramp begins at 0 %. Demand scales linearly from startLevel (0 %) to maxLevel (100 %)."
|
||||
"description": "Lower shifted ramp point used while draining. While filling, demand is held at 0 % from startLevel through inletLevel, then scales from inletLevel to maxLevel."
|
||||
}
|
||||
},
|
||||
"maxLevel": {
|
||||
@@ -456,6 +508,46 @@
|
||||
"min": 0,
|
||||
"description": "Level at which the pump demand saturates at 100 %. Above this, demand stays clamped."
|
||||
}
|
||||
},
|
||||
"curveType": {
|
||||
"default": "linear",
|
||||
"rules": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
{
|
||||
"value": "linear",
|
||||
"description": "Linear demand scaling between the active lower ramp level and maxLevel."
|
||||
},
|
||||
{
|
||||
"value": "log",
|
||||
"description": "Logarithmic demand scaling with fast response early in the ramp."
|
||||
}
|
||||
],
|
||||
"description": "Demand curve used by levelbased control."
|
||||
}
|
||||
},
|
||||
"logCurveFactor": {
|
||||
"default": 9,
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0.001,
|
||||
"description": "Shape factor for the levelbased log curve; higher values increase early response."
|
||||
}
|
||||
},
|
||||
"enableShiftedRamp": {
|
||||
"default": false,
|
||||
"rules": {
|
||||
"type": "boolean",
|
||||
"description": "When true, arm a hysteresis shift: once level rises past shiftLevel the ramp foot moves left from inflowLevel to startLevel until level falls back below startLevel."
|
||||
}
|
||||
},
|
||||
"shiftLevel": {
|
||||
"default": 0,
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"description": "Level (m) that arms the shifted ramp when crossed going up. Should be ≤ maxLevel. Ignored when enableShiftedRamp is false."
|
||||
}
|
||||
}
|
||||
},
|
||||
"pressureBased": {
|
||||
@@ -634,7 +726,14 @@
|
||||
"default": true,
|
||||
"rules": {
|
||||
"type": "boolean",
|
||||
"description": "If true, high level alarms and shutdowns will be enforced to prevent overfilling."
|
||||
"description": "Deprecated alias for enableHighVolumeSafety. If true, high level alarms and shutdowns will be enforced to preserve overflow margin."
|
||||
}
|
||||
},
|
||||
"enableHighVolumeSafety": {
|
||||
"default": true,
|
||||
"rules": {
|
||||
"type": "boolean",
|
||||
"description": "If true, high-volume safety actions run before the basin reaches physical overflow."
|
||||
}
|
||||
},
|
||||
"overfillThresholdPercent": {
|
||||
@@ -643,7 +742,16 @@
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"description": "Volume percentage above which overfill protection activates."
|
||||
"description": "Deprecated alias for highVolumeSafetyThresholdPercent."
|
||||
}
|
||||
},
|
||||
"highVolumeSafetyThresholdPercent": {
|
||||
"default": 98,
|
||||
"rules": {
|
||||
"type": "number",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"description": "Percentage of maxVolAtOverflow where high-volume safety activates before actual overflow."
|
||||
}
|
||||
},
|
||||
"timeleftToFullOrEmptyThresholdSeconds": {
|
||||
|
||||
Reference in New Issue
Block a user