Unterschied Doppelpunktoperator und Addition

  • Hallo zusammen,

    leider bin ich noch nicht solange bei der „tieferen“ Programmierung mit dabei.


    Ich muss Teile beschriften und möchte die Startposition durch einen Offset verschiebbar machen.


    Dies habe ich nun mit dem Doppelpunktoperator gelöst:(Vektoraddition)



    LIN xStartpos:pOffset


    Dabei kann ich die E6POS pOffset mit der SPS beschreiben.



    Wenn ich nun den Vektorrechner von Orange Edit nehme und pOffset z.B. X 55 eintrage wird nicht nur bei X etwas verändert sondern auch bei Y,Z,A,B,C.

    Weshalb ist das so?


    Wäre die Position die gleiche wenn:


    xStartpos.X=xStartpos.X+55

    LINxStartpos


    angefahren wird?



    Hierbei wird ja tatsächlich nur X geändert.



    Vielleicht kann mir das einer erklären.



    Vielen Dank und freundliche Grüße

  • Schritt für Schritt zum Roboterprofi!
  • Vielleicht hilft das ja schon mal weiter:


  • Bei der Doppelpunktoperation handelt es sich um eine Matrixmultiplikation und bei dieser Multiplikation muss die Reihenfolge eingehalten werden, da nicht kommutativ (gibt aber auch Ausnahmen):

    A*B ungleich B*A



    LIN xStartpos:pOffset

    wie schaut denn dein pOffset aus?



    xStartpos.X=xStartpos.X+55

    schaut für mich vernüftiger aus.


    Liefere uns doch bitte mal das konkrete Beispiel, dann können wir das untersuchen und auch das Problem erklären bzw. die Ursache finden

  • Tool und Basis sind beide nicht geteacht.

    Sprich X,Y,Z,A,B,C sind 0.


    Auch wenn ich bis jetzt noch nichts verstehe, ist der Doppelpunktoperator richtig oder nicht?


    Die Änderung der anderen Koordinaten scheint von der Rotation A,B,C zu kommen.



    Nachtrag: pOffset


    DECL E6POS pOffset


    Berechnung.src


    pOffset.A=0
    pOffset.B=0
    pOffset.C=0
    pOffset.X=iOffset_Tiefe
    pOffset.Y=0
    pOffset.Z=iOffset_Hoehe




    //Dann im Programm die anzufahrende Position



    LIN XStartpos:pOffset

    Einmal editiert, zuletzt von florett ()

  • Leider nein.

    Tool und Basis sind beide nicht geteacht.

    Sprich X,Y,Z,A,B,C sind 0.

    deine Aussage ist leider falsch!

    Wenn Tool und Base nicht geteacht (angegeben ist), dann ist das Frame oder e6pos nicht definiert und Rückgabewert wäre {E6POS:}


    Bitte Beispiele bringen

  • Ok.

    Tool und Base sind nicht getacht aber sie sind angegeben.

    Werte:

    BASE_DATA[1]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}

    TOOL_DATA[1]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}


    Die Position die ich in X und Z manipulieren möchte:

    DECL E6POS XStartpos={X 529.990,Y -34.7600,Z 407.010,A 0.0,B -24.1200,C 180.000,S 2,T 10,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    DECL FDAT FStartpos={TOOL_NO 1,BASE_NO 1,IPO_FRAME #BASE,POINT2[] " "}


    ich hoffe das genügt :)

  • Der Doppelpunktoperator ist einfach gesprochen die Multiplikation zweier Matrizen:

    m = m1*m2 (Reihenfolge darf nicht vertauscht werden; außer bei Einheitsmatrix)


    mit Doppelpunktoperator würde hier geschrieben:

    m = m1:m2


    Da dein pOffset als A= B = C = 0 hat, heißt das, dass bei pOffset als Rotatationsmatrix eine Einheitssmatrix steht und somit keine Orientierungsänderung stattfindet, deine Werte werden auf das

    XStartpos angewendet und bewirken daher eine nicht gewünschte Verschiebung (B und C ungleich 0)


    DECL E6POS XStartpos={X 529.990,Y -34.7600,Z 407.010,A 0.0,B -24.1200,C 180.000,S 2,T 10,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    mit

    XStartpos.x = XStartpos.x + pOffset.x und

    XStartpos.z = XStartpos.z + pOffset.z


    sollte es funktionieren, da hier im Gegensatz zum Doppelpunktoperator die Orientierung von XStartpos keine Rolle spielt


    Kurz zusammengefasst:

    Doppelpunktoperator multipliziert nicht nur die Rotationsmatrizen, sondern bezieht auch die korrigierten Offsets mit ein


    die direkte Zuweisung (z.B. XStartpos.x = XStartpos.x + pOffset.x) addiert diese in die tatsächliche Richtung auf

  • Vielen Dank

    Das hilft mir schon mal weiter.


    Mich verwirrt nur die Tatsache das für Offsets der geometrische Operator oft verwendet wird.

    Auch z.B. um Vorpositionen wie anzufahren.


  • Der Offset bzw. der geometrische Operator in deinem Beispiel bezieht sich auf das Tool.

    LIN xStartpos:pOffset

    Abhängig davon, wie dein Tool auf der xStartpos orientiert ist, ändert sich dann logischerweise nicht nur die X-Koordinate der Position.


    Versuch es mal mit LIN pOffset:xStartpos. Somit bezieht sich der Offset auf die Base und dann sollte das Ganze schon anders aussehen.

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