- 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>
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# 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
|
|
1. Implement PID only inside `pumpingStation`.
|
|
2. Implement shared PID in `generalFunctions` and consume it from `pumpingStation`.
|
|
3. 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.
|
|
- `generalFunctions` already 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.js` flow-based branch to previous heuristic logic.
|
|
- Keep shared PID module in `generalFunctions` for future use, or revert `nodes/generalFunctions/src/pid/*` if required.
|
|
|
|
## Migration Notes
|
|
- For `flowbased`, start with low `kp/ki`, verify stability in commissioning, then tune upward.
|
|
- Use `freezeFlowPid` and `setFlowPidMode` during maintenance or manual takeover.
|