Browse Source

Läuft als VErsion 005 mit der LAser-SPS 005 aktuello auf der Linie (13.2.2023)

jcech 1 year ago
parent
commit
ec0bf49d9a
2 changed files with 240 additions and 208 deletions
  1. 202 201
      Logical/Global.var
  2. 38 7
      Logical/TischProgramme/Tisch6/Main.st

+ 202 - 201
Logical/Global.var

@@ -1,214 +1,215 @@
 VAR
-	gDI_keiner_Stoerung_Laser : BOOL;
-	gDI_Laser_Automatik : BOOL;
-	gDI_Laser_fertig : BOOL;
-	gDI_Laser_Manuell : BOOL;
-	gDO_doppelt_lasern : BOOL;
-	gDO_Laser_Absaugung : BOOL;
-	gDO_Laser_Seitentuer_oeffnen : BOOL;
-	gDO_Motor_K1 : BOOL;
-	gDO_Motor_K2 : BOOL;
-	gDO_Motor_K3 : BOOL;
-	gDO_Motor_K4 : BOOL;
-	gDO_Motor_K5 : BOOL;
-	gDO_Motor_K6 : BOOL;
-	gDO_Motor_K7 : BOOL;
-	gDO_Motor_K8 : BOOL;
-	gDO_Start_Laser : BOOL;
-	gError : ARRAY[0..99] OF BOOL;
-	gKurve_1 : Kurve_1_Typ;
-	gKurve_2 : Kurve_2_Typ;
-	gKurve_3 : Kurve_3_Typ;
-	gKurve_4 : Kurve_4_Typ;
-	gMerker_block_RFID_read_Tisch_6 : BOOL;
-	gMerker_Cech_Test_Counter : USINT;
-	gMerker_Debug_Test_Counter : UINT; (*Cech-Comment: Variable zum Debuggen, Testen*)
-	gMerker_Debug_Test_Counter_RFID : UINT; (*Cech-Comment: Variable zum Debuggen, Testen der RFID*)
-	gMerker_Laser_Automatik : BOOL;
-	gMerker_Laser_Doppelzylinder : BOOL; (*Cech-Implement: Centurio fordert aus dem Produktcode eine Doppellaserung für einen Doppelzylinder*)
-	gMerker_Laser_Einstellen_fertig : BOOL; (*Cech-Implement: Laser ist fertig eingestellt mit LAserfile und Seriennummer und bereit für das Startsignal von Linien-SPS "gVK_Start_Laser"*)
-	gMerker_Laser_Halbautomatik : BOOL;
-	gMerker_Laser_Manuell : BOOL;
-	gMerker_Liftgate_entriegelt : BOOL;
-	gMerker_Liftgate_Leuchte_Rot : BOOL;
-	gMerker_Motoren_ein : BOOL;
-	gMerker_neuen_Befehl_schreiben : BOOL;
-	gMerker_OPCUA_Schreibauftrag : BOOL;
-	gMerker_OPCUA_Seriennummer_Test : USINT;
-	gMerker_RFID_Tisch_1_gelesen : BOOL;
-	gMerker_RFID_Tisch_2_gelesen : BOOL;
-	gMerker_RFID_Tisch_3_gelesen : BOOL;
-	gMerker_RFID_Tisch_4_gelesen : BOOL;
-	gMerker_RFID_Tisch_5_gelesen : BOOL;
-	gMerker_RFID_Tisch_6_gelesen : BOOL;
-	gMerker_RFID_Tisch_7_gelesen : BOOL;
-	gMerker_RFID_Tisch_8_gelesen : BOOL;
-	gMerker_RFID_Value_Tisch_1 : USINT;
-	gMerker_RFID_Value_Tisch_2 : USINT;
-	gMerker_RFID_Value_Tisch_3 : USINT;
-	gMerker_RFID_Value_Tisch_4 : USINT;
-	gMerker_RFID_Value_Tisch_5 : USINT;
-	gMerker_RFID_Value_Tisch_6 : USINT;
-	gMerker_RFID_Value_Tisch_7 : USINT;
-	gMerker_RFID_Value_Tisch_8 : USINT;
-	gMerker_Schreibe_Traegernummer : USINT;
-	gMerker_Stop_an_Kurve2 : BOOL;
-	gMerker_Tisch_1_alles_nullen : BOOL;
-	gMerker_Tisch_1_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_1_lesen_fertig : BOOL;
-	gMerker_Tisch_1_RFID_Reset : BOOL;
-	gMerker_Tisch_1_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_1_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_1_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_2_alles_nullen : BOOL;
-	gMerker_Tisch_2_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_2_lesen_fertig : BOOL;
-	gMerker_Tisch_2_RFID_Reset : BOOL;
-	gMerker_Tisch_2_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_2_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_2_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_3_alles_nullen : BOOL;
-	gMerker_Tisch_3_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_3_lesen_fertig : BOOL;
-	gMerker_Tisch_3_RFID_Reset : BOOL;
-	gMerker_Tisch_3_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_3_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_3_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_4_alles_nullen : BOOL;
-	gMerker_Tisch_4_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_4_lesen_fertig : BOOL;
-	gMerker_Tisch_4_RFID_Reset : BOOL;
-	gMerker_Tisch_4_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_4_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_4_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_5_alles_nullen : BOOL;
-	gMerker_Tisch_5_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_5_lesen_fertig : BOOL;
-	gMerker_Tisch_5_RFID_Reset : BOOL;
-	gMerker_Tisch_5_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_5_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_5_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_6_alles_nullen : BOOL;
-	gMerker_Tisch_6_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_6_Ausgehoben : BOOL; (*Cech-Implement*)
-	gMerker_Tisch_6_lesen_fertig : BOOL;
-	gMerker_Tisch_6_RFID_Reset : BOOL;
-	gMerker_Tisch_6_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_6_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_6_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_7_alles_nullen : BOOL;
-	gMerker_Tisch_7_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_7_lesen_fertig : BOOL;
-	gMerker_Tisch_7_RFID_Reset : BOOL;
-	gMerker_Tisch_7_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_7_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_7_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_8_alles_nullen : BOOL;
-	gMerker_Tisch_8_Auftrag_Lesen : BOOL;
-	gMerker_Tisch_8_lesen_fertig : BOOL;
-	gMerker_Tisch_8_RFID_Reset : BOOL;
-	gMerker_Tisch_8_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
-	gMerker_Tisch_8_RFID_Vorhanden : BOOL;
-	gMerker_Tisch_8_STRING_HELPER : STRING[24]; (*Cech-Implement*)
-	gTaster_Liftgate_Leuchte_Gruen : BOOL;
-	gTaster_Liftgate_Leuchte_Rot : BOOL;
-	gTaster_Liftgate_oeffnen : BOOL;
-	gTaster_Liftgate_verriegeln : BOOL;
+	VK_Stop : BOOL;
+	VK_Start : BOOL;
+	Tisch_8_RFID : USINT;
+	Tisch_8 : USINT;
+	Tisch_7_RFID : USINT;
+	Tisch_7 : USINT;
+	Tisch_6_RFID : USINT;
+	Tisch_6_Manuell : USINT;
+	Tisch_6_Automatik : USINT;
+	Tisch_6 : USINT;
+	Tisch_5_RFID : USINT;
+	Tisch_5 : USINT;
+	Tisch_4_RFID : USINT;
+	Tisch_4 : USINT;
+	Tisch_3_RFID : USINT;
+	Tisch_3 : USINT;
+	Tisch_2_RFID : USINT;
+	Tisch_2 : USINT;
+	Tisch_1_RFID : USINT;
+	Tisch_1 : USINT;
 END_VAR
