Roboter verbindet Bewegungen nicht, wenn andere Befehle zwischen dazwischen sind

  • Hallo liebes Roboterforum!

    Wir kämpfen seit Jänner damit, dass unser GP110 mit YRC1000 Steuerung Bewegungsabläufe trotz PL=4 nicht durchfährt sondern an jedem Punkt stehen bleibt. Wir versuchen nur nach jedem Punkt unter einer gewissen Bedingung einen Zähler hochzuzählen. Sobald aber eine IF-Abfrage oder ein SWITCH-CASE zwischen den beiden Bewegungsanweisungen steht, fährt der Roboter den Punkt genau an und bleibt kurz stehen, bevor er die nächste Bewegung macht. Auch wenn es in unserem Anwendungsfall nicht ideal ist, haben wir es mit NWAIT probiert, wo er darauffolgende Befehle schon während der Bewegung machen sollte. Das ändert an dem Resultat aber leider auch nichts. Erschwerend kommt hinzu, dass in MotoSim das Verhalten ein anderes ist. Da funktioniert es sehr wohl, und er fährt die Bewegung sauber durch.


    Wir haben unser recht komplexes Programm nun auf einen einfachen Testfall reduziert, wo 4 Punkte zwei mal im Kreis angefahren werden. Nach jedem Bewegungsbefehl steht nur eine IF-THEN-ELSE Anweisung, wo eine Variable gesetzt wird.

    Das Programm ist damit stark vereinfacht, bildet das Verhalten unseres Programmes aber trotzdem ganz gut ab.

    Der Yaskawa-Support konnte uns bisher leider nicht helfen. Habt ihr eine Idee, woran das liegen könnte?


    Beste Grüße

    Hans Albrecht

  • ANZEIGE
  • Hi, also auf den ersten Blick sehe ich auch nichts.

    Würde an deiner Stell folgende Ding versuchen:

    - IF Blöcke entfernen

    - Label entfernen

    - Kontrollieren was für PL4 für Werte hinterlegt sind

    - An Stelle von PL CR oder PD verwenden

  • Hallo,

    danke für die schnelle Antwort! Für die geplante Funktionalität sind die IF-Blöcke und auch die Labels leider unumgänglich. Wir haben auch mit SWITCH-CASE getestet, mit dem gleichen Ergebnis.

    Stehen zwischen den Bewegungsanweisungen keine IF-Conditions sondern nur Labels und Kommentare, funktioniert der Bewegungsablauf rund.

    Die Werte für PL haben wir schon einmal nachgesehen, die sind auf Default (125mm für PL4? bin mir jetzt nicht sicher).


    CR oder PD haben wir tatsächlich noch nicht getestet, das können wir uns mal ansehen.

  • Wenn die Signal auf dem Pfad geschaltet werden dann über ENWAIT oder NWAIT inklusive CWAIT oder die kostenpflichtige Trigger Option

  • Die IF-Blöcke sollen erst verarbeitet werden, wenn der Roboter den Zielpunkt der darüberliegenden Bewegungsanweisung erreicht hat, daher ist NWAIT eigentlicht nicht das, was wir suchen. Wenn die Pfadplanung ohne NWAIT nicht über die IF-Blöcke hinwegplanen kann, dann können wir uns an diese Limitation aber anpassen.

    Trotzdem: Mit NWAIT in der Bewegungsinstruktion haben wir es im Beisein eines YASKAWA-Trainers schon erfolglos versucht, allerdings ohne CWAIT, weil ja der gesamte IF-Block bis zur nächsten Bewegungsinstruktion auf einmal ausgeführt werden soll. Wir könnten noch mit einem CWAIT direkt vor der Bewegungsinstruktion testen.


    Was macht ENWAIT? Dazu konnte ich in meiner Dokumentation nichts finden.

  • Ist an sich das gleiche wie NWAIT nur das man den Code zeit- oder wegabhängig zum folgenden Bewegungssatz ausführen lässt.

    Ist im Inform Manual erläutert.

  • Ahh, jetzt hab ichs gefunden.

    Verstehe ich das richtig, dass NWAIT gleich zu Beginn der zugehörigen Bewegung ausgeführt wird, und ENWAIT am Ende der Bewegung? Dann wäre ENWAIT genau das, was wir brauchen.

  • Vielen Dank für die Hilfe!

    Weißt du zufällig, welcher Parameter das angesprochene Trigger Paket aktiviert? Evtl. rührt daher das unterschiedliche Verhalten zwischen MotoSim und echtem Roboter. Ich würde das gerne testweise in der Simulation ausschalten.

  • Die teigiger sind leider eine Option welche man kaufen muss.

    Hat das ENWait nicht weiter geholfen?

  • Wir haben den Support von Yaskawa gebeten, unser Programm mit ENWAIT zu testen, da es bei unserem Roboter ja noch nicht aktiviert ist (In unserem simulierten Roboter in MotoSim ist es schon verfügbar, aber da funktioniert die Anwendung ja sowieso). Leider haben wir dazu keine Rückmeldung mehr erhalten.


    Da es mit NWAIT auch nicht geklappt hat, habe ich für ENWAIT aber sowieso nicht viel Hoffnung gehabt.


    Wir haben mittlerweile aber eine andere Lösung gefunden: Der Roboter bleibt nicht stehen, wenn zwischen den Bewegungsinstruktionen ausschließlich mit lokalen Variablen gearbeitet wird. Einen Zähler mit INC LB000 zu realisieren war also möglich. Die lokale Variable wird nun beim Programmstart mit dem Wert einer globalen Variable initialisiert und beim Verlassen des Programms zurück in die globale Variable geschrieben.

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