Beiträge von marc40000

    Danke erstmal für die Antworten :)


    Ich bin grade nicht am Roboter, aber ich meine mich zu erinnern dass ein Befehl der Art


    MOV (300, 300, 300, 0, 0, 0)


    ohne die fl1 und fl2 zu einer Fehlermeldung führte.


    Oder geht das nur relativ? Also


    MOV P_CURR * (10, 0, 0, 0, 0, 0)

    Hi !


    Ich habe ien Problem mit der Positionsberechnung. Ich möchte vom PC aus Positionen berechnen und den Roboter an diese fahren lassen. Jetzt benötigt eine Position neben x,y,z,a,b,c noch fl1 und fl2. Mit fl2 habe ich meine Probleme. Wenn ich das richtig verstehe werden pro Achse die Anzahl der Umdrehungen in 4bit in fl2 kodiert. Allerdings bezieht sich das eben auf die Achsen selber und nicht auf das x,y,z Koordinatensystem. Jetzt stell sich mir die frage, wie ich fl2 überhaupt ausrechnen kann ohne die Transformation x,y,z,a,b,c=>j1,j2,j3,j4,j5,j6 die der Robotercontroller eigentlich macht, selber auch zu berechnen? Wenn ich weiss ich möchte an eine Position x,y,z,a,b,c fahren, kann J6 ja kompliziert im Raum liegen und für mich ist nicht einfach erkennbar wieviel Drehungen nötig sind.


    Ziel des ganzen wäre zu verhindern dass, wenn ich an eine Position fahre und anschließend an eine andere naheliegende Position z.b. 1cm daneben, sich J6 um 360° dreht. Das würde in meiner Anwendung zu Kolloisionen führen.


    Das merkwürdige ist, dass diese Problematik auch besteht wenn ich relative Fahrbefehle der Art MOVE P_CURR * (10, 0, 0, 0, 0, 0) (0, 0) gebe. Auch dabei gibt es auf einmal 360° Drehungen wenn j6 sich dabei über -180° hinausdrehen würde.


    Gibt es einen Befehl der Art "Fahrt dort hin, aber mit möglichst wenig Drehung der J6"?


    Die Teachbox im Jog Modus kann es abgesehen davon. Wenn man dort vor solch einer Position steht und 1cm in die Richtung bewegt dreht sich j6 nicht um 360° und stattdessen wird rot angepasst. Wie macht die das?


    Thx
    Marc

    Ah. Das half :)


    Weisst du auch wozu der Protokoll Parameter ist? Ich kann da zwischen non-procedural (0), procedural (1) und data link umschalten (2). Für (1) gibt es kaum docu wie ich das sehe. Da gibt es in der r3 protocol beschreibung eine zeichnung in welcher reihenfolge da was gesendet werden muss, aber wieviel bytes das jeweils sind steht da nicht. Jedenfalls, wenn ich port 10003 auf com3: mappe, kann ich damit einen getrennten stream aufbauen - das ist vielleicht noch besser als meine eigenen Ausgaben in den r3 stream reinzuwurschteln. Wenn ich mich also parallel zu 10003 verbinde mit einem zweiten putty funktioniert das auch - egal ob ich als protokol 0 oder 2 setze. Wozu gibt es dann diese Protokoll-Angabe-Option?


    Thx :)
    Marc

    Hi !


    Ich würde gerne über das r3 Protokoll Melfa Basic Befehle auf dem Roboter ausführen und deren Ausgabe zum pc zurückgeliefert bekommen. Mein bisheriger Versuch dazu sieht wie folgt aus: Ich habe mich mit Putty zum Roboter verbunden und folgendes eingegeben:


    1;1;OPEN=
    1;1;CNTLON
    1;1;EXECOPEN „COM2:“ AS #1 // soweit ich das verstehe, mappt COM2: auf die Ethernet Verbindung die auf Port 10001 horcht, welche die ist an die ich Putty verbunden habe
    1;1;EXECPRINT #1,“hallo“


    Alle Zeilen werden mit QoK oder Qok (mal kleines mal großes K ?!?) quittiert. Beim letzten Befehl erscheint jedoch kein hallo im Terminalfenster, nur Qok. Stattdessen fängt der roboter aber an zu piepen und erscheint die meldung in der Teachbox dass der Com Port nicht offen wäre.


    Wie stelle ich das an? Ich bin laut der Doku nicht mal sicher ob man zusätzlich irgendwelche Ausgaben in diesen r3 stream vom Roboter aus einbauen kann. Evtl. muss ich parallel zur r3 Verbindung noch eine Data Link Verbindung aufbauen und dort die Zeichen durch schicken? Was meint/wisst ihr?

    Hmm, wie erkennt man aus der Doku ob ein Befehl sofort ausgeführt wird oder ob gewartet wird bis der davor vorbei ist?


    Bei z.B.


    Code
    MOV P1
    MOV P2


    wartet er ja auch bis er P1 erreicht hat. Bei deinem Zuweisungsbeispiel nicht.


    Zuweisungen sofort, Befehle warten? Ist das immer so?


    Ich werde das nächste Mal mal probieren ein dly 0.02 zu requesten nach einem MOV. Mal schauen ob er dann blockiert bis er da ist.


    Ich werde auch aml beim support diese Schnittstellendocu anfordern.

    Also ich habe keinerlei Installationscd oder sowas. Als der roboter geliefert wurde und ich den Lieferanten ansprach dass ich eine Steuermöglichkeit vom PC aus brauche und dass das so abgesprochen war machte der seinen Laptop an und kopierte mit ein "Setup für RT ToolBox2 English" und u.a. ein Dir "Utility\MelfaRXM\MELFA CRn-500CRn-700 series Communication middleware.msi" Letzteres installiert ein ActiveX Control dass man in VB, C++, C# etc. in sein Fenster clicken kann. Es hat ein paar Methoden wie Servo an un Servo aus und am wichtigsten aber Request. Da gibt es dann eine Menge Request Nummern und eine Davon ist 111: Direct Execute wo ich einfach Melfa Befehle einzeln abschicken kann als String und der Roboter führt sie direkt aus.


    Wie ist dass denn wenn man ein Programm in den Roboter selbst schreibt? Ist da ein MOV auch nciht blockierend? er macht sofort weiter? Wie fragt man da den Status ab? Wenn man mit der Statusabfrage Pollen kann ob der Befehle durchgeführt ist könnte ich dasselbe vermutlich auch vom PC aus durch das ActiveX Control machen.


    Unabhängig davon: Gibt es noch andere öffentlich bekannte Möglichkeiten den Roboter Fernzusteuern? Dieses RT Toolbox Programm kommuniziert ja auch mit dem Roboter, aber das ActiveX Control sucht man dadrin vergebens ...

    Hi !


    Ich steuere einen 6 Achsen Melfa mittels dem Melfa Active X Control von C++ aus. Dazu verwende ich größtenteils einfach den Request 111: Direct Execute und schicke einen MOV Befehl nach dem anderen zum Roboter.


    Wenn ich die Befehle zu schnell sende, queued der Roboter diese nicht sondern liefert die Fehelrmeldung dass das nicht geht solange ein anderen Befehl noch ausgeführt wird. gibt es eine Möglichkeit mitzubekommen wann die Befehlsausführung beendet ist? Momentan warte ich 3 sek nach jedem Befehl, aber ich denke es ginge oft schneller + das funktioniert schlecht wenn man den Roboter zur Entwicklung per OVRD auf Slow Motion stellt.


    Vielen Dank im Voraus :)
    Marc

    Nein, da stehen 8 Werte in der Klammer. Aber Zusatzachsen hat er keine. In der Docu stand halt "joint type" wäre eine klammer mit 8 Werten.


    Ich habe es gerade mal mit nur 6 Werten in der Klammer probiert. Sowohl mit + als auch mit * kommen auch da syntax error :/

    Hi !


    Ich habe einen Melfa 6 Achsen Roboter. Ich versuche gerade den Roboter relativ ein Stück um einen Joint zu drehen. Zur relativen Positionsänderung funktioniert ja:


    MOV P_CURR * (1, 0, 0, 0, 0, 0)


    Jetzt dachte ich sowas


    MOV J_CURR * (1, 0, 0, 0, 0, 0, 0, 0)


    würde genau das machen was ich will, nämlich 1° um J1 drehen, aber es kommt syntax error.


    MOV J_CURR + (1, 0, 0, 0, 0, 0, 0, 0)


    liefert auch syntax error.


    Wie geht es richtig?


    Vielen Dank im Vorraus
    Marc