Brauche Hilfe bei RelTool-Syntax

  • Hallo Roboterexperten! Ich besuche zur Zeit die Technikerschule und bin gerade mitten in meinem Abschlussprojekt. In diesem Projekt muss auch eine Programmänderug in einem ABB-Roboter vorgenommen werden.
    Ich habe mich auch schon etwas in die Programmiersprache eingearbeitet.
    Ich muss einen Offset auf die Z-Achse legen (über RelTool). Dieser Offset wird in der SPS eingestellt. Jetzt habe ich folgendes Problem:


    Meine Position p20EgP7 ist als robtarget definiert.
    CONST robtarget p20EgP7:=[[1523.95,-1350.93,876.1],[0.00601,-0.719439,0.694525,0.002839],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];


    jetzt hab ich Sternchenpunkte die so aussehen (x,y,z ist gleich nur das Handgelenk ist anders)
    MoveL [[1523.95,-1350.92,876.09],[0.006401,-0.824312,0.566097,0.001807],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v50,z10,tGreifer;
    aus diesen Sternchenpunkten möchte ich einen RelTool machen auf p20EgP7 wo ich dann auf der z-Achse meinen Offset aufsetze. Die Handgelenkverdrehung müsste allerdings wie beim Sternchenpunkt bleiben. Ist so etwas möglich?
    z.B.:
    MoveL RelTool(p20EgP7,0,0,0+nEntnahmeOff),[0.006401,-0.824312,0.566097,0.001807],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09],v50,z10,tGreifer;


    Ich hoffe es ist etwas verständlich rübergekommen und würde mich sehr über eure Hilfe freuen.


    Danke schon mal im vorraus!!!

  • ANZEIGE
  • Hallo Strango,


    so ganz hab ich es ja nicht verstanden aber ich erklärs mal nach meinem Verständnis:
    Um einem Punkt die Orientierung eines anderen zu geben kannst Du einfach erst mal nur die Orientierungen zuweisen. p20EgP7_1.rot := p20EgP7.rot (geht auch mit den anderen Teilen des robtarget)
    XYZ bleibt dabei gleich. Mit den *-Punkten wird as aber vermutlich nicht gehen (habs noch nicht probiert), die Punkte sollten schon als PERS deklariert sein das machts auch besser nachvollziehbar.
    Mit der Z-Achse meinst Du ja wahrscheinlich die vom Tool. Dein Bewegungsbefehl müßte dann etwa so aussehen:
    MoveL RelTool(p20EgP7_1,0,0,nEntnahmeOff),v50,z10,tGreifer;


    Wenn Dir das nicht reicht bräuchte ich mehr Informationen bzw. eine genauere Erläuterung des Problems.


    Gruß
    Stromer

  • Ok das mit dem Offset hab ich soweit verstanden. Durch meine Programmänderung soll es einen Teachmodus geben, durch den der Maschinenbediender Positionskorrekturen selbstständig in bestimmten Grenzen von 0 bis 200 wobei der Wert 100 dem Ausgangspunkt z.B.: p20EgP7 entspricht über die Visualisierung(SPS) vornehmen kann (ohne das die einzelnen Punkte z.B.: p20EgP7 neu geteached werden mussen). Leider macht das Programm nachdem es auf den fine-Punkt gefahren ist noch eine Rotation im Handglenk hab ich mal lila markiert (wenn ich das so richtig verstanden habe) :)
    Die ersten drei Werte (grün) sind die selben wie in dem Punkt p20EgP7 jetzt dachte ich mir, wenn ich den fine-Punkt mit einem Offset versehe muss ich ja auch irgendwie diese *-Punkte mit Offsets versehen. Da die x,y,z-Werte der *-Punkte genauso sind wie beim p20EgP7 wollte ich sie auch in reltools des punktes p20EgP7 umwandeln (mit dem hintergedanken das wenn p20EgP7 mal umgeteached werden muss dann automatisch auch die *-Punkte stimmen (zumindest x,y,z). Jetzt haben diese *-Punkte aber eine andere Rotation des Handgelenkes im Vergleich zu p20EgP7 und diese muss ich unbedingt erhalten. Genau an diesem Punkt bin ich mit meinem Wissen schon am Ende. Hab mal den alten und den neuen Programmcode angehängt. Ich weiß ist alles sehr verwirrend!


    Der alte Programmcode sah so aus (hab ich nur auskommentiert):
    !FirstMove p20VP,v200,z10,tGreifer;
    !Set doGrModulDreht;
    !MoveL RelTool(p20EgP7,1,0,-100),v600,z10,tGreifer;
    !MoveL p20EgP7,v40,fine,tGreifer;
    !MoveL [[1523.95,-1350.92,876.09],[0.006401,-0.824312,0.566097,0.001807],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v50,z10,tGreifer;
    !WaitTime 4;
    !Reset doGrModulDreht;
    !MoveL [[1523.95,-1350.92,876.09],[0.00582,-0.673984,0.738716,0.003214],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v50,z10,tGreifer;


    und das hab ich daraus gemacht:


    check_Entgroff;
    FirstMove p20VP,v200,z10,tGreifer;
    Set doGrModulDreht;
    IF diTeachmod=1 THEN
    MoveL RelTool(p20EgP7,1,0,-200+nEntgrateOff),v600,z10,tGreifer;
    Set doQuittpos;
    WHILE diQuittpos=0 AND diTeachmod=1 DO
    check_Entgroff;
    MoveL RelTool(p20EgP7,0,0,-100+nEntgrateOff),v40,fine,tGreifer;
    ENDWHILE
    Reset doQuittpos;
    Reset doGrModulDreht;
    ELSE
    !Produktion
    MoveL RelTool(p20EgP7,1,0,-200+nEntgrateOff),v600,z10,tGreifer;
    MoveL RelTool(p20EgP7,0,0,-100+nEntgrateOff),v40,fine,tGreifer;
    MoveL [[1523.95,-1350.92,976.09-nEntgrateOff],[0.006401,-0.824312,0.566097,0.001807],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v50,z10,tGreifer;
    WaitTime 4;
    Reset doGrModulDreht;
    MoveL [[1523.95,-1350.92,976.09-nEntgrateOff],[0.00582,-0.673984,0.738716,0.003214],[-1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v50,z10,tGreifer;
    ENDIF
    ! Hilfsabfrage zum Teachen
    IF FALSE THEN
    MoveL p20EgP7,v40,fine,tGreifer;
    ENDIF

  • Hallo Strango,


    wenn so wie ich das jetzt verstanden habe, willst Du den geteachten Punkt p20EgP7 in Werkzeug-Z-Richtung verschieben, ohne neu zu teachen und ohne den Originalpunkt zu verändern.
    Wenn das soweit richtig ist, dann verstehe ich aber nicht, was Du mit den *-Punkten machst. Durch den RelTool hast Du doch schon was Du brauchst. Die SPS schickt den Wert fürden nEntgrateOff und der RelTool Verschiebt die Roboter-Position. Die Originalposition bleibt dabei unverändert.


    MoveL RelTool(p20EgP7,1,0,-200+nEntgrateOff),v600,z10,tGreifer;
    MoveL RelTool(p20EgP7,0,0,-100+nEntgrateOff),v40,fine,tGreifer;
    MoveL RelTool(p20EgP7,0,0,nEntgrateOff),v40,fine,tGreifer;


    Damit nähert sich der Robbi aus Z-Richtung dem Endpunkt+Offset an. Wenn Du die Position korrigieren willst, musst Du einen MoveL mit der Position ohne Reltool programmieren.


    Gruß
    Stromer

  • Hallo Stromer,


    danke für deine schnelle und gute Hilfe! Manchmal verliehre ich einfach den Überblick und verlaufe mich in einem Problem. Ich schätze das kommt davon wenn man zulange vorm Rechner sitzt! ;)
    Sonntag werde ich bei meinem Auftraggeber eine erste Inbetriebnahme machen, bin deshalb auch etwas nervös.


    Nochmals tausend Dank


    Gruß strango

    Einmal editiert, zuletzt von strango ()

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