-VAR RETAIN
-	gTaster_Tisch_1_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_2_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_3_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_4_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_5_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_6_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_7_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
-	gTaster_Tisch_8_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+VAR CONSTANT
+	STATUS_MITTELSTELLUNG : USINT := 3;
+	STATUS_FEHLERRESET : USINT := 50;
+	STATUS_ERROR : USINT := 200;
+	STATUS_EINGEFAHREN : USINT := 1;
+	STATUS_DRUCKLOS : USINT := 5;
+	STATUS_BUSY : USINT := 255;
+	STATUS_AUSGEFAHREN : USINT := 2;
 END_VAR
 VAR
-	gTisch_1 : Tisch_1_Typ;
-	gTisch_1_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_1_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_2 : Tisch_2_Typ;
-	gTisch_2_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_2_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_3 : Tisch_3_Typ;
-	gTisch_3_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_3_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_4 : Tisch_4_Typ;
-	gTisch_4_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_4_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_5 : Tisch_5_Typ;
-	gTisch_5_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_5_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_6 : Tisch_6_Typ;
-	gTisch_6_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_6_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_7 : Tisch_7_Typ;
-	gTisch_7_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_7_RFID_Write : ARRAY[0..9] OF USINT;
-	gTisch_8 : Tisch_8_Typ;
-	gTisch_8_RFID_Read : ARRAY[0..9] OF USINT;
-	gTisch_8_RFID_Write : ARRAY[0..9] OF USINT;
-	gVK_Absaugung : BOOL := TRUE; (*Cech-Implement: Zum Aktivieren und Deaktivieren der Absaugung über den Control-Panel-PC*)
-	gVK_Aushebeeinheit_Tisch_6 : BOOL;
-	gVK_doppelt_Lasern : BOOL;
-	gVK_Freigabe_manuell : BOOL; (*Cech-Comment: TAster auf dem Haupt-Panel; wird über OPC-UA übergeben*)
-	gVK_Start_Laser : BOOL;
-	gVK_Stopper_Tisch_6 : BOOL;
-	gVK_Vorstopper_Tisch_6 : BOOL;
-	i : USINT;
+	Rot_blinken : USINT;
+	RFID_Schreiben : USINT;
+	OPCUA_TEST_1 : USINT;
+	OPCUATEST3 : STRING[80];
+	OPCUATEST2 : USINT;
+	Liftgate_oeffnen : USINT;
+	Liftgate : USINT;
+	Kurve_4 : USINT;
+	Kurve_3 : USINT;
+	Kurve_2 : USINT;
+	Kurve_1 : USINT;
 END_VAR
 VAR CONSTANT
