Invertiertes Pendel mit IRB4400 --- Problem mit der seriellen Schnittstelle

  • Hi an Alle,
    ich befinde mich gerade in Australien und schreibe hier eine Studienarbeit. Ich soll einem IRB4400 von ABB beibringen ein invertiertes Pendel zu balancieren. Für alle die nicht genau wissen worum es dabei geht, ist in etwa mit dem Balancieren eines Besenstils auf der Handfläche zu vergleichen.


    Der aktuelle Pendelwinkel wird dabei vom Sensor serielle an einen Computer mit Labview übertragen und von dort ebenfalls über die serielle Schnittstelle an den IRC5 geschickt. Der Kontrollalgorithmus in RAPID läuft in einer unendlichen WHILE-Schleife und bestimmt mit den Informationen vom Sensor jeweils den nächsten Punkt und die nächste Bahngeschwindigkeit, um so das invertierte Pendel zu stabilisieren. Die WHILE-Schleife läuft in etwa mit einer Frequenz von 40 Hz. Dem entsprechende werden die beiden Informationen (nächster Punkt und Bahngeschwindigkeit) ebenfalls mit etwa 40 Hz angepasst.


    Das Problem ist, der Labview Computer sendet mit einer Frequenz von etwa 120 Hz neue Daten an den IRC5. Dort werden dann natürlich nicht alle Daten ausgelesen sondern landen im Puffer. Dadurch entsteht ein etwa 200 – 300 ms Delay, da der RAPID-Code auf die alten Daten im Puffer zugreift und so nicht die aktuellen Daten vom Sensor für den Kontrollalgorithmus genutzt werden.


    Es gibt zwar in RAPID eine Funktion um den Puffer zu leeren, diese braucht aber lauft RapidManual eine waittime von 0.1 s um einen geleerten Puffer zu garantieren. Das ist bei einer Frequenz von 40 Hz natürlich viel zu lange.
    Folgendes habe ich schon versucht. Labview sendet immer nur den gerade aktuellen Wert, wenn der IRC5 einen Impuls bzw. ein Ausgangssignal auf 1 setzt. Funktioniert leider nicht, da der digitale Ausgang vom Roboter nicht schnell genug ist.


    Ich habe gelesen, RS-422 Standard einen Handshake zwischen Sender und Empfänger unterstützt. Auf der Labview Seite wäre das kein Problem, aber auf der Roboterseite kann ich dazu in keinem Manual etwas finden.
    Sollte jemand vielleicht einen guten Tipp oder sonstig Anmerkungen haben, wäre ich darüber sehr froh. Hoffe das Problem ist in etwa klar geworden :)


    Mit freundlichen Grüßen oder wie hier in Australien, Cheers
    Jan

  • ANZEIGE
  • Hallo,


    ich kenn mich zwar nicht mit ABB aus, aber aus der Erfahrung mit über Netzwerk angebundenen Sensoren auf anderen Systemen, würde ich folgendes vorschlagen:


    Wenn der Roboter Multitasking unterstützt, könnte man einen Task machen, der nur mit dem Lesen von der Schnittstelle beschäftigt ist und die Daten irgendwo ablegt (z.B. in einer entsprechend geschützten Variable). Ein anderer Task berechnet die Bewegung und nimmt immer nur die aktuellsten Daten.


    Reicht die Rechenleistung des Lesetasks immer noch nicht aus, solltest du versuchen langsamer zu senden (Timer ?), in jedem Schleifendurchlauf eine Anforderung vom Roboter an LabView zu senden oder ein schnelleres Übertragungsmedium (Ethernet ?) zu verwenden.


    Grüße


    Urmel

  • Das mit dem zu langsamen digitalen Ausgang könnte an einer zu grossen Pollzeit in den Parametern der Ausgangskarte liegen. Beim Eintragen einer neuen Karte steht dieser Wert standardmässig bei 1000ms.
    Wird oft übersehen. Dann hat man im schlimmsten Fall eine Verzögerung von einer Sekunde.
    Den Wert kann man auf 10 ms runtersetzen.

  • Hey,
    danke für das gute Feedback. Die Pollzeit haben wir schon beachtet. Das mit dem Multitasking hört sich gut an, wird am Freitag getestet. Hoffe nur das die CPU schnell genug ist. Das ABB Multitasking lässt die Tasks leider nicht wirklich parallel laufen, sondern sequenziell. Wenn der Task mit der größeren Priorität ruht, darf der Andere ran.


    Cheers

    Einmal editiert, zuletzt von kakarot ()

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