First string implemented

This commit is contained in:
Matthias Heisig
2024-04-18 08:32:21 +02:00
parent 9ce3522a70
commit b95033a155
64 changed files with 14526 additions and 6024 deletions

View File

@@ -8,6 +8,9 @@ VAR_INPUT
// String in safety check mode
xInSafetyCheckMode : BOOL;
// Components shortage workaround
stStringModuleVoltageConfig : ST_STRING_VOLT_CONFIG;
// Module 1 HMI interface
stHMIInterface : REFERENCE TO ST_STRING_HMI_INTERFACE;
@@ -67,9 +70,9 @@ VAR_OUTPUT
eStatus : E_COMPONENT_STATUS;
END_VAR
VAR
_fbModule1 : FB_Module('Module 1');
_fbModule2 : FB_Module('Module 2');
_fbModule3 : FB_Module('Module 3');
_fbModule1 : FB_Module(CONCAT(Name,' - Module 1'));
_fbModule2 : FB_Module(CONCAT(Name,' - Module 2'));
_fbModule3 : FB_Module(CONCAT(Name,' - Module 3'));
// All modules are ready
_xAllModulesReady : BOOL;
@@ -95,6 +98,9 @@ VAR
// Error timer for not closing dc relais
_tonErrorDCCBNotClosed : TON := (PT := T#5S);
// Delayed balance check signal
_fbBalanceNotOkSignal : FB_ReleaseSignal;
// String name
_sName : STRING;
END_VAR
@@ -117,6 +123,7 @@ xResetSafetyDCCB := xResetSafety;
// ===============================
_fbModule1(
xEnable := xEnable,
stModuleVoltageConfig := stStringModuleVoltageConfig.stModule1VoltConfig,
xInSafetyCheckMode := xInSafetyCheckMode,
xEmergencyStopOk:= xEmergencyStopOk,
stHMIInterface:= stHMIInterface.stHMIInterfaceModule1,
@@ -148,6 +155,7 @@ END_IF
_fbModule2(
xEnable := xEnable,
stModuleVoltageConfig := stStringModuleVoltageConfig.stModule2VoltConfig,
xInSafetyCheckMode := xInSafetyCheckMode,
xEmergencyStopOk:= xEmergencyStopOk,
stHMIInterface:= stHMIInterface.stHMIInterfaceModule2,
@@ -178,6 +186,7 @@ END_IF
// ===============================
_fbModule3(
xEnable := xEnable,
stModuleVoltageConfig := stStringModuleVoltageConfig.stModule3VoltConfig,
xInSafetyCheckMode := xInSafetyCheckMode,
xEmergencyStopOk:= xEmergencyStopOk,
stHMIInterface:= stHMIInterface.stHMIInterfaceModule3,
@@ -218,7 +227,7 @@ END_IF
// ===============================
// Modules ready check
// ===============================
_xAllModulesReady := _fbModule1.xReady AND _fbModule3.xReady; // _fbModule2.xReady AND
_xAllModulesReady := _fbModule1.xReady AND _fbModule2.xReady AND _fbModule3.xReady;
// ===============================
@@ -265,19 +274,26 @@ IF ABS(_fbModule2.rCurrentVoltage - _fbModule3.rCurrentVoltage) > GVL_CONFIG.rMa
_xBalanceOk := FALSE;
END_IF
// Release signal for balance not ok
_fbBalanceNotOkSignal(
xSignal:= _xBalanceOk OR (NOT xEnable),
xRelease:= TRUE,
timOnDelay:= T#5S,
timOffDelay:= T#60S,
xReleaseSignal=> );
// Signal an error if all units are ready and module is out of balance
IF _xAllModulesReady AND (NOT _xBalanceOk) THEN
IF _xAllModulesReady AND (NOT _fbBalanceNotOkSignal.xReleaseSignal) THEN
xError := TRUE;
END_IF
// Raise error
IF (NOT _xBalanceOk) AND (NOT _fbModulesOutOfBalanceAlarm.bRaised) THEN
IF (NOT _fbBalanceNotOkSignal.xReleaseSignal) AND (NOT _fbModulesOutOfBalanceAlarm.bRaised) THEN
_fbModulesOutOfBalanceAlarm.Raise(0);
END_IF
// Clear error
IF _xBalanceOk AND _fbModulesOutOfBalanceAlarm.bRaised THEN
IF _fbBalanceNotOkSignal.xReleaseSignal AND _fbModulesOutOfBalanceAlarm.bRaised THEN
_fbModulesOutOfBalanceAlarm.Clear(0, FALSE);
END_IF
@@ -294,7 +310,7 @@ _tonErrorDCCBNotClosed();
CASE _iState OF
0: // Idle
IF _xAllModulesReady AND _xBalanceOk AND xAllModulesInAutoMode THEN
IF _xAllModulesReady AND _xBalanceOk AND xAllModulesInAutoMode AND xEnable THEN
xCloseDCCB := TRUE;
xResetSafetyDCCB := TRUE;
_tonResetPulseLength.IN := TRUE;
@@ -316,6 +332,7 @@ CASE _iState OF
END_IF
IF _tonErrorDCCBNotClosed.Q THEN
_tonErrorDCCBNotClosed.IN := FALSE;
xError := TRUE;
xReady := FALSE;
_iState := 1000;
END_IF
@@ -326,10 +343,12 @@ CASE _iState OF
// OTHERWISE THE DC CIRCUIT BREAKERS WILL OPEN WHILE THE INVERTER IS STILL ACTIVE
// THIS CAN DAMAGE THE INVERTER
IF NOT xEnable THEN
xCloseDCCB := FALSE;
// xCloseDCCB := FALSE;
_iState := 0;
ELSIF NOT _xAllModulesReady OR NOT _xBalanceOk THEN
xError := TRUE;
// xCloseDCCB := FALSE;
_iState := 1000;
END_IF
1000: // Error state
@@ -434,6 +453,7 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="67" Count="1" />
<LineId Id="47" Count="0" />
<LineId Id="140" Count="0" />
<LineId Id="978" Count="0" />
<LineId Id="875" Count="0" />
<LineId Id="48" Count="0" />
<LineId Id="50" Count="2" />
@@ -455,6 +475,7 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="871" Count="0" />
<LineId Id="76" Count="0" />
<LineId Id="141" Count="0" />
<LineId Id="979" Count="0" />
<LineId Id="876" Count="0" />
<LineId Id="77" Count="3" />
<LineId Id="601" Count="0" />
@@ -466,6 +487,7 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="764" Count="0" />
<LineId Id="90" Count="5" />
<LineId Id="142" Count="0" />
<LineId Id="980" Count="0" />
<LineId Id="877" Count="0" />
<LineId Id="96" Count="3" />
<LineId Id="602" Count="0" />
@@ -503,6 +525,7 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="212" Count="0" />
<LineId Id="237" Count="1" />
<LineId Id="236" Count="0" />
<LineId Id="1187" Count="6" />
<LineId Id="215" Count="5" />
<LineId Id="353" Count="13" />
<LineId Id="352" Count="0" />
@@ -529,6 +552,7 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="739" Count="1" />
<LineId Id="720" Count="0" />
<LineId Id="744" Count="0" />
<LineId Id="1194" Count="0" />
<LineId Id="746" Count="0" />
<LineId Id="727" Count="1" />
<LineId Id="718" Count="0" />
@@ -537,7 +561,10 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="741" Count="0" />
<LineId Id="749" Count="0" />
<LineId Id="742" Count="1" />
<LineId Id="716" Count="1" />
<LineId Id="716" Count="0" />
<LineId Id="1082" Count="0" />
<LineId Id="1081" Count="0" />
<LineId Id="717" Count="0" />
<LineId Id="729" Count="1" />
<LineId Id="738" Count="0" />
<LineId Id="731" Count="0" />