Main.st 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. PROGRAM _INIT
  2. Tisch_6 := 0;
  3. Tisch_6_Manuell := 0;
  4. Tisch_6_Automatik :=0; //Cech-Implement
  5. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  6. gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
  7. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  8. RTInfo_0(enable:=1);
  9. gMerker_Laser_Einstellen_fertig := FALSE; //Cech-Implement
  10. gMerker_Laser_Doppelzylinder := FALSE; //Cech-Implement
  11. gMerker_Laser_erforderlich := TRUE; //Cech-Implement
  12. END_PROGRAM
  13. PROGRAM _CYCLIC
  14. gTisch_6;
  15. IF gMerker_Laser_Manuell = TRUE THEN
  16. gDO_Start_Laser := FALSE;
  17. gDO_Laser_Seitentuer_oeffnen := FALSE;
  18. END_IF
  19. IF gMerker_Laser_Automatik = TRUE THEN
  20. gDO_Laser_Seitentuer_oeffnen := FALSE;
  21. END_IF
  22. //Cech-Comment: Hier wird der Status der Soft-Buttons am Hauptpanel abgefragt. Wenn die Freigabe erteilt ist, sind die anderen 5 Tasten (Ausheber, Vorstopperm, Stopper, Start-Laser und Doppelt-lasern aktiviert)
  23. IF gVK_Freigabe_manuell = TRUE AND gVK_Stopper_Tisch_6 = TRUE THEN
  24. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  25. ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Stopper_Tisch_6 = FALSE THEN
  26. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  27. END_IF
  28. IF gVK_Freigabe_manuell = TRUE AND gVK_Vorstopper_Tisch_6 = TRUE THEN
  29. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  30. ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Vorstopper_Tisch_6 = FALSE THEN
  31. gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
  32. END_IF
  33. IF gVK_Freigabe_manuell = TRUE AND gVK_Aushebeeinheit_Tisch_6 = TRUE THEN
  34. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  35. ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Aushebeeinheit_Tisch_6 = FALSE THEN
  36. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  37. END_IF
  38. IF gVK_Freigabe_manuell = TRUE AND gVK_doppelt_Lasern = TRUE THEN
  39. gDO_doppelt_lasern := TRUE;
  40. ELSIF gVK_Freigabe_manuell = TRUE AND gVK_doppelt_Lasern = FALSE THEN
  41. gDO_doppelt_lasern := FALSE;
  42. END_IF
  43. IF gVK_Freigabe_manuell = TRUE AND gVK_Start_Laser = TRUE THEN //Cech-Comment:
  44. gDO_Start_Laser := TRUE;
  45. ELSIF gVK_Freigabe_manuell = TRUE AND gVK_Start_Laser = FALSE THEN
  46. gDO_Start_Laser := FALSE;
  47. END_IF
  48. IF gVK_Absaugung = FALSE THEN //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  49. gDO_Laser_Absaugung := FALSE; //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  50. END_IF //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  51. IF gVK_Absaugung = TRUE AND (gDO_Start_Laser = TRUE OR gMerker_Laser_Manuell = TRUE) THEN //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  52. gDO_Laser_Absaugung := TRUE; //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  53. END_IF //Cech-Implement zum Aktivieren und deaktivieren der LAserabsaugung über einen Button am Control-Panel-PC
  54. //Cech-Comment: Alles neutralsieren, wenn die Station deaktiviert wurde mit dem Soft-Button am Hauptbildschirm
  55. IF gTaster_Tisch_6_aus = TRUE THEN
  56. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  57. gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
  58. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  59. gMerker_RFID_Tisch_6_gelesen := TRUE;
  60. Tisch_6_Automatik := 0;
  61. Tisch_6 := 0;
  62. Tisch_6_Manuell := 0;
  63. END_IF
  64. //Cech-Comment: In diesem und den nachfolgenden IFs werden die drei möglichen Zustände von der LAser-SPS (MAnuell, Halbauto, Auto) auf die Linien-SPS übernommen
  65. IF gDI_Laser_Automatik = TRUE AND gDI_Laser_Manuell = FALSE THEN
  66. gMerker_Laser_Automatik := TRUE;
  67. gMerker_Laser_Halbautomatik := FALSE;
  68. gMerker_Laser_Manuell := FALSE;
  69. END_IF
  70. IF gDI_Laser_Manuell = TRUE AND gDI_Laser_Automatik = FALSE THEN
  71. gMerker_Laser_Automatik := FALSE;
  72. gMerker_Laser_Halbautomatik := FALSE;
  73. gMerker_Laser_Manuell := TRUE;
  74. END_IF
  75. IF gDI_Laser_Manuell = FALSE AND gDI_Laser_Automatik = FALSE THEN
  76. gMerker_Laser_Automatik := FALSE;
  77. gMerker_Laser_Halbautomatik := TRUE;
  78. gMerker_Laser_Manuell := FALSE;
  79. END_IF
  80. CASE Tisch_6_Manuell OF //Cech-Comment: Handbetrieb (meiner Meinung nach nicht sauber, Fehler drinnen)
  81. 0: // Cech-Comment: Ich schätze, dass hier der manuelle Laserbetrieb initiiert wird, indem eine WST-"Beladung" initiiert wird (IF: WST in LASer und wird ausgefahren, ELSE-IF: Kein WSt in LAser)
  82. IF gMerker_Laser_Manuell = TRUE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND Tisch_6 = 0 THEN //Cech-Comment: Wenn WST in Station --> wird ausgefahren
  83. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  84. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  85. Tisch_6_Manuell := 10;
  86. ELSIF gMerker_Laser_Manuell = TRUE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = FALSE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND Tisch_6 = 0 THEN // Cech-Comment: Wenn kein WST in der Station steht, dann wird AUshebeeinheit ohne weitere Kontrollen
  87. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  88. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  89. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  90. Tisch_6_Manuell := 20;
  91. END_IF
  92. 10: //Cech-Comment: Warten, bis der WST die Station verlassen hat und alles ausfahren (Warum Aushebeeinheit?)
  93. IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
  94. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN; //Im Handbetrieb wird jeenfalls die Aushebeeinheit ausgefahren. Wahrscheinlich, damit händisch ein WST oder Sonstiges eingelegt werden kann
  95. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  96. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  97. Tisch_6_Manuell := 20;
  98. END_IF
  99. 20: //Cech-Comment: Wenn HAndbetrieb beendet wird am LAser-Umschalter, dann wird die Aushebeeinheit runtergafehren und die LAserabsaugung ausgeschaltet
  100. IF gMerker_Laser_Manuell = FALSE THEN
  101. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  102. gDO_Laser_Absaugung := FALSE;
  103. Tisch_6_Manuell := 30;
  104. END_IF
  105. 30: //Cech-Comment: Warten, bis die Aushebeeinheit unten ist. Dann wird der Stopper eingefahren, wenn ein WST wartet, bzw. der Prozess von vorne gestartet, wenn kein WST beim Vorstopper wartet
  106. lWarten_Aushebeeinheit_Tisch_6 := lWarten_Aushebeeinheit_Tisch_6 + (RTInfo_0.cycle_time/1000);
  107. IF gTisch_6.Inputs.Vor_Stopper = TRUE AND lWarten_Aushebeeinheit_Tisch_6 >= 500 THEN
  108. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  109. lWarten_Aushebeeinheit_Tisch_6 := 0;
  110. Tisch_6_Manuell := 40;
  111. ELSIF gTisch_6.Inputs.Vor_Stopper = FALSE AND lWarten_Aushebeeinheit_Tisch_6 >= 500 THEN
  112. lWarten_Aushebeeinheit_Tisch_6 := 0;
  113. Tisch_6_Manuell := 0;
  114. END_IF
  115. 40: // ... und der Stopper wird wieder ausgefahren
  116. IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
  117. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  118. Tisch_6_Manuell := 0;
  119. END_IF
  120. END_CASE
  121. CASE Tisch_6 OF //Cech-Comment: Halbautomatik; Hier wird ein WST eingefahren bzw. auch ausgefahren;
  122. 0: //Cech-Comment: Wenn ein WST vor dem LAser wartet und der Stausensor nicht anschlägt, aber der RFID gelesen wurde, wird die Aushebeeinheit hochgefahren (offensichtlich befindet sich ein WST in der Station
  123. IF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
  124. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  125. gMerker_RFID_Tisch_6_gelesen := FALSE;
  126. Tisch_6 := 10;
  127. //Cech-Comment: Wen kein WST wartet aber RFID gelesen wurde, dann wird auch die Aushebeeinheit ausgefahren (offensichtlich befindet sich ein WST in der Station)
  128. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gTaster_Tisch_6_aus = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE THEN
  129. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  130. gMerker_RFID_Tisch_6_gelesen := FALSE;
  131. Tisch_6 := 10;
  132. //Cech-Comment: Wenn kein WST in der Station, aber einer davor, dann werden die Sietentüren geöffnet und der Vorstopper wird freigegeben
  133. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND gTaster_Tisch_6_aus = FALSE THEN
  134. gDO_Laser_Seitentuer_oeffnen := TRUE;
  135. gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
  136. Tisch_6 := 200; /// war 110
  137. //Cech-Comment: Wenn entweder Vorstopper oder Stopper eingefahren sind, dann werden beide wieder ausgefahren
  138. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = TRUE AND gMerker_Laser_Automatik = FALSE AND Tisch_6_Manuell = 0 AND gTaster_Tisch_6_aus = FALSE AND (gTisch_6.Inputs.Stopper_eingefahren = TRUE OR gTisch_6.Inputs.Vorstopper_eingefahren = TRUE) THEN
  139. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  140. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  141. Tisch_6 := 0;
  142. END_IF
  143. //
  144. 10: //Cech-Comment: Ich schätze, mit diesen Ports wird das LASern aus Liniensicht freigegeben (mit Start Absaugung) und bereits das Port für das Öffnen der Seitentüren gesetzt, damit LAser-SPS öffnet, wenn gelasert wurde
  145. IF (*gTisch_6.Status.Aushebeeinheit = STATUS_AUSGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_ausfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_einfahren = FALSE THEN
  146. gDO_Start_Laser := TRUE;
  147. gDO_Laser_Seitentuer_oeffnen := TRUE; //!!!!!!!!!!!!!!!!!!!!!!Cech-Comment: Könnte mir vorstellen, dass hier ein FALSE hergehört und unter 20: dann gDO_Laser_Seitentuer_oeffnen := TRUE; das müsste ich ausprobieren
  148. Tisch_6 := 20;
  149. END_IF
  150. 20: //Cech-Comment: Wenn der grüne TAster gedrückt wurde (Offensichtlich ist das LAsern beendet und der WST kann ausgefahren werden) dann wird der WST ausgefahren
  151. IF gTisch_6.Inputs.Start = TRUE THEN //Cech-Comment: Dieser Input ist der grüne Taster unter dem Panal-PC, der HW-mäßig auf den Input 0 der 16 Input-Kanäle des Input-Moduls verdrahtet ist
  152. gDO_Start_Laser := FALSE;
  153. gDO_Laser_Absaugung := FALSE;
  154. gDO_Laser_Seitentuer_oeffnen := FALSE; //!!!!!!!!!!!!!!!!!!!!!!Cech-Comment: Könnte mir vorstellen, dass hier ein TRUE hergehört und unter 10: dann gDO_Laser_Seitentuer_oeffnen := FALSE; das müsste ich ausprobieren
  155. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  156. Tisch_6 := 30;
  157. END_IF
  158. 30: //Cech-Comment: WST wird rausgelassen
  159. IF (*gTisch_6.Status.Aushebeeinheit = STATUS_EINGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_einfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_ausfahren = FALSE THEN
  160. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  161. Tisch_6 := 40;
  162. END_IF
  163. 40: //Cech-Comment: Wenn der NAchstopper_Sensor einmal ein ...
  164. IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
  165. Tisch_6 := 45;
  166. END_IF
  167. 45: // ... und wieder aus geht, dann kann der Stopper wieder ausgefahren werden
  168. IF gTisch_6.Inputs.Nach_Stopper = FALSE THEN
  169. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  170. Tisch_6 := 50;
  171. END_IF
  172. 50: //Cech-Comment: WEnn der WST am Stausensor vorbei ist, also ein ...
  173. IF gTisch_6.Inputs.Stausensor = TRUE THEN
  174. Tisch_6 := 60;
  175. END_IF
  176. 60: // ... und wieder aus, dann wird der Prozess von oben wieder begonnen
  177. IF gTisch_6.Inputs.Stausensor = FALSE THEN
  178. Tisch_6 := 0;
  179. END_IF
  180. //
  181. // Cech-Comment: von hier bis excl. 200 wird nicht durchfahren
  182. 110:
  183. IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
  184. Tisch_6 := 120;
  185. END_IF
  186. 120:
  187. IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
  188. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  189. Tisch_6 := 130;
  190. END_IF
  191. 130:
  192. IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
  193. (*gDO_Laser_Seitentuer_oeffnen := FALSE;*)
  194. Tisch_6 := 0;
  195. END_IF
  196. 200: //Cech-Comment: Wenn WST am Ausfahrsensor des Stoppers
  197. IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
  198. Tisch_6 := 210;
  199. END_IF
  200. 210: //Cech-Comment: WEnn WST am Ausfahrsensor vorbei, dann wird der Stopper wieder ausgefahren
  201. IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
  202. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  203. Tisch_6 := 220;
  204. END_IF
  205. 220: // ... und geprüft, ab der SW-Status des Stoppers auf ausgefahren steht
  206. IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
  207. Tisch_6 := 230;
  208. END_IF
  209. 230: // Cech-Comment: ... und auch tatsächlich schon ausgefahren ist und von vorne begonnen
  210. IF gTisch_6.Inputs.Vor_Stopper = TRUE THEN
  211. Tisch_6 := 0;
  212. END_IF
  213. END_CASE
  214. CASE Tisch_6_Automatik OF
  215. 0: //Cech-Comment: Hier werden die Stati vom LaSerwahlschalter und den Stoppern, Schaltern und Sensoren der Station 6 abgefragt und entsprechend in die Case-Schleife verzweigt
  216. IF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE AND gTaster_Tisch_6_aus = FALSE THEN //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
  217. gMerker_Debug_Test_Counter := 010; //Cech-Implement
  218. lWarten_Laser_Dauer := 0; //Cech-Implement
  219. IF gMerker_Laser_erforderlich =TRUE THEN //Cech-Implement für Teile, wenn nichts gelasert werden muss (z.B.nur ein Knauf), dann ist gMerker_Laser_erforderlich FALSE
  220. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  221. gMerker_RFID_Tisch_6_gelesen := FALSE;
  222. Tisch_6_Automatik := 10;
  223. ELSE
  224. Tisch_6_Automatic := 30; //Cech-Implement: WEnn keine LAserung aus dem Produktcode abegeleitet werden kann, wurde von Centurio gMerker_Laser_erforderlich auf FLASE gesetzt --> gleich wieder ausfahren
  225. END_IF
  226. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = FALSE AND gTisch_6.Inputs.Vor_Stopper = TRUE AND gTisch_6.Inputs.Stausensor = FALSE AND gMerker_RFID_Tisch_6_gelesen = TRUE AND gTaster_Tisch_6_aus = FALSE THEN //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
  227. gMerker_Debug_Test_Counter := 020; //Cech-Implement
  228. lWarten_Laser_Dauer := 0; //Cech-Implement
  229. IF gMerker_Laser_erforderlich =TRUE THEN //Cech-Implement für Teile, wenn nichts gelasert werden muss (z.B.nur ein Knauf), dann ist gMerker_Laser_erforderlich FALSE
  230. gTisch_6.Cmd.Aushebeeinheit := KMD_AUSFAHREN;
  231. gMerker_RFID_Tisch_6_gelesen := FALSE;
  232. Tisch_6_Automatik := 10;
  233. ELSE
  234. Tisch_6_Automatic :=30 //Cech-Implement: WEnn keine LAserung aus dem Produktcode abegeleitet werden kann, wurde von Centurio gMerker_Laser_erforderlich auf FLASE gesetzt --> gleich wieder ausfahren
  235. END_IF
  236. //Cech-Comment: Wenn ein WST wartet und keiner in der STation ist, weiters entweder der Stausensor anschlägt und/oder der RFID nicht gelesen wird !!!! Ergibt keinen Sinn für mich!!!! Ev. soll das saubere Anfangsbedingungen schaffen
  237. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND gTisch_6.Inputs.Vor_VorStopper = TRUE AND gTisch_6.Inputs.Vor_Stopper = FALSE AND gTaster_Tisch_6_aus = FALSE THEN //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
  238. gMerker_Debug_Test_Counter := 030; //Cech-Implement
  239. lWarten_Laser_Dauer := 0; //Cech-Implement
  240. gDO_Laser_Seitentuer_oeffnen := TRUE;
  241. gTisch_6.Cmd.Vorstopper := KMD_EINFAHREN;
  242. Tisch_6_Automatik := 200; // war 110
  243. ELSIF gMerker_Laser_Manuell = FALSE AND gMerker_Laser_Halbautomatik = FALSE AND gMerker_Laser_Automatik = TRUE AND (gTisch_6.Inputs.Stopper_eingefahren = TRUE OR gTisch_6.Inputs.Vorstopper_eingefahren = TRUE) AND gTaster_Tisch_6_aus = FALSE THEN //Cech-Comment: gTAster_Tisch_6_aus ist der Softbutton am MAain-Panel, wo jede Station deaktiviert werden kann
  244. gMerker_Debug_Test_Counter := 040; //Cech-Implement
  245. lWarten_Laser_Dauer := 0; //Cech-Implement
  246. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  247. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  248. Tisch_6_Automatik := 0;
  249. END_IF
  250. //
  251. 10: //Cech-Comment: Laserport zum Starten des Lasers an die Laser-SPS wird eingeschaltet
  252. IF (*gTisch_6.Status.Aushebeeinheit = STATUS_AUSGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_ausfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_einfahren = FALSE AND gMerker_Laser_Einstellen_fertig = TRUE THEN //Cech-Implement gMerker_Laser_Einstellen_fertig von Cech eingefügt
  253. IF gMerker_Laser_Doppelzylinder = TRUE THEN
  254. gDO_doppelt_lasern := TRUE;
  255. END_IF
  256. gMerker_Debug_Test_Counter := 100; //Cech-Implement
  257. gDO_Start_Laser := TRUE; // Cech-Implement, Comment: Das entspricht dem Port "WST in Position", wie es Hr.Ziegler von Bluhm nennt. Wenn Centurio den gMerker_Laser_Einstellen_fertig auf TRUE gesetzt hat darf LAserung gestartet werden
  258. IF gVK_Absaugung = TRUE THEN
  259. gDO_Laser_Absaugung := TRUE;
  260. END_IF
  261. Tisch_6_Automatik := 15;
  262. END_IF
  263. 15: //Cech-Comment: Nach 1000ms wird das Startsignal an den Laser zurückgenommen und weiter mit 20
  264. lWarten_Laser_Startsignal := lWarten_Laser_Startsignal + (RTInfo_0.cycle_time/1000);
  265. IF lWarten_Laser_Startsignal >= 1000 THEN
  266. // gDO_Start_Laser := FALSE; !!!!!!!!!!!!!!!!Dies geht nicht, weil Hr.Ziegler offensichtlich keinen Handshake programmiert hat, sondern "LAsern-fertig" gleich setzt, wenn wir sagen, dass Start-LAser low wird. Es wird nicht fertiggelasert.
  267. gMerker_Debug_Test_Counter := 150;
  268. IF gMerker_Laser_Doppelzylinder = TRUE THEN
  269. Tisch_6_Automatik := 18;
  270. ELSIF gMerker_Laser_Doppelzylinder = FALSE THEN
  271. Tisch_6_Automatik :=20;
  272. END_IF
  273. END_IF
  274. 18:
  275. IF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = TRUE)THEN (* OR lWarten_Laser_Dauer >= 10000 THEN *) //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
  276. // Und hier, beim Doppelzylinder darf die ZEit nicht überprüft werden, weil der Bediener die Doppeltaster drücken muss nach Einstellung von File und Seriennummer
  277. //Cech-Implement-Anfang
  278. gMerker_Debug_Test_Counter := 200;
  279. gDO_Start_Laser := FALSE;
  280. gMerker_Laser_Einstellen_fertig := FALSE; //Cech-Implement
  281. gMerker_Laser_Doppelzylinder := FALSE;
  282. // gDO_Laser_Seitentuer_oeffnen := TRUE;
  283. //gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  284. //gMerker_RFID_Value_Tisch_6 := 0;
  285. //gMerker_block_RFID_read_Tisch_6 := TRUE; //Cech-Comment: Der MErker wenn TRUE blockiert das RFID-LEsen während des Einfahrens der Aushebeeinheit, um nicht neu zu beginnen (RFID kann beim Ausheben die VErbindung verlieren, das soll verhindert werden)
  286. Tisch_6_Automatik := 20;
  287. // ELSIF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = FALSE)
  288. // gDO_Start_Laser := FALSE;
  289. // gMerker_Laser_Einstellen_fertig := FALSE;
  290. //Cech-Implement-Ende
  291. END_IF
  292. 20: //Cech-Comment: Wenn vom LAser das Signal "WST bereit zum ABtransport", also LAsern fertig, kommt, dann wird die Aushebeeinheit eingefahren, der RFID-Wert der Station auf "0" gesetzt
  293. lWarten_Laser_Dauer := lWarten_Laser_Dauer + (RTInfo_0.cycle_time/1000); //Cech-Implement
  294. IF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = TRUE) OR lWarten_Laser_Dauer >= 10000 THEN //WEnn das Handshake in LaserSPS aktiv wird, dann kann das ELSIF theoretisch wieder weggenommen werdenTHEN
  295. //Cech-Implement-Anfang
  296. gMerker_Debug_Test_Counter := 200;
  297. gDO_Start_Laser := FALSE;
  298. gMerker_Laser_Einstellen_fertig := FALSE; //Cech-Implement
  299. gMerker_Laser_Doppelzylinder := FALSE;
  300. gDO_doppelt_lasern := FALSE;
  301. // gDO_Laser_Seitentuer_oeffnen := TRUE;
  302. gTisch_6.Cmd.Aushebeeinheit := KMD_EINFAHREN;
  303. gMerker_RFID_Value_Tisch_6 := 0;
  304. gMerker_block_RFID_read_Tisch_6 := TRUE; //Cech-Comment: Der MErker wenn TRUE blockiert das RFID-LEsen während des Einfahrens der Aushebeeinheit, um nicht neu zu beginnen (RFID kann beim Ausheben die VErbindung verlieren, das soll verhindert werden)
  305. Tisch_6_Automatik := 30;
  306. // ELSIF (gDI_Laser_fertig = TRUE AND gDI_keiner_Stoerung_Laser = FALSE)
  307. // gDO_Start_Laser := FALSE;
  308. // gMerker_Laser_Einstellen_fertig := FALSE;
  309. //Cech-Implement-Ende
  310. END_IF
  311. 30: //Cech-Comment: Stopper wird eingefahren
  312. IF (*gTisch_6.Status.Aushebeeinheit = STATUS_EINGEFAHREN*) gTisch_6.Outputs.Aushebeeinheit_einfahren = TRUE AND gTisch_6.Outputs.Aushebeeinheit_ausfahren = FALSE THEN
  313. gMerker_Debug_Test_Counter := 300;
  314. gTisch_6.Cmd.Stopper := KMD_EINFAHREN;
  315. Tisch_6_Automatik := 40;
  316. END_IF
  317. 40: //Cech-Comment: schauen, wenn der WST die Station wirklich verlassen hat
  318. IF gTisch_6.Inputs.Nach_Stopper = TRUE THEN
  319. gMerker_Debug_Test_Counter := 400;
  320. gDO_Laser_Absaugung := FALSE;
  321. Tisch_6_Automatik := 45;
  322. END_IF
  323. 45: //Cech-Comment: Wenn der WST weg ist, wird der Stopper ausgefahren und der RFID-Leser wieder "scharf" geschaltet
  324. IF gTisch_6.Inputs.Nach_Stopper = FALSE THEN
  325. gTisch_6.Cmd.Stopper := KMD_AUSFAHREN;
  326. gMerker_block_RFID_read_Tisch_6 := FALSE; //Cech-Comment: Damit wird das RFID-Lesen nicht mehr "blockiert"
  327. gMerker_Laser_erforderlich := TRUE; //Cech-Implement: Wäre nicht nötig, weil das Centurio über den Produktcode für jeden WST neu einträgt
  328. gMerker_Debug_Test_Counter := 450;
  329. Tisch_6_Automatik := 50;
  330. END_IF
  331. 50: //Cech-Comment: Wenn der Stausensor nach dem Laser den WST anzeigt und ...
  332. IF gTisch_6.Inputs.Stausensor = TRUE THEN
  333. gMerker_Debug_Test_Counter := 500;
  334. Tisch_6_Automatik := 60;
  335. END_IF
  336. 60: //Cech-Comment: ...und vorbei ist, dann wird der Prozess wieder von Vorne begonnen
  337. IF gTisch_6.Inputs.Stausensor = FALSE THEN
  338. gMerker_Debug_Test_Counter := 600;
  339. Tisch_6_Automatik := 0;
  340. END_IF
  341. //
  342. //Cech-Comment: Wird meiner Meinung nach im Augenblick nicht mehr ausgeführt bis excl. 200:
  343. 110:
  344. IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
  345. Tisch_6_Automatik := 120;
  346. END_IF
  347. 120:
  348. IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
  349. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  350. Tisch_6_Automatik := 130;
  351. END_IF
  352. 130:
  353. IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
  354. Tisch_6_Automatik := 0;
  355. END_IF
  356. //Cech-Comment: Wird meiner Meinung nach im Augenblick nicht mehr ausgeführt seit 110:
  357. 200: //Cech-Comment: Warten, bis ein WST den Stopper sicher verlassen hat ...
  358. IF gTisch_6.Inputs.Nach_Vorstopper = TRUE THEN
  359. gMerker_Debug_Test_Counter := 2000;
  360. Tisch_6_Automatik := 210;
  361. END_IF
  362. 210: // .... dann wird der Stopper ausgefahren
  363. IF gTisch_6.Inputs.Nach_Vorstopper = FALSE THEN
  364. gTisch_6.Cmd.Vorstopper := KMD_AUSFAHREN;
  365. gMerker_Debug_Test_Counter := 2100;
  366. Tisch_6_Automatik := 220;
  367. END_IF
  368. 220: // .... Wenn dann der Stopper ausgefahren ist, dann
  369. IF (*gTisch_6.Inputs.Vor_Stopper = TRUE AND*) gTisch_6.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
  370. gMerker_Debug_Test_Counter := 2200;
  371. Tisch_6_Automatik := 230;
  372. END_IF
  373. 230: // ... wird wieder von Vorne begonnen
  374. IF gTisch_6.Inputs.Vor_Stopper = TRUE THEN
  375. gMerker_Debug_Test_Counter := 2300;
  376. Tisch_6_Automatik := 0;
  377. END_IF
  378. END_CASE
  379. END_PROGRAM
  380. PROGRAM _EXIT
  381. (* Insert code here *)
  382. END_PROGRAM