ADR-001: Build-Time Variant Generation Instead of Runtime Variant Selection¶
Status¶
Accepted
Date¶
2026-05-10
Context¶
The PCS platform shall support different propulsion technologies and vessel configurations, including at least:
- Diesel-mechanical propulsion with controllable pitch propellers (CPP)
- Diesel-electric propulsion with VFD-driven propulsion motors
- Different numbers of generators
- Different numbers of propulsion drives
- Different power plant topologies
- Different feature sets depending on vessel type and project scope
Although these systems may share common operator-facing concepts such as lever handling, station transfer, command arbitration, alarms, limits, and operating modes, their internal control and protection logic can be fundamentally different.
For example, a diesel-mechanical CPP system typically requires logic for:
- Pitch control
- Pitch limitation
- Pitch rate limitation
- Engine speed demand
- Engine load limitation
- Thermal run-up
- Critical speed avoidance
- Windmilling behavior
- Governor interface handling
A diesel-electric VFD propulsion system typically requires logic for:
- Propulsion power demand
- Torque and speed demand handling
- VFD state machines
- Drive enable chains
- Available power calculation
- Generator reserve handling
- Bus voltage and frequency protection
- Underfrequency and undervoltage response
- Blackout prevention
- Power plant recovery behavior
A single large PLC application containing all possible propulsion technologies, topologies, and feature combinations would introduce significant complexity. Such a system would require extensive runtime configuration inside TIA Portal and would contain many unused blocks, branches, parameters, and HMI elements for any given vessel.
This would negatively affect readability, maintainability, testing effort, commissioning effort, and long-term product quality.
The PCS platform is therefore intended to be developed as a configurable software platform, where the vessel-specific application is generated from a structured configuration file during the engineering/build process.
The primary configuration file shall be:
pcs.settings.json