-	KMD_AUSFAHREN : USINT := 2;
-	KMD_DRUCKLOS : USINT := 5;
-	KMD_EINFAHREN : USINT := 1;
-	KMD_FERTIG : USINT := 0;
-	KMD_MITTELSTELLUNG : USINT := 3;
-	KMD_START : USINT := 12;
 	KMD_STOP : USINT := 11;
+	KMD_START : USINT := 12;
+	KMD_MITTELSTELLUNG : USINT := 3;
+	KMD_FERTIG : USINT := 0;
+	KMD_EINFAHREN : USINT := 1;
+	KMD_DRUCKLOS : USINT := 5;
+	KMD_AUSFAHREN : USINT := 2;
 END_VAR
 VAR
-	Kurve_1 : USINT;
-	Kurve_2 : USINT;
-	Kurve_3 : USINT;
-	Kurve_4 : USINT;
-	Liftgate : USINT;
-	Liftgate_oeffnen : USINT;
-	OPCUATEST2 : USINT;
-	OPCUATEST3 : STRING[80];
-	OPCUA_TEST_1 : USINT;
-	RFID_Schreiben : USINT;
-	Rot_blinken : USINT;
+	i : USINT;
+	gVK_Vorstopper_Tisch_6 : BOOL;
+	gVK_Stopper_Tisch_6 : BOOL;
+	gVK_Start_Laser : BOOL;
+	gVK_Freigabe_manuell : BOOL; (*Cech-Comment: TAster auf dem Haupt-Panel; wird über OPC-UA übergeben*)
+	gVK_doppelt_Lasern : BOOL;
+	gVK_Aushebeeinheit_Tisch_6 : BOOL;
+	gVK_Absaugung : BOOL := TRUE; (*Cech-Implement: Zum Aktivieren und Deaktivieren der Absaugung über den Control-Panel-PC*)
+	gTisch_8_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_8_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_8 : Tisch_8_Typ;
+	gTisch_7_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_7_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_7 : Tisch_7_Typ;
+	gTisch_6_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_6_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_6 : Tisch_6_Typ;
+	gTisch_5_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_5_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_5 : Tisch_5_Typ;
+	gTisch_4_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_4_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_4 : Tisch_4_Typ;
+	gTisch_3_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_3_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_3 : Tisch_3_Typ;
+	gTisch_2_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_2_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_2 : Tisch_2_Typ;
+	gTisch_1_RFID_Write : ARRAY[0..9] OF USINT;
+	gTisch_1_RFID_Read : ARRAY[0..9] OF USINT;
+	gTisch_1 : Tisch_1_Typ;
 END_VAR
