Main.st 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  1. PROGRAM _INIT
  2. RTInfo_0(enable:=1);
  3. Wartezeit_OPCUA := 1100;
  4. END_PROGRAM
  5. PROGRAM _CYCLIC
  6. //********************************** Tisch 1 ***********************************************
  7. (* Lesen *)
  8. 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
  9. //Cech-Comment: Diese zehn Integer-Werte sind im Balluff-Manual MAN_BIS_M_4XX_045_... Kap.9.2 S48 beschrieben
  10. // Die TAG-UID wird automatisch nach einem TAG-PResent vom Lesekopf ausgelesen und in das LEseregister geschrieben; da braucht kein LEsebefehl ausgegeben werden
  11. IF gMerker_Tisch_1_Auftrag_Lesen = TRUE THEN
  12. // gMerker_Lesen_Fertig := FALSE;
  13. gTisch_1_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  14. gTisch_1_RFID_Write[2] := 0;
  15. gTisch_1_RFID_Write[3] := 0;
  16. gTisch_1_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  17. gTisch_1_RFID_Write[5] := 0;
  18. gTisch_1_RFID_Write[6] := 0;
  19. gTisch_1_RFID_Write[7] := 0;
  20. gTisch_1_RFID_Write[8] := 0;
  21. gTisch_1_RFID_Write[9] := 1;
  22. gTisch_1_RFID_Write[0].0 := TRUE; (*Cech: Bit0: nuer Auftrag an Reader, Bit2:Reset, Bit5:Kopfabschaltung, Bit6: Toggeln für längere Abfragen/Aufträge, wenn SPS bereit ist, weitere Daten zu übernehmen*)
  23. END_IF
  24. (* Schreiben *)
  25. (* Befehlsdaten *)
  26. IF gMerker_neuen_Befehl_schreiben = TRUE THEN
  27. gTisch_1_RFID_Write[1] := 2; (* Datenträger beschreiben *)
  28. gTisch_1_RFID_Write[2] := 0; (* Daten *)
  29. gTisch_1_RFID_Write[3] := 0; (* Daten *)
  30. gTisch_1_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  31. gTisch_1_RFID_Write[5] := 0; (* Daten *)
  32. gTisch_1_RFID_Write[6] := 0; (* Daten *)
  33. gTisch_1_RFID_Write[7] := 0; (* Daten *)
  34. gTisch_1_RFID_Write[8] := 0; (* Daten *)
  35. gTisch_1_RFID_Write[0].0 := TRUE; (* neuer Auftrag steht an *)
  36. END_IF
  37. (* Write Variable nullen *)
  38. IF gMerker_Tisch_1_alles_nullen = TRUE THEN
  39. gTisch_1_RFID_Write[1] := 0;
  40. gTisch_1_RFID_Write[2] := 0;
  41. gTisch_1_RFID_Write[3] := 0;
  42. gTisch_1_RFID_Write[4] := 0;
  43. gTisch_1_RFID_Write[5] := 0;
  44. gTisch_1_RFID_Write[6] := 0;
  45. gTisch_1_RFID_Write[7] := 0;
  46. gTisch_1_RFID_Write[8] := 0;
  47. gTisch_1_RFID_Write[0] := 0;
  48. END_IF
  49. gTisch_1_RFID_Write[9] := gTisch_1_RFID_Write[0];
  50. CASE Tisch_1_RFID OF
  51. //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
  52. 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
  53. gMerker_Debug_Test_Counter_RFID := 00; //Cech-Comment: eingefügt für TEstzwecke
  54. // gMerker_Tisch_1_RFID_UID[0] := gTisch_1_RFID_Read[1];
  55. // gMerker_Tisch_1_RFID_UID[1] := gTisch_1_RFID_Read[2];
  56. // gMerker_Tisch_1_RFID_UID[2] := gTisch_1_RFID_Read[3];
  57. // gMerker_Tisch_1_RFID_UID[3] := gTisch_1_RFID_Read[4];
  58. // gMerker_Tisch_1_RFID_UID[4] := gTisch_1_RFID_Read[5];
  59. // gMerker_Tisch_1_RFID_UID[5] := gTisch_1_RFID_Read[6];
  60. // gMerker_Tisch_1_RFID_UID[6] := gTisch_1_RFID_Read[7];
  61. // gMerker_Tisch_1_RFID_UID[7] := gTisch_1_RFID_Read[8];
  62. // gMerker_Tisch_1_RFID_UID_STRARR[0] := USINT_TO_STRING (gTisch_1_RFID_Read[1]);
  63. // gMerker_Tisch_1_RFID_UID_STRARR[1] := USINT_TO_STRING (gTisch_1_RFID_Read[2]);
  64. // gMerker_Tisch_1_RFID_UID_STRARR[2] := USINT_TO_STRING (gTisch_1_RFID_Read[3]);
  65. // gMerker_Tisch_1_RFID_UID_STRARR[3] := USINT_TO_STRING (gTisch_1_RFID_Read[4]);
  66. // gMerker_Tisch_1_RFID_UID_STRARR[4] := USINT_TO_STRING (gTisch_1_RFID_Read[5]);
  67. // gMerker_Tisch_1_RFID_UID_STRARR[5] := USINT_TO_STRING (gTisch_1_RFID_Read[6]);
  68. // gMerker_Tisch_1_RFID_UID_STRARR[6] := USINT_TO_STRING (gTisch_1_RFID_Read[7]);
  69. // gMerker_Tisch_1_RFID_UID_STRARR[7] := USINT_TO_STRING (gTisch_1_RFID_Read[8]);
  70. gMerker_Tisch_1_STRING_HELPER := '';
  71. gMerker_Tisch_1_RFID_UID_STR := '0';
  72. FOR i := 1 TO 8 DO
  73. gMerker_Tisch_1_STRING_HELPER := USINT_TO_STRING (gTisch_1_RFID_Read[i]);
  74. 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
  75. gMerker_Tisch_1_STRING_HELPER := CONCAT('00', gMerker_Tisch_1_STRING_HELPER);
  76. 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
  77. gMerker_Tisch_1_STRING_HELPER := CONCAT('0', gMerker_Tisch_1_STRING_HELPER);
  78. END_IF;
  79. gMerker_Tisch_1_RFID_UID_STR := CONCAT( gMerker_Tisch_1_RFID_UID_STR, gMerker_Tisch_1_STRING_HELPER );
  80. END_FOR
  81. Tisch_1_RFID := 5;
  82. END_IF
  83. //Cech-Implement-Ende
  84. 5: IF gMerker_Tisch_1_RFID_Vorhanden = TRUE AND gMerker_Tisch_1_RFID_Reset = FALSE (*AND gMerker_Tisch_1_lesen_fertig = FALSE*) THEN
  85. gMerker_Debug_Test_Counter_RFID := 05; //Cech-Comment: eingefügt für TEstzwecke
  86. gMerker_Tisch_1_Auftrag_Lesen := TRUE;
  87. Tisch_1_RFID := 10;
  88. END_IF
  89. 10: lWarten_RFID_Fehler_Tisch_1 := lWarten_RFID_Fehler_Tisch_1 + (RTInfo_0.cycle_time/1000);
  90. IF gTisch_1_RFID_Read[0] = 135 THEN //135 : 1000 0111 / Cech-Comment: Bit: 0...Tag im Lesebereich, 1...Auftragsbearbeitung läuft, 2...Auftrag fehlerlos beendet, 3...Auftrag fehlerhaft bearbeitet, 5...Wenn toggelt: Sensor bereit, weitere Daten zu übermitteln, 6...Sensor abgeschaltet, 7...Sensor bereit
  91. gMerker_Debug_Test_Counter_RFID := 10; //Cech-Comment: eingefügt für TEstzwecke
  92. gMerker_RFID_Value_Tisch_1 := gTisch_1_RFID_Read[1];
  93. // gMerker_RFID_Tisch_1_gelesen := TRUE;
  94. // gMerker_Tisch_1_lesen_fertig := TRUE;
  95. lWarten_RFID_Fehler_Tisch_1 := 0;
  96. Tisch_1_RFID := 15;
  97. ELSIF lWarten_RFID_Fehler_Tisch_1 >= 5000 AND gTisch_1_RFID_Read[0] <> 135 THEN //Wenn nach 5s noch keine fehlerfreie Rückmeldung vom LEser gekommen ist, dann wird der Leser resetiert und alles wieder rückgesetzt ab 100:
  98. gMerker_Debug_Test_Counter_RFID := 11; //Cech-Comment: eingefügt für TEstzwecke
  99. gMerker_Tisch_1_Auftrag_Lesen := FALSE;
  100. gMerker_Tisch_1_RFID_Reset := TRUE;
  101. lWarten_RFID_Fehler_Tisch_1 := 0;
  102. Tisch_1_RFID := 100;
  103. END_IF
  104. 15:
  105. IF gMerker_RFID_Value_Tisch_1 <> 0 THEN //ungleich 0 von gTisch_1_RFID_Read[1] bedeutet einen Fehlercode; ohne Fehler muss das 00h sein
  106. gMerker_Debug_Test_Counter_RFID := 15; //Cech-Comment: eingefügt für TEstzwecke
  107. gMerker_RFID_Tisch_1_gelesen := TRUE;
  108. gMerker_Tisch_1_lesen_fertig := TRUE;
  109. Tisch_1_RFID := 20;
  110. ELSIF gMerker_RFID_Value_Tisch_1 = 0 THEN //kein Fehler beim Lesen
  111. gMerker_Debug_Test_Counter_RFID := 16; //Cech-Comment: eingefügt für TEstzwecke
  112. gMerker_RFID_Tisch_1_gelesen := FALSE;
  113. gMerker_Tisch_1_lesen_fertig := FALSE;
  114. Tisch_1_RFID := 100;
  115. END_IF
  116. 20: lWarten_fuer_OPCUA_Tisch_1 := lWarten_fuer_OPCUA_Tisch_1 + (RTInfo_0.cycle_time/1000);
  117. IF gMerker_Tisch_1_RFID_Vorhanden = FALSE AND gTisch_1.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_1 >= Wartezeit_OPCUA THEN
  118. gMerker_Debug_Test_Counter_RFID := 20; //Cech-Comment: eingefügt für TEstzwecke
  119. gMerker_Tisch_1_Auftrag_Lesen := FALSE;
  120. gMerker_RFID_Value_Tisch_1 := 0;
  121. gTisch_1_RFID_Write[0] := 4; //SW-Reset des RFID-Sensors
  122. gMerker_Tisch_1_RFID_UID_STR := '0';
  123. Tisch_1_RFID := 30;
  124. END_IF
  125. 30:
  126. IF gTisch_1_RFID_Read[0] = 0 THEN
  127. gMerker_Debug_Test_Counter_RFID := 30; //Cech-Comment: eingefügt für TEstzwecke
  128. gTisch_1_RFID_Write[0] := 0;
  129. Tisch_1_RFID := 0;
  130. END_IF
  131. 100: //Hier geht es weiter, wenn die Daten fehlerfrei empfangen wurden
  132. IF gMerker_Tisch_1_Auftrag_Lesen = FALSE AND gMerker_Tisch_1_RFID_Reset = TRUE THEN
  133. gMerker_Debug_Test_Counter_RFID := 100; //Cech-Comment: eingefügt für TEstzwecke
  134. gTisch_1_RFID_Write[0] := 4; //SW-Reset des RFID-Sensors
  135. gMerker_RFID_Value_Tisch_1 := 0;
  136. gMerker_Tisch_1_RFID_UID_STR := '0';
  137. Tisch_1_RFID := 110;
  138. END_IF
  139. 110:
  140. IF gTisch_1_RFID_Read[0] = 0 THEN
  141. gMerker_Debug_Test_Counter_RFID := 110; //Cech-Comment: eingefügt für TEstzwecke
  142. gMerker_Tisch_1_alles_nullen := TRUE;
  143. Tisch_1_RFID := 120;
  144. END_IF
  145. 120:
  146. IF gTisch_1_RFID_Write[0] = 0 AND gTisch_1_RFID_Write[1] = 0 AND gTisch_1_RFID_Write[2] = 0 AND gTisch_1_RFID_Write[3] = 0 AND gTisch_1_RFID_Write[4] = 0 AND gTisch_1_RFID_Write[5] = 0 AND gTisch_1_RFID_Write[6] = 0 AND gTisch_1_RFID_Write[7] = 0 AND gTisch_1_RFID_Write[8] = 0 AND gTisch_1_RFID_Write[9] = 0 THEN
  147. gMerker_Debug_Test_Counter_RFID := 120; //Cech-Comment: eingefügt für TEstzwecke
  148. gMerker_Tisch_1_alles_nullen := FALSE;
  149. gMerker_Tisch_1_RFID_Reset := FALSE;
  150. Tisch_1_RFID := 0;
  151. END_IF
  152. END_CASE
  153. // SCHREIBEN AUF ALLE GLEICH
  154. CASE RFID_Schreiben OF
  155. 0:
  156. IF gMerker_Tisch_1_RFID_Vorhanden = TRUE AND gMerker_OPCUA_Schreibauftrag = TRUE AND gMerker_Tisch_1_lesen_fertig = TRUE THEN
  157. gTisch_1_RFID_Write[0] := 4; // Kopf-Reset
  158. RFID_Schreiben := 10;
  159. END_IF
  160. 10:
  161. IF gTisch_1_RFID_Read[0] = 0 THEN
  162. gMerker_Tisch_1_alles_nullen := TRUE;
  163. RFID_Schreiben := 20;
  164. END_IF
  165. 20:
  166. IF gTisch_1_RFID_Write[0] = 0 AND gTisch_1_RFID_Write[1] = 0 AND gTisch_1_RFID_Write[2] = 0 AND gTisch_1_RFID_Write[3] = 0 AND gTisch_1_RFID_Write[4] = 0 AND gTisch_1_RFID_Write[5] = 0 AND gTisch_1_RFID_Write[6] = 0 AND gTisch_1_RFID_Write[7] = 0 AND gTisch_1_RFID_Write[8] = 0 AND gTisch_1_RFID_Write[9] = 0 THEN
  167. gMerker_Tisch_1_alles_nullen := FALSE;
  168. gMerker_neuen_Befehl_schreiben := TRUE;
  169. RFID_Schreiben := 30;
  170. END_IF
  171. 30:
  172. IF gTisch_1_RFID_Read[0] = 163 THEN //163 : 10100011 betriebsbereit; toggelbit zeigt an dass Kopf bereit weitere Daten zu übermitteln; Auftrag erkannt und entgegengenommen; Datenträger im Lesebereich;
  173. gMerker_neuen_Befehl_schreiben := FALSE;
  174. gMerker_Tisch_1_alles_nullen := TRUE;
  175. RFID_Schreiben := 40;
  176. END_IF
  177. 40:
  178. IF gTisch_1_RFID_Write[0] = 0 AND gTisch_1_RFID_Write[1] = 0 AND gTisch_1_RFID_Write[2] = 0 AND gTisch_1_RFID_Write[3] = 0 AND gTisch_1_RFID_Write[4] = 0 AND gTisch_1_RFID_Write[5] = 0 AND gTisch_1_RFID_Write[6] = 0 AND gTisch_1_RFID_Write[7] = 0 AND gTisch_1_RFID_Write[8] = 0 AND gTisch_1_RFID_Write[9] = 0 THEN
  179. gMerker_Tisch_1_alles_nullen := FALSE;
  180. gTisch_1_RFID_Write[1] := gMerker_OPCUA_Seriennummer_Test;
  181. gTisch_1_RFID_Write[2] := 0;
  182. gTisch_1_RFID_Write[3] := 0;
  183. gTisch_1_RFID_Write[4] := 0;
  184. gTisch_1_RFID_Write[5] := 0;
  185. gTisch_1_RFID_Write[6] := 0;
  186. gTisch_1_RFID_Write[7] := 0;
  187. gTisch_1_RFID_Write[8] := 0;
  188. gTisch_1_RFID_Write[0] := 65; //65: 0100 0001 das obere Bit zeigt an, durch Toggelung, dass die Linien-SPS bereit ist, Daten vom Kopf zu empfangen
  189. RFID_Schreiben := 50;
  190. END_IF
  191. 50:
  192. IF gTisch_1_RFID_Read[0] = 167 THEN //167 1010 0111, Kopf bereit;Kopf bereit für neue Daten; Auftrag ohne Fehler beendet; Auftrag erkannt und entgegengenommen; Datenträger im LEsebereich des Kopfes
  193. gMerker_Tisch_1_alles_nullen := TRUE;
  194. RFID_Schreiben := 60;
  195. END_IF
  196. 60:
  197. IF gTisch_1_RFID_Write[0] = 0 AND gTisch_1_RFID_Write[1] = 0 AND gTisch_1_RFID_Write[2] = 0 AND gTisch_1_RFID_Write[3] = 0 AND gTisch_1_RFID_Write[4] = 0 AND gTisch_1_RFID_Write[5] = 0 AND gTisch_1_RFID_Write[6] = 0 AND gTisch_1_RFID_Write[7] = 0 AND gTisch_1_RFID_Write[8] = 0 AND gTisch_1_RFID_Write[9] = 0 THEN
  198. gMerker_Tisch_1_alles_nullen := FALSE;
  199. gMerker_OPCUA_Schreibauftrag := FALSE;
  200. gMerker_Tisch_1_lesen_fertig := FALSE;
  201. // gMerker_Tisch_1_Auftrag_Lesen := TRUE;
  202. RFID_Schreiben := 0; // war 70
  203. END_IF
  204. // 70:
  205. // IF gMerker_Tisch_1_RFID_Vorhanden = FALSE THEN
  206. // // gMerker_Tisch_1_Auftrag_Lesen := FALSE;
  207. // RFID_Schreiben := 0;
  208. // END_IF
  209. END_CASE
  210. //********************************** Tisch 2 ***********************************************
  211. (* Lesen *)
  212. gMerker_Tisch_2_RFID_Vorhanden := gTisch_2_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  213. IF gMerker_Tisch_2_Auftrag_Lesen = TRUE THEN
  214. // gMerker_Lesen_Fertig := FALSE;
  215. gTisch_2_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  216. gTisch_2_RFID_Write[2] := 0;
  217. gTisch_2_RFID_Write[3] := 0;
  218. gTisch_2_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  219. gTisch_2_RFID_Write[5] := 0;
  220. gTisch_2_RFID_Write[6] := 0;
  221. gTisch_2_RFID_Write[7] := 0;
  222. gTisch_2_RFID_Write[8] := 0;
  223. gTisch_2_RFID_Write[9] := 1;
  224. gTisch_2_RFID_Write[0].0 := TRUE;
  225. END_IF
  226. (* Write Variable nullen *)
  227. IF gMerker_Tisch_2_alles_nullen = TRUE THEN
  228. gTisch_2_RFID_Write[1] := 0;
  229. gTisch_2_RFID_Write[2] := 0;
  230. gTisch_2_RFID_Write[3] := 0;
  231. gTisch_2_RFID_Write[4] := 0;
  232. gTisch_2_RFID_Write[5] := 0;
  233. gTisch_2_RFID_Write[6] := 0;
  234. gTisch_2_RFID_Write[7] := 0;
  235. gTisch_2_RFID_Write[8] := 0;
  236. gTisch_2_RFID_Write[0] := 0;
  237. END_IF
  238. gTisch_2_RFID_Write[9] := gTisch_2_RFID_Write[0];
  239. CASE Tisch_2_RFID OF
  240. //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
  241. 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
  242. gMerker_Tisch_2_STRING_HELPER := '';
  243. gMerker_Tisch_2_RFID_UID_STR := '0';
  244. FOR i := 1 TO 8 DO
  245. gMerker_Tisch_2_STRING_HELPER := USINT_TO_STRING (gTisch_2_RFID_Read[i]);
  246. 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
  247. gMerker_Tisch_2_STRING_HELPER := CONCAT('00', gMerker_Tisch_2_STRING_HELPER);
  248. 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
  249. gMerker_Tisch_2_STRING_HELPER := CONCAT('0', gMerker_Tisch_2_STRING_HELPER);
  250. END_IF;
  251. gMerker_Tisch_2_RFID_UID_STR := CONCAT( gMerker_Tisch_2_RFID_UID_STR, gMerker_Tisch_2_STRING_HELPER );
  252. END_FOR
  253. Tisch_2_RFID := 5;
  254. END_IF
  255. //Cech-Implement-Ende
  256. 5: IF gMerker_Tisch_2_RFID_Vorhanden = TRUE AND gTisch_2.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_2_RFID_Reset = FALSE (*AND gMerker_Tisch_2_lesen_fertig = FALSE*) THEN
  257. gMerker_Tisch_2_Auftrag_Lesen := TRUE;
  258. Tisch_2_RFID := 10;
  259. END_IF
  260. 10: lWarten_RFID_Fehler_Tisch_2 := lWarten_RFID_Fehler_Tisch_2 + (RTInfo_0.cycle_time/1000);
  261. IF gTisch_2_RFID_Read[0] = 135 THEN
  262. gMerker_RFID_Value_Tisch_2 := gTisch_2_RFID_Read[1];
  263. // gMerker_RFID_Tisch_2_gelesen := TRUE;
  264. // gMerker_Tisch_2_lesen_fertig := TRUE;
  265. lWarten_RFID_Fehler_Tisch_2 := 0;
  266. Tisch_2_RFID := 15;
  267. ELSIF lWarten_RFID_Fehler_Tisch_2 >= 5000 AND gTisch_2_RFID_Read[0] <> 135 THEN
  268. gMerker_Tisch_2_Auftrag_Lesen := FALSE;
  269. gMerker_Tisch_2_RFID_Reset := TRUE;
  270. lWarten_RFID_Fehler_Tisch_2 := 0;
  271. Tisch_2_RFID := 100;
  272. END_IF
  273. 15:
  274. IF gMerker_RFID_Value_Tisch_2 <> 0 THEN
  275. gMerker_RFID_Tisch_2_gelesen := TRUE;
  276. gMerker_Tisch_2_lesen_fertig := TRUE;
  277. Tisch_2_RFID := 20;
  278. ELSIF gMerker_RFID_Value_Tisch_2 = 0 THEN
  279. gMerker_RFID_Tisch_2_gelesen := FALSE;
  280. gMerker_Tisch_2_lesen_fertig := FALSE;
  281. Tisch_2_RFID := 100;
  282. END_IF
  283. 20: lWarten_fuer_OPCUA_Tisch_2 := lWarten_fuer_OPCUA_Tisch_2 + (RTInfo_0.cycle_time/1000);
  284. IF gMerker_Tisch_2_RFID_Vorhanden = FALSE AND gTisch_2.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_2 >= Wartezeit_OPCUA THEN
  285. gMerker_Tisch_2_Auftrag_Lesen := FALSE;
  286. gMerker_RFID_Value_Tisch_2 := 0;
  287. gTisch_2_RFID_Write[0] := 4;
  288. gMerker_Tisch_2_RFID_UID_STR := '0';
  289. Tisch_2_RFID := 30;
  290. END_IF
  291. 30:
  292. IF gTisch_2_RFID_Read[0] = 0 THEN
  293. gTisch_2_RFID_Write[0] := 0;
  294. Tisch_2_RFID := 0;
  295. END_IF
  296. 100:
  297. IF gMerker_Tisch_2_Auftrag_Lesen = FALSE AND gMerker_Tisch_2_RFID_Reset = TRUE THEN
  298. gTisch_2_RFID_Write[0] := 4;
  299. gMerker_RFID_Value_Tisch_2 := 0;
  300. Tisch_2_RFID := 110;
  301. gMerker_Tisch_2_RFID_UID_STR := '0';
  302. END_IF
  303. 110:
  304. IF gTisch_2_RFID_Read[0] = 0 THEN
  305. gMerker_Tisch_2_alles_nullen := TRUE;
  306. Tisch_2_RFID := 120;
  307. END_IF
  308. 120:
  309. IF gTisch_2_RFID_Write[0] = 0 AND gTisch_2_RFID_Write[1] = 0 AND gTisch_2_RFID_Write[2] = 0 AND gTisch_2_RFID_Write[3] = 0 AND gTisch_2_RFID_Write[4] = 0 AND gTisch_2_RFID_Write[5] = 0 AND gTisch_2_RFID_Write[6] = 0 AND gTisch_2_RFID_Write[7] = 0 AND gTisch_2_RFID_Write[8] = 0 AND gTisch_2_RFID_Write[9] = 0 THEN
  310. gMerker_Tisch_2_alles_nullen := FALSE;
  311. gMerker_Tisch_2_RFID_Reset := FALSE;
  312. Tisch_2_RFID := 0;
  313. END_IF
  314. END_CASE
  315. //********************************** Tisch 3 ***********************************************
  316. (* Lesen *)
  317. gMerker_Tisch_3_RFID_Vorhanden := gTisch_3_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  318. IF gMerker_Tisch_3_Auftrag_Lesen = TRUE THEN
  319. // gMerker_Lesen_Fertig := FALSE;
  320. gTisch_3_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  321. gTisch_3_RFID_Write[2] := 0;
  322. gTisch_3_RFID_Write[3] := 0;
  323. gTisch_3_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  324. gTisch_3_RFID_Write[5] := 0;
  325. gTisch_3_RFID_Write[6] := 0;
  326. gTisch_3_RFID_Write[7] := 0;
  327. gTisch_3_RFID_Write[8] := 0;
  328. gTisch_3_RFID_Write[9] := 1;
  329. gTisch_3_RFID_Write[0].0 := TRUE;
  330. END_IF
  331. (* Write Variable nullen *)
  332. IF gMerker_Tisch_3_alles_nullen = TRUE THEN
  333. gTisch_3_RFID_Write[1] := 0;
  334. gTisch_3_RFID_Write[2] := 0;
  335. gTisch_3_RFID_Write[3] := 0;
  336. gTisch_3_RFID_Write[4] := 0;
  337. gTisch_3_RFID_Write[5] := 0;
  338. gTisch_3_RFID_Write[6] := 0;
  339. gTisch_3_RFID_Write[7] := 0;
  340. gTisch_3_RFID_Write[8] := 0;
  341. gTisch_3_RFID_Write[0] := 0;
  342. END_IF
  343. gTisch_3_RFID_Write[9] := gTisch_3_RFID_Write[0];
  344. CASE Tisch_3_RFID OF
  345. //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
  346. 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
  347. gMerker_Tisch_3_STRING_HELPER := '';
  348. gMerker_Tisch_3_RFID_UID_STR := '0';
  349. FOR i := 1 TO 8 DO
  350. gMerker_Tisch_3_STRING_HELPER := USINT_TO_STRING (gTisch_3_RFID_Read[i]);
  351. 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
  352. gMerker_Tisch_3_STRING_HELPER := CONCAT('00', gMerker_Tisch_3_STRING_HELPER);
  353. 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
  354. gMerker_Tisch_3_STRING_HELPER := CONCAT('0', gMerker_Tisch_3_STRING_HELPER);
  355. END_IF;
  356. gMerker_Tisch_3_RFID_UID_STR := CONCAT( gMerker_Tisch_3_RFID_UID_STR, gMerker_Tisch_3_STRING_HELPER );
  357. END_FOR
  358. Tisch_3_RFID := 5;
  359. END_IF
  360. //Cech-Implement-Ende
  361. 5: IF gMerker_Tisch_3_RFID_Vorhanden = TRUE AND gTisch_3.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_3_RFID_Reset = FALSE (*AND gMerker_Tisch_3_lesen_fertig = FALSE*) THEN
  362. gMerker_Tisch_3_Auftrag_Lesen := TRUE;
  363. Tisch_3_RFID := 10;
  364. END_IF
  365. 10: lWarten_RFID_Fehler_Tisch_3 := lWarten_RFID_Fehler_Tisch_3 + (RTInfo_0.cycle_time/1000);
  366. IF gTisch_3_RFID_Read[0] = 135 THEN
  367. gMerker_RFID_Value_Tisch_3 := gTisch_3_RFID_Read[1];
  368. // gMerker_RFID_Tisch_3_gelesen := TRUE;
  369. // gMerker_Tisch_3_lesen_fertig := TRUE;
  370. lWarten_RFID_Fehler_Tisch_3 := 0;
  371. Tisch_3_RFID := 15;
  372. ELSIF lWarten_RFID_Fehler_Tisch_3 >= 5000 AND gTisch_3_RFID_Read[0] <> 135 THEN
  373. gMerker_Tisch_3_Auftrag_Lesen := FALSE;
  374. gMerker_Tisch_3_RFID_Reset := TRUE;
  375. lWarten_RFID_Fehler_Tisch_3 := 0;
  376. Tisch_3_RFID := 100;
  377. END_IF
  378. 15:
  379. IF gMerker_RFID_Value_Tisch_3 <> 0 THEN
  380. gMerker_RFID_Tisch_3_gelesen := TRUE;
  381. gMerker_Tisch_3_lesen_fertig := TRUE;
  382. Tisch_3_RFID := 20;
  383. ELSIF gMerker_RFID_Value_Tisch_3 = 0 THEN
  384. gMerker_RFID_Tisch_3_gelesen := FALSE;
  385. gMerker_Tisch_3_lesen_fertig := FALSE;
  386. Tisch_3_RFID := 100;
  387. END_IF
  388. 20: lWarten_fuer_OPCUA_Tisch_3 := lWarten_fuer_OPCUA_Tisch_3 + (RTInfo_0.cycle_time/1000);
  389. IF gMerker_Tisch_3_RFID_Vorhanden = FALSE AND gTisch_3.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_3 >= Wartezeit_OPCUA THEN
  390. gMerker_Tisch_3_Auftrag_Lesen := FALSE;
  391. gMerker_RFID_Value_Tisch_3 := 0;
  392. gTisch_3_RFID_Write[0] := 4;
  393. gMerker_Tisch_3_RFID_UID_STR := '0';
  394. Tisch_3_RFID := 30;
  395. END_IF
  396. 30:
  397. IF gTisch_3_RFID_Read[0] = 0 THEN
  398. gTisch_3_RFID_Write[0] := 0;
  399. Tisch_3_RFID := 0;
  400. END_IF
  401. 100:
  402. IF gMerker_Tisch_3_Auftrag_Lesen = FALSE AND gMerker_Tisch_3_RFID_Reset = TRUE THEN
  403. gTisch_3_RFID_Write[0] := 4;
  404. gMerker_RFID_Value_Tisch_3 := 0;
  405. gMerker_Tisch_3_RFID_UID_STR := '0';
  406. Tisch_3_RFID := 110;
  407. END_IF
  408. 110:
  409. IF gTisch_3_RFID_Read[0] = 0 THEN
  410. gMerker_Tisch_3_alles_nullen := TRUE;
  411. Tisch_3_RFID := 120;
  412. END_IF
  413. 120:
  414. IF gTisch_3_RFID_Write[0] = 0 AND gTisch_3_RFID_Write[1] = 0 AND gTisch_3_RFID_Write[2] = 0 AND gTisch_3_RFID_Write[3] = 0 AND gTisch_3_RFID_Write[4] = 0 AND gTisch_3_RFID_Write[5] = 0 AND gTisch_3_RFID_Write[6] = 0 AND gTisch_3_RFID_Write[7] = 0 AND gTisch_3_RFID_Write[8] = 0 AND gTisch_3_RFID_Write[9] = 0 THEN
  415. gMerker_Tisch_3_alles_nullen := FALSE;
  416. gMerker_Tisch_3_RFID_Reset := FALSE;
  417. Tisch_3_RFID := 0;
  418. END_IF
  419. END_CASE
  420. //********************************** Tisch 4 ***********************************************
  421. (* Lesen *)
  422. gMerker_Tisch_4_RFID_Vorhanden := gTisch_4_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  423. IF gMerker_Tisch_4_Auftrag_Lesen = TRUE THEN
  424. // gMerker_Lesen_Fertig := FALSE;
  425. gTisch_4_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  426. gTisch_4_RFID_Write[2] := 0;
  427. gTisch_4_RFID_Write[3] := 0;
  428. gTisch_4_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  429. gTisch_4_RFID_Write[5] := 0;
  430. gTisch_4_RFID_Write[6] := 0;
  431. gTisch_4_RFID_Write[7] := 0;
  432. gTisch_4_RFID_Write[8] := 0;
  433. gTisch_4_RFID_Write[9] := 1;
  434. gTisch_4_RFID_Write[0].0 := TRUE;
  435. END_IF
  436. (* Write Variable nullen *)
  437. IF gMerker_Tisch_4_alles_nullen = TRUE THEN
  438. gTisch_4_RFID_Write[1] := 0;
  439. gTisch_4_RFID_Write[2] := 0;
  440. gTisch_4_RFID_Write[3] := 0;
  441. gTisch_4_RFID_Write[4] := 0;
  442. gTisch_4_RFID_Write[5] := 0;
  443. gTisch_4_RFID_Write[6] := 0;
  444. gTisch_4_RFID_Write[7] := 0;
  445. gTisch_4_RFID_Write[8] := 0;
  446. gTisch_4_RFID_Write[0] := 0;
  447. END_IF
  448. gTisch_4_RFID_Write[9] := gTisch_4_RFID_Write[0];
  449. CASE Tisch_4_RFID OF
  450. //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
  451. 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
  452. gMerker_Tisch_4_STRING_HELPER := '';
  453. gMerker_Tisch_4_RFID_UID_STR := '0';
  454. FOR i := 1 TO 8 DO
  455. gMerker_Tisch_4_STRING_HELPER := USINT_TO_STRING (gTisch_4_RFID_Read[i]);
  456. 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
  457. gMerker_Tisch_4_STRING_HELPER := CONCAT('00', gMerker_Tisch_4_STRING_HELPER);
  458. 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
  459. gMerker_Tisch_4_STRING_HELPER := CONCAT('0', gMerker_Tisch_4_STRING_HELPER);
  460. END_IF;
  461. gMerker_Tisch_4_RFID_UID_STR := CONCAT( gMerker_Tisch_4_RFID_UID_STR, gMerker_Tisch_4_STRING_HELPER );
  462. END_FOR
  463. Tisch_4_RFID := 5;
  464. END_IF
  465. //Cech-Implement-Ende
  466. 5: IF gMerker_Tisch_4_RFID_Vorhanden = TRUE AND gTisch_4.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_4_RFID_Reset = FALSE (*AND gMerker_Tisch_4_lesen_fertig = FALSE*) THEN
  467. gMerker_Tisch_4_Auftrag_Lesen := TRUE;
  468. Tisch_4_RFID := 10;
  469. END_IF
  470. 10: lWarten_RFID_Fehler_Tisch_4 := lWarten_RFID_Fehler_Tisch_4 + (RTInfo_0.cycle_time/1000);
  471. IF gTisch_4_RFID_Read[0] = 135 THEN
  472. gMerker_RFID_Value_Tisch_4 := gTisch_4_RFID_Read[1];
  473. // gMerker_RFID_Tisch_4_gelesen := TRUE;
  474. // gMerker_Tisch_4_lesen_fertig := TRUE;
  475. lWarten_RFID_Fehler_Tisch_4 := 0;
  476. Tisch_4_RFID := 15;
  477. ELSIF lWarten_RFID_Fehler_Tisch_4 >= 5000 AND gTisch_4_RFID_Read[0] <> 135 THEN
  478. gMerker_Tisch_4_Auftrag_Lesen := FALSE;
  479. gMerker_Tisch_4_RFID_Reset := TRUE;
  480. lWarten_RFID_Fehler_Tisch_4 := 0;
  481. Tisch_4_RFID := 100;
  482. END_IF
  483. 15:
  484. IF gMerker_RFID_Value_Tisch_4 <> 0 THEN
  485. gMerker_RFID_Tisch_4_gelesen := TRUE;
  486. gMerker_Tisch_4_lesen_fertig := TRUE;
  487. Tisch_4_RFID := 20;
  488. ELSIF gMerker_RFID_Value_Tisch_4 = 0 THEN
  489. gMerker_RFID_Tisch_4_gelesen := FALSE;
  490. gMerker_Tisch_4_lesen_fertig := FALSE;
  491. Tisch_4_RFID := 100;
  492. END_IF
  493. 20: lWarten_fuer_OPCUA_Tisch_4 := lWarten_fuer_OPCUA_Tisch_4 + (RTInfo_0.cycle_time/1000);
  494. IF gMerker_Tisch_4_RFID_Vorhanden = FALSE AND gTisch_4.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_4 >= Wartezeit_OPCUA THEN
  495. gMerker_Tisch_4_Auftrag_Lesen := FALSE;
  496. gMerker_RFID_Value_Tisch_4 := 0;
  497. gTisch_4_RFID_Write[0] := 4;
  498. gMerker_Tisch_4_RFID_UID_STR := '0';
  499. Tisch_4_RFID := 30;
  500. END_IF
  501. 30:
  502. IF gTisch_4_RFID_Read[0] = 0 THEN
  503. gTisch_4_RFID_Write[0] := 0;
  504. Tisch_4_RFID := 0;
  505. END_IF
  506. 100:
  507. IF gMerker_Tisch_4_Auftrag_Lesen = FALSE AND gMerker_Tisch_4_RFID_Reset = TRUE THEN
  508. gTisch_4_RFID_Write[0] := 4;
  509. gMerker_RFID_Value_Tisch_4 := 0;
  510. gMerker_Tisch_4_RFID_UID_STR := '0';
  511. Tisch_4_RFID := 110;
  512. END_IF
  513. 110:
  514. IF gTisch_4_RFID_Read[0] = 0 THEN
  515. gMerker_Tisch_4_alles_nullen := TRUE;
  516. Tisch_4_RFID := 120;
  517. END_IF
  518. 120:
  519. IF gTisch_4_RFID_Write[0] = 0 AND gTisch_4_RFID_Write[1] = 0 AND gTisch_4_RFID_Write[2] = 0 AND gTisch_4_RFID_Write[3] = 0 AND gTisch_4_RFID_Write[4] = 0 AND gTisch_4_RFID_Write[5] = 0 AND gTisch_4_RFID_Write[6] = 0 AND gTisch_4_RFID_Write[7] = 0 AND gTisch_4_RFID_Write[8] = 0 AND gTisch_4_RFID_Write[9] = 0 THEN
  520. gMerker_Tisch_4_alles_nullen := FALSE;
  521. gMerker_Tisch_4_RFID_Reset := FALSE;
  522. Tisch_4_RFID := 0;
  523. END_IF
  524. END_CASE
  525. //********************************** Tisch 5 ***********************************************
  526. (* Lesen *)
  527. gMerker_Tisch_5_RFID_Vorhanden := gTisch_5_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  528. IF gMerker_Tisch_5_Auftrag_Lesen = TRUE THEN
  529. // gMerker_Lesen_Fertig := FALSE;
  530. gTisch_5_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  531. gTisch_5_RFID_Write[2] := 0;
  532. gTisch_5_RFID_Write[3] := 0;
  533. gTisch_5_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  534. gTisch_5_RFID_Write[5] := 0;
  535. gTisch_5_RFID_Write[6] := 0;
  536. gTisch_5_RFID_Write[7] := 0;
  537. gTisch_5_RFID_Write[8] := 0;
  538. gTisch_5_RFID_Write[9] := 1;
  539. gTisch_5_RFID_Write[0].0 := TRUE;
  540. END_IF
  541. (* Write Variable nullen *)
  542. IF gMerker_Tisch_5_alles_nullen = TRUE THEN
  543. gTisch_5_RFID_Write[1] := 0;
  544. gTisch_5_RFID_Write[2] := 0;
  545. gTisch_5_RFID_Write[3] := 0;
  546. gTisch_5_RFID_Write[4] := 0;
  547. gTisch_5_RFID_Write[5] := 0;
  548. gTisch_5_RFID_Write[6] := 0;
  549. gTisch_5_RFID_Write[7] := 0;
  550. gTisch_5_RFID_Write[8] := 0;
  551. gTisch_5_RFID_Write[0] := 0;
  552. END_IF
  553. gTisch_5_RFID_Write[9] := gTisch_5_RFID_Write[0];
  554. CASE Tisch_5_RFID OF
  555. //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
  556. 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
  557. gMerker_Tisch_5_STRING_HELPER := '';
  558. gMerker_Tisch_5_RFID_UID_STR := '0';
  559. FOR i := 1 TO 8 DO
  560. gMerker_Tisch_5_STRING_HELPER := USINT_TO_STRING (gTisch_5_RFID_Read[i]);
  561. 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
  562. gMerker_Tisch_5_STRING_HELPER := CONCAT('00', gMerker_Tisch_5_STRING_HELPER);
  563. 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
  564. gMerker_Tisch_5_STRING_HELPER := CONCAT('0', gMerker_Tisch_5_STRING_HELPER);
  565. END_IF;
  566. gMerker_Tisch_5_RFID_UID_STR := CONCAT( gMerker_Tisch_5_RFID_UID_STR, gMerker_Tisch_5_STRING_HELPER );
  567. END_FOR
  568. Tisch_5_RFID := 5;
  569. END_IF
  570. //Cech-Implement-Ende
  571. 5: IF gMerker_Tisch_5_RFID_Vorhanden = TRUE AND gTisch_5.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_5_RFID_Reset = FALSE (*AND gMerker_Tisch_5_lesen_fertig = FALSE*) THEN
  572. gMerker_Tisch_5_Auftrag_Lesen := TRUE;
  573. Tisch_5_RFID := 10;
  574. END_IF
  575. 10: lWarten_RFID_Fehler_Tisch_5 := lWarten_RFID_Fehler_Tisch_5 + (RTInfo_0.cycle_time/1000);
  576. IF gTisch_5_RFID_Read[0] = 135 THEN
  577. gMerker_RFID_Value_Tisch_5 := gTisch_5_RFID_Read[1];
  578. // gMerker_RFID_Tisch_5_gelesen := TRUE;
  579. // gMerker_Tisch_5_lesen_fertig := TRUE;
  580. lWarten_RFID_Fehler_Tisch_5 := 0;
  581. Tisch_5_RFID := 15;
  582. ELSIF lWarten_RFID_Fehler_Tisch_5 >= 5000 AND gTisch_5_RFID_Read[0] <> 135 THEN
  583. gMerker_Tisch_5_Auftrag_Lesen := FALSE;
  584. gMerker_Tisch_5_RFID_Reset := TRUE;
  585. lWarten_RFID_Fehler_Tisch_5 := 0;
  586. Tisch_5_RFID := 100;
  587. END_IF
  588. 15:
  589. IF gMerker_RFID_Value_Tisch_5 <> 0 THEN
  590. gMerker_RFID_Tisch_5_gelesen := TRUE;
  591. gMerker_Tisch_5_lesen_fertig := TRUE;
  592. Tisch_5_RFID := 20;
  593. ELSIF gMerker_RFID_Value_Tisch_5 = 0 THEN
  594. gMerker_RFID_Tisch_5_gelesen := FALSE;
  595. gMerker_Tisch_5_lesen_fertig := FALSE;
  596. Tisch_5_RFID := 100;
  597. END_IF
  598. 20: lWarten_fuer_OPCUA_Tisch_5 := lWarten_fuer_OPCUA_Tisch_5 + (RTInfo_0.cycle_time/1000);
  599. IF gMerker_Tisch_5_RFID_Vorhanden = FALSE AND gTisch_5.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_5 >= Wartezeit_OPCUA THEN
  600. gMerker_Tisch_5_Auftrag_Lesen := FALSE;
  601. gMerker_RFID_Value_Tisch_5 := 0;
  602. gTisch_5_RFID_Write[0] := 4;
  603. gMerker_Tisch_5_RFID_UID_STR := '0';
  604. Tisch_5_RFID := 30;
  605. END_IF
  606. 30:
  607. IF gTisch_5_RFID_Read[0] = 0 THEN
  608. gTisch_5_RFID_Write[0] := 0;
  609. Tisch_5_RFID := 0;
  610. END_IF
  611. 100:
  612. IF gMerker_Tisch_5_Auftrag_Lesen = FALSE AND gMerker_Tisch_5_RFID_Reset = TRUE THEN
  613. gTisch_5_RFID_Write[0] := 4;
  614. gMerker_RFID_Value_Tisch_5 := 0;
  615. gMerker_Tisch_5_RFID_UID_STR := '0';
  616. Tisch_5_RFID := 110;
  617. END_IF
  618. 110:
  619. IF gTisch_5_RFID_Read[0] = 0 THEN
  620. gMerker_Tisch_5_alles_nullen := TRUE;
  621. Tisch_5_RFID := 120;
  622. END_IF
  623. 120:
  624. IF gTisch_5_RFID_Write[0] = 0 AND gTisch_5_RFID_Write[1] = 0 AND gTisch_5_RFID_Write[2] = 0 AND gTisch_5_RFID_Write[3] = 0 AND gTisch_5_RFID_Write[4] = 0 AND gTisch_5_RFID_Write[5] = 0 AND gTisch_5_RFID_Write[6] = 0 AND gTisch_5_RFID_Write[7] = 0 AND gTisch_5_RFID_Write[8] = 0 AND gTisch_5_RFID_Write[9] = 0 THEN
  625. gMerker_Tisch_5_alles_nullen := FALSE;
  626. gMerker_Tisch_5_RFID_Reset := FALSE;
  627. Tisch_5_RFID := 0;
  628. END_IF
  629. END_CASE
  630. //********************************** Tisch 6 ***********************************************
  631. (* Lesen *)
  632. gMerker_Tisch_6_RFID_Vorhanden := gTisch_6_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  633. /// IF gMerker_Tisch_6_Auftrag_Lesen = TRUE THEN
  634. // gMerker_Lesen_Fertig := FALSE;
  635. /// gTisch_6_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  636. /// gTisch_6_RFID_Write[2] := 0;
  637. /// gTisch_6_RFID_Write[3] := 0;
  638. /// gTisch_6_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  639. /// gTisch_6_RFID_Write[5] := 0;
  640. /// gTisch_6_RFID_Write[6] := 0;
  641. /// gTisch_6_RFID_Write[7] := 0;
  642. /// gTisch_6_RFID_Write[8] := 0;
  643. /// gTisch_6_RFID_Write[9] := 1;
  644. /// gTisch_6_RFID_Write[0].0 := TRUE;
  645. /// END_IF
  646. (* Write Variable nullen *)
  647. /// IF gMerker_Tisch_6_alles_nullen = TRUE THEN
  648. /// gTisch_6_RFID_Write[1] := 0;
  649. /// gTisch_6_RFID_Write[2] := 0;
  650. /// gTisch_6_RFID_Write[3] := 0;
  651. /// gTisch_6_RFID_Write[4] := 0;
  652. /// gTisch_6_RFID_Write[5] := 0;
  653. /// gTisch_6_RFID_Write[6] := 0;
  654. /// gTisch_6_RFID_Write[7] := 0;
  655. /// gTisch_6_RFID_Write[8] := 0;
  656. /// gTisch_6_RFID_Write[0] := 0;
  657. /// END_IF
  658. /// gTisch_6_RFID_Write[9] := gTisch_6_RFID_Write[0];
  659. CASE Tisch_6_RFID OF
  660. //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
  661. 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
  662. gMerker_Tisch_6_STRING_HELPER := '';
  663. gMerker_Tisch_6_RFID_UID_STR := '0';
  664. FOR i := 1 TO 8 DO
  665. gMerker_Tisch_6_STRING_HELPER := USINT_TO_STRING (gTisch_6_RFID_Read[i]);
  666. 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
  667. gMerker_Tisch_6_STRING_HELPER := CONCAT('00', gMerker_Tisch_6_STRING_HELPER);
  668. 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
  669. gMerker_Tisch_6_STRING_HELPER := CONCAT('0', gMerker_Tisch_6_STRING_HELPER);
  670. END_IF;
  671. gMerker_Tisch_6_RFID_UID_STR := CONCAT( gMerker_Tisch_6_RFID_UID_STR, gMerker_Tisch_6_STRING_HELPER );
  672. END_FOR
  673. /// Tisch_6_RFID := 5;
  674. Tisch_6_RFID := 30;
  675. END_IF
  676. //Cech-Implement-Ende
  677. /// 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
  678. /// gMerker_Tisch_6_Auftrag_Lesen := TRUE;
  679. /// Tisch_6_RFID := 10;
  680. /// END_IF
  681. /// 10: lWarten_RFID_Fehler_Tisch_6 := lWarten_RFID_Fehler_Tisch_6 + (RTInfo_0.cycle_time/1000);
  682. /// IF gTisch_6_RFID_Read[0] = 135 THEN
  683. /// gMerker_RFID_Value_Tisch_6 := gTisch_6_RFID_Read[1];
  684. /// // gMerker_RFID_Tisch_6_gelesen := TRUE;
  685. /// // gMerker_Tisch_6_lesen_fertig := TRUE;
  686. /// lWarten_RFID_Fehler_Tisch_6 := 0;
  687. /// Tisch_6_RFID := 15;
  688. /// ELSIF lWarten_RFID_Fehler_Tisch_6 >= 5000 AND gTisch_6_RFID_Read[0] <> 135 THEN
  689. /// gMerker_Tisch_6_Auftrag_Lesen := FALSE;
  690. /// gMerker_Tisch_6_RFID_Reset := TRUE;
  691. /// lWarten_RFID_Fehler_Tisch_6 := 0;
  692. /// Tisch_6_RFID := 100;
  693. /// END_IF
  694. /// 15:
  695. /// IF gMerker_RFID_Value_Tisch_6 <> 0 THEN
  696. /// gMerker_RFID_Tisch_6_gelesen := TRUE;
  697. /// gMerker_Tisch_6_lesen_fertig := TRUE;
  698. /// Tisch_6_RFID := 20;
  699. /// ELSIF gMerker_RFID_Value_Tisch_6 = 0 THEN
  700. /// gMerker_RFID_Tisch_6_gelesen := FALSE;
  701. /// gMerker_Tisch_6_lesen_fertig := FALSE;
  702. /// Tisch_6_RFID := 100;
  703. /// END_IF
  704. /// 20: lWarten_fuer_OPCUA_Tisch_6 := lWarten_fuer_OPCUA_Tisch_6 + (RTInfo_0.cycle_time/1000);
  705. /// IF (* ///gMerker_Tisch_6_RFID_Vorhanden = FALSE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND *) lWarten_fuer_OPCUA_Tisch_6 >= Wartezeit_OPCUA THEN
  706. /// gMerker_Tisch_6_Auftrag_Lesen := FALSE;
  707. /// // gMerker_RFID_Value_Tisch_6 := 0;
  708. /// gTisch_6_RFID_Write[0] := 4;
  709. /// gMerker_Tisch_6_RFID_UID_STR := '0';
  710. /// Tisch_6_RFID := 30;
  711. /// END_IF
  712. 30:
  713. IF gTisch_6_RFID_Read[0] = 0 THEN
  714. /// gTisch_6_RFID_Write[0] := 0;
  715. gMerker_Tisch_6_RFID_UID_STR := '0';
  716. Tisch_6_RFID := 0;
  717. END_IF
  718. /// 100:
  719. /// IF gMerker_Tisch_6_Auftrag_Lesen = FALSE AND gMerker_Tisch_6_RFID_Reset = TRUE THEN
  720. /// gTisch_6_RFID_Write[0] := 4;
  721. /// // gMerker_RFID_Value_Tisch_6 := 0;
  722. /// gMerker_Tisch_6_RFID_UID_STR := '0';
  723. /// Tisch_6_RFID := 110;
  724. /// END_IF
  725. /// 110:
  726. /// IF gTisch_6_RFID_Read[0] = 0 THEN
  727. /// gMerker_Tisch_6_alles_nullen := TRUE;
  728. /// Tisch_6_RFID := 120;
  729. /// END_IF
  730. /// 120:
  731. /// 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
  732. /// gMerker_Tisch_6_alles_nullen := FALSE;
  733. /// gMerker_Tisch_6_RFID_Reset := FALSE;
  734. /// Tisch_6_RFID := 0;
  735. /// END_IF
  736. END_CASE
  737. //********************************** Tisch 7 ***********************************************
  738. (* Lesen *)
  739. gMerker_Tisch_7_RFID_Vorhanden := gTisch_7_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  740. IF gMerker_Tisch_7_Auftrag_Lesen = TRUE THEN
  741. // gMerker_Lesen_Fertig := FALSE;
  742. gTisch_7_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  743. gTisch_7_RFID_Write[2] := 0;
  744. gTisch_7_RFID_Write[3] := 0;
  745. gTisch_7_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  746. gTisch_7_RFID_Write[5] := 0;
  747. gTisch_7_RFID_Write[6] := 0;
  748. gTisch_7_RFID_Write[7] := 0;
  749. gTisch_7_RFID_Write[8] := 0;
  750. gTisch_7_RFID_Write[9] := 1;
  751. gTisch_7_RFID_Write[0].0 := TRUE;
  752. END_IF
  753. (* Write Variable nullen *)
  754. IF gMerker_Tisch_7_alles_nullen = TRUE THEN
  755. gTisch_7_RFID_Write[1] := 0;
  756. gTisch_7_RFID_Write[2] := 0;
  757. gTisch_7_RFID_Write[3] := 0;
  758. gTisch_7_RFID_Write[4] := 0;
  759. gTisch_7_RFID_Write[5] := 0;
  760. gTisch_7_RFID_Write[6] := 0;
  761. gTisch_7_RFID_Write[7] := 0;
  762. gTisch_7_RFID_Write[8] := 0;
  763. gTisch_7_RFID_Write[0] := 0;
  764. END_IF
  765. gTisch_7_RFID_Write[9] := gTisch_7_RFID_Write[0];
  766. CASE Tisch_7_RFID OF
  767. //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
  768. 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
  769. gMerker_Tisch_7_STRING_HELPER := '';
  770. gMerker_Tisch_7_RFID_UID_STR := '0';
  771. FOR i := 1 TO 8 DO
  772. gMerker_Tisch_7_STRING_HELPER := USINT_TO_STRING (gTisch_7_RFID_Read[i]);
  773. 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
  774. gMerker_Tisch_7_STRING_HELPER := CONCAT('00', gMerker_Tisch_7_STRING_HELPER);
  775. 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
  776. gMerker_Tisch_7_STRING_HELPER := CONCAT('0', gMerker_Tisch_7_STRING_HELPER);
  777. END_IF;
  778. gMerker_Tisch_7_RFID_UID_STR := CONCAT( gMerker_Tisch_7_RFID_UID_STR, gMerker_Tisch_7_STRING_HELPER );
  779. END_FOR
  780. Tisch_7_RFID := 5;
  781. END_IF
  782. //Cech-Implement-Ende
  783. 5: IF gMerker_Tisch_7_RFID_Vorhanden = TRUE AND gTisch_7.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_7_RFID_Reset = FALSE (*AND gMerker_Tisch_7_lesen_fertig = FALSE*) THEN
  784. gMerker_Tisch_7_Auftrag_Lesen := TRUE;
  785. Tisch_7_RFID := 10;
  786. END_IF
  787. 10: lWarten_RFID_Fehler_Tisch_7 := lWarten_RFID_Fehler_Tisch_7 + (RTInfo_0.cycle_time/1000);
  788. IF gTisch_7_RFID_Read[0] = 135 THEN
  789. gMerker_RFID_Value_Tisch_7 := gTisch_7_RFID_Read[1];
  790. // gMerker_RFID_Tisch_7_gelesen := TRUE;
  791. // gMerker_Tisch_7_lesen_fertig := TRUE;
  792. lWarten_RFID_Fehler_Tisch_7 := 0;
  793. Tisch_7_RFID := 15;
  794. ELSIF lWarten_RFID_Fehler_Tisch_7 >= 5000 AND gTisch_7_RFID_Read[0] <> 135 THEN
  795. gMerker_Tisch_7_Auftrag_Lesen := FALSE;
  796. gMerker_Tisch_7_RFID_Reset := TRUE;
  797. lWarten_RFID_Fehler_Tisch_7 := 0;
  798. Tisch_7_RFID := 100;
  799. END_IF
  800. 15:
  801. IF gMerker_RFID_Value_Tisch_7 <> 0 THEN
  802. gMerker_RFID_Tisch_7_gelesen := TRUE;
  803. gMerker_Tisch_7_lesen_fertig := TRUE;
  804. Tisch_7_RFID := 20;
  805. ELSIF gMerker_RFID_Value_Tisch_7 = 0 THEN
  806. gMerker_RFID_Tisch_7_gelesen := FALSE;
  807. gMerker_Tisch_7_lesen_fertig := FALSE;
  808. Tisch_7_RFID := 100;
  809. END_IF
  810. 20: lWarten_fuer_OPCUA_Tisch_7 := lWarten_fuer_OPCUA_Tisch_7 + (RTInfo_0.cycle_time/1000);
  811. IF gMerker_Tisch_7_RFID_Vorhanden = FALSE AND gTisch_7.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_7 >= Wartezeit_OPCUA THEN
  812. gMerker_Tisch_7_Auftrag_Lesen := FALSE;
  813. gMerker_RFID_Value_Tisch_7 := 0;
  814. gTisch_7_RFID_Write[0] := 4;
  815. gMerker_Tisch_7_RFID_UID_STR := '0';
  816. Tisch_7_RFID := 30;
  817. END_IF
  818. 30:
  819. IF gTisch_7_RFID_Read[0] = 0 THEN
  820. gTisch_7_RFID_Write[0] := 0;
  821. Tisch_7_RFID := 0;
  822. END_IF
  823. 100:
  824. IF gMerker_Tisch_7_Auftrag_Lesen = FALSE AND gMerker_Tisch_7_RFID_Reset = TRUE THEN
  825. gTisch_7_RFID_Write[0] := 4;
  826. gMerker_RFID_Value_Tisch_7 := 0;
  827. gMerker_Tisch_7_RFID_UID_STR := '0';
  828. Tisch_7_RFID := 110;
  829. END_IF
  830. 110:
  831. IF gTisch_7_RFID_Read[0] = 0 THEN
  832. gMerker_Tisch_7_alles_nullen := TRUE;
  833. Tisch_7_RFID := 120;
  834. END_IF
  835. 120:
  836. IF gTisch_7_RFID_Write[0] = 0 AND gTisch_7_RFID_Write[1] = 0 AND gTisch_7_RFID_Write[2] = 0 AND gTisch_7_RFID_Write[3] = 0 AND gTisch_7_RFID_Write[4] = 0 AND gTisch_7_RFID_Write[5] = 0 AND gTisch_7_RFID_Write[6] = 0 AND gTisch_7_RFID_Write[7] = 0 AND gTisch_7_RFID_Write[8] = 0 AND gTisch_7_RFID_Write[9] = 0 THEN
  837. gMerker_Tisch_7_alles_nullen := FALSE;
  838. gMerker_Tisch_7_RFID_Reset := FALSE;
  839. Tisch_7_RFID := 0;
  840. END_IF
  841. END_CASE
  842. //********************************** Tisch 8 ***********************************************
  843. (* Lesen *)
  844. gMerker_Tisch_8_RFID_Vorhanden := gTisch_8_RFID_Read[0].0; (* Auslesen ob Chip vor Lesekopf *)
  845. IF gMerker_Tisch_8_Auftrag_Lesen = TRUE THEN
  846. // gMerker_Lesen_Fertig := FALSE;
  847. gTisch_8_RFID_Write[1] := 1;(* Befehl Datenträger lesen *)
  848. gTisch_8_RFID_Write[2] := 0;
  849. gTisch_8_RFID_Write[3] := 0;
  850. gTisch_8_RFID_Write[4] := 8; (* Anzahl Bytes Lowbytes *)
  851. gTisch_8_RFID_Write[5] := 0;
  852. gTisch_8_RFID_Write[6] := 0;
  853. gTisch_8_RFID_Write[7] := 0;
  854. gTisch_8_RFID_Write[8] := 0;
  855. gTisch_8_RFID_Write[9] := 1;
  856. gTisch_8_RFID_Write[0].0 := TRUE;
  857. END_IF
  858. (* Write Variable nullen *)
  859. IF gMerker_Tisch_8_alles_nullen = TRUE THEN
  860. gTisch_8_RFID_Write[1] := 0;
  861. gTisch_8_RFID_Write[2] := 0;
  862. gTisch_8_RFID_Write[3] := 0;
  863. gTisch_8_RFID_Write[4] := 0;
  864. gTisch_8_RFID_Write[5] := 0;
  865. gTisch_8_RFID_Write[6] := 0;
  866. gTisch_8_RFID_Write[7] := 0;
  867. gTisch_8_RFID_Write[8] := 0;
  868. gTisch_8_RFID_Write[0] := 0;
  869. END_IF
  870. gTisch_8_RFID_Write[9] := gTisch_8_RFID_Write[0];
  871. CASE Tisch_8_RFID OF
  872. //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
  873. 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
  874. gMerker_Tisch_8_STRING_HELPER := '';
  875. gMerker_Tisch_8_RFID_UID_STR := '0';
  876. FOR i := 1 TO 8 DO
  877. gMerker_Tisch_8_STRING_HELPER := USINT_TO_STRING (gTisch_8_RFID_Read[i]);
  878. 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
  879. gMerker_Tisch_8_STRING_HELPER := CONCAT('00', gMerker_Tisch_8_STRING_HELPER);
  880. 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
  881. gMerker_Tisch_8_STRING_HELPER := CONCAT('0', gMerker_Tisch_8_STRING_HELPER);
  882. END_IF;
  883. gMerker_Tisch_8_RFID_UID_STR := CONCAT( gMerker_Tisch_8_RFID_UID_STR, gMerker_Tisch_8_STRING_HELPER );
  884. END_FOR
  885. Tisch_8_RFID := 5;
  886. END_IF
  887. //Cech-Implement-Ende
  888. 5: IF gMerker_Tisch_8_RFID_Vorhanden = TRUE AND gTisch_8.Inputs.Vor_Stopper = TRUE AND gMerker_Tisch_8_RFID_Reset = FALSE (*AND gMerker_Tisch_8_lesen_fertig = FALSE*) THEN
  889. gMerker_Tisch_8_Auftrag_Lesen := TRUE;
  890. Tisch_8_RFID := 10;
  891. END_IF
  892. 10: lWarten_RFID_Fehler_Tisch_8 := lWarten_RFID_Fehler_Tisch_8 + (RTInfo_0.cycle_time/1000);
  893. IF gTisch_8_RFID_Read[0] = 135 THEN
  894. gMerker_RFID_Value_Tisch_8 := gTisch_8_RFID_Read[1];
  895. // gMerker_RFID_Tisch_8_gelesen := TRUE;
  896. // gMerker_Tisch_8_lesen_fertig := TRUE;
  897. lWarten_RFID_Fehler_Tisch_8 := 0;
  898. Tisch_8_RFID := 15;
  899. ELSIF lWarten_RFID_Fehler_Tisch_8 >= 5000 AND gTisch_8_RFID_Read[0] <> 135 THEN
  900. gMerker_Tisch_8_Auftrag_Lesen := FALSE;
  901. gMerker_Tisch_8_RFID_Reset := TRUE;
  902. lWarten_RFID_Fehler_Tisch_8 := 0;
  903. Tisch_8_RFID := 100;
  904. END_IF
  905. 15:
  906. IF gMerker_RFID_Value_Tisch_8 <> 0 THEN
  907. gMerker_RFID_Tisch_8_gelesen := TRUE;
  908. gMerker_Tisch_8_lesen_fertig := TRUE;
  909. Tisch_8_RFID := 20;
  910. ELSIF gMerker_RFID_Value_Tisch_8 = 0 THEN
  911. gMerker_RFID_Tisch_8_gelesen := FALSE;
  912. gMerker_Tisch_8_lesen_fertig := FALSE;
  913. Tisch_8_RFID := 100;
  914. END_IF
  915. 20: lWarten_fuer_OPCUA_Tisch_8 := lWarten_fuer_OPCUA_Tisch_8 + (RTInfo_0.cycle_time/1000);
  916. IF gMerker_Tisch_8_RFID_Vorhanden = FALSE AND gTisch_8.Inputs.Vor_Stopper = FALSE AND lWarten_fuer_OPCUA_Tisch_8 >= Wartezeit_OPCUA THEN
  917. gMerker_Tisch_8_Auftrag_Lesen := FALSE;
  918. gMerker_RFID_Value_Tisch_8 := 0;
  919. gTisch_8_RFID_Write[0] := 4;
  920. gMerker_Tisch_8_RFID_UID_STR := '0';
  921. Tisch_8_RFID := 30;
  922. END_IF
  923. 30:
  924. IF gTisch_8_RFID_Read[0] = 0 THEN
  925. gTisch_8_RFID_Write[0] := 0;
  926. Tisch_8_RFID := 0;
  927. END_IF
  928. 100:
  929. IF gMerker_Tisch_8_Auftrag_Lesen = FALSE AND gMerker_Tisch_8_RFID_Reset = TRUE THEN
  930. gTisch_8_RFID_Write[0] := 4;
  931. gMerker_RFID_Value_Tisch_8 := 0;
  932. gMerker_Tisch_8_RFID_UID_STR := '0';
  933. Tisch_8_RFID := 110;
  934. END_IF
  935. 110:
  936. IF gTisch_8_RFID_Read[0] = 0 THEN
  937. gMerker_Tisch_8_alles_nullen := TRUE;
  938. Tisch_8_RFID := 120;
  939. END_IF
  940. 120:
  941. IF gTisch_8_RFID_Write[0] = 0 AND gTisch_8_RFID_Write[1] = 0 AND gTisch_8_RFID_Write[2] = 0 AND gTisch_8_RFID_Write[3] = 0 AND gTisch_8_RFID_Write[4] = 0 AND gTisch_8_RFID_Write[5] = 0 AND gTisch_8_RFID_Write[6] = 0 AND gTisch_8_RFID_Write[7] = 0 AND gTisch_8_RFID_Write[8] = 0 AND gTisch_8_RFID_Write[9] = 0 THEN
  942. gMerker_Tisch_8_alles_nullen := FALSE;
  943. gMerker_Tisch_8_RFID_Reset := FALSE;
  944. Tisch_8_RFID := 0;
  945. END_IF
  946. END_CASE
  947. OPCUA_TEST_1;
  948. OPCUATEST2;
  949. OPCUATEST3;
  950. END_PROGRAM
  951. PROGRAM _EXIT
  952. (* Insert code here *)
  953. END_PROGRAM