Main.st 48 KB

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