Triggerbefehl bei externer Linearachse

  • Servus Miteinander



    Ich muss im Rahmen meiner Uniarbeit für Versuche die Anlage mit Roboter und externer Linearachse neu programmieren. Das funktioniert soweit ganz gut. Allerdings stoße ich momentan auf das Problem, das der Triggerbefehl nicht so funktioniert wie ich das will.


    Ich will einen Punkt mit dem Roboter anfahren, an diesem verweilen und während der Verweilzeit möchte ich die Linearachse bewegen. Während die Linearachse sich bewegt, möchte ich am Punkt 200, das sich das Schweißgerät einschaltet. Wird der Punkt 100 erreicht soll sich die Schweißanlage abschalten. Selbiges gilt für den Abzug, deshalb zwei Trigger. Die Linearachse verfährt auch entsprechend, leider werden die Ausgänge nicht geschaltet.


    Was mache ich falsch? Wer kann mir helfen?


    Ich bin für jegliche Hilfe und Ansatzpunkt sehr dankbar.



    ;FOLD 'Linearachse positionieren und verfahren'
    $ASYNC_AXIS = 'B1'
    VEL_EXT_SET(5)


    ASYPTP {e1 345}


    ;FOLD 'Startpunkt'
    PS = FRMADD2(Point1, FRMADD(0,-100,0,0,0,0))
    LIN PS
    yEin = 200
    yAus = 100


    TRIGGER WHEN PATH = yEin DELAY = 0 DO $OUT[26]=TRUE
    TRIGGER WHEN PATH = yEin DELAY = 0 DO $OUT[41]=TRUE


    TRIGGER WHEN PATH = yAus DELAY = 0 DO $OUT[26]=FALSE
    TRIGGER WHEN PATH = yAus DELAY = 0 DO $OUT[41]=FALSE


    ASYPTP {e1 -165}
    $ASYNC_AXIS ='B0'
    $VEL.CP = VelPRE / 60
    $ACC.CP = 0.3
    ;ENDFOLD

  • Schritt für Schritt zum Roboterprofi!
  • Du kannst doch deinen Eingang nicht mit 100 oder 200 beschreiben.


    ich würde mit bahnbezogenen Schaltaktionen arbeiten


    ptp .....


    TRIGGER WHEN DISTANCE = 100 DELAY=0 DO $OUT[1]=TRUE
    TRIGGER WHEN DISTANCE = 200 DELAY=0 DO $OUT[1]=False

  • Ein Ansatzpunkt:


    Kann leider Deinen Auszug nicht komplett deuten, aber wenn 345 Dein Startpunkt und -165 Dein Endpunkt ist und der Trigger sich auf den Endpunkt bezieht und "PATH=" ein relatives und kein absolutes Maß, mit negativ=Schaltpunkt_vor_Endpunkt und positiv=Schaltpunkt_nach_Endpunkt ist, dann würde Dein erster Trigger NACH dem Endpunkt bei der Koordinate -265 (yAus=100) schalten, sofern noch ein weiterer Punkt in der selben Richtung angefahren wird.


    Wie geschrieben, ohne Gewähr, nur ein Denkansatz.


    Viel Erfolg, Stefan

  • Wenn Du den aktuellen Wert der Linearachse auslesen kannst, deklarier $cycflag's das du zum auslösen eines Interrupts benutzt.


    z. B. $cycflag[10] = (Achswert > Sollwert1)
    $cycflag[11] = (Achswert > Sollwert2)


    DECL INTERRUPT 10 WHEN $cycflag[10] DO Interruptprogramm1 () PRIO=-1
    DECL INTERRUPT 11 WHEN $cycflag[11] DO Interruptprogramm2 () PRIO=-1


    oder


    DECL INTERRUPT 10 WHEN $cycflag[10] DO variable1=wertX
    DECL INTERRUPT 11 WHEN $cycflag[11] DO variable2=wertY
    bei variable ohne prio..

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