Added automatic manual mode change for all components if manual mode is selected, Added moving average filter to analog data

This commit is contained in:
Matthias Heisig
2024-08-26 22:19:29 +02:00
parent 58e511438e
commit 112f7cb7d9
8 changed files with 367 additions and 866 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.7">
<POU Name="FB_Module" Id="{87be924f-018d-4c09-997b-f0c0054414cc}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Module
VAR_INPUT
@@ -36,6 +36,9 @@ VAR_INPUT
// Release manual mode
xReleaseManualMode : BOOL;
// Switch all components to manual mode
xAllToManualMode : BOOL;
// Input to confirm all errors
xConfirmAlarms : BOOL;
@@ -106,6 +109,10 @@ VAR
// Module name
_sName : STRING;
// Moving average filter for module voltage
//_fbMAFVoltage : FB_MovingAverageFilter;
//_arMAFVoltage : ARRAY[0..9] OF REAL;
_fbBalanceNotOkSignal : FB_ReleaseSignal;
xDebug1 : BOOL;
@@ -143,6 +150,7 @@ _fbUnit1(
xConfirmAlarms:= xConfirmAlarms,
xReleaseManualMode := xReleaseManualMode,
rBalancingTargetVoltage := rBalancingTargetVoltage,
xAllToManualMode := xAllToManualMode,
_xWarningConfirmPending=> );
IF _fbUnit1.xWarning THEN
@@ -180,6 +188,7 @@ _fbUnit2(
xConfirmAlarms:= xConfirmAlarms,
xReleaseManualMode := xReleaseManualMode,
rBalancingTargetVoltage := rBalancingTargetVoltage,
xAllToManualMode := xAllToManualMode,
_xWarningConfirmPending=> );
IF _fbUnit2.xWarning THEN
@@ -217,6 +226,7 @@ _fbUnit3(
xConfirmAlarms:= xConfirmAlarms,
xReleaseManualMode := xReleaseManualMode,
rBalancingTargetVoltage := rBalancingTargetVoltage,
xAllToManualMode := xAllToManualMode,
_xWarningConfirmPending=> );
IF _fbUnit3.xWarning THEN
@@ -254,6 +264,7 @@ _fbUnit4(
xConfirmAlarms:= xConfirmAlarms,
xReleaseManualMode := xReleaseManualMode,
rBalancingTargetVoltage := rBalancingTargetVoltage,
xAllToManualMode := xAllToManualMode,
_xWarningConfirmPending=> );
IF _fbUnit4.xWarning THEN
@@ -307,7 +318,9 @@ xOff := _fbUnit1.xOff AND _fbUnit2.xOff AND _fbUnit3.xOff AND _fbUnit4.xOff;
// Calculate module voltage
// ===============================
rCurrentVoltage := _fbUnit1.rCurrentVoltage + _fbUnit2.rCurrentVoltage + _fbUnit3.rCurrentVoltage + _fbUnit4.rCurrentVoltage;
stHMIInterface.rVoltage := rCurrentVoltage;
//_fbMAFVoltage(pValues := ADR(_arMAFVoltage), iArraySize := 10, rCurrentValue := rCurrentVoltage, rAverage => stHMIInterface.rVoltage);
//stHMIInterface.rVoltage := rCurrentVoltage;
stHMIInterface.rVoltage := stHMIInterface.rVoltage * 0.9 + rCurrentVoltage * 0.1;
// ===============================
@@ -462,91 +475,5 @@ _fbUnitsOutOfBalanceAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Implementation>
</Set>
</Property>
<LineIds Name="FB_Module">
<LineId Id="903" Count="15" />
<LineId Id="1601" Count="0" />
<LineId Id="1706" Count="0" />
<LineId Id="1305" Count="0" />
<LineId Id="1226" Count="0" />
<LineId Id="919" Count="2" />
<LineId Id="924" Count="3" />
<LineId Id="1588" Count="0" />
<LineId Id="928" Count="7" />
<LineId Id="1482" Count="0" />
<LineId Id="936" Count="15" />
<LineId Id="1602" Count="0" />
<LineId Id="1707" Count="0" />
<LineId Id="1306" Count="0" />
<LineId Id="1227" Count="0" />
<LineId Id="952" Count="2" />
<LineId Id="957" Count="3" />
<LineId Id="1589" Count="0" />
<LineId Id="961" Count="7" />
<LineId Id="1483" Count="0" />
<LineId Id="969" Count="15" />
<LineId Id="1603" Count="0" />
<LineId Id="1708" Count="0" />
<LineId Id="1307" Count="0" />
<LineId Id="1228" Count="0" />
<LineId Id="985" Count="2" />
<LineId Id="990" Count="3" />
<LineId Id="1590" Count="0" />
<LineId Id="994" Count="7" />
<LineId Id="1484" Count="0" />
<LineId Id="1002" Count="15" />
<LineId Id="1604" Count="0" />
<LineId Id="1709" Count="0" />
<LineId Id="1308" Count="0" />
<LineId Id="1229" Count="0" />
<LineId Id="1018" Count="2" />
<LineId Id="1023" Count="3" />
<LineId Id="1702" Count="0" />
<LineId Id="1027" Count="7" />
<LineId Id="1485" Count="0" />
<LineId Id="1035" Count="14" />
<LineId Id="1597" Count="3" />
<LineId Id="1596" Count="0" />
<LineId Id="1594" Count="0" />
<LineId Id="1050" Count="60" />
<LineId Id="1387" Count="0" />
<LineId Id="1386" Count="0" />
<LineId Id="1389" Count="4" />
<LineId Id="1388" Count="0" />
<LineId Id="1111" Count="28" />
<LineId Id="1578" Count="1" />
<LineId Id="1577" Count="0" />
<LineId Id="1580" Count="0" />
<LineId Id="1584" Count="0" />
<LineId Id="1581" Count="2" />
<LineId Id="1140" Count="13" />
<LineId Id="674" Count="0" />
</LineIds>
<LineIds Name="FB_Module.FB_init">
<LineId Id="7" Count="0" />
<LineId Id="29" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="31" Count="2" />
<LineId Id="30" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="42" Count="0" />
<LineId Id="41" Count="0" />
<LineId Id="43" Count="0" />
</LineIds>
<LineIds Name="FB_Module.Name.Get">
<LineId Id="2" Count="0" />
</LineIds>
<LineIds Name="FB_Module.Name.Set">
<LineId Id="2" Count="0" />
<LineId Id="8" Count="0" />
<LineId Id="12" Count="3" />
<LineId Id="11" Count="0" />
<LineId Id="6" Count="1" />
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>