Browse Source

UID_ohne_0_voran

jcech 2 years ago
parent
commit
689d7d6f11
1 changed files with 101 additions and 7 deletions
  1. 101 7
      Logical/RFID/Main.st

+ 101 - 7
Logical/RFID/Main.st

@@ -3,6 +3,14 @@ PROGRAM _INIT
 	
 	RTInfo_0(enable:=1);
 	Wartezeit_OPCUA := 1100;
+	gMerker_Tisch_1_RFID_UID_STR := '0';
+	gMerker_Tisch_2_RFID_UID_STR := '0';
+	gMerker_Tisch_3_RFID_UID_STR := '0';
+	gMerker_Tisch_4_RFID_UID_STR := '0';
+	gMerker_Tisch_5_RFID_UID_STR := '0';
+	gMerker_Tisch_6_RFID_UID_STR := '0';
+	gMerker_Tisch_7_RFID_UID_STR := '0';
+	gMerker_Tisch_8_RFID_UID_STR := '0';
 	 
 END_PROGRAM
 
@@ -739,11 +747,39 @@ PROGRAM _CYCLIC
 
 	gMerker_Tisch_6_RFID_Vorhanden := gTisch_6_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
 	
-
+	IF gMerker_Tisch_6_Auftrag_Lesen = TRUE THEN
+		//			gMerker_Lesen_Fertig := FALSE;
+		gTisch_6_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
+		gTisch_6_RFID_Write[2] := 0;
+		gTisch_6_RFID_Write[3] := 0;
+		gTisch_6_RFID_Write[4] := 8;  (* Anzahl Bytes Lowbytes *)
+		gTisch_6_RFID_Write[5] := 0;
+		gTisch_6_RFID_Write[6] := 0;
+		gTisch_6_RFID_Write[7] := 0;
+		gTisch_6_RFID_Write[8] := 0;
+		gTisch_6_RFID_Write[9] := 1;
+		gTisch_6_RFID_Write[0].0 := TRUE;
+	END_IF
+		
+	(* Write Variable nullen *)
+	
+	IF gMerker_Tisch_6_alles_nullen = TRUE THEN
+		gTisch_6_RFID_Write[1] := 0;
+		gTisch_6_RFID_Write[2] := 0;
+		gTisch_6_RFID_Write[3] := 0;
+		gTisch_6_RFID_Write[4] := 0;  
+		gTisch_6_RFID_Write[5] := 0;
+		gTisch_6_RFID_Write[6] := 0;
+		gTisch_6_RFID_Write[7] := 0; 
+		gTisch_6_RFID_Write[8] := 0;
+		gTisch_6_RFID_Write[0] := 0;
+	END_IF
+	
+	gTisch_6_RFID_Write[9] := gTisch_6_RFID_Write[0];
 	
 	CASE Tisch_6_RFID OF
