Files
Adeco_20220119-01/TC3_CNCPLCBase/OEM/PRG_Einspeisung.TcPOU
Matthias Heisig 51d6e7e5c4 Initial commit
2024-10-22 14:22:54 +02:00

168 lines
4.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_Einspeisung" Id="{5cd6801a-283d-4acd-9eba-b4e80aa15a2c}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Einspeisung
VAR
// Einschalten der Einspeisung
bEnable : BOOL := TRUE;
// statuswort der Einspeisung
uiZsw AT %I* : UINT;
bError : BOOL;
// Steuerwort der Einspeisung
uiStw AT %Q* : UINT := 0;
// Ausgänge der CU
uiCUIO AT %Q* : USINT;
// Einspeisung aktiv (für extern)
bInfeedActive : BOOL;
wZsw : WORD := 0;
wStw : WORD := 0;
wCUIO : WORD := 0;
// Zustandsvariable
nState : INT := 0;
bBtnEnable : BOOL;
bBtnDisable AT %I* : BOOL;
bLEDBtnEnable : BOOL;
bLEDBtnDissable : BOOL;
rtEinschalten : R_TRIG;
rtAusschalten : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Umwandeln des Zustandwortes
wZsw := UINT_TO_WORD(uiZsw);
wStw := UINT_TO_WORD(uiStw);
bError := (gpAx[0]^.lr_state.axis_state_r <> 7) AND (gpAx[1]^.lr_state.axis_state_r <> 7);
wStw.10 := 1;
bBtnEnable := GVL_OEM.bBtnInfeedEnable;
GVL_OEM.bBtnInfeedEnableLED := bLEDBtnEnable;
rtEinschalten(CLk := bBtnEnable AND bError);
IF rtEinschalten.Q THEN
bEnable := TRUE;
END_IF
rtAusschalten(CLK := bBtnDisable);
IF rtAusschalten.Q THEN
bEnable := FALSE;
END_IF
bLEDBtnEnable := wZsw.2;
bLEDBtnDissable := NOT wZsw.2;
wCUIO.4 := wZsw.2;
wCUIO.5 := wZsw.2;
CASE nState OF
0: // Einschaltsperre
wStw.0 := 0;
wStw.1 := 1;
bInfeedActive := FALSE;
IF wZsw.0 AND (NOT wZsw.1) AND (NOT wZsw.2) AND (NOT wZsw.6) AND bEnable THEN
nState := 10;
END_IF
10: // Einschaltbereit
wStw.0 := 1;
IF (wZsw.0 = 1) AND (wZsw.1 = 1) AND (wZsw.2 = 0) AND (wZsw.6 = 0) THEN
nState := 20;
END_IF
20: // Betriebsbereit
wStw.3 := 1;
IF (wZsw.0 = 1) AND (wZsw.1 = 1) AND (wZsw.2 = 1) AND (wZsw.6 = 0) THEN
nState := 30;
END_IF
30: //Betrieb
bInfeedActive := TRUE;
IF (NOT bEnable) THEN
wStw.0 := 0;
wStw.1 := 0;
wStw.3 := 0;
wCUIO.4 := 0;
wCUIO.5 := 0;
nState := 0;
END_IF
END_CASE
IF (wZsw.3) AND PLCReset THEN
wStw.7 := 1;
ELSE
wStw.7 := 0;
END_IF
// Umwandeln des Steuerwortes
uiStw := WORD_TO_UINT(wStw);
uiCUIO := WORD_TO_USINT(wCUIO);]]></ST>
</Implementation>
<LineIds Name="PRG_Einspeisung">
<LineId Id="48" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="52" Count="0" />
<LineId Id="297" Count="0" />
<LineId Id="296" Count="0" />
<LineId Id="74" Count="0" />
<LineId Id="73" Count="0" />
<LineId Id="334" Count="0" />
<LineId Id="333" Count="0" />
<LineId Id="335" Count="0" />
<LineId Id="137" Count="0" />
<LineId Id="136" Count="0" />
<LineId Id="138" Count="2" />
<LineId Id="142" Count="0" />
<LineId Id="141" Count="0" />
<LineId Id="143" Count="2" />
<LineId Id="150" Count="0" />
<LineId Id="149" Count="0" />
<LineId Id="151" Count="0" />
<LineId Id="261" Count="1" />
<LineId Id="260" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="1" />
<LineId Id="181" Count="1" />
<LineId Id="23" Count="10" />
<LineId Id="35" Count="3" />
<LineId Id="40" Count="1" />
<LineId Id="39" Count="0" />
<LineId Id="42" Count="1" />
<LineId Id="184" Count="1" />
<LineId Id="44" Count="0" />
<LineId Id="85" Count="1" />
<LineId Id="84" Count="0" />
<LineId Id="224" Count="1" />
<LineId Id="55" Count="0" />
<LineId Id="54" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="105" Count="0" />
<LineId Id="104" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="108" Count="0" />
<LineId Id="110" Count="0" />
<LineId Id="107" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="49" Count="0" />
<LineId Id="51" Count="0" />
<LineId Id="226" Count="0" />
</LineIds>
</POU>
</TcPlcObject>