Added Kaco inverter implementation
- Added Kaco inverter implementation - Small refactoring - Added release inverter power signal for simultaneous start of the inverters
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="MAIN" Id="{bbd7302c-91ce-4697-9f4b-743f57ca5819}" SpecialFunc="None">
|
||||
<Declaration><;]]></ST>
|
||||
// Wait for power command
|
||||
IF (ABS(_rAutoPowerRequest) > DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) AND (NOT _xStringsErrorActive) AND _xStringsAllInAutomaticMode AND (NOT _xEMSHeartbeatNotOK) THEN
|
||||
_iState := 5;
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_xCanChangeMode := FALSE;
|
||||
_xErrorShutdown := FALSE;
|
||||
END_IF
|
||||
@@ -974,6 +978,7 @@ _fbPowerMeter24V();]]></ST>
|
||||
30: // String and inverter enabled
|
||||
// Set inverter power to modbus requested power
|
||||
_rPowerInverter := _rAutoPowerRequest;
|
||||
_xReleaseInverterPower := TRUE;
|
||||
|
||||
// Check if the battery should still be active
|
||||
IF (_rAutoPowerRequest = 0.0) THEN
|
||||
@@ -1077,7 +1082,8 @@ _fbPowerMeter24V();]]></ST>
|
||||
END_IF
|
||||
|
||||
// Check for errors
|
||||
IF _xStringsErrorActive OR _xEMSHeartbeatNotOK THEN
|
||||
IF _xStringsErrorActive OR _xEMSHeartbeatNotOK THEN
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_xEnableString := FALSE;
|
||||
_xErrorShutdown := TRUE;
|
||||
_tonBeginShutdown(In := FALSE);
|
||||
@@ -1092,6 +1098,7 @@ _fbPowerMeter24V();]]></ST>
|
||||
IF GVL_CONFIG.xShutdownDischargeWithInverter THEN
|
||||
_iState := 40;
|
||||
ELSE
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_rPowerInverter := 0.0;
|
||||
_xEnableString := FALSE;
|
||||
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0;
|
||||
@@ -1112,6 +1119,7 @@ _fbPowerMeter24V();]]></ST>
|
||||
IF _xStringsShutdownDischargeAllowed OR _xEMSHeartbeatNotOK THEN
|
||||
_rPowerInverter := GVL_CONFIG.rAbsShutdownDischargePower;
|
||||
ELSE
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_xGetPowerMeterData := TRUE;
|
||||
GVL_MODBUS.stModbusEMSComm.stModbusReg10.uiActiveParallelMembers := 0;
|
||||
_rPowerInverter := 0.0;
|
||||
@@ -1155,6 +1163,7 @@ _fbPowerMeter24V();]]></ST>
|
||||
|
||||
1000: // Error state
|
||||
GVL_MODBUS.stModbusEMSComm.stModbusReg10.uiActiveParallelMembers := 0;
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_xEnableString := FALSE;
|
||||
_rPowerInverter := 0.0;
|
||||
GVL_MODBUS.stModbusEMSComm.stModbusReg11.eBatteryStatus := E_BATTERY_STATUS.ERROR;
|
||||
@@ -1210,6 +1219,7 @@ END_IF
|
||||
<ST><![CDATA[CASE _iStateBalancing OF
|
||||
0: // Test
|
||||
IF GVL_SCADA.stAutomaticModeHMI.stStartAutoButton.xRequest THEN
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_iStateBalancing := 5;
|
||||
END_IF
|
||||
|
||||
@@ -1256,7 +1266,8 @@ END_CASE]]></ST>
|
||||
</Action>
|
||||
<Action Name="SM_MANUAL" Id="{ddef276e-9f4f-4258-b863-d254dd94b701}">
|
||||
<Implementation>
|
||||
<ST><![CDATA[_xCanChangeMode := TRUE;]]></ST>
|
||||
<ST><![CDATA[_xCanChangeMode := TRUE;
|
||||
_xReleaseInverterPower := FALSE;]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="SM_PRECHARGE" Id="{b84aedc8-0039-40a2-8abe-a166eca7bebc}">
|
||||
@@ -1282,6 +1293,7 @@ CASE _iStatePrecharge OF
|
||||
IF _xStartPrecharge AND _xStringsAllInAutomaticMode THEN
|
||||
_xEnableString := TRUE;
|
||||
_iStatePrecharge := 10;
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_rPowerInverter := 0.0;
|
||||
_xCanChangeMode := FALSE;
|
||||
END_IF
|
||||
@@ -1362,7 +1374,7 @@ IF GVL_SCADA.stAutomaticModeHMI.stStartAutoButton.xRequest THEN
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// Sto pif stop button pressed
|
||||
// Stop if stop button pressed
|
||||
IF GVL_SCADA.stAutomaticModeHMI.stStopAutoButton.xRequest THEN
|
||||
_xStartSafetyCheck := FALSE;
|
||||
END_IF
|
||||
@@ -1374,6 +1386,7 @@ CASE _iStateSafetyCheck OF
|
||||
// Wait for start command
|
||||
IF _xStartSafetyCheck AND _xStringsAllInAutomaticMode THEN
|
||||
_xEnableString := TRUE;
|
||||
_xReleaseInverterPower := FALSE;
|
||||
_iStateSafetyCheck := 10;
|
||||
_rPowerInverter := 0.0;
|
||||
_xCanChangeMode := FALSE;
|
||||
|
||||
Reference in New Issue
Block a user