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:
@@ -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_Unit" Id="{e9bb815b-eb46-4920-800d-910484e58b22}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Unit
|
||||
VAR_INPUT
|
||||
@@ -42,6 +42,11 @@ VAR_INPUT
|
||||
// Balancing target Voltage
|
||||
rBalancingTargetVoltage : REAL;
|
||||
|
||||
// Switch all components to manual mode
|
||||
xAllToManualMode : BOOL;
|
||||
|
||||
// Switch all components to auto mode
|
||||
|
||||
// Inverter enabled status
|
||||
xInverterEnabled : BOOL;
|
||||
END_VAR
|
||||
@@ -194,6 +199,25 @@ VAR
|
||||
// Freezed balancing target voltage
|
||||
_rBalancingTargetVoltage : REAL;
|
||||
|
||||
// Trigger for switching to manual mode
|
||||
_rtrigSwitchToManualMode : R_TRIG;
|
||||
|
||||
// Trigger for switching to automatic mode
|
||||
_rtrigSwitchToAutoMode : R_TRIG;
|
||||
_tonManualMode : TON;
|
||||
|
||||
// Filtered pressure sensor posolyt segment inlet data for HMI
|
||||
_rFilteredPressPosolytInlet : REAL;
|
||||
|
||||
// Filtered pressure sensor posolyt segment inlet data for HMI
|
||||
_rFilteredPressNegolytInlet : REAL;
|
||||
|
||||
// Filtered pressure sensor posolyt tank inlet data for HMI
|
||||
_rFilteredPressPosolytTank : REAL;
|
||||
|
||||
// Filtered pressure sensor posolyt tank inlet data for HMI
|
||||
_rFilteredPressNegolytTank : REAL;
|
||||
|
||||
// Indicate if it ise the first cycle
|
||||
xFirstCycle : BOOL := TRUE;
|
||||
END_VAR
|
||||
@@ -228,6 +252,26 @@ END_VAR
|
||||
xFirstCycle := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
// Manual mode trigger
|
||||
_tonManualMode(IN := (xAllToManualMode AND xReleaseManualMode), PT := T#10S);
|
||||
_rtrigSwitchToManualMode(CLK := _tonManualMode.Q);
|
||||
IF _rtrigSwitchToManualMode.Q THEN
|
||||
_fbPosolytValveTankOutlet.ReqManualMode();
|
||||
_fbNegolytValveTankOutlet.ReqManualMode();
|
||||
_fbPosolytPumpInlet.ReqManualMode();
|
||||
_fbNegolytPumpInlet.ReqManualMode();
|
||||
END_IF
|
||||
|
||||
// Auto mode trigger
|
||||
_rtrigSwitchToAutoMode(CLK := (NOT _tonManualMode.Q));
|
||||
IF _rtrigSwitchToAutoMode.Q THEN
|
||||
_fbPosolytValveTankOutlet.ReqAutomaticMode();
|
||||
_fbNegolytValveTankOutlet.ReqAutomaticMode();
|
||||
_fbPosolytPumpInlet.ReqAutomaticMode();
|
||||
_fbNegolytPumpInlet.ReqAutomaticMode();
|
||||
END_IF
|
||||
|
||||
// Reset MCB logic
|
||||
_tofResetMCB(IN := xConfirmAlarms);
|
||||
xResetMCB := _tofResetMCB.Q;
|
||||
@@ -264,6 +308,7 @@ _fbPosolytValveTankOutlet(
|
||||
stValveConfig:= stUnitConfig.stConfigPosolytValve,
|
||||
stHMIInterface:= stHMIInterface.stNS12);
|
||||
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPosolytValveTankOutlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -329,7 +374,7 @@ _fbPosolytPumpInlet(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
rSPautomatic:= _rSetpointPosolytPumpInlet,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors AND GVL_SCADA.xDummy,
|
||||
stMotorAnalogConfig:= stUnitConfig.stConfigPosolytPump,
|
||||
stHMIInterface:= stHMIInterface.stNS11,
|
||||
xWarning=> );
|
||||
@@ -373,7 +418,7 @@ _fbNegolytPumpInlet(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
rSPautomatic:= _rSetpointNegolytPumpInlet,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors AND GVL_SCADA.xDummy,
|
||||
stMotorAnalogConfig:= stUnitConfig.stConfigNegolytPump,
|
||||
stHMIInterface:= stHMIInterface.stNS21,
|
||||
xWarning=> );
|
||||
@@ -407,6 +452,10 @@ _fbPressurePosolytSegmentInlet(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stP11);
|
||||
|
||||
// Filter pressure sensor data for HMI
|
||||
_rFilteredPressPosolytInlet := _rFilteredPressPosolytInlet * 0.9 + stHMIInterface.stP11.rValue * 0.1;
|
||||
stHMIInterface.stP11.rValue := _rFilteredPressPosolytInlet;
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressurePosolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -431,6 +480,10 @@ _fbPressureNegolytSegmentInlet(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stP21);
|
||||
|
||||
// Filter pressure sensor data for HMI
|
||||
_rFilteredPressNegolytInlet := _rFilteredPressNegolytInlet * 0.9 + stHMIInterface.stP21.rValue * 0.1;
|
||||
stHMIInterface.stP21.rValue := _rFilteredPressNegolytInlet;
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressureNegolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -455,6 +508,10 @@ _fbPressurePosolytTankInlet(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stP12);
|
||||
|
||||
// Filter pressure sensor data for HMI
|
||||
_rFilteredPressPosolytTank := _rFilteredPressPosolytTank * 0.9 + stHMIInterface.stP12.rValue * 0.1;
|
||||
stHMIInterface.stP12.rValue := _rFilteredPressPosolytTank;
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressurePosolytTankInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -479,6 +536,10 @@ _fbPressureNegolytTankInlet(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stP22);
|
||||
|
||||
// Filter pressure sensor data for HMI
|
||||
_rFilteredPressNegolytTank := _rFilteredPressNegolytTank * 0.9 + stHMIInterface.stP22.rValue * 0.1;
|
||||
stHMIInterface.stP22.rValue := _rFilteredPressNegolytTank;
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressureNegolytTankInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -575,7 +636,7 @@ END_IF
|
||||
// ===============================
|
||||
// Write Voltage to HMI
|
||||
// ===============================
|
||||
stHMIInterface.rVoltage := _fbVoltageSegment.rScaledValue;
|
||||
stHMIInterface.rVoltage := stHMIInterface.rVoltage * 0.9 + _fbVoltageSegment.rScaledValue * 0.1;
|
||||
|
||||
|
||||
// ===============================
|
||||
@@ -615,7 +676,7 @@ _xAllComponentsInAutomatic := _fbPosolytValveTankOutlet.IsInAutomaticMode
|
||||
AND _fbNegolytPumpInlet.IsInAutomaticMode;
|
||||
|
||||
// Raise warning
|
||||
IF NOT _fbNotAllAutomaticAlarm.bRaised AND (NOT _xAllComponentsInAutomatic) THEN
|
||||
IF NOT _fbNotAllAutomaticAlarm.bRaised AND (NOT _xAllComponentsInAutomatic) AND (NOT xAllToManualMode) THEN
|
||||
_fbNotAllAutomaticAlarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
@@ -1026,226 +1087,5 @@ CASE _iState OF
|
||||
END_CASE]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<LineIds Name="FB_Unit">
|
||||
<LineId Id="6787" Count="0" />
|
||||
<LineId Id="6969" Count="0" />
|
||||
<LineId Id="7155" Count="1" />
|
||||
<LineId Id="6970" Count="0" />
|
||||
<LineId Id="7157" Count="0" />
|
||||
<LineId Id="6968" Count="0" />
|
||||
<LineId Id="6790" Count="0" />
|
||||
<LineId Id="7158" Count="1" />
|
||||
<LineId Id="6792" Count="0" />
|
||||
<LineId Id="7160" Count="0" />
|
||||
<LineId Id="6963" Count="1" />
|
||||
<LineId Id="6960" Count="0" />
|
||||
<LineId Id="6971" Count="1" />
|
||||
<LineId Id="6965" Count="1" />
|
||||
<LineId Id="6961" Count="1" />
|
||||
<LineId Id="7774" Count="0" />
|
||||
<LineId Id="7957" Count="2" />
|
||||
<LineId Id="7775" Count="0" />
|
||||
<LineId Id="6793" Count="0" />
|
||||
<LineId Id="6791" Count="0" />
|
||||
<LineId Id="6980" Count="0" />
|
||||
<LineId Id="6788" Count="0" />
|
||||
<LineId Id="6981" Count="1" />
|
||||
<LineId Id="6789" Count="0" />
|
||||
<LineId Id="4232" Count="4" />
|
||||
<LineId Id="5406" Count="1" />
|
||||
<LineId Id="5405" Count="0" />
|
||||
<LineId Id="5592" Count="0" />
|
||||
<LineId Id="5591" Count="0" />
|
||||
<LineId Id="5593" Count="0" />
|
||||
<LineId Id="4237" Count="24" />
|
||||
<LineId Id="5408" Count="0" />
|
||||
<LineId Id="4584" Count="0" />
|
||||
<LineId Id="5409" Count="2" />
|
||||
<LineId Id="5418" Count="0" />
|
||||
<LineId Id="4263" Count="25" />
|
||||
<LineId Id="5412" Count="2" />
|
||||
<LineId Id="4289" Count="0" />
|
||||
<LineId Id="5416" Count="0" />
|
||||
<LineId Id="5415" Count="0" />
|
||||
<LineId Id="4290" Count="36" />
|
||||
<LineId Id="5420" Count="3" />
|
||||
<LineId Id="5419" Count="0" />
|
||||
<LineId Id="4327" Count="38" />
|
||||
<LineId Id="5425" Count="3" />
|
||||
<LineId Id="5424" Count="0" />
|
||||
<LineId Id="4619" Count="0" />
|
||||
<LineId Id="4367" Count="46" />
|
||||
<LineId Id="5099" Count="0" />
|
||||
<LineId Id="5101" Count="2" />
|
||||
<LineId Id="5095" Count="0" />
|
||||
<LineId Id="5124" Count="17" />
|
||||
<LineId Id="5104" Count="1" />
|
||||
<LineId Id="5096" Count="2" />
|
||||
<LineId Id="5094" Count="0" />
|
||||
<LineId Id="5106" Count="17" />
|
||||
<LineId Id="4621" Count="0" />
|
||||
<LineId Id="7575" Count="0" />
|
||||
<LineId Id="5143" Count="2" />
|
||||
<LineId Id="5142" Count="0" />
|
||||
<LineId Id="5151" Count="0" />
|
||||
<LineId Id="5153" Count="2" />
|
||||
<LineId Id="5159" Count="3" />
|
||||
<LineId Id="5150" Count="0" />
|
||||
<LineId Id="5190" Count="3" />
|
||||
<LineId Id="5195" Count="0" />
|
||||
<LineId Id="5194" Count="0" />
|
||||
<LineId Id="5196" Count="1" />
|
||||
<LineId Id="7574" Count="0" />
|
||||
<LineId Id="5147" Count="2" />
|
||||
<LineId Id="5146" Count="0" />
|
||||
<LineId Id="5198" Count="15" />
|
||||
<LineId Id="5170" Count="0" />
|
||||
<LineId Id="7573" Count="0" />
|
||||
<LineId Id="4622" Count="3" />
|
||||
<LineId Id="6419" Count="0" />
|
||||
<LineId Id="4626" Count="8" />
|
||||
<LineId Id="4937" Count="0" />
|
||||
<LineId Id="6420" Count="0" />
|
||||
<LineId Id="6423" Count="8" />
|
||||
<LineId Id="6421" Count="1" />
|
||||
<LineId Id="4635" Count="8" />
|
||||
<LineId Id="4620" Count="0" />
|
||||
<LineId Id="7572" Count="0" />
|
||||
<LineId Id="6068" Count="1" />
|
||||
<LineId Id="6253" Count="2" />
|
||||
<LineId Id="7571" Count="0" />
|
||||
<LineId Id="6070" Count="0" />
|
||||
<LineId Id="4644" Count="0" />
|
||||
<LineId Id="6071" Count="1" />
|
||||
<LineId Id="6079" Count="0" />
|
||||
<LineId Id="6081" Count="4" />
|
||||
<LineId Id="6080" Count="0" />
|
||||
<LineId Id="7962" Count="3" />
|
||||
<LineId Id="7967" Count="0" />
|
||||
<LineId Id="7966" Count="0" />
|
||||
<LineId Id="7968" Count="1" />
|
||||
<LineId Id="7971" Count="0" />
|
||||
<LineId Id="7970" Count="0" />
|
||||
<LineId Id="7972" Count="1" />
|
||||
<LineId Id="7960" Count="0" />
|
||||
<LineId Id="6075" Count="0" />
|
||||
<LineId Id="6089" Count="1" />
|
||||
<LineId Id="7570" Count="0" />
|
||||
<LineId Id="4645" Count="0" />
|
||||
<LineId Id="4414" Count="0" />
|
||||
<LineId Id="4647" Count="0" />
|
||||
<LineId Id="4646" Count="0" />
|
||||
<LineId Id="4416" Count="13" />
|
||||
<LineId Id="5234" Count="0" />
|
||||
<LineId Id="5233" Count="0" />
|
||||
<LineId Id="5235" Count="0" />
|
||||
<LineId Id="7568" Count="0" />
|
||||
<LineId Id="7565" Count="2" />
|
||||
<LineId Id="7576" Count="0" />
|
||||
<LineId Id="4430" Count="0" />
|
||||
<LineId Id="4556" Count="6" />
|
||||
<LineId Id="2754" Count="0" />
|
||||
<LineId Id="7581" Count="1" />
|
||||
<LineId Id="7580" Count="0" />
|
||||
<LineId Id="7583" Count="1" />
|
||||
<LineId Id="7569" Count="0" />
|
||||
<LineId Id="7585" Count="1" />
|
||||
<LineId Id="7588" Count="0" />
|
||||
<LineId Id="7587" Count="0" />
|
||||
<LineId Id="7589" Count="1" />
|
||||
<LineId Id="7592" Count="0" />
|
||||
<LineId Id="7591" Count="0" />
|
||||
<LineId Id="7593" Count="2" />
|
||||
<LineId Id="5747" Count="0" />
|
||||
<LineId Id="5746" Count="0" />
|
||||
<LineId Id="5748" Count="2" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Unit.FB_init">
|
||||
<LineId Id="11" Count="0" />
|
||||
<LineId Id="20" Count="0" />
|
||||
<LineId Id="12" Count="0" />
|
||||
<LineId Id="7" Count="1" />
|
||||
<LineId Id="29" Count="0" />
|
||||
<LineId Id="28" Count="0" />
|
||||
<LineId Id="30" Count="1" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Unit.Name.Get">
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Unit.Name.Set">
|
||||
<LineId Id="2" Count="0" />
|
||||
<LineId Id="7" Count="0" />
|
||||
<LineId Id="6" Count="0" />
|
||||
<LineId Id="5" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Unit.StateMachine">
|
||||
<LineId Id="2" Count="6" />
|
||||
<LineId Id="246" Count="0" />
|
||||
<LineId Id="9" Count="1" />
|
||||
<LineId Id="238" Count="2" />
|
||||
<LineId Id="279" Count="0" />
|
||||
<LineId Id="247" Count="0" />
|
||||
<LineId Id="242" Count="0" />
|
||||
<LineId Id="241" Count="0" />
|
||||
<LineId Id="11" Count="48" />
|
||||
<LineId Id="296" Count="0" />
|
||||
<LineId Id="60" Count="0" />
|
||||
<LineId Id="298" Count="0" />
|
||||
<LineId Id="324" Count="0" />
|
||||
<LineId Id="299" Count="0" />
|
||||
<LineId Id="297" Count="0" />
|
||||
<LineId Id="61" Count="0" />
|
||||
<LineId Id="248" Count="0" />
|
||||
<LineId Id="250" Count="6" />
|
||||
<LineId Id="249" Count="0" />
|
||||
<LineId Id="62" Count="13" />
|
||||
<LineId Id="260" Count="0" />
|
||||
<LineId Id="257" Count="0" />
|
||||
<LineId Id="76" Count="0" />
|
||||
<LineId Id="258" Count="1" />
|
||||
<LineId Id="77" Count="13" />
|
||||
<LineId Id="340" Count="2" />
|
||||
<LineId Id="91" Count="11" />
|
||||
<LineId Id="338" Count="0" />
|
||||
<LineId Id="106" Count="4" />
|
||||
<LineId Id="231" Count="2" />
|
||||
<LineId Id="230" Count="0" />
|
||||
<LineId Id="234" Count="0" />
|
||||
<LineId Id="111" Count="20" />
|
||||
<LineId Id="235" Count="2" />
|
||||
<LineId Id="132" Count="10" />
|
||||
<LineId Id="327" Count="0" />
|
||||
<LineId Id="329" Count="0" />
|
||||
<LineId Id="328" Count="0" />
|
||||
<LineId Id="143" Count="35" />
|
||||
<LineId Id="300" Count="3" />
|
||||
<LineId Id="305" Count="2" />
|
||||
<LineId Id="304" Count="0" />
|
||||
<LineId Id="243" Count="1" />
|
||||
<LineId Id="269" Count="0" />
|
||||
<LineId Id="280" Count="0" />
|
||||
<LineId Id="270" Count="1" />
|
||||
<LineId Id="266" Count="0" />
|
||||
<LineId Id="272" Count="2" />
|
||||
<LineId Id="245" Count="0" />
|
||||
<LineId Id="275" Count="3" />
|
||||
<LineId Id="308" Count="1" />
|
||||
<LineId Id="311" Count="1" />
|
||||
<LineId Id="339" Count="0" />
|
||||
<LineId Id="310" Count="0" />
|
||||
<LineId Id="313" Count="1" />
|
||||
<LineId Id="316" Count="1" />
|
||||
<LineId Id="325" Count="1" />
|
||||
<LineId Id="323" Count="0" />
|
||||
<LineId Id="315" Count="0" />
|
||||
<LineId Id="281" Count="4" />
|
||||
<LineId Id="287" Count="4" />
|
||||
<LineId Id="179" Count="42" />
|
||||
<LineId Id="292" Count="0" />
|
||||
<LineId Id="222" Count="5" />
|
||||
<LineId Id="293" Count="0" />
|
||||
<LineId Id="228" Count="1" />
|
||||
<LineId Id="1" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user