-VAR CONSTANT
-	STATUS_AUSGEFAHREN : USINT := 2;
-	STATUS_BUSY : USINT := 255;
-	STATUS_DRUCKLOS : USINT := 5;
-	STATUS_EINGEFAHREN : USINT := 1;
-	STATUS_ERROR : USINT := 200;
-	STATUS_FEHLERRESET : USINT := 50;
-	STATUS_MITTELSTELLUNG : USINT := 3;
+VAR RETAIN
+	gTaster_Tisch_8_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_7_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_6_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_5_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_4_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_3_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_2_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
+	gTaster_Tisch_1_aus : BOOL; (*Cech-Comment: Das sind die Soft-Switches am Hauptpanel, wo die jeweilige Station aktiviert und deaktiviert werden kann*)
 END_VAR
 VAR
-	Tisch_1 : USINT;
-	Tisch_1_RFID : USINT;
-	Tisch_2 : USINT;
-	Tisch_2_RFID : USINT;
-	Tisch_3 : USINT;
-	Tisch_3_RFID : USINT;
-	Tisch_4 : USINT;
-	Tisch_4_RFID : USINT;
-	Tisch_5 : USINT;
-	Tisch_5_RFID : USINT;
-	Tisch_6 : USINT;
-	Tisch_6_Automatik : USINT;
-	Tisch_6_Manuell : USINT;
-	Tisch_6_RFID : USINT;
-	Tisch_7 : USINT;
-	Tisch_7_RFID : USINT;
-	Tisch_8 : USINT;
-	Tisch_8_RFID : USINT;
-	VK_Start : BOOL;
-	VK_Stop : BOOL;
+	gTaster_Liftgate_verriegeln : BOOL;
+	gTaster_Liftgate_oeffnen : BOOL;
+	gTaster_Liftgate_Leuchte_Rot : BOOL;
+	gTaster_Liftgate_Leuchte_Gruen : BOOL;
+	gMerker_Tisch_8_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_8_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_8_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_8_RFID_Reset : BOOL;
+	gMerker_Tisch_8_lesen_fertig : BOOL;
+	gMerker_Tisch_8_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_8_alles_nullen : BOOL;
+	gMerker_Tisch_7_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_7_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_7_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_7_RFID_Reset : BOOL;
+	gMerker_Tisch_7_lesen_fertig : BOOL;
+	gMerker_Tisch_7_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_7_alles_nullen : BOOL;
+	gMerker_Tisch_6_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_6_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_6_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_6_RFID_Reset : BOOL;
+	gMerker_Tisch_6_lesen_fertig : BOOL;
+	gMerker_Tisch_6_Ausgehoben : BOOL; (*Cech-Implement*)
+	gMerker_Tisch_6_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_6_alles_nullen : BOOL;
+	gMerker_Tisch_5_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_5_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_5_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_5_RFID_Reset : BOOL;
+	gMerker_Tisch_5_lesen_fertig : BOOL;
+	gMerker_Tisch_5_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_5_alles_nullen : BOOL;
+	gMerker_Tisch_4_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_4_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_4_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_4_RFID_Reset : BOOL;
+	gMerker_Tisch_4_lesen_fertig : BOOL;
+	gMerker_Tisch_4_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_4_alles_nullen : BOOL;
+	gMerker_Tisch_3_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_3_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_3_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_3_RFID_Reset : BOOL;
+	gMerker_Tisch_3_lesen_fertig : BOOL;
+	gMerker_Tisch_3_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_3_alles_nullen : BOOL;
+	gMerker_Tisch_2_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_2_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_2_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_2_RFID_Reset : BOOL;
+	gMerker_Tisch_2_lesen_fertig : BOOL;
+	gMerker_Tisch_2_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_2_alles_nullen : BOOL;
+	gMerker_Tisch_1_STRING_HELPER : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_1_RFID_Vorhanden : BOOL;
+	gMerker_Tisch_1_RFID_UID_STR : STRING[24]; (*Cech-Implement*)
+	gMerker_Tisch_1_RFID_Reset : BOOL;
+	gMerker_Tisch_1_lesen_fertig : BOOL;
+	gMerker_Tisch_1_Auftrag_Lesen : BOOL;
+	gMerker_Tisch_1_alles_nullen : BOOL;
+	gMerker_Stop_an_Kurve2 : BOOL;
+	gMerker_Schreibe_Traegernummer : USINT;
+	gMerker_RFID_Value_Tisch_8 : USINT;
+	gMerker_RFID_Value_Tisch_7 : USINT;
+	gMerker_RFID_Value_Tisch_6 : USINT;
+	gMerker_RFID_Value_Tisch_5 : USINT;
+	gMerker_RFID_Value_Tisch_4 : USINT;
+	gMerker_RFID_Value_Tisch_3 : USINT;
+	gMerker_RFID_Value_Tisch_2 : USINT;
+	gMerker_RFID_Value_Tisch_1 : USINT;
+	gMerker_RFID_Tisch_8_gelesen : BOOL;
+	gMerker_RFID_Tisch_7_gelesen : BOOL;
+	gMerker_RFID_Tisch_6_gelesen : BOOL;
+	gMerker_RFID_Tisch_5_gelesen : BOOL;
+	gMerker_RFID_Tisch_4_gelesen : BOOL;
+	gMerker_RFID_Tisch_3_gelesen : BOOL;
+	gMerker_RFID_Tisch_2_gelesen : BOOL;
+	gMerker_RFID_Tisch_1_gelesen : BOOL;
+	gMerker_OPCUA_Seriennummer_Test : USINT;
+	gMerker_OPCUA_Schreibauftrag : BOOL;
+	gMerker_neuen_Befehl_schreiben : BOOL;
+	gMerker_Motoren_ein : BOOL;
+	gMerker_Liftgate_Leuchte_Rot : BOOL;
+	gMerker_Liftgate_entriegelt : BOOL;
+	gMerker_Laser_Manuell : BOOL;
+	gMerker_Laser_Halbautomatik : BOOL;
+	gMerker_Laser_Einstellen_fertig : BOOL; (*Cech-Implement: Laser ist fertig eingestellt mit LAserfile und Seriennummer und bereit für das Startsignal von Linien-SPS "gVK_Start_Laser"*)
+	gMerker_Laser_Doppelzylinder : BOOL; (*Cech-Implement: Centurio fordert aus dem Produktcode eine Doppellaserung für einen Doppelzylinder*)
+	gMerker_Laser_Automatik : BOOL;
+	gMerker_Laserung_fertig : BOOL; (*Cech-Implement: Dient zur Speicherung, wenn die erste Laserung von einem Doppelzylinder fertig ist und wird von der LAser-SPS über deren Output "Extern_Fertig" an den LAser-SPS-Input "gDI_Laser_fertig" übergeben*)
+	gMerker_Debug_Test_Counter_RFID : UINT; (*Cech-Comment: Variable zum Debuggen, Testen der RFID*)
+	gMerker_Debug_Test_Counter : UINT; (*Cech-Comment: Variable zum Debuggen, Testen*)
+	gMerker_Cech_Test_Counter : USINT;
+	gMerker_block_RFID_read_Tisch_6 : BOOL;
+	gKurve_4 : Kurve_4_Typ;
+	gKurve_3 : Kurve_3_Typ;
+	gKurve_2 : Kurve_2_Typ;
+	gKurve_1 : Kurve_1_Typ;
+	gError : ARRAY[0..99] OF BOOL;
+	gDO_Start_Laser : BOOL;
+	gDO_Motor_K8 : BOOL;
+	gDO_Motor_K7 : BOOL;
+	gDO_Motor_K6 : BOOL;
+	gDO_Motor_K5 : BOOL;
+	gDO_Motor_K4 : BOOL;
+	gDO_Motor_K3 : BOOL;
+	gDO_Motor_K2 : BOOL;
+	gDO_Motor_K1 : BOOL;
+	gDO_Laser_Seitentuer_oeffnen : BOOL;
+	gDO_Laser_Absaugung : BOOL;
+	gDO_doppelt_lasern : BOOL;
+	gDI_Laser_Manuell : BOOL;
+	gDI_Laser_fertig : BOOL;
+	gDI_Laser_Automatik : BOOL;
+	gDI_keiner_Stoerung_Laser : BOOL;
 END_VAR

