Positionsdaten für Tracking in Robotersteuerung einlesen

  • Hallo,
    ich bin neu hier und wollte gleich mal mit ein paar Fragen starten. Zuvor aber ein wenig zum Projekt und zur Hardware.


    Projekt:
    Ein RP-3AH Roboter soll Teile von einem laufenden Förderband aufnehmen. Die Teile werden von einer Kamera und der dazugehörigen Steuerung (P400MA von Panasonic) erkannt. Diese Steuerung gibt über eine Ethernetverbindung die Positionsdaten an die Robotersteuerung. Zusammen mit den Daten des Encoders soll dann die zu verfolgende Position errechnet werden. Es handelt sich also um eine Trackingfunktion.


    Mein Problem bei der Sache ist momentan das Auslesen der Positionsdaten von der Kamerasteuerung. Ich bekomme zwar immer eine Positionsvariable angezeigt, aber das war es dann auch. Wie bekomme ich es hin über die Ethernetverbindung alle zu übertragenden Positionsdaten in meiner Robotersteuerung einzulesen und zu verarbeiten?


    Das Programm schreibe ich in MELFA Basic IV. Folgend ein Programmteil wie ich es zur Zeit versuche umzusetzen.


    1 DEF CHAR ZEICHEN
    10 OPEN "COM3:" AS #1
    20 *SCHLEIFE
    30 INPUT #1,ZEICHEN$
    40 IF ZEICHEN$="" THEN *SCHLEIFE


    Wenn jemand noch weiter reichende Tipps oder ähnliches zum Thema Vision Tracking hat….nehme ich natürlich auch gerne.


    Vielen Dank schon mal im Voraus.

  • ANZEIGE
  • Hallo,


    ein Input Befehl wartet immer auf ein Zeilenende.


    D.h. dein


    Code
    20 *SCHLEIFE
    30 INPUT #1,ZEICHEN$
    40 IF ZEICHEN$="" THEN *SCHLEIFE


    macht genau das gleiche wie ein


    Code
    20 INPUT #1,ZEICHEN


    Alles weitere könnte mit den Parametern für die Etherneteinstellungen zusammenhängen. Darüber haben wir hier schon zahlreiche Threads ...


    Grüße


    Urmel

  • Dankeschön,
    hab den eigentlichen Fehler jetzt auch schon gefunden. Lag an dem Trennzeichen. Hatte von der Kamerasteuerung aus ein Semikolon gewählt. Daurch hat der Input-Behl immer nur die Daten bis zum ersten Semikolon verarbeitet.

  • Bei der weiteren Bearbeitung bin ich auf ein weiteres Problem gestoßen.
    Und zwar kann ich mir den errechneten Punkt nicht anzeigen lassen. Es geht also wesentlich um Programmzeile 80. Weiß da jemand Rat? Ist sicher ne völlig simple Sache.


    10 def pos punkt, P0, P200
    20 def double wert1, wert2, wertd
    25 def char bew
    30 open "COM4:" as#4
    40 wert1#=+999995632
    50 wert2#=+9620
    60 wertd#= wert2#-wert1#
    62 P200=(+201.133,-175.216,+6.574,+0.000,+0.000,-0.005)(0,0)
    64 P0=(+201.118,+170.267,+6.572,+0.000,+0.000,-0.007)(0,0)
    70 p_encdlt=(P200-P0)/wertd#
    80 punkt=p_encdlt
    90 end

  • Das hatte ich so original vom Mitsubishi-Handbuch übernommen. Mir kam die ganze Sache auch nen bisl merkwürdig vor. Es soll dabei soetwas wie eine Position herauskommen, deren Werte in mm angegeben sind. Wert1 und Wert2 sind Encoder Daten von meinem Drehgeber.


  • Das hatte ich so original vom Mitsubishi-Handbuch übernommen.


    Stimmt, nach der Tabelle im Melfa Basic 5 Handbuch ist das tatsächlich erlaubt. Allerding findet sich da kein Wort dazu, was da berechnet wird. Ein Tracking-Handbuch habe ich jetzt nicht hier.


    Aber zu deiner Frage: Was genau geht an Zeile 80 nicht ?

  • Manmanman, wenn man die Sache mal nach ner pause wieder anders betrachtet werden einem schon mal Sachen klar, die man vorher nicht gesehen hat. Also es funktioniert. Auch so wie ich es gepostet habe. Bei mir war die Differenz von Wert1 und Wert2 einfach zu hoch. Deswegen wurde mir immer 0.000 angeziegt. Zumindest weiß ich schon mal warum es nicht geht. Wird dann wohl eher ein Encoder-Problem sein.

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