Target-Punkte eines Pfades verschieben

  • Servus Zusammen,


    ich möchte jeden Punkt eines Pfades mit "Offs" verschieben. Gibt es eine Möglichkeit, mit der ich nicht jeden Punkt einzeln mit Offs verschieben muss?


    Stand jetzt sieht das ganze so aus:

    _________________________________________________________________________________________________________________________________________


    pAktuellePosition:=Target_25700;

    MoveL Offs(pAktuellePosition,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePosition,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    pAktuellePosition:=Target_25710;

    MoveL Offs(pAktuellePosition,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePosition,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    pAktuellePosition:=Target_25720;

    MoveL Offs(pAktuellePosition,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePosition,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    pAktuellePosition:=Target_25730;

    MoveL Offs(pAktuellePosition,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePosition,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;


    _________________________________________________________________________________________________________________________________________


    Meine Idee war es anfangs, das ganze in eine schleife zu packen, was irgendwie so ausehen sollte:


    _________________________________________________________________________________________________________________________________________


    FOR j FROM 25700 TO 28910 DO


    MoveL Offs(pAktuellePositionGNK,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePositionGNK,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;


    pAktuellePositionGNK:= 1. Target-Punkt;


    MoveL Offs(pAktuellePositionGNK,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePositionGNK,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;


    pAktuellePositionGNK:=2. Targetpunkt;


    ENDFOR

    _________________________________________________________________________________________________________________________________________


    Allerdings weiß ich bei einer Schleife nicht, wie man das ganze mit einem Platzhalter weiter führt, der Durchgang für Durchgang auf den nächsten Targetpunkt

    weiter springt.



    Mir ist eigentlich jede Lösung recht die schneller ist als meine 1. Vorgehensweise:D


    Danke schon mal:)

    Einmal editiert, zuletzt von Maritn ()

  • ANZEIGE
  • Hallo Martin,

    pack doch deine Positionen in ein Datenfeld


    PERS robtarget pAktuellePositionGNK{10} = Datenfeld eindimensional



    FOR i FROM x TO Y

    MoveL Offs(pAktuellePositionGNK{i},0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    MoveL Offs(pAktuellePositionGNK{i},0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;

    ENDFOR


    So oder ähnlich, keine gewähr auf den Syntax, prüf es einfach im Roboter. Sollte als Idee gehen.


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hallo Martin


    Brauchst nicht alle positionen mit offset definieren sondern musst du die anfangspunkt anlegen X,Y,Z koordinaten eingeben Fertig.Habe bei dir gesehen dass du immer mit -30 mm verschiebst.Bei mir ist so eine NIO ablage.7x4 Plätze.Funktioniert einwandfrei.

  • Hallo,

    Du könntest deine Bahn mit der Instruktion "PDispSet" bzw. "PDispOn" im Programm verschieben. Dabei musst Du darauf achten, dass die Verschiebung nach der Bewegung wieder mit "PDsipOff" deaktiviert wird.


    Alternativ könntest Du auch den Oframe Deines Werkobjektes anpassen.


    Gruß

    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

    • Hilfreich

    Hallo Maritn,

    wie Sven Weyer schon geschrieben hat, könntest du ein Robtarget-Array erstellen.

    Wenn du deine Robtargets aber nicht "anfassen" möchtest kannst du auch einfach über GetDataVal deine bisherigen Robtargets verwenden. Wie immer führen viele Wege nach Rom.

    Code
    VAR robtarget tmpTarget;
    
    FOR j FROM 25700 TO 28910 STEP 10 DO
        GetDataVal "Target_"+ValToStr(j),tmpTarget;
        MoveL Offs(tmpTarget,0,-30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;
        MoveL Offs(tmpTarget,0,30,0),v1000,z100,tCentralfeeder\WObj:=wTischMitBohrungen;
    ENDFOR


    Gruß Z

  • Hallo Z750,

    danke für die Info, man lernt nie aus.

    Finde die Idee sehr gut!


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hi


    Bei mir ist so mit Offset und bool kombination.

    Funktioniert auch ganz gut.

  • Vielen dank für die schnellen Antworten:S ich werde alles einmal ausprobieren.


    Hatte leider gestern ein wenig Zeitdruck und hab das ganze jetzt auf eine andere Weiße gelöst.


    Unterprogramm1 Target_25700,nSpeed,tPistoleDummy,nBreite;


    Habe für meine Targetpunkte ein kleines Unterprogramm gebastelt ^^ Rot markiert der Aufruf des Programmes und blau markiert die Infos, die das Unterprogramm benötigt.


    PROC

    Unterprogramm1 (robtarget pTargetpunkt, num nSpeed, tooldata Werkzeug, num nBreite)


    tPistoleDummy:=Werkzeug;

    vflex.v_tcp:=nSpeed;

    MoveL Offs(pTargetpunkt,0,-nBreite-30,0),vFlex,z0,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,-nBreite-25,0),v50,z50,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,-nBreite-20,0),v200,z50,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,-nBreite-15,0),v300,z50,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,15,0),vFlex,z0,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,20,0),v300,z50,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,25,0),v100,z50,tPistoleDummy\WObj:=wTischMitBohrungen;

    MoveL Offs(pTargetpunkt,0,30,0),v50,z50,tPistoleDummy\WObj:=wTischMitBohrungen;



    ENDPROC



    Ich musste es zwar bei allen Punkten ändern aber dafür gibt es ja die Funktion "Suchen/Ersetzen" :thumbup:

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