+ 38 - 7
Logical/TischProgramme/Tisch6/Main.st

@@ -12,6 +12,7 @@ PROGRAM _INIT
 	RTInfo_0(enable:=1);
 	
 	gMerker_Laser_Einstellen_fertig := FALSE; 	//Cech-Implement
+	gMerker_Laserung_fertig := TRUE; 	//Cech-Implement
 		
 END_PROGRAM
 
@@ -28,6 +29,10 @@ PROGRAM _CYCLIC
 	IF gMerker_Laser_Automatik = TRUE THEN
 		gDO_Laser_Seitentuer_oeffnen := FALSE;
 	END_IF
+
+	IF gDI_Laser_fertig = TRUE THEN
+		gMerker_Laserung_fertig := TRUE;
+	END_IF
 	
 //Cech-Comment: Hier wird der Status der Soft-Buttons am Hauptpanel abgefragt. Wenn die Freigabe erteilt ist, sind die anderen 5 Tasten (Ausheber, Vorstopperm, Stopper, Start-Laser und Doppelt-lasern aktiviert) 	
 	IF gVK_Freigabe_manuell = TRUE AND gVK_Stopper_Tisch_6 = TRUE THEN
@@ -290,11 +295,14 @@ PROGRAM _CYCLIC
 				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
 				gMerker_RFID_Tisch_6_gelesen := FALSE;
 				Tisch_6_Automatik := 10;
