Files
EVOLV/.agents/decisions/DECISION-20260223-pid-controller-placement-and-flowbased.md
znetsixe 6a6c04d34b Migrate to new Gitea instance (gitea.wbd-rd.nl)
- 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>
2026-03-04 21:07:04 +01:00

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

  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.