Cycle Controller
This controller was developed to support battery cycling or battery capacity test scenarios.
Configuration
Parameters which should be taken care of:
mode-
Select MANUAL_ON to activate the logic
ess_id-
Id of the device. ex, ess0
cycleOrder-
Initial step decide whether to start with charge or discharge in type of 'CycleOrder'. ex, START_WITH_DISCHARGE
standbyTime-
The time to wait between charge and discharge in minutes. ex, standbyTime=5, means wait 5 minute before switching from charge to discharge
startTime-
Start time in format [YYYY-MM-DD HH:MM], activates the controller logic at required date and time
maxSoc-
The maximum state-of-charge value that will be reached for charging when the controller is activated. For maxSoc=100 charging will be stopped only when 'AllowedChargePower' is 0; otherwise charging stops at maxSoc
minSoc-
The minimum state-of-charge value that will be reached for discharging when the controller is activated. For minSoc=0 discharging will be stopped only when 'AllowedDischargePower' is 0; otherwise discharging stops at minSoc
power-
The power in Watt to charge or discharge
hybridEssMode-
Whether to apply the power on AC or DC side of a hybrid ESS
totalCycleNumber-
Number of charge/discharge cycles
finalSoc-
After the last cycle, the battery will be charged/discharge to this state-of-charge
Monitoring
Channels can be followed from Grafana or online monitoring:
ctrlEssCycle0/AwaitingHysteresis-
Active when waiting between two states (see standby-time)
ctrlEssCycle0/CompletedCycleNumber-
Number of already completed cycles
ctrlEssCycle0/StateMachine-
The current State of the State-Machine: UNDEFINED, FINISHED, CHARGE, DISCHARGE, STORE_SOC, etc. states.
Algorithm logic
Controller starts with UNDEFINED state. First checks for cycleOrder configuration. If it is defined, according to the selection goes to CHARGE or `DISCHARGE state.
If cycleOrder is not defined, selection is made according to the Soc value.
If Soc is higher than 50 % starts with CHARGE state, otherwise starts with DISCHARGE state.
If the second state is CHARGE state, controller start to charge the system until maxSoc. Again, if it is configured as 100 %, when allowed charge power is 0 W, charge will be stopped. Then, based on the standbyTime configuration will wait until hysteresis completed.
Afterwards, will switch to DISCHARGE state.
If the second state is DISCHARGE state, controller start to discharge the system until minSoc. Again, if it is configured as 0 %, when allowed discharge power is 0 W, discharge will be stopped. Then, based on the standbyTime configuration will wait until hysteresis completed.
Afterwards, will switch to CHARGE state.
After first CHARGE and DISCHARGE next state will be FINISHED. If the totalCycleNumber is "1", next state will be FINAL_SOC. And in this state, according to the finalSoc system will be charged or discharged last time.
If the totalCycleNumber is higher than "1", next cycle will be called. This process will repeat itself until totalCycleNumber reaches. At the end, last state will be FINAL_SOC and required last Soc value will be kept in the battery.