123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- 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
- PROGRAM _CYCLIC
- //********************************** Tisch 1 ***********************************************
-
- (* Lesen *)
- gMerker_Tisch_1_RFID_Vorhanden := gTisch_1_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *) //Cech-Comment: Wenn dieses Bit gesetzt ist, dann ist ein Datenträger im LEsebereich
-
-
- //Cech-Comment: Diese zehn Integer-Werte sind im Balluff-Manual MAN_BIS_M_4XX_045_... Kap.9.2 S48 beschrieben
- // Die TAG-UID wird automatisch nach einem TAG-PResent vom Lesekopf ausgelesen und in das LEseregister geschrieben; da braucht kein LEsebefehl ausgegeben werden
-
- CASE Tisch_1_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_1_RFID_Read[0] = 129 (*AND gTisch_1_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, dann liefert der TAG automatisch die UID zurück
- gMerker_Tisch_1_STRING_HELPER := '';
- gMerker_Tisch_1_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_1_STRING_HELPER := USINT_TO_STRING (gTisch_1_RFID_Read[i]);
- IF LEN(gMerker_Tisch_1_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_1_STRING_HELPER := CONCAT('00', gMerker_Tisch_1_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_1_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_1_STRING_HELPER := CONCAT('0', gMerker_Tisch_1_STRING_HELPER);
- END_IF;
- gMerker_Tisch_1_RFID_UID_STR := CONCAT( gMerker_Tisch_1_RFID_UID_STR, gMerker_Tisch_1_STRING_HELPER );
- END_FOR
- Tisch_1_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_1_RFID_Vorhanden = FALSE AND gTisch_1.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_1_RFID_UID_STR := '0';
- Tisch_1_RFID := 0;
- END_IF
-
- //Cech-Implement-Ende
-
- END_CASE
- //********************************** Tisch 2 ***********************************************
- gMerker_Tisch_2_RFID_Vorhanden := gTisch_2_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
- CASE Tisch_2_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_2_RFID_Read[0] = 129 AND gTisch_2_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_2_STRING_HELPER := '';
- gMerker_Tisch_2_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_2_STRING_HELPER := USINT_TO_STRING (gTisch_2_RFID_Read[i]);
- IF LEN(gMerker_Tisch_2_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_2_STRING_HELPER := CONCAT('00', gMerker_Tisch_2_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_2_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_2_STRING_HELPER := CONCAT('0', gMerker_Tisch_2_STRING_HELPER);
- END_IF;
- gMerker_Tisch_2_RFID_UID_STR := CONCAT( gMerker_Tisch_2_RFID_UID_STR, gMerker_Tisch_2_STRING_HELPER );
- END_FOR
- Tisch_2_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_2_RFID_Vorhanden = FALSE AND gTisch_2.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_2_RFID_UID_STR := '0';
- Tisch_2_RFID := 0;
- END_IF
- //Cech-Implement-Ende
-
- END_CASE
-
- //********************************** Tisch 3 ***********************************************
-
- gMerker_Tisch_3_RFID_Vorhanden := gTisch_3_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
- CASE Tisch_3_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_3_RFID_Read[0] = 129 AND gTisch_3_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_3_STRING_HELPER := '';
- gMerker_Tisch_3_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_3_STRING_HELPER := USINT_TO_STRING (gTisch_3_RFID_Read[i]);
- IF LEN(gMerker_Tisch_3_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_3_STRING_HELPER := CONCAT('00', gMerker_Tisch_3_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_3_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_3_STRING_HELPER := CONCAT('0', gMerker_Tisch_3_STRING_HELPER);
- END_IF;
- gMerker_Tisch_3_RFID_UID_STR := CONCAT( gMerker_Tisch_3_RFID_UID_STR, gMerker_Tisch_3_STRING_HELPER );
- END_FOR
- Tisch_3_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_3_RFID_Vorhanden = FALSE AND gTisch_3.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_3_RFID_UID_STR := '0';
- Tisch_3_RFID := 0;
- END_IF
-
- END_CASE
-
- //********************************** Tisch 4 ***********************************************
-
- gMerker_Tisch_4_RFID_Vorhanden := gTisch_4_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
-
- CASE Tisch_4_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_4_RFID_Read[0] = 129 AND gTisch_4_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_4_STRING_HELPER := '';
- gMerker_Tisch_4_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_4_STRING_HELPER := USINT_TO_STRING (gTisch_4_RFID_Read[i]);
- IF LEN(gMerker_Tisch_4_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_4_STRING_HELPER := CONCAT('00', gMerker_Tisch_4_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_4_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_4_STRING_HELPER := CONCAT('0', gMerker_Tisch_4_STRING_HELPER);
- END_IF;
- gMerker_Tisch_4_RFID_UID_STR := CONCAT( gMerker_Tisch_4_RFID_UID_STR, gMerker_Tisch_4_STRING_HELPER );
- END_FOR
- Tisch_4_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_4_RFID_Vorhanden = FALSE AND gTisch_4.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_4_RFID_UID_STR := '0';
- Tisch_4_RFID := 0;
- END_IF
- END_CASE
-
- //********************************** Tisch 5 ***********************************************
-
- gMerker_Tisch_5_RFID_Vorhanden := gTisch_5_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
- CASE Tisch_5_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_5_RFID_Read[0] = 129 AND gTisch_5_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_5_STRING_HELPER := '';
- gMerker_Tisch_5_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_5_STRING_HELPER := USINT_TO_STRING (gTisch_5_RFID_Read[i]);
- IF LEN(gMerker_Tisch_5_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_5_STRING_HELPER := CONCAT('00', gMerker_Tisch_5_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_5_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_5_STRING_HELPER := CONCAT('0', gMerker_Tisch_5_STRING_HELPER);
- END_IF;
- gMerker_Tisch_5_RFID_UID_STR := CONCAT( gMerker_Tisch_5_RFID_UID_STR, gMerker_Tisch_5_STRING_HELPER );
- END_FOR
- Tisch_5_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_5_RFID_Vorhanden = FALSE AND gTisch_5.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_5_RFID_UID_STR := '0';
- Tisch_5_RFID := 0;
- END_IF
- END_CASE
-
- //********************************** Tisch 6 ***********************************************
-
- gMerker_Tisch_6_RFID_Vorhanden := gTisch_6_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
- 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
- gMerker_Tisch_6_STRING_HELPER := '';
- gMerker_Tisch_6_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_6_STRING_HELPER := USINT_TO_STRING (gTisch_6_RFID_Read[i]);
- IF LEN(gMerker_Tisch_6_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_6_STRING_HELPER := CONCAT('00', gMerker_Tisch_6_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_6_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_6_STRING_HELPER := CONCAT('0', gMerker_Tisch_6_STRING_HELPER);
- 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
-
- 5: IF gMerker_Tisch_6_RFID_Vorhanden = FALSE AND gTisch_6.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_6_RFID_UID_STR := '0';
- Tisch_6_RFID := 0;
- END_IF
- END_CASE
-
- //********************************** Tisch 7 ***********************************************
-
- gMerker_Tisch_7_RFID_Vorhanden := gTisch_7_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
-
- CASE Tisch_7_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_7_RFID_Read[0] = 129 AND gTisch_7_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_7_STRING_HELPER := '';
- gMerker_Tisch_7_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_7_STRING_HELPER := USINT_TO_STRING (gTisch_7_RFID_Read[i]);
- IF LEN(gMerker_Tisch_7_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_7_STRING_HELPER := CONCAT('00', gMerker_Tisch_7_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_7_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_7_STRING_HELPER := CONCAT('0', gMerker_Tisch_7_STRING_HELPER);
- END_IF;
- gMerker_Tisch_7_RFID_UID_STR := CONCAT( gMerker_Tisch_7_RFID_UID_STR, gMerker_Tisch_7_STRING_HELPER );
- END_FOR
- Tisch_7_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_7_RFID_Vorhanden = FALSE AND gTisch_7.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_7_RFID_UID_STR := '0';
- Tisch_7_RFID := 0;
- END_IF
- //Cech-Implement-Ende
-
- END_CASE
-
- //********************************** Tisch 8 ***********************************************
-
- gMerker_Tisch_8_RFID_Vorhanden := gTisch_8_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
-
- CASE Tisch_8_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_8_RFID_Read[0] = 129 AND gTisch_8_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_8_STRING_HELPER := '';
- gMerker_Tisch_8_RFID_UID_STR := '';
- FOR i := 1 TO 8 DO
- gMerker_Tisch_8_STRING_HELPER := USINT_TO_STRING (gTisch_8_RFID_Read[i]);
- IF LEN(gMerker_Tisch_8_STRING_HELPER) = 1 THEN //Cech-Comment: Wenn der String nur 1 ZEichen ist, muss mit 2 Nullen links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_8_STRING_HELPER := CONCAT('00', gMerker_Tisch_8_STRING_HELPER);
- ELSIF LEN(gMerker_Tisch_8_STRING_HELPER) = 2 THEN //Cech-Comment: Wenn der String nur 2 Zeichen ist, muss mit 1 Null links verlängert werden, sonst wird ID verstümmelt und ist dadurch nicht mehr eindeutig über alle 8 Bytes der UID
- gMerker_Tisch_8_STRING_HELPER := CONCAT('0', gMerker_Tisch_8_STRING_HELPER);
- END_IF;
- gMerker_Tisch_8_RFID_UID_STR := CONCAT( gMerker_Tisch_8_RFID_UID_STR, gMerker_Tisch_8_STRING_HELPER );
- END_FOR
- Tisch_8_RFID := 5;
- END_IF
- 5: IF gMerker_Tisch_8_RFID_Vorhanden = FALSE AND gTisch_8.Status.Stopper = STATUS_EINGEFAHREN THEN
- gMerker_Tisch_8_RFID_UID_STR := '0';
- Tisch_8_RFID := 0;
- END_IF
- END_CASE
-
- OPCUA_TEST_1;
-
- OPCUATEST2;
-
- OPCUATEST3;
-
-
-
- END_PROGRAM
- PROGRAM _EXIT
- (* Insert code here *)
-
- END_PROGRAM
|