
PROGRAM _INIT

	RTInfo_0(enable:=1);
	
END_PROGRAM

PROGRAM _CYCLIC
	
(* #############################################################################################################
   #############################         	     Kurve 4	               #####################################
   ############################################################################################################# *)

	IF  gKurve_4.Cmd.Stopper = KMD_AUSFAHREN THEN
		gKurve_4.Outputs.Stopper_einfahren := FALSE;
		gKurve_4.Times.Stopper_AusZeit := TRUE;
		gKurve_4.Times.Stopper_EinZeit := FALSE;
		gKurve_4.Cmd.Stopper := KMD_FERTIG;
		gKurve_4.Status.Stopper := STATUS_BUSY;
	END_IF

	IF  gKurve_4.Cmd.Stopper = KMD_EINFAHREN THEN
		gKurve_4.Outputs.Stopper_einfahren := TRUE;
		gKurve_4.Times.Stopper_AusZeit := FALSE;
		gKurve_4.Times.Stopper_EinZeit := TRUE;
		gKurve_4.Cmd.Stopper := KMD_FERTIG;
		gKurve_4.Status.Stopper := STATUS_BUSY;
	END_IF

	(* Status, Zylinderposition ausgeben *)
	IF (gKurve_4.Inputs.Stopper_eingefahren = TRUE) AND (gKurve_4.Inputs.Stopper_ausgefahren = FALSE) THEN
		gKurve_4.Status.Stopper := STATUS_EINGEFAHREN;
	ELSIF (gKurve_4.Inputs.Stopper_eingefahren = FALSE) AND (gKurve_4.Inputs.Stopper_ausgefahren = TRUE) THEN
		gKurve_4.Status.Stopper := STATUS_AUSGEFAHREN;
	ELSE
		gKurve_4.Status.Stopper := STATUS_BUSY;
	END_IF

	(* Zeitüberwachung Eingefahren*)
	IF (gKurve_4.Times.Stopper_EinZeit = TRUE AND gKurve_4.Status.Stopper <> STATUS_EINGEFAHREN) OR (gKurve_4.Times.Stopper_AusZeit = TRUE AND gKurve_4.Status.Stopper <> STATUS_AUSGEFAHREN) THEN
		gKurve_4.Times.Stopper_ZeitRun := gKurve_4.Times.Stopper_ZeitRun + (RTInfo_0.cycle_time/1000);

		IF (gKurve_4.Times.Stopper_EinZeit = TRUE AND gKurve_4.Status.Stopper = STATUS_EINGEFAHREN)
			OR (gKurve_4.Times.Stopper_AusZeit = TRUE AND gKurve_4.Status.Stopper = STATUS_AUSGEFAHREN)THEN
		(* lPortal_Mittelanschlag_EinZeit := FALSE;
		 lPortal_Mittelanschlag_AusZeit := FALSE; *)
			gKurve_4.Times.Stopper_ZeitRun := 0;
		END_IF


		IF gKurve_4.Times.Stopper_ZeitRun >= 5000 THEN
			gKurve_4.Status.Stopper := STATUS_ERROR;

			IF gKurve_4.Times.Stopper_EinZeit = TRUE THEN
				gError[0] := 1;
			END_IF
         
			IF gKurve_4.Times.Stopper_AusZeit = TRUE THEN
				gError[1] := 1;
			END_IF

		END_IF

	ELSE
		gKurve_4.Times.Stopper_ZeitRun := 0;
	END_IF
	 
END_PROGRAM

PROGRAM _EXIT
	(* Insert code here *)
	 
END_PROGRAM