-		//Cech-Implement-Beginn: Hier soll die UID aus dem TAg nach Tag-Present rausgeholt und auf 8Byte-Array gMerker_Tisch_1_RFID_UID übergeben werden, damit die UID für Centurio über Opc-Ua übergeben werden kannn
-		0:	IF gTisch_6_RFID_Read[0] = 129 (* /// AND gTisch_6_RFID_Write[0].0 = FALSE *) THEN //Cech-Comment: Wenn der TAG im Lesebereich ist und der Lesekopf betriebsbereit ist ( Read[0] = 1000 0001 ), aber noch kein Lesebefehl ausgegeben wurde
+//Cech-Implement-Beginn: Hier soll die UID aus dem TAg nach Tag-Present rausgeholt und auf 8Byte-Array gMerker_Tisch_1_RFID_UID übergeben werden, damit die UID für Centurio über Opc-Ua übergeben werden kannn
+		0:	IF gTisch_6_RFID_Read[0] = 129 AND gTisch_6_RFID_Write[0].0 = FALSE THEN //Cech-Comment: Wenn der TAG im Lesebereich ist und der Lesekopf betriebsbereit ist ( Read[0] = 1000 0001 ), aber noch kein Lesebefehl ausgegeben wurde
 				gMerker_Tisch_6_STRING_HELPER := '';
 				gMerker_Tisch_6_RFID_UID_STR := '';
 				FOR i := 1 TO 8 DO
@@ -755,17 +791,75 @@ PROGRAM _CYCLIC
 					END_IF;
 					gMerker_Tisch_6_RFID_UID_STR := CONCAT( gMerker_Tisch_6_RFID_UID_STR, gMerker_Tisch_6_STRING_HELPER );
 				END_FOR
+				Tisch_6_RFID := 5;
+			END_IF
+//Cech-Implement-Ende		
+		
+		5:	IF gMerker_Tisch_6_RFID_Vorhanden  = TRUE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_6_RFID_Reset = FALSE AND gMerker_block_RFID_read_Tisch_6 = FALSE (*AND gMerker_Tisch_6_lesen_fertig = FALSE*) THEN
+				gMerker_Tisch_6_Auftrag_Lesen := TRUE;
+				Tisch_6_RFID := 10;
+			END_IF
+		
+		10: lWarten_RFID_Fehler_Tisch_6 := lWarten_RFID_Fehler_Tisch_6 + (RTInfo_0.cycle_time/1000);
+			IF gTisch_6_RFID_Read[0] = 135 THEN
+				gMerker_RFID_Value_Tisch_6 := gTisch_6_RFID_Read[1];
+				//			gMerker_RFID_Tisch_6_gelesen := TRUE;
+				//			gMerker_Tisch_6_lesen_fertig := TRUE;
+				lWarten_RFID_Fehler_Tisch_6 := 0;
+				Tisch_6_RFID := 15;
+			ELSIF lWarten_RFID_Fehler_Tisch_6 >= 5000 AND gTisch_6_RFID_Read[0] <> 135 THEN
+				gMerker_Tisch_6_Auftrag_Lesen := FALSE;
+				gMerker_Tisch_6_RFID_Reset := TRUE;
+				lWarten_RFID_Fehler_Tisch_6 := 0;
+				Tisch_6_RFID := 100;
+			END_IF
+		
+		15:
+			IF gMerker_RFID_Value_Tisch_6 <> 0 THEN
+				gMerker_RFID_Tisch_6_gelesen := TRUE;
+				gMerker_Tisch_6_lesen_fertig := TRUE;
+				Tisch_6_RFID := 20;
+			ELSIF gMerker_RFID_Value_Tisch_6 = 0 THEN
+				gMerker_RFID_Tisch_6_gelesen := FALSE;
+				gMerker_Tisch_6_lesen_fertig := FALSE;
+				Tisch_6_RFID := 100;
+			END_IF				
+			
+		20: (* lWarten_fuer_OPCUA_Tisch_6 := lWarten_fuer_OPCUA_Tisch_6 + (RTInfo_0.cycle_time/1000) ;*)
+			IF gMerker_Tisch_6_RFID_Vorhanden = FALSE (* gTisch_6.Inputs.Vor_Stopper = FALSE *) AND gTisch_6.Inputs.Nach_Stopper = TRUE (* AND lWarten_fuer_OPCUA_Tisch_6 >= Wartezeit_OPCUA *) THEN
+				gMerker_Tisch_6_Auftrag_Lesen := FALSE;
+	//			gMerker_RFID_Value_Tisch_6 := 0;
+				gTisch_6_RFID_Write[0] := 4;
+				gMerker_Tisch_6_RFID_UID_STR := '0';
 				Tisch_6_RFID := 30;
 			END_IF
-			//Cech-Implement-Ende		
 		
 		30: 
-			IF gMerker_Tisch_6_RFID_Vorhanden = FALSE AND gTisch_6.Inputs.Nach_Stopper = TRUE THEN
-				///				gTisch_6_RFID_Write[0] := 0;
-				gMerker_Tisch_6_RFID_UID_STR := '0';
+			IF gTisch_6_RFID_Read[0] = 0 THEN
+				gTisch_6_RFID_Write[0] := 0;
 				Tisch_6_RFID := 0;
 			END_IF
 		
+		100:
+			IF gMerker_Tisch_6_Auftrag_Lesen = FALSE AND gMerker_Tisch_6_RFID_Reset = TRUE THEN
+				gTisch_6_RFID_Write[0] := 4;
+		//		gMerker_RFID_Value_Tisch_6 := 0;
+				gMerker_Tisch_6_RFID_UID_STR := '0';
+				Tisch_6_RFID := 110;
+			END_IF
+		
+		110:
+			IF gTisch_6_RFID_Read[0] = 0 THEN
+				gMerker_Tisch_6_alles_nullen := TRUE;
+				Tisch_6_RFID := 120;
+			END_IF
+		
+		120:
+			IF gTisch_6_RFID_Write[0] = 0 AND gTisch_6_RFID_Write[1] = 0 AND gTisch_6_RFID_Write[2] = 0 AND gTisch_6_RFID_Write[3] = 0 AND gTisch_6_RFID_Write[4] = 0 AND gTisch_6_RFID_Write[5] = 0 AND gTisch_6_RFID_Write[6] = 0 AND gTisch_6_RFID_Write[7] = 0 AND gTisch_6_RFID_Write[8] = 0 AND gTisch_6_RFID_Write[9] = 0 THEN
+				gMerker_Tisch_6_alles_nullen := FALSE;
+				gMerker_Tisch_6_RFID_Reset := FALSE;
+				Tisch_6_RFID := 0;
+			END_IF			
 				
 	END_CASE