Endlos Jogging über RAPID

  • Servus Leute


    Nach einigen Stunden erfolgloser Suche in alten Threads muss ich als Neuling nun doch einen neuen aufmachen. Die Aufgabe besteht darin den Roboter wie im normalen Handbetrieb zu bewegen, nur soll dies extern und ohne FlexPendant erfolgen. Inkremental ist dies ja keine größere Sache, da hier ja einfach eine Bewegung ausgeführt wird, deren Position um das eingestellte Inkrement verschoben werden kann. Leider soll auch endlos bewegen wie mit dem FlexPendant möglich sein. Bin aktuell noch in der Konzepterstellung vom Projekt und etwas ratlos, da ich keine Idee habe wie ich das anstellen soll. Bin also dementsprechend für alle Vorschläge offen.

    In Robotstudio habe ich unter Konfiguration/Man-Machine Communication den Typ "AutoSwitchOfJogUnit" gefunden, habe aber hierzu ebenfalls noch nichts gefunden.


    Würde mich freuen wenn jemand ne Idee hätte wie sich dies umsetzen ließe und was diese Konfiguration beeinflusst.


    vielen Dank im Voraus!

  • "AutoSwitchOfJogUnit" betrifft nur das Verhalten bei MultiMove-Systemen, damit schaltet man ein, dass wenn mit dem aktuellen Editorfenster in eine andere Task gewechselt wird, auch die Handbedienung auf den zugehörigen Manipulator wechselt. Funktioniert neuerdings auch nicht immer und ist blödsinnigerweise by default "off". Hat aber mit Deinem Projekt nix zu tun.


    Was Du vor hast ist mir nicht ganz klar - willst Du den Roboter mit einer Wii steuern oder sinngemäß sowas? Ist bei ABB meines Wissens nicht möglich ohne extreme Tricks. Ich hab das vor Jahren mal gesehen, da hat sich einer einen "Proxy" zwischen Steuerung und Antrieb konfiguriert. Aber vielleicht gibt es da inzwischen andere Möglichkeiten, keine Ahnung.


    Grüße,

    Michael

  • Hallo Michael


    Erstmal danke für die Info bezüglich der Konfiguration.

    Nein eine Wii solls nicht werden:).

    Es soll im Endeffekt über ein externes HMI und Schnittstellensignale der Roboter bewegt werden. Wie gesagt inkremental gar nicht so kompliziert. Nur kontinuierlich hab ich keine Idee.

    Ich sag trotzdem mal danke für deine Hilfe.

    Gruß

  • Hallo!


    Kannst du über Gruppensignale bewegen was von SPS kommen.Durch die Signale schickst du die Positionen.Roboter soll auf diese werte warten und dann Starten.Oder liege ich falsch?


    MFG


    Tamas

  • Hallo Tamas


    Für die inkrementale Bewegung liegst du richtig. Da kann ich über die Schrittweite vom HMI die Verschiebung der Positionen berechnen und den Roboter bewegen. Nur soll die kontinuierliche Bewegung auch funktionieren. Hierfür kann ich ja aber keine Positionsänderung berechnen, da der Roboter ja solange der Button gedrückt bleibt weiter fahren soll.

    Gruß

    Dominik

  • ich weiß zwar nicht wieso man einen roboter so über ein hmi steuern will, aber wie wäre es wenn du die inkrementale bewegung über eine schleife laufen lässt?

    ist zwar keine kontinuierliche bewegung, aber mit den richtigen parametern sollte zumindest eine scheinbar kontinuierliche bewegung bei rumkommen?!

  • Hi.


    Was ist wenn du diese Button mit eine System Eingang verknüpfst? Zb. Start. Dann würde er wenn der Button gedrückt wird immer starten. Habe ein ähnliches System bei mir nur ich muss noch Brenner zünden und auf ein paar Signale warten. Wird bei mir auch wiederholt wenn die Start Taste gedrückt wird. Nur eine Zyklus aber das kann man so umändern das es dauer wiederholt.


    MFG


    Tamas

  • Bin mir nicht sicher ob Alex das gemeint hat, aber du könntest auch das Drücken des Jog Buttons in einer Trap Routine abfangen und dann solange, wie das Signal 1 ist, die Bewegung in einer While-Schleife schrittweise durchführen.. ist zwar auch keine 100% durchgängige Bewegung, aber könnte nah drankommen

  • Hallo Zusammen


    danke für die zahlreichen Antworten.

    Hab das ganze mit der Schleife jetzt mal in der Simulation umgesetzt und die kontinuierliche Bewegung läuft auch annähernd flüssig ab. Wie das ganze dann in der Realität dann aussieht wird sich später zeigen:uglyhammer_2:

    RobiMan Dein Vorschlag würde mich allerdings trotzdem interessieren. Könntest du mir nochmal genauer erklären was es mit dieser Option auf sich hat und wie diese Funktioniert? Wenn du eine Doku zu dem ganzen hättest oder mir sagen kannst wo ich die finde würde mir auch schon reichen.


    Gruß Dominik

  • Manual Jog ist für externe Achsen, da hast du einen jokab safety ball zum halten und 2 Taster Vor/Zurück.

    Damit kannst du die Achsen dann drehen wohin du sie willst, auch wenn der Rob in Automatik läuft.

    Im HIntergrund läuft dazu ein eigener Task der die gleiche mech. Unit benutzt....


    So mit schleife ausführen und überschleifen wird keine flüssige Bewegung geben.

    Der Motionplaner möchte schon am Anfang wissen wo es hin gehen soll.

  • So mit schleife ausführen und überschleifen wird keine flüssige Bewegung geben.

    Der Motionplaner möchte schon am Anfang wissen wo es hin gehen soll.

    Wie gesagt der berühmte Unterschied zwischen (Simulations-)Theorie und Praxis wird sich demnächst hoffentlich zeigen, wenn ich an die tatsächliche Anlage komme.

    Trotzdem vielen Dank für deine Hilfe:supi:

    • Helpful

    So ich habs jetzt zum Laufen gebracht und hab mir gedacht ich poste jetzt mal meinen Lösungsansatz der funktioniert hat.

    Für jede Achse hab ich erst mal eine eigene Routine geschrieben. Diese werden nacheinander in der main-Routine aufgerufen. In den Routinen wird bei den translatorischen Achsen über eine IF-Anweisung das Schnittstellen-Signal vom externen Panel überwacht. Anschließend wird die aktuelle Roboterposition in einem robtarget gespeichert. Danach wird über eine While-Schleife die gewünschte Koordinate (z.B. X) um 1 erhöht und über CalcJointT geprüft ob das neue robtarget noch erreichbar ist. Ist dies nicht mehr der Fall wird über eine Fehlerbehandlungsroutine die Koordinate wieder um 1 verringert und ein Flag gesetzt wodurch die Schleife verlassen wird. Anschließend wird die Achskonfiguration abgeschaltet und eine Suchfahrt auf das Robtarget gestartet. Die Suchfahrt wird so konfiguriert, dass sie den Roboter stoppt, sobald LowLevel am Schnittstellen Signal für die Bewegung erkannt wird. Je nach Kommunikationsgeschwindigkeit muss gegen ganz kurzes tippen noch eine weitere Fehlerbehandlungsroutine geschrieben werden, da ansonsten das Signal der Suchfahrt bereits low ist bis die Suchfahrt gestartet wurde.

    Für die Rotatorischen Achsen bleibt nichts anderes als die Orientierung mit einer Offset Anweisung zu ändern und dies in eine Schleife zu packen. Hier muss man etwas mit den Parametern spielen aber zumindest bei langsamer Fahrt ergibt sich eine saubere flüssige Bewegung und auch die Zonenbahn-Fehler lassen sich mit den richtigen Parametern abstellen. Nur sollte man einen Interrupt programmieren welcher den Roboter stoppt sobald das Signal für die Bewegung auf low wechselt, da ansonsten der Nachlauf sehr lang sein kann, da der letzte Offset noch beendet wird.

    Selbst einzelne Achsen können so angefahren werden. Man startet eine MoveAbsJ-Bewegung bis an die Achsgrenze und programmiert auch hier einen Interrupt für das low-Level des Signals, um den Roboter zu stoppen wenn man vom Knopf geht.

    Nochmal Danke an alle die sich beteiligt haben und sollte jemand genauere Infos brauchen kann er sich gerne melden.:thumbup:

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now