Ereignisroutine STOP

  • 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

  • ANZEIGE
  • 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

  • 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.

  • 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

  • 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.

  • 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

  • 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.


    [size=1][font=verdana, sans-serif]WaitDI diSim_Quit, 1\MaxTime:=2\TimeFlag:=bTimeOut;[/font][/size]
    [size=1][font=verdana, sans-serif]IF [/font][/size][size=1][font=verdana, sans-serif]diSim_Quit=high[/font][/size][size=1][font=verdana, sans-serif] PulseDO\PLength:=3, doSim_Quit;[/font][/size]



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


    Gruß
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • 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

  • 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

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • 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.

    Einmal editiert, zuletzt von padostms ()

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden