Roboter wartet an einer Waitanweisung und fährt gleichzeit

  • Hallo,
    ich habe bei meinem Fanuc ein seltsames Phänomen. Der Roboter wartet an einer Waitanweisung und fährt auf seinen Achse 2 Softwareendschalter. Das Problem besteht nur wenn ich das PNS programm von Hand anwähle, im Programm UP399 auf Grundstellung fahre und dann anschließend auf einen Folgenstart warte. Manchmal funktioniert es ohne Probleme.


    PNS Programm


    UP399


    Ich habe den Eingang 69 in der SPS gesperrt. Es liegt irgendwie an dem GrstTask. Wenn ich ihn nicht aufruf tritt der Fehler nicht mehr auf. Im Task werden keine Bewegungen gefahren. Er dient nur für die Grundstellungsfahrt. Er bricht nur die laufende Bewegung ab und reduziert den Override bei der Grundstellungsfahrt.


    GrstTask:


    Hier ist das Grundstellungsprogramm zum abbrechen der laufenden Bewegung und für das Reduzieren des Overrides:
    Fskip


    Ich verstehe nicht warum der Roboter sich bewegt im Fskip werden eigentlich nur die Register und der Override eingelesen da die anderen Signale nicht anstehen.
    Im Programmstatus Fenster steht das Programm Fskip auf running und das Programm PNS001 auf Waiting. Im Positionsfenster sieht man aber dass sich die Koordinaten ändern.


    Darf ich beim Fanuc keinen Task im Hintergrund laufen lassen?? Das komische ist nur dass es manchmal funktioniert und manchmal nicht??


    Kennt jemand dieses Problem??
    Vielen Dank


    Sebastian

    Einmal editiert, zuletzt von Glöckler ()

  • ANZEIGE
  • Hallo Glöckler,


    hmm...ist jetzt erstmal natürlich schwierig sich da reinzudenken.


    Jetzt nochmal kurz zum Verständnis:
    Obwohl beim Roboter ausser dem Programm "GrstTask" im Hintergrund KEIN ANDERES Programm läuft bewegt sich die Mechanik?


    Falls ja, dann MUSS es an dem Hintergrundprogramm liegen, eine andere Möglichkeit gibt es nicht. =)


    Wenn ich mir nun das KAREL genauer anschaue, sieht es auf den ersten Blick tatsächlich recht harmlos aus.
    Jedoch bin ich mir bei einigen Befehlen etwas unsicher:
    Was genau soll der KCL-Befehl bewirken? Soll damit das aktuelle Programm abgebrochen werden?
    Wenn ich die Beschreibung in meinem schlauen Buch richtig verstehe, wird der aktuelle Befehl im genannten Programm ge"skipped", ergo übersprungen bzw. ausgelassen.
    Falls Du das akutelle Programm abbrechen möchtest benutz einfach den "ABORT prog"-Befehl, ohne "KCL"


    Im gleichen "IF"-Block wird dann noch der "CNCL_STP_MTN"-Befehl verwendet.
    Den habe ich bisher auch noch nie irgendwo gesehen und musste deshalb auch erstmal nachschlagen.
    Laut Handbuch werden mit dem Befehl alle angehaltenen Bewegungen abgebrochen, aber nur in dem jeweiligen Programm und es werden die nächsten Befehle ausgeführt.
    Um ehrlich zu sein, werd ich aus der Beschreibung nicht besonders schlau... =D Daher einfach die Frage: Was möchtest Du denn mit dem Befehl bewirken?


    Dass das Verhalten sporadisch auftritt könnte z.B. daran liegen, dass die Ursache genau in diesem "IF"-Block liegt und das Programm hier nicht immer "reinkommt"?!
    Müsste einmal getestet werden.


    Was passiert denn, wenn Du das Backgroundprogramm aus einem anderen Programm startest?
    Was zeigt denn der Programmstatus für das UP an? Oder ist das Programm dann schon beendet=


    Prinzipiell ist es kein Problem beim Fanuc Programme im Hintergrund aufzurufen. Jedoch sollte man mit KAREL und Roboter-Bewegungen vorsichtig sein.


    Gib bescheid, falls Du noch etwas Neues dazu hast.


    Gruß
    Fred

    Hoffnung ist der erste Schritt auf dem Pfad der Enttäuschung.<br /><br />Java programmers wear glasses, because they can&#039;t C#.

  • Hmm.... verdammt... eigentlich hat das KAREL ja "%NOLOCKGROUP" als Parameter...
    Trotzdem hab ich keine Ahnung was dieser KCL-Befehl und der CNCL_STP_MTN-Befehl bewirkt, schon gar nicht wenn die beiden hintereinander kommen... =)

    Hoffnung ist der erste Schritt auf dem Pfad der Enttäuschung.<br /><br />Java programmers wear glasses, because they can&#039;t C#.

  • Hallo, der Skip Befehl soll nur die laufende Bewegung abbrechen. Das CNCL_STP_MTN hat ein Kollege am Freitag eingefügt, der da den Fehler gesucht hat. Meiner Meinung nach brauche ich das CNCL_STP_MTN nicht, ich habe es gerade gelöscht.


    Als der Fehler auftrat war weder der Eingang 28 noch Register 195 gleich 1, d.h. die Befehle werden eigentlich gar nicht bearbeitet.


    Es passiert auch nur wenn ich im Einrichten den Roboter verfahren habe und dann wieder das PNS anwähle und den Roboter wieder starte.


    Was meinst du mit dem NOLOCKGROUP??

    Einmal editiert, zuletzt von Glöckler ()

  • Guten Morgen Glöckler,


    die Eigenschaft"%NOLOCKGROUP" eben im KAREL Programm.
    Bedeutet, dass das KAREL keine Bewegungsgruppe blockiert und somit auch keine Bewegungen durchführen kann...


    Also ich würd mir mal den ganzen KAREL-Quelltext mit "Debugger"-Meldungen vollschreiben. Mindestens eine Ausgabe pro Zeile... =D
    Damit Du einmal verstehst, was genau gerade in der Steuerung passiert, wenn der Roboter sich bewegt (er bewegt sich sicher nicht "einfach so" =) ).


    Wenn Du die Programme einzeln startest? Verhält sich der Roboter dann auch so seltsam? (Also z.B. nur das KAREL starten, ohne "Hauptprogramm"...)


    Ist glaub recht schwierig hier herauszufinden, wo der Fehler sitzt, zumindest ohne die Programme zu testen (mit ganze vielen "WRITE"... =D ).
    Wie schon erwähnt, prinzipiell sehe ich hier auf den ersten Blick nirgends eine Möglichkeit, warum der Roboter sich bewegt...


    Gruß
    Fred

    Hoffnung ist der erste Schritt auf dem Pfad der Enttäuschung.<br /><br />Java programmers wear glasses, because they can&#039;t C#.

  • Ich hab den Verdacht er fährt die letzte Position die er im Automatikmodus angefahren hat. Das ganze passiert nur wenn man ihn in Hand verfahren hat und das Programm neu angewählt hat. Ist die Systemvariable $Lastpauspos die letzte Automatikposition?? Kann man evtl. diese Position irgendwie zurücksetzten. Beim Kuka wird in Hand ja auch zuerst ein Initmove gemacht und wieder auf eine definierte Position gefahren.
    Gruß
    Sebastian

  • Hallo, ich hab den Fehler gefunden. Es lag an dem CALL GRSTTASK. Wenn ich dieses Programm mit einem CALL Befehl aufrufe aktualisiert der Roboter die Variable $LASTPAUSPOS nicht mehr und der Roboter fährt direkt dahin.
    Mit dem Befehl RUN ruf ich nun direkt den Grundstellungstask auf und der Roboter aktualisiert die Systemvariable immer.


    Lösung:

    Code
    RUN GRSTTASK

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