POS_ACT in Interrupt auswerten

  • Hi,
    habe hier ein kleines Problem mit einer Aufgabenstellung (KRC4 / KSS8.5):
    Wir wollen während der Fahrt (Relativbewegung in Z) 2 Positionswerte erfassen, und dann ausrechnen wie weit diese voneinander entfernt sind. Programmausschnitt unten. Im prinzip sagt uns ein Laser Taster sobald er etwas sieht, bzw sobald er nichts mehr sieht. Mit diesen Ereignissen triggern wir die Datenspeicherung. Herauskommen sollte die Z Abmessung des Teils.
    Leider bekommen wir meistens 0 heraus (h1 und h2 haben den gleichen Wert).
    Das kann sein weil:
    die Interruptereignisse nicht richtig kommen (Taster "prellt" an der Kante)
    oder $POS_ACT wird nicht schnell genug aktualisiert (müsste dann bei langsamer Fahrt besser gehen... tut es aber nicht)
    oder die Interrupts werden nicht richtig ausgelöst (darf man einen anderen Interrupt in einer Interrupt routine scharf schalten?? Passt das so?)
    Bitte schaut euch das mal an, freue mich über Tipps :)
    lg, Dominik
    DEF main()
    .....
    $VEL.cp=0.2
    wait sec 0
    INTERRUPT on 20

    LIN_REL{z 200} #base


    wait sec 0
    interrupt off 21
    $VEL.cp=2


    result=h2-h1
    .....
    DEF interrupt1()


    h1=0
    wait sec 0
    h1=$POS_ACT.z
    Interrupt on 21


    END


    DEF interrupt2 ()


    interrupt off 20
    h2 = 0
    wait sec 0
    h2=$POS_ACT.z


    END

  • Schritt für Schritt zum Roboterprofi!
  • Danke für die Antworten, POS_INT hatte ich komplett verdrängt ^^
    Wieso ist ein Vorlaufstopp hier "schädlich"?
    Macht er irgendwo im Programm Sinn, oder soll ich alle entfernen?


    lg

  • Danke an alle, es lauft jetzt super!
    um den Laser Taster zu entprellen musste ich in der einen Interruptroutine den anderen Interrupt einschalten.
    Das Problem war, dass der Interrupt ja erst nach einer Zykluszeit scharf wird. Das habe ich dann mit wait sec 0.012 gelöst.
    Das Messergebnis ist vielversprechend.


    lg

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