Files
infineon_plc/PLC/00_Main/PRG_Safety.TcPOU

44 lines
1.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="PRG_Safety" Id="{3b12eabc-3e96-45aa-8279-75f07072b9b0}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Safety
VAR_INPUT
xConfirmAlarms : BOOL;
xRobotStopped : BOOL;
END_VAR
VAR_OUTPUT
xStopRobot : BOOL := FALSE;
xEStopOk AT %I* : BOOL;
END_VAR
VAR
xComStartup AT %I* : BOOL;
xRequestOpenDoor AT %I* : BOOL;
xRun AT %Q* : BOOL;
xErrorAck AT %Q* : BOOL;
xLockDoor AT %Q* : BOOL := TRUE;
_rtDoorUnlock : R_TRIG;
_tofErrorAck : TOF;
_xStopRobot : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[xRun := NOT xComStartup;
_rtDoorUnlock(CLK := xRequestOpenDoor AND xRobotStopped);
IF _rtDoorUnlock.Q THEN
_xStopRobot := (NOT _xStopRobot);
xLockDoor := (NOT xLockDoor);
END_IF
// Reset safety group errors
_tofErrorAck(IN:= xConfirmAlarms, PT:= T#500MS, Q=> xErrorAck, ET=> );
// Copy internal signals to outputs
xStopRobot := _xStopRobot;]]></ST>
</Implementation>
</POU>
</TcPlcObject>