Sychronization zwischen Roboter-Bewegungen und Datenerfassung

  • Guten Morgen
    Wir haben einen KUKA 16, KRC 2 ed05, Software Version 5.4.14.
    Der Roboter wird als Messroboter für Werkstoffcharakterisierung verwendet.
    Die Soll-Koordinate wird vom PC zur Roboter-Steuerung per Ethernet übertragen. Und die Ist-Koordinate wird von der Steuerung zum PC geschickt.
    Gleichzeitig werden Daten vom Sensor zum PC geschickt.
    Die Frage ist:
    Wie kann man die Roboterbewegungen und Messdaten synchronisieren?
    Oder wie kann man die Messdaten der entsprechenden Ist-Position genau zuordnen?
    Vielen Dank im Voraus :danke:
    Grüß
    Yunlai LI

  • Schritt für Schritt zum Roboterprofi!
  • Wir haben es mal relativ kompliziert so probiert das wir auf der Robotersteuerung einen Timer gestartet haben. Den Wert des Timers haben wir dann an den PC geschickt und von dort wieder zurück an die Steuerung. Aus dem Wert vor dem Schicken und nach dem Schicken ergibt sich die Differenz die für die Kommunikation benötigt wird. Die Steuerung muss dann den aktuellen Timerwert mit den Daten zusammen an den PC schicken und der PC addiert die Zeitdifferenz. Dann kann der PC empfangene Daten von der Robotersteuerung mit einem Zeitstempel versehen. Und sowas ähnliches haben wir auch für die Sensordaten gemacht. Aber das kommt eben darauf an ob euer Sensor sowas unterstützt. Wenn er das nicht tut könnt ihr ohne einen Echtzeit PC nie genau rausbekommen wann die Sensordaten ankommen.
    Allerdings ist das alles nicht so wahrnsinnig genau. Erstens funkt einem der IPO-Takt dazwischen. Abhängig von der Geschwindigkeit seid ihr im Worst-Case eben schon 12ms*Robotergeschwindigkeit von den Koordinaten entfernt die ihr schickt. Wir haben uns darüber ausgerechnet wie schnell wir fahren dürften damit der Fehler in den Toleranzen bleibt. Aber mit der Zeitstempelvariante übergeht ihr die Notwendigkeit von Echtzeitkomponenten für den PC (allerdings konnte unser Sensor eben auch einen Zeitstempel senden).

  • Noch eine Kleinigkeit. Ihr drüft auf keinen fall einen Router oder einen Switch in das Netzwerk hängen. Das versaut einem den ganze Determinismus. Und am besten sollte die Netzwerkkarte nicht über Windows laufen sondern dirket dem VxWorks zugeordnet werden.

  • Hallo ABB Expert


    Wir haben einen KUKA 16, KRC 2 ed05, Software Version 5.4.14.
    Der Roboter wird als Messroboter für Werkstoffcharakterisierung verwendet.
    Die Soll-Koordinate wird vom PC zur Roboter-Steuerung per Ethernet übertragen. Und die Ist-Koordinate wird von der Steuerung zum PC geschickt.
    Gleichzeitig werden Daten vom Sensor zum PC geschickt.
    Die Frage ist:
    Wie kann man die Roboterbewegungen und Messdaten synchronisieren?
    Oder wie kann man die Messdaten der entsprechenden Ist-Position genau zuordnen?
    Grüß
    Yunlai LI

  • Hallo,


    ich bin zwar kein "ABB Experte", aber die Frage will ich mal aus Gründen der Höflichkeit beantworten.


    Zunächst einmal, was erwartest du als Antwort, wenn du eine Frage, die du bereits ins Kuka-Unterforum gestellt hast, einfach nochmal hierher kopierst ?



    Die Frage ist:


    Die Frage ist so allgemein gestellt, das es darauf keine direkte Antwort geben kann. Außerdem hat sie mehr mit PC- oder Echtzeitprogrammierung zu tun, als mit normaler Roboterprogrammierung.


    Um wenigstens eine ungefähre Antwort zu geben:


    Man braucht mindestens einen festen Takt, in dem die Steuerung bzw. Datenauswertung erfolgt.
    Typischerweise verwendet man da Robotersteuerungen (z.B. Stäubli, Mitsubishi, notfalls auch Kuka mit RSI-XML), die die Ausführung von Programmen oder Netzwerktransaktionen im IPO-Takt des Roboters zulassen.
    Alternativ kann man auch den Timertakt eines Echtzeitbetriebssystems verwenden, dann muss man sich auf andere Weise mit dem Roboter synchronisieren. Das wurde ja schon in der Antwort im Kuka-Forum beschrieben.


    In jedem Zyklus verarbeitet man im PC-Programm die aktuellen Roboter- und Sensordaten, wobei man ggf. noch die unterschiedlichen Laufzeiten dieser Signale berücksichtigen muss.


    Grüße


    Urmel

  • Zunächst einmal, was erwartest du als Antwort, wenn du eine Frage, die du bereits ins Kuka-Unterforum gestellt hast, einfach nochmal hierher kopierst ?


    Hallo Urmel
    Dank für die Antwort, Die Frage habe ich von KUKA Forum zum ABB kopiert, Ich habe gedacht dass die Synchronisation Problem hat alle Robotersverwendung, deswegen habe ich auch dieselber Frage in ABB Forum, Ich weiß nicht ob man kann dieselbe Frage in verschiedene Forum kopieren, wenn es gegen etwas über die Verwendung von Forum, dann tut mir leid.
    Für die Kommunikation zwischen PC und Roboter habe ich RSI-XML verwendet, Der PC wird die Fahrweg berechnet und schickt zum Robotersteuerung, einer Magnet Sensor wird montiert auf Roboter, der Sensor hat mit eine spezifische Datenerfassungskarte angeschlossen.
    Grüß
    LI


  • Ich habe gedacht dass die Synchronisation Problem hat alle Robotersverwendung, deswegen habe ich auch dieselber Frage in ABB Forum,


    Ja, im Prinzip ist das Problem unabhängig vom Robotertyp.
    Wie schon gesagt, es ist eigentlich ein Problem der PC-Programmierung.


    Ich habe jetzt mal die zwei Threads zusammenkopiert, damit nicht alles über das Forum verteilt liegt.



    Für die Kommunikation zwischen PC und Roboter habe ich RSI-XML verwendet, Der PC wird die Fahrweg berechnet und schickt zum Robotersteuerung, einer Magnet Sensor wird montiert auf Roboter, der Sensor hat mit eine spezifische Datenerfassungskarte angeschlossen.


    Hättest du das gleich geschrieben, hättest du sicher aussagekräftigere Antworten erhalten. Hier gibt es einige Leute die mit RSI-XML arbeiten, eventuell antwortet ja noch einer.


    Ganz allgemein würde ich aus meiner Erfahrung mit solchen Anwendungen bei anderen Robotertypen sagen, das man das meist einfach in einer Programmschleife lösen kann, die ungefähr so aussieht:



    Warte auf aktuelle Positionsdaten vom Roboter


    Messe Zeit seit letztem Schleifendurchlauf


    Lese aktuelle Sensordaten


    Speichere Roboter und Sensordaten

    Berechne nächsten Roboterschritt


    Sende nächsten Roboterschritt


    solange Bewegung nicht fertig


    Das Lesen eines Messwerts von einer Datenerfassungskarte dauert meistens nur ein paar Mikrosekunden, das kann man gegenüber den Millisekunden des Robotertaktes vernachlässigen.


    Berücksichtigen muss man eventuell noch die Verschiebung der Roboterdaten im IPO-Takt. Die Positionsdaten die der Roboter schickt, stammen ja eventuell aus dem vorhergehenden IPO-Takt und der neu gesendete Bewegungsbefehl wird erst im nächsten Takt übernommen und geht evtl. erst im übernächsten an die Servos. (Hier unterscheiden sich die einzelnen Roboterhersteller etwas.)


    In dieser Form läuft das mit Mitsubishi (7 ms) oder Stäubli (2 oder 4 ms) unter Linux oder Windows im Robotertakt mit. Negative Auswirkungen eines Switches, wie oben erwähnt, kann ich dabei nicht messen.


    Hoffe das hilft schon mal.


    Urmel

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