SYNOUT - Problem

  • Hallo zusammen!
    Anbei eine Frage zum unten stehenden Code. Leider war ich heute Zeuge eines ungewollten Kontaktes zwischen einem Handling und einem KUKA bei einem Traywechsel. Bis auf nen Kratzer ist alles gut gegangen! Flink den Not-Halt gedrückt... :roll:


    Bei einer freien Position in einem Tray rufe ich das selbe Programm so häufig auf, bis ich ein Bauteil gefunden und gegriffen habe.


    Dabei ist aufgefallen, dass das Signal "DO_FREIGABE_BEREICH_1" bei mehrfachem Aufruf gesetzt bleibt, obwohl dieses so nicht programmiert gewesen ist...


    $ADVANCED = 1
    ...
    PTP VOR_BEREICH_1 CONT
    WAIT FOR DI_FREIGABE_BEREICH_1 CONT
    SYNOUT DO_AUS_BEREICH_1 STATE = FALSE AT START DELAY = 0
    ;HIER BAUTEILENTNAHME, WENN BAUTEIL GEFUNDEN...
    SYNOUT DO_AUS_BEREICH_1 STATE = TRUE AT END DELAY = 0
    PTP AUS_BEREICH_1 CONT


    Abhilfe habe ich mir erstmal so geschaffen:


    $ADVANCED = 1
    ...
    PTP VOR_BEREICH_1 CONT
    WAIT FOR DI_FREIGABE_BEREICH_1 CONT
    OUT DO_AUS_BEREICH_1 STATE = FALSE CONT
    ;HIER BAUTEILENTNAHME, WENN BAUTEIL GEFUNDEN...
    PTP AUS_BEREICH_1
    OUT DO_AUS_BEREICH_1 STATE = TRUE


    Funktioniert natürlich... Finde diesen Genauhalt nur nicht sooo schön...
    Jemand eine Erklärung für das Verhalten mit obigen Code? :nocheck:

    Einmal editiert, zuletzt von rob.target ()

  • Schritt für Schritt zum Roboterprofi!
  • ...hallo, nur als tip am rande, solche bereichssignale würde ich immer über arbeitsräume schalten lassen, die funzen dann selbst wenn der rob von hand in den bereich gefahren wird!

  • Hallo Titan, vielen Dank für den Tip. :supi:


    Diese Möglichkeit kenne ich natürlich und entscheide mich bewusst dagegen . Das soll in dieser Sache auch nicht zu einer Diskussion führen (Pro/Contra).



    Mir geht es nur um das beschriebene Verhalten. Meine Vermutung ist mittlerweile, dass die Triggerereignisse mit unterschiedlicher Prio in der KRC ausgeführt werden. Zudem haben in diesem Fall die Positionen VOR_BEREICH_1 und AUS_BEREICH_1 die gleichen Koordinaten. Möglicherweise führt das alles in der Steuerung zu einem anderen Verhalten als von mir angenommen und ursprünglich programmiert.


    Dabei ist aufgefallen, dass das Signal "DO_FREIGABE_BEREICH_1" bei mehrfachem Aufruf gesetzt bleibt, obwohl dieses so nicht programmiert gewesen ist... :nocheck:


    Das sollte natürlich auch "DO_AUS_BEREICH_1" heißen...

  • Servus,
    Das Problem kenne ich. Bei CON wir der Mittelpunkt des Überschleiradius verwendet.
    Würde mal probieren noch einen Hilfspunkt auf der Bahn zu setzen, der kurz vor deinem Punkt ist.
    Dann dürfte es besser werden.
    $ADVANCED = 1
    ...
    PTP VOR_BEREICH_1 CONT
    WAIT FOR DI_FREIGABE_BEREICH_1 CONT
    SYNOUT DO_AUS_BEREICH_1 STATE = FALSE AT START DELAY = 0
    ;HIER BAUTEILENTNAHME, WENN BAUTEIL GEFUNDEN...
    ;Hier nochmal Hilfspunkt setzen auf der Bahn und evtl. dann noch Überschleif ganz klein machen
    $APO.CPTP=5
    PTP AUS_BEREICH_1_HP CONT ;=>Hilfspunkt
    SYNOUT DO_AUS_BEREICH_1 STATE = TRUE AT END DELAY = 0
    PTP AUS_BEREICH_1 CONT

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