120 lines
3.3 KiB
XML
120 lines
3.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
|
|
<POU Name="FB_Spindel" Id="{50a6eecd-bacb-461c-81db-8d25d13f0ab9}" SpecialFunc="None">
|
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Spindel
|
|
VAR_INPUT
|
|
bSensor3 : BOOL;
|
|
bSensor4 : BOOL;
|
|
|
|
iAxNr : INT := 4;
|
|
|
|
bCmdOpenSpindle : BOOL;
|
|
bCmdStopSpindle : BOOL;
|
|
bAirCurtainEnabled : BOOL := TRUE;
|
|
END_VAR
|
|
VAR_OUTPUT
|
|
bSperrluft : BOOL := TRUE;
|
|
bKonusReiniung : BOOL;
|
|
bATCOn : BOOL;
|
|
bATCOff : BOOL;
|
|
|
|
bSpindleOpen : BOOL;
|
|
bSpindleClosed : BOOL;
|
|
bSpindleClosedWithTool : BOOL;
|
|
|
|
bSpindleStopped : BOOL;
|
|
END_VAR
|
|
VAR
|
|
ftATCOn : F_TRIG;
|
|
tofATCOff : TOF;
|
|
|
|
bInternCmdOpenSpindle : BOOL;
|
|
bCanOpenSpindle : BOOL;
|
|
|
|
rtCmdOpenSpindle : R_TRIG;
|
|
ftCmdOpenSpindle : F_TRIG;
|
|
tofCmdCloseSpindle : TOF;
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[// State spindle closed with tool
|
|
bSpindleClosedWithTool := bSensor3 AND bSensor4;
|
|
|
|
// State spindle closed without tool
|
|
bSpindleClosed := bSensor3 AND (NOT bSensor4);
|
|
|
|
// Spindle open
|
|
bSpindleOpen := (NOT bSensor3) AND bSensor4;
|
|
|
|
// Sperrluftbehandlung
|
|
bSperrluft := bAirCurtainEnabled;
|
|
|
|
rtCmdOpenSpindle(CLK := bCmdOpenSpindle);
|
|
IF rtCmdOpenSpindle.Q THEN
|
|
bInternCmdOpenSpindle := TRUE;
|
|
END_IF
|
|
|
|
ftCmdOpenSpindle(CLK := bCmdOpenSpindle);
|
|
IF ftCmdOpenSpindle.Q THEN
|
|
bInternCmdOpenSpindle := FALSE;
|
|
END_IF
|
|
|
|
// Freigabe der Spindel nur bei gespannten Werkzeug
|
|
gpAx[iAxNr]^.ipo_mc_control.feedhold.enable_w := TRUE;
|
|
gpAx[iAxNr]^.ipo_mc_control.feedhold.command_w := (NOT bSpindleClosedWithTool) OR bCmdStopSpindle;
|
|
|
|
// Enable taper cleaning air with open spindle
|
|
IF bSpindleOpen THEN
|
|
bKonusReiniung := TRUE;
|
|
ELSE
|
|
bKonusReiniung := FALSE;
|
|
END_IF
|
|
|
|
// Spindel öffnen
|
|
ftATCOn(CLK := bATCOn);
|
|
tofATCOff(In := ftATCOn.Q, PT := T#1S);
|
|
|
|
// bATCOn := bCmdOpenSpindle;
|
|
// Öffnen der Spindel nur bei stillstand der Spindel und programmierter 0 drehzahl
|
|
bSpindleStopped := gpAx[iAxNr]^.lr_state.rev_null_r;
|
|
bCanOpenSpindle := bSpindleStopped AND (gpAx[iAxNr]^.lr_state.active_rev_r = 0);
|
|
bATCOn := bInternCmdOpenSpindle AND bCanOpenSpindle;
|
|
bATCOff := tofATCOff.Q;]]></ST>
|
|
</Implementation>
|
|
<LineIds Name="FB_Spindel">
|
|
<LineId Id="24" Count="0" />
|
|
<LineId Id="17" Count="0" />
|
|
<LineId Id="50" Count="0" />
|
|
<LineId Id="49" Count="0" />
|
|
<LineId Id="52" Count="0" />
|
|
<LineId Id="56" Count="0" />
|
|
<LineId Id="55" Count="0" />
|
|
<LineId Id="57" Count="0" />
|
|
<LineId Id="186" Count="2" />
|
|
<LineId Id="116" Count="0" />
|
|
<LineId Id="115" Count="0" />
|
|
<LineId Id="117" Count="2" />
|
|
<LineId Id="152" Count="0" />
|
|
<LineId Id="151" Count="0" />
|
|
<LineId Id="153" Count="2" />
|
|
<LineId Id="95" Count="0" />
|
|
<LineId Id="94" Count="0" />
|
|
<LineId Id="97" Count="0" />
|
|
<LineId Id="96" Count="0" />
|
|
<LineId Id="26" Count="0" />
|
|
<LineId Id="25" Count="0" />
|
|
<LineId Id="27" Count="1" />
|
|
<LineId Id="30" Count="1" />
|
|
<LineId Id="29" Count="0" />
|
|
<LineId Id="62" Count="0" />
|
|
<LineId Id="61" Count="0" />
|
|
<LineId Id="67" Count="2" />
|
|
<LineId Id="63" Count="0" />
|
|
<LineId Id="219" Count="0" />
|
|
<LineId Id="254" Count="0" />
|
|
<LineId Id="220" Count="0" />
|
|
<LineId Id="113" Count="0" />
|
|
<LineId Id="64" Count="0" />
|
|
</LineIds>
|
|
</POU>
|
|
</TcPlcObject> |