+				gDO_Laser_Seitentuer_oeffnen := TRUE; ////Cech-Implement; 
+
 			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 (*gMerker_RFID_Tisch_6_gelesen = TRUE AND*) gTaster_Tisch_6_aus = FALSE THEN  //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
 				lWarten_Laser_Dauer := 0;					//Cech-Implement
 				gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
 				gMerker_RFID_Tisch_6_gelesen := FALSE;
 				Tisch_6_Automatik := 10;
+				gDO_Laser_Seitentuer_oeffnen := FALSE;	////Cech-Implement
 				//Cech-Comment: Wenn ein WST wartet und keiner in der STation ist, weiters entweder der Stausensor anschlägt und/oder der RFID nicht gelesen wird   !!!! Ergibt keinen Sinn für mich!!!! Ev. soll das saubere Anfangsbedingungen schaffen
 			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  //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
 				lWarten_Laser_Dauer := 0;					//Cech-Implement
@@ -322,6 +330,7 @@ PROGRAM _CYCLIC
 						gDO_doppelt_lasern := TRUE;
 					END_IF
 					gDO_Start_Laser := TRUE;	// Cech-Implement, Comment: Das entspricht dem Port "WST in Position", wie es Hr.Ziegler von Bluhm nennt. Wenn Centurio den gMerker_Laser_Einstellen_fertig auf TRUE gesetzt hat darf LAserung gestartet werden
+					gMerker_Laserung_fertig := FALSE;
 					gDO_Laser_Absaugung := TRUE;
 					Tisch_6_Automatik := 15;
 				END_IF
@@ -332,44 +341,66 @@ PROGRAM _CYCLIC
 		
 		15: //Cech-Comment: Nach 1000ms wird das Startsignal an den Laser zurückgenommen und weiter mit 20
 			lWarten_Laser_Startsignal := lWarten_Laser_Startsignal + (RTInfo_0.cycle_time/1000);
-			IF lWarten_Laser_Startsignal >= 1000 THEN  
+			IF lWarten_Laser_Startsignal >= 1000 THEN
+//				gMerker_Laserung_fertig := FALSE;	//Da hat der LAser das "gDI_Laser_fertig" längst auf FLASE gesetzt, sodass gMerker_Laserung_fertig nicht ganz oben wieder auf TRUE überschrieben wird
 				//	gDO_Start_Laser := FALSE;  !!!!!!!!!!!!!!!!Dies geht nicht, weil Hr.Ziegler offensichtlich keinen Handshake programmiert hat, sondern "LAsern-fertig" gleich setzt, wenn wir sagen, dass Start-LAser low wird. Es wird nicht fertiggelasert.
 				IF gMerker_Laser_Doppelzylinder = TRUE THEN
-					Tisch_6_Automatik := 18;
+					Tisch_6_Automatik := 16;
 				ELSIF gMerker_Laser_Doppelzylinder = FALSE THEN
 					Tisch_6_Automatik :=20;
 				END_IF
 			END_IF
-		18: 
-			IF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = TRUE)THEN (* OR lWarten_Laser_Dauer >= 10000 THEN *)  //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
+
+//Cech-Implement
+		16: 
+			IF (gMerker_Laserung_fertig = TRUE	AND gDI_keiner_Stoerung_Laser = TRUE)THEN (* OR lWarten_Laser_Dauer >= 10000 THEN *)  //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
 				// Und hier, beim Doppelzylinder darf die ZEit nicht überprüft werden, weil der Bediener die Doppeltaster drücken muss nach Einstellung von File und Seriennummer
 				//Cech-Implement-Anfang
+////				gMerker_Laserung_fertig := TRUE;		//Cech-Implement: Dient dazu, in der LAser-SPS den "Extern_Fertig"-Portpin wieder zurücknehmen zu können, und in der LAser-SPS aber zu wissen, dass die erste LAserung erfolgreich beendet wurde
 				gDO_Start_Laser := FALSE;
 				gMerker_Laser_Einstellen_fertig := FALSE; //Cech-Implement
-				gMerker_Laser_Doppelzylinder := FALSE;
+				//// gMerker_Laser_Doppelzylinder := FALSE; // Müsste ohne dem gehen
+				gDO_Laser_Seitentuer_oeffnen := FALSE;	////Cech-Implement
 				//				gDO_Laser_Seitentuer_oeffnen := TRUE;
 				//gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
 				//gMerker_RFID_Value_Tisch_6 := 0;
 				//gMerker_block_RFID_read_Tisch_6 := TRUE;	//Cech-Comment: Der MErker wenn TRUE blockiert das RFID-LEsen während des Einfahrens der Aushebeeinheit, um nicht neu zu beginnen (RFID kann beim Ausheben die VErbindung verlieren, das soll verhindert werden)
-				Tisch_6_Automatik := 20;
+				Tisch_6_Automatik := 18;
 				//			ELSIF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = FALSE)
 				//				gDO_Start_Laser := FALSE;
 				//				gMerker_Laser_Einstellen_fertig := FALSE;
 		
 				//Cech-Implement-Ende
 			END_IF
+			
+		18:
+			IF (gMerker_Laser_Einstellen_fertig = TRUE) THEN
+				gDO_Start_Laser := TRUE;	// Cech-Implement, Comment: Das entspricht dem Port "WST in Position", wie es Hr.Ziegler von Bluhm nennt. Wenn Centurio den gMerker_Laser_Einstellen_fertig auf TRUE gesetzt hat darf LAserung gestartet werden
+				lWarten_Laser_Startsignal := 0;
+				Tisch_6_Automatik := 19;
+			END_IF
+			
+		19: //Cech-Comment: Nach 1000ms wird das Startsignal an den Laser zurückgenommen und weiter mit 20
+			lWarten_Laser_Startsignal := lWarten_Laser_Startsignal + (RTInfo_0.cycle_time/1000);
+			IF lWarten_Laser_Startsignal >= 1000 THEN
+				Tisch_6_Automatik := 20;
+			END_IF
+			
+
+			
 						
 						
 			
 		20:	//Cech-Comment: Wenn vom LAser das Signal "WST bereit zum ABtransport", also LAsern fertig, kommt, dann wird die Aushebeeinheit eingefahren, der RFID-Wert der Station auf "0" gesetzt
 			lWarten_Laser_Dauer := lWarten_Laser_Dauer + (RTInfo_0.cycle_time/1000);		//Cech-Implement
-			IF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = TRUE) OR lWarten_Laser_Dauer >= 10000 THEN  //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
+			IF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = TRUE) THEN //OR lWarten_Laser_Dauer >= 10000 THEN  //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
 				//Cech-Implement-Anfang
 				gDO_Start_Laser := FALSE;
 				gDO_Laser_Absaugung := FALSE;
 				gMerker_Laser_Einstellen_fertig := FALSE; //Cech-Implement
 				gMerker_Laser_Doppelzylinder := FALSE;
 				gDO_doppelt_lasern := FALSE;
+				gDO_Laser_Seitentuer_oeffnen := FALSE;	////Cech-Implement
 				//				gDO_Laser_Seitentuer_oeffnen := TRUE;
 				gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
 				gMerker_RFID_Value_Tisch_6 := 0;