- Update all submodule URLs from gitea.centraal.wbd-rd.nl to gitea.wbd-rd.nl - Add settler as proper submodule in .gitmodules - Add agent skills, function anchors, decisions, and improvements - Add Docker configuration and scripts - Add manuals and third_party docs - Update .gitignore with secrets and build artifacts - Remove stale .tgz build artifact Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
Decision: Shared Modern PID in generalFunctions + PumpingStation Flow-Based Adoption
- Date: 2026-02-23
- Scope:
nodes/generalFunctions/src/pid/*,nodes/pumpingStation/src/*
Context
Flow-based control in pumpingStation needed a production-grade PID with freeze/unfreeze, runtime retuning, and support for cascade/secondary-loop architecture.
Options Considered
- Implement PID only inside
pumpingStation. - Implement shared PID in
generalFunctionsand consume it frompumpingStation. - Keep current heuristic (non-PID) flow controller.
Decision
Chose option 2.
Rationale
- PID behavior is cross-domain control functionality and should be reusable across EVOLV nodes.
generalFunctionsalready serves as shared utility/runtime infrastructure.- Reuse reduces drift and duplicated control logic.
- PumpingStation can immediately adopt shared PID while preserving existing topic contracts.
Consequences
- Positive:
- Single, test-covered PID implementation with modern features.
- PumpingStation flow mode becomes true closed-loop control.
- Runtime support for freeze/unfreeze and tuning updates without redeploy.
- Risks:
- Behavioral differences versus prior heuristic flow control.
- Requires conservative tuning per site.
Safety / Compatibility
- No existing topic names were removed.
- Added optional control topics for PID runtime management.
- Existing non-flowbased modes remain intact.
Rollback
- Revert
nodes/pumpingStation/src/specificClass.jsflow-based branch to previous heuristic logic. - Keep shared PID module in
generalFunctionsfor future use, or revertnodes/generalFunctions/src/pid/*if required.
Migration Notes
- For
flowbased, start with lowkp/ki, verify stability in commissioning, then tune upward. - Use
freezeFlowPidandsetFlowPidModeduring maintenance or manual takeover.