Beispielprogramm Echtzeit-Kommunikation

  • Hallo,


    ich bin neu hier im Forum und habe ein paar Fragen zu der Echtzeitansteuerung eines Mitsubishi RV-3SB. Ich bin eher im Bereich der objektorientierten Programmierung unterwegs und tue mir noch etwas schwer bei der Echtzeitansteuerung des Roboters. Die entsprechenden Beiträge zu dem Thema hier im Forum hab ich bereits durchforstet, jedoch steh bei der praktischen Durchführung trotzdem etwas auf dem Schlauch.


    Die Bewegungen mit dem Roboter lassen sich mit Hilfe des Beispielprogramms (aus CRn-500-Ethernetkarte Handbuch) soweit ganz gut ausführen. Ich würde aber gerne noch zusätzliche Funktionen ausführen können:


    1. Sauger bzw. Magnetschalter ein/aus.
    Der Roboter hat vorne einen Sauger dran, dieser lässt sich in Melfa über das Ausgangsbit 5 aktivieren -> M_OUT(5)=1.
    Im Handbuch steht das Ein-/Ausgangssignale zeitgleich mit den Positionsdaten gesendet oder empfangen werden können. Hier bin ich mir jedoch nicht ganz sicher wie das genau zu bewerkstelligen ist.

    Insbesondere ist die Verwendung der Folgenden 3 Parameter in der Dokumentation bzw. in den Kommentaren des Beispielprograms eher waage beschrieben. Mit den beiden Parametern Bitmaske und Bitdaten kann ich noch was anfangen, jedoch nicht mit der Kopfbitnummer.


    Es wäre schön wenn mir hier jemand ein Beispiel für eine mögliche Eingabe zeigen würde.
    Kopfbitnummer (0 - 32767)
    Bitmaske (0000 - FFFF)
    Bitdaten (0000 - FFFF)

    2. Wechsel des Melfa-Programs (XYZ-Koordinaten | Gelenkdaten | Motorimpulse)
    Hier geht es im Grunde genommen ja nur um den zweiten Parameter des MXT Befehls (MXT 1,0 | MXT 1,1 | MXT 1,2)


    Ideal wäre es wenn ich ein Flag mit dem Steuerungsbefehl mitsenden könnte. Diesen dann vom
    Robotersteuerungsprogramm aus auswerten, den aktuellen MXT-Befehl beenden und nach Wunsch in den
    entsprechenden MXT-Befehl springen könnte.

    Eine weitere Idee wäre vielleicht jeweils ein separates Programm für jeden Modus (XYZ-Koordinaten | Gelenkdaten | Motorimpulse) auf die Robotersteuerung zu laden und beim Wechseln immer das aktuelle Programm beenden und das gewünschte wählen. Das könnte dann wie bereits hier im Forum vorgeschlagen mit einer separaten TCP-Verbindung bewerkstelligt werden.


    Ich hab bereits in etwas komplexeren Versionen des Echtzeitsteuerungs-Programms (roboticslibrary.org) gesehen, dass Komplette Melfa-Programme auf die Steuerung geladen und ausgeführt werden können. Dazu wurde glaub ich ebenfalls eine zusätzliche TCP-Verbindung aufgebaut. Ich würde die Lösung jedoch gerne so einfach wie möglich halten, da ich ja wie bereits erwähnt nur einen einzelnen Parameter im MXT-Befehl manipulieren muss.

    Ich hoffe, dass die Fragen einigermaßen Nachvollziehbar sind und bedanke mich schon mal im Voraus.

    Einmal editiert, zuletzt von Antoneli ()

  • ANZEIGE
  • Hallo,


    das mit den Bits kannst du ja recht einfach ausprobieren, wenn eine IO-Karte im Roboter steckt. Diese hat ja zwei Stecker einen mit den Bits 0-15 und 16-31 (jeweils Ein- und Ausgänge). Ich würde mir den Bereich 16-31 nehmen, weil im unteren ja standardmäßig was vorbelegt ist. Man kann sich den Zustand der Ausgänge ja auf der Teachbox ansehen, so kann man kontrollieren, ob sich was ändert.


    Das Kopfbit wird dann auf 16 gesetzt. Die Bitdaten auf die Werte, die da ausgeben werden sollen. Ob jetzt da das LSB auf Ausgang 16 oder 31 geht, weiß ich auch nicht auswendig, einfach ausprobieren. Die Maske ist dazu da, einzelne Bits in dem 16 Bit Block auszusparen, falls die über Melfa Basic gesetzt werden. Ob die Maske 0 oder 1 sein muss, um ein Bit durchzulassen, müsste ich auch ausprobieren.



    Zu Punkt 2: Da sind eine oder zwei zusätzliche TCP-Verbindungen eigentlich der übliche Weg. Notfalls könnte man auch ganz ohne heruntergeladenes Roboterprogramm auskommen und alles über EXEC machen, dafür braucht man aber trotzdem eine TCP-Verbindung.


    Grüße


    Urmel

  • Vielen Dank für die schnelle Hilfe. Hat wunderbar geklappt. Ich kann jetzt sowohl den Sauger als auch den Magnetschalter von meinem Echtzeitrogramm aus kontrollieren. Was den Wechsel zwischen den einzelnen MXT-Befehlen angeht dachte ich mir, ich verwende einfach zwei ungenutzte Eingänge als Flags um die 3 Zustände zu Codieren und springe über eine entsprechende MELFA-Logik jeweils in den gewünschten MXT-Befehl.

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