
PROGRAM _INIT

	Tisch_6 := 0;
	Tisch_6_Manuell := 0;
	
	gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
	gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
	gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
	
	RTInfo_0(enable:=1);

END_PROGRAM

PROGRAM _CYCLIC

	gTisch_6;
	
	IF gMerker_Laser_Manuell = TRUE THEN
		gDO_Start_Laser := FALSE;
		gDO_Laser_Seitentuer_oeffnen := FALSE;
	END_IF
	
	IF gMerker_Laser_Automatik = TRUE THEN
		gDO_Laser_Seitentuer_oeffnen := FALSE;
	END_IF
	
	IF gVK_Freigabe_manuell = TRUE AND gVK_Stopper_Tisch_6 = TRUE THEN
		gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
	ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Stopper_Tisch_6 = FALSE THEN
			gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
	END_IF	
	
	IF gVK_Freigabe_manuell = TRUE AND gVK_Vorstopper_Tisch_6 = TRUE THEN
		gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
	ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Vorstopper_Tisch_6 = FALSE THEN
		gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
	END_IF
	
	IF gVK_Freigabe_manuell = TRUE AND gVK_Aushebeeinheit_Tisch_6 = TRUE THEN
		gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
	ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Aushebeeinheit_Tisch_6 = FALSE THEN
		gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
	END_IF
	
	IF gVK_Freigabe_manuell = TRUE AND gVK_doppelt_Lasern = TRUE THEN
		gDO_doppelt_lasern := TRUE;
	ELSIF gVK_Freigabe_manuell = TRUE AND gVK_doppelt_Lasern = FALSE THEN
		gDO_doppelt_lasern := FALSE;
	END_IF	
	
	IF gVK_Freigabe_manuell = TRUE AND gVK_Start_Laser = TRUE THEN
		gDO_Start_Laser := TRUE;
	ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Start_Laser = FALSE THEN
		gDO_Start_Laser := FALSE;
	END_IF	
	
		IF gTaster_Tisch_6_aus = TRUE THEN
			gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
			gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
			gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
			gMerker_RFID_Tisch_6_gelesen := TRUE;		
			Tisch_6_Automatik := 0;
			Tisch_6 := 0;
			Tisch_6_Manuell := 0;
		END_IF
	
	IF gDI_Laser_Automatik = TRUE AND gDI_Laser_Manuell = FALSE THEN
		gMerker_Laser_Automatik := TRUE;
		gMerker_Laser_Halbautomatik := FALSE;
		gMerker_Laser_Manuell := FALSE;
	END_IF
	
	IF gDI_Laser_Manuell = TRUE AND gDI_Laser_Automatik = FALSE THEN
		gMerker_Laser_Automatik := FALSE;
		gMerker_Laser_Halbautomatik := FALSE;
		gMerker_Laser_Manuell := TRUE;
	END_IF
	
	IF gDI_Laser_Manuell = FALSE AND gDI_Laser_Automatik = FALSE THEN
		gMerker_Laser_Automatik := FALSE;
		gMerker_Laser_Halbautomatik := TRUE;
		gMerker_Laser_Manuell := FALSE;
	END_IF
	
	
	
	CASE Tisch_6_Manuell OF
		
		0:
		IF gMerker_Laser_Manuell = TRUE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND Tisch_6 = 0 THEN	
			gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
			gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
			gDO_Laser_Absaugung := TRUE;
			Tisch_6_Manuell := 10;
		ELSIF gMerker_Laser_Manuell = TRUE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = FALSE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND Tisch_6 = 0 THEN
				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
				gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				gDO_Laser_Absaugung := TRUE;
				Tisch_6_Manuell := 20;
		END_IF
			
		10:
		IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
			gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
			gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
			gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
			Tisch_6_Manuell := 20;
		END_IF
		
		20:
		IF gMerker_Laser_Manuell = FALSE THEN	
			gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
			gDO_Laser_Absaugung := FALSE;
			Tisch_6_Manuell := 30;
		END_IF
		
		30: lWarten_Aushebeeinheit_Tisch_6 := lWarten_Aushebeeinheit_Tisch_6 + (RTInfo_0.cycle_time/1000);
		IF gTisch_6.Inputs.Vor_Stopper = TRUE AND lWarten_Aushebeeinheit_Tisch_6 >= 500 THEN
			gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
			lWarten_Aushebeeinheit_Tisch_6 := 0;	
			Tisch_6_Manuell := 40;
		ELSIF gTisch_6.Inputs.Vor_Stopper = FALSE AND lWarten_Aushebeeinheit_Tisch_6 >= 500 THEN
				lWarten_Aushebeeinheit_Tisch_6 := 0;	
				Tisch_6_Manuell := 0;
		END_IF
		
		40:
		IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
			gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
			Tisch_6_Manuell := 0;
		END_IF
				
	END_CASE
	
	CASE Tisch_6 OF

		0:
		IF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
			gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
			gMerker_RFID_Tisch_6_gelesen := FALSE;
			Tisch_6 := 10;
		ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
				gMerker_RFID_Tisch_6_gelesen := FALSE;
				Tisch_6 := 10;
		ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND gTaster_Tisch_6_aus = FALSE THEN
				gDO_Laser_Seitentuer_oeffnen := TRUE;
				gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
				Tisch_6 := 200; /// war 110
		ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTaster_Tisch_6_aus = FALSE AND (gTisch_6.Inputs.Stopper_eingefahren = TRUE OR gTisch_6.Inputs.Vorstopper_eingefahren = TRUE) THEN
				gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6 := 0;
		END_IF		
		
//

		10:
			IF (*gTisch_6.Status.Aushebeeinheit = STATUS_AUSGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_ausfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_einfahren = FALSE THEN
				gDO_Start_Laser := TRUE;
				gDO_Laser_Absaugung := TRUE;
				gDO_Laser_Seitentuer_oeffnen := TRUE;
			Tisch_6 := 20;
		END_IF
		
		20:
			IF gTisch_6.Inputs.Start = TRUE THEN
				gDO_Start_Laser := FALSE;
				gDO_Laser_Absaugung := FALSE;
				gDO_Laser_Seitentuer_oeffnen := FALSE;
			gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
			Tisch_6 := 30;
		END_IF

		30:
		IF (*gTisch_6.Status.Aushebeeinheit = STATUS_EINGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_einfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_ausfahren = FALSE THEN
			gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
			Tisch_6 := 40;
		END_IF

		40:
		IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN	
			Tisch_6 := 45;
		END_IF	
		
		45:	
		IF gTisch_6.Inputs.Nach_Stopper = FALSE THEN	
			gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
			Tisch_6 := 50;	
		END_IF

		50:
		IF gTisch_6.Inputs.Stausensor = TRUE THEN
			Tisch_6 := 60;
		END_IF

		60:
		IF gTisch_6.Inputs.Stausensor = FALSE THEN
			Tisch_6 := 0;
		END_IF

	//

		110:
			IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
				Tisch_6 := 120;
			END_IF

		120:
			IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6 := 130;
			END_IF

		130:
			IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
				(*gDO_Laser_Seitentuer_oeffnen := FALSE;*)
				Tisch_6 := 0;
			END_IF
		
		200:
			IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
				Tisch_6 := 210;
			END_IF

		210:
			IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6 := 220;
			END_IF

		220:
			IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
				Tisch_6 := 230;
			END_IF
		
		230: IF gTisch_6.Inputs.Vor_Stopper = TRUE THEN
				Tisch_6 := 0;
			END_IF

	END_CASE
	
	CASE Tisch_6_Automatik OF

		0:
			IF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
				gMerker_RFID_Tisch_6_gelesen := FALSE;
				Tisch_6_Automatik := 10;
			ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
				gMerker_RFID_Tisch_6_gelesen := FALSE;
				Tisch_6_Automatik := 10;
			ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND gTaster_Tisch_6_aus = FALSE THEN
				gDO_Laser_Seitentuer_oeffnen := TRUE;
				gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
				Tisch_6_Automatik := 200; // war 110
			ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTaster_Tisch_6_aus = FALSE AND (gTisch_6.Inputs.Stopper_eingefahren = TRUE OR gTisch_6.Inputs.Vorstopper_eingefahren = TRUE) THEN
				gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6_Automatik := 0;
			END_IF		
		
			//

		10:
			IF (*gTisch_6.Status.Aushebeeinheit = STATUS_AUSGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_ausfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_einfahren = FALSE THEN
				gDO_Start_Laser := TRUE;
				Tisch_6_Automatik := 15;
			END_IF
		
		15: lWarten_Laser_Startsignal := lWarten_Laser_Startsignal + (RTInfo_0.cycle_time/1000);
			IF lWarten_Laser_Startsignal >= 500 THEN
				gDO_Start_Laser := FALSE;
				Tisch_6_Automatik := 20;
			END_IF
			
		20:
			IF gDI_Laser_fertig = TRUE THEN
				gDO_Start_Laser := FALSE;
				gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
				gMerker_RFID_Value_Tisch_6 := 0;
				gMerker_block_RFID_read_Tisch_6 := TRUE;
				Tisch_6_Automatik := 30;
			END_IF

		30:
			IF (*gTisch_6.Status.Aushebeeinheit = STATUS_EINGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_einfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_ausfahren = FALSE THEN
				gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
				Tisch_6_Automatik := 40;
			END_IF

		40:
			IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN	
				Tisch_6_Automatik := 45;
			END_IF	
		
		45:	
			IF gTisch_6.Inputs.Nach_Stopper = FALSE THEN	
				gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
				gMerker_block_RFID_read_Tisch_6 := FALSE;
				Tisch_6_Automatik := 50;	
			END_IF

		50:
			IF gTisch_6.Inputs.Stausensor = TRUE THEN
				Tisch_6_Automatik := 60;
			END_IF

		60:
			IF gTisch_6.Inputs.Stausensor = FALSE THEN
				Tisch_6_Automatik := 0;
			END_IF

			//

		110:
			IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
				Tisch_6_Automatik := 120;
			END_IF

		120:
			IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6_Automatik := 130;
			END_IF

		130:
			IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
				Tisch_6_Automatik := 0;
			END_IF
		
		200:
			IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
				Tisch_6_Automatik := 210;
			END_IF

		210:
			IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
				gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
				Tisch_6_Automatik := 220;
			END_IF

		220:
			IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
				Tisch_6_Automatik := 230;
			END_IF
		
		230: IF gTisch_6.Inputs.Vor_Stopper = TRUE THEN
				Tisch_6_Automatik := 0;
			 END_IF
		
	END_CASE

END_PROGRAM

PROGRAM _EXIT
	(* Insert code here *)
	 
END_PROGRAM

