Added Doppelhoeckertest
This commit is contained in:
@@ -29,6 +29,7 @@ VAR
|
||||
_iStateSafetyCheck : INT;
|
||||
_iStateBalancing : INT;
|
||||
_iStatePrecharge : INT;
|
||||
_iStateDH : INT;
|
||||
|
||||
// Start safety check mode
|
||||
_xStartSafetyCheck : BOOL;
|
||||
@@ -168,6 +169,9 @@ VAR
|
||||
|
||||
_xGetPowerMeterData : BOOL;
|
||||
|
||||
_rPowerDH : REAL;
|
||||
_fbTONDHCycleTime : TON := (PT := T#15M);
|
||||
|
||||
//_fbKaco : FB_PowerSupplyKaco('Kaco');
|
||||
//_xEnableKaco : BOOL;
|
||||
END_VAR
|
||||
@@ -655,6 +659,75 @@ CASE _eBMSControlMode OF
|
||||
_eBMSControlMode := GVL_SCADA.eRequestedControlMode;
|
||||
END_IF
|
||||
SM_PRECHARGE();
|
||||
|
||||
E_BMS_CONTROL_MODE.DH:
|
||||
_eStringOpMode := E_STRING_OPERATING_MODE.AUTOMATIC;
|
||||
_xAllComponentsToManualMode := FALSE;
|
||||
_xInSafetyCheckMode := FALSE;
|
||||
_xReleaseManualMode := FALSE;
|
||||
|
||||
// Goto error state if a string has an error
|
||||
IF _xStringsErrorActive THEN
|
||||
_iStateDH := 1000;
|
||||
END_IF
|
||||
|
||||
CASE _iStateDH OF
|
||||
0: // Idle, wait for command
|
||||
_rAutoPowerRequest := DINT_TO_REAL(GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic);
|
||||
IF (ABS(_rAutoPowerRequest) > 100.0) THEN
|
||||
_rPowerDH := _rAutoPowerRequest;
|
||||
_fbTONDHCycleTime(IN := TRUE);
|
||||
_iStateDH := 10;
|
||||
END_IF
|
||||
|
||||
10: // First power cycle
|
||||
_fbTONDHCycleTime(IN := TRUE);
|
||||
IF _fbTONDHCycleTime.Q THEN
|
||||
_rAutoPowerRequest := 0;
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0;
|
||||
_fbTONDHCycleTime(IN := FALSE);
|
||||
_iStateDH := 20;
|
||||
END_IF
|
||||
|
||||
20: // First pause
|
||||
_fbTONDHCycleTime(IN := TRUE);
|
||||
IF _fbTONDHCycleTime.Q THEN
|
||||
_rAutoPowerRequest := _rPowerDH;
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := REAL_TO_DINT(_rAutoPowerRequest);
|
||||
_fbTONDHCycleTime(IN := FALSE);
|
||||
_iStateDH := 30;
|
||||
END_IF
|
||||
|
||||
30: // Second power phase
|
||||
_fbTONDHCycleTime(IN := TRUE);
|
||||
IF _fbTONDHCycleTime.Q THEN
|
||||
_rAutoPowerRequest := 0;
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0;
|
||||
_fbTONDHCycleTime(IN := FALSE);
|
||||
_iStateDH := 0;
|
||||
END_IF
|
||||
|
||||
1000: // Error state
|
||||
_rAutoPowerRequest := 0;
|
||||
_rPowerDH := 0;
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0;
|
||||
_fbTONDHCycleTime(IN := FALSE);
|
||||
_iStateDH := 1010;
|
||||
|
||||
1010: // Wait for reset
|
||||
IF _xConfirmAlarms THEN
|
||||
_iStateDH := 0;
|
||||
END_IF
|
||||
|
||||
END_CASE
|
||||
//IF (_iState <> 30) OR GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic = 0 THEN
|
||||
|
||||
//END_IF
|
||||
IF (GVL_SCADA.eRequestedControlMode <> _eBMSControlMode) AND (GVL_SCADA.xCanChangeControlMode) THEN
|
||||
_eBMSControlMode := GVL_SCADA.eRequestedControlMode;
|
||||
END_IF
|
||||
SM_AUTO();
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := REAL_TO_DINT(_rAutoPowerRequest);
|
||||
END_CASE
|
||||
|
||||
GVL_SCADA.xCanChangeControlMode := _xCanChangeMode;
|
||||
|
||||
Reference in New Issue
Block a user