Files
Uniper_PLC/PLC/POUs/FB_Safety.TcPOU
2025-10-14 16:19:19 +02:00

50 lines
1.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<POU Name="FB_Safety" Id="{f74eb8e4-e878-485f-9706-8dd039061a6b}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Safety
VAR_INPUT
xVoltagesInRange AT %I* : BOOL;
xPressureInRange AT %I* : BOOL;
xTemperaturesInRange AT %I* : BOOL;
xReset : BOOL;
refuStringErrorsModbus : REFERENCE TO U_BMS_ERROR_REGISTER;
END_VAR
VAR_OUTPUT
xErrorLatched : BOOL;
END_VAR
VAR
_latchedVoltages : BOOL;
_latchedPressures : BOOL;
_latchedTemperatures : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF xReset THEN
xReset := FALSE;
_latchedVoltages := FALSE;
_latchedPressures := FALSE;
_latchedTemperatures := FALSE;
xErrorLatched := FALSE;
END_IF
IF (NOT xVoltagesInRange) AND NOT xErrorLatched THEN
_latchedVoltages := TRUE;
xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorVoltage := 1;
END_IF
IF (NOT xPressureInRange) AND NOT xErrorLatched THEN
_latchedPressures := TRUE;
xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorPressure := 1;
END_IF
IF (NOT xTemperaturesInRange) AND NOT xErrorLatched THEN
_latchedTemperatures := TRUE;
xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorTemperature := 1;
END_IF]]></ST>
</Implementation>
</POU>
</TcPlcObject>