22. Juli 2019, 20:38:10
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Ereignisroutine STOP


normal_post Autor Thema: [offen] Ereignisroutine STOP  (Gelesen 1681 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

17. Dezember 2017, 19:44:42
Gelesen 1681 mal
Offline

micha_hensel


Hallo Alle Zusammen,
ich hätte mal ne Frage zur Ereignisroutine, ich möchte bei dem Ereignis STOP eine Routine aufrufen die dann auf einen Eingang mit WaitDi wartet (<20sek) und dann noch 1 Ausgänge zurücksetzen z.B.

EreignisStop()
  WaitDi diQuittbearbeitung,1;
  Reset doBearbeitungsStart;
ENDPROC

Leider habe ich kein Multiasking sonst würde ich es damit realisieren.
Wer hat noch eine Idee wie nach gestoppten Programmlauf, noch ein Ausgang verspätet zurückgesetzt werden kann ?
Gruß
Michael
  • gefällt mir    Danke

Heute um 20:38:10
Antwort #1

Werbung

Gast

18. Dezember 2017, 07:54:07
Antwort #1
Offline

Z750


Hallo Michael,
ich würde behaupten ohne Multitasking geht es nicht. Wenn der eine Task den du hast steht wird nichts mehr abgearbeitet.

Gruß Z750
  • gefällt mir    Danke

18. Dezember 2017, 10:05:16
Antwort #2
Offline

micha_hensel


Moin,
Na gut, aber die Ereignisroutine Stop wird noch abgearbeitet. Die Frage ist nur ob ich darin noch auf einen Eingang warten kann.
Ich habe das mal mit Robotstudio mit einem virtuellen Controller ausprobiert da hat es nicht funktioniert, vielleicht ist das bei einem reelen Roboter anders.
Gruß
Michael
  • gefällt mir    Danke

18. Dezember 2017, 15:37:43
Antwort #3
Offline

duro


Hallo,
Evtl. hilft dir so etwas weiter (Fehlerbehandlungsroutine).
Statt dem WaitUntil kann man auch andere Wait instruktionen nehmen (WaitDI).
Alle 5 sec. wird die Error Routine aufgerufen in diesem Beispiel wenn das bWait=FALSE ist.
Z
  • gefällt mir    Danke

18. Dezember 2017, 15:39:23
Antwort #4
Offline

duro


  • gefällt mir    Danke

Heute um 20:38:10
Antwort #5

Werbung

Gast

18. Dezember 2017, 18:53:28
Antwort #5
Offline

micha_hensel


Hallo duro,
ich denke wenn der Roboter gestoppt wurde wir auch keine Fehlerbehandlung mehr abgearbeitet.
Eine Ereignisroutine wird z.B. mit dem Ereignis Stop in den Parametern "Controller" definiert und wird abgearbeitet bei eintreten eines Stopp's (Teachpanel o. Systemeingang o. NotAus).
Mein Problem ist nun das ich unbedingt noch eine Signal-Quittierung abwarten muss um einen Ausgang zurückzusetzen und dies im gestoppten Zustand des Roboterprogrammes.
Gruß Michael
  • gefällt mir    Danke

19. Dezember 2017, 11:08:52
Antwort #6
Offline

duro


Hallo micha_hensel,
Vorweg es wäre wohl am besten Multitasking nachzurüsten wenn du mit 100% Sicherheit auf das Stop Erreigniss reagieren musst.
Aber auch deine Variante Funktioniert bei mir am Simulator mit Einschränkung.
Zu deiner Frage, ja man kann in dieser EventRoutine auf ein Eingangssignal warten nur sollte man das nicht machen weil wie du richtig schreibst wird das Event "Stop" von mehreren Zuständen ausgelöst, und wenn es z.b. passiert das du in deiner EventRoutine wartest und es kommt erneut ein Stop Erreigniss wird deine Routine nach 10sec. abgebrochen und dein Signal wird nicht mehr Rückgesetzt (Unten noch die Fehlermeldung die dann kommt am Panel).

MODULE Eventmodul 
    PROC main()
         WHILE true DO
            MoveJ [[374.00,0.00,630.00],[0.707107,0,0.707107,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v1000, z50, tool0;
            MoveJ [[81.14,-365.09,630.00],[0.551576,0.442452,0.551576,-0.442452],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v1000, z50, tool0;
        ENDWHILE
    ENDPROC
   
    PROC eStop()
        !
        IF OpMode() = OP_AUTO THEN
           WaitDI diSim_Quit, 1;
           PulseDO\PLength:=3, doSim_Quit;
           ExitCycle;
        ENDIF
        !
    ENDPROC
ENDMODULE


40355: Eine Stop/QStop-Ereignisroutine wurde gestoppt
Beschreibung
Task: T_ROB1
Eine STOP Ereignisroutine wurde durch einen externen Stopp-Befehl angehalten. Alle laufenden Stop/QStop-Ereignisroutinen werden nach 10000 ms angehalten, wenn die Steuerung zweiten Stopp-Befehl erhält.
Aktionen
Alle Ereignisroutinen kurz und frei von RAPID-Instruktionen des Typs WaitTime, WatiDI usw. halten.
  • gefällt mir    Danke

19. Dezember 2017, 11:26:31
Antwort #7
Offline

Programmiersklave


Warten innerhalb einer Ereignisroutine auf "Stop" ist sehr unpopulär.... 
Ich hatte sowas Ähnliches mal eine Zeitlang gemacht, das funktionierte auch meistens (jedenfalls damals, bei den 5er Systemen), aber wehe, wenn es ausser Kontrolle geriet. Unter bestimmten Umständen betrachtete sich der Task als "unaufhaltsam", und ein paarmal musste ich einen Systemfehler provozieren, um dem System begreiflich zu machen, dass der Task nicht mehr läuft bzw. laufen sollte.

Ich würde empfehlen, mit Cross-Connections zu arbeiten, falls möglich. Da Du ja scheinbar nur auf ein externes Signal warten musst, kannst Du den Ausgang mit diesem und einem anderen (vielleicht sogar einem Systemausgang als Abfrage des Programmablaufes) einfach querverbinden. 

Grüße,
Michael
  • gefällt mir    Danke

20. Dezember 2017, 02:16:21
Antwort #8
Offline

Micky


Hallo,
wenn Du unbedingt in einer Ereigbisroutine auf einen Eingang warten musst, würde ich das Warten (MaxTime) begrenzen, so dass beim Überschreiten der Zeit die Stoproutine auf jedenfall beendet wird.

WaitDI diSim_Quit, 1\MaxTime:=2\TimeFlag:=bTimeOut;
IF diSim_Quit=high PulseDO\PLength:=3, doSim_Quit;


Der Ausgang CycleOn müsste m.E. solange auf 'high' gesetzt bleiben, bis die Stop-Ereignisroutine beendet wird.

Gruß
Micky
  • gefällt mir    Danke
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

Heute um 20:38:10
Antwort #9

Werbung

Gast

20. Dezember 2017, 08:34:15
Antwort #9
Offline

micha_hensel


Werde auf das Warten auf den Quittierungseingang im RobotStudio testen. Ein MaxTime wird hinzugefügt damit's nicht unkontolliert wird. Ich hoffe das ich hiermit das Problem lösen kann.
Die Idee mit der Querverbindung wird leider nicht klappen, es seih den ich hätte ein FlipFlop zur Verfügung. Die Quittierung kommt von einem CNC-Bearbeitungszentrum, wird das Signal  BearbeitStart vom Roboter nicht zurückgesetzt, führt die Maschine noch einen Palettenwechsel durch um spannt sofort die gewechselte Palette, deswegen muss das Signal auch unbedingt zurückgesetzt werden auch im Stop des Roboters.
Gruß
Michael

  • gefällt mir    Danke

21. Dezember 2017, 11:42:41
Antwort #10
Offline

Micky


Hallo,
du solltest es einmal mit den CyclicBool probieren, die können jetzt ja auch zusätzlich einen Ausgang beschreiben.
Ich denke, dass Du damit auch Dein FlipFlop realsieren kannst.
Gruß
Micky
  • gefällt mir    Danke
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

05. Februar 2018, 11:29:06
Antwort #11
Offline

padostms


Hallo!
Habe bei mir so eine Routine wo ich ein Crossconnection Abfrage.Ist es ein Lebensbit zwischen SPS und Roboter.Des dient nur für Kommunikationsüberwachung.Beim fall einens falles fährt roboter nicht los oder fährt Programm ab dann bleibt im Grundstellung stehen.
Habe ein Signal (boStoerung) wo mir die SPS sagt ob alles OK ist oder nicht,wenn der Fall kommt das eine störung vorhanden ist  Roboter fährt im Grundstellung(Habe sogar AutoGrunstellung wo immer geschaut wird wo der Roboter steht) und wartet bis Störung beheben wurde.
« Letzte Änderung: 07. Februar 2018, 15:04:20 von padostms »
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH