Positionierung via ProfiNet nur einzelne Komponente(z.B X)

  • Hallo!


    ich beschreibe via ProfiNet eine E6Pos


    Direkt programmiert kann ich ja einfach schreiben

    Code
    SLIN { X 1200}

    aber wenn ich folgendes schreibe sind ja alle anderen komponenten Y,Z,A,B,C gleich 0 und er fährt ganz anders als gewünscht

    Code
    pos.X=IN_PositionsvorgabeX
    SLIN pos


    Gibt es eine Möglichkeit das zu umgehen?


    Ich hätte auch überlegt

    Code
    pos.Y = $POS_ACT.Y
    pos.Z = $POS_ACT.Z

    etc zu schreiben, allerdings hab ich beim überschleifen das problem das in $POS_ACT noch nicht die richtige position steht da der vorlauf ja schon abfragt wenn die endposition noch gar nicht erreicht wurde.


    Danke

  • Schritt für Schritt zum Roboterprofi!
  • Also ich mache das immer mit einem unterprogramm...


    SLIN Trans(IN_PositionsvorgabeX,0,0,0,0):Meinepos


    und wenn ich selbst schon was verschiebe dann gehts auch so


    SLIN Trans(40+IN_PositionsvorgabeX,0,0,0,0):Meinepos

  • Die geteachte Position ist in Meinepos...


    Trans ist ein Frame für X Y Z A B C der dann mit der Pos verrechnet wird

    ok!

    Ich habe aber keinen geteachten punkt mit dem ich rechnen kann, ich will einfach auch einzelne Komponenten anfahren können

  • Code
    0
    
    1    position.Z = -2000
    
    2    SLIN position
    
    3    position.X = -300
    
    4    SLIN position

    In zeile 0 Steht in der variable position {E6POS:}

    In zeile 1 Steht in der variable position {E6POS: Z -2000}

    In zeile 3 Steht in der variable position {E6POS: X-300, Z -2000}


    kann ich die variable "position" irgendwie neu initialisieren damit nichtsmehr drinnensteht? (wie in zeile 0?)


  • Apfeln und Orangen....


    Vergleiche

    Code
    SLIN {X 1200, Y 0, Z 0, A 0, B 0, Z 0}

    und

    Code
    pos=$nullframe
    pos.X=IN_PositionsvorgabeX
    SLIN pos

    und Bewegung ist daselbe da alles andere null ist.



    Verglichbar mit

    Code
    SLIN {X 1200}


    ist

    Code
    pos=$POS_ACT
    pos.X=IN_PositionsvorgabeX
    SLIN pos

  • Dein Problem ist wirklich noch tricky.

    dass in einer Variable, wo Du was reingeschrieben hast, plötzlich nichts mehr drinsteht,....

    Du solltest diesen Effekt aber erreichen können über eine lokale Definition in einem Unterprogramm. Bei jedem Aufruf wird diese neu deklariert (eröffnet).

    Übergeben und Initialisieren tust Du nur das Aggregat, was Du fahren willst. Mal so als vereinfachtes Bsp.

    Evtl. könnte man auch so eine Pos zurückgeben.

    Ist ungetestet.


    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Danke!

    Ich übergebe jetzt via profinet noch bits welche mir sagen welche komponenten überhaupt angesteuert werden sollen.


    dann mach ich im prinzip

    Code
    IF X_Komponente THEN
        pos = {X 0} ;Dadurch steht nurmehr die X Komponente im E6Pos
    ENDIF

    anschließend überschreibe ich die einfach mit IN_PositionsvorgabeX,...

    Einmal editiert, zuletzt von bf ()

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