Bewegungsablauf bei "Wait For $IN" und "Trigger" Befehlern

  • Wertes Forum,


    ich möchte einem KR6 mit KR C4 Compakt Steuerung und pneumatischem Greifer zu mehr Agilität verhelfen.
    Nachfolgend ein Programmauszug:

    $ADVANCED = 3
    $APO.CDIS = 100


    LIN Greifpunkt Ablage 1
    PULSE ($OUT[111],TRUE,1)
    ;Greifer schließen
    WAIT FOR $IN[111]
    ;Rückmeldung Greiffer ist geschlossen
    LIN Vorposition 1 Ablage 1 C_DIS
    PTP Vorposition 2 Ablage 1 C_DIS
    TRIGGER WHEN DISTANCE=0 DELAY=0 DO PULSE ($OUT[1],TRUE,1)
    ;Rückmeldung an übergeordnete SPS, das mit Erreichen der HOME-Position Ablage 1 verlassen wurde
    PTP HOME C_DIS
    CONTINUE
    ;Vorlaufstop verhindern
    WAIT FOR $IN[1]
    ;übergeordnete SPS setzt Eingang 1 wenn Ablage 2 angefahren werden kann
    PTP Vorposition 2 Ablage 2 C_DIS
    PTP Vorposition 1 Ablage 2 C_DIS
    LIN Greifpunkt Ablage 2
    PULSE ($OUT[112],TRUE,1)
    ;Greifer öffnen
    WAIT FOR $IN[112]
    ;Rückmeldung Greiffer ist geöffnet


    Der Roboter soll, so mein Wunsch, nur an den Greifpunkten zum Ablegen und Aufnehmen von Material genau halten.
    Macht er aber nicht, der Halunke :grmpf:
    Es wird an der HOME-Position gehalten.


    Warum?


    Einziger mir bekannter Grund könnte die SPS sein, die Eingang 1 des Roboters noch nicht auf TRUE gesetzt hat.


    Oder gibt es noch mehr Gründe?


    der_Held

  • Schritt für Schritt zum Roboterprofi!
  • [font=arial]Vielen Dank für die Rückmeldungen.


    Stethi
    die Kommentare dienen hier der Verständlichkeit. So geschrieben, wäre es besser gewesen:
    CONTINUE ;Vorlaufstop verhindern
    [color=blue]WAIT FOR $IN[1]


    woodys
    Da bin ich mir selbst nach dem Lesen der Anleitungen nicht sicher.


    Zitat


    Feststellung:
    $APO_DIS_PTP [Achsnummer] gibt einen Maximalwinkel an, ab dem Überschliffen wird, steht in $machine.dat auf 90
    $APO.CPTP [Prozent] gibt den Prozentsatz vom Maximalwinkel an, steht in bas.src auf 100
    $APO.CDIS = 100 klappt nicht weil $APO_DIS_PTP = 90


    :huh:

  • 1. Der Programmauszug ist wieder mal kein Original, sondern abgetippt oder sonstwie manipuliert, denn die Variable heisst $ADVANCE (ohne "D"), "LIN Vorposition 1 Ablage 1 C_DIS" ist kein vernünftiger KRL-Befehl. Bitte immer den Originalcode posten. Es kommt oft auf jede Leerzeile und jedes kleinste Detail an!


    2. Wie Stethi schon sagte. CONTINUE wirkt genau auf die nachfolgende Zeile. Wenn das ein Kommentar oder eine Leerzeile ist, dann wirkt das auf eben diese Zeile, und hat damit KEINERLEI Auswirkung.


    3. $Advance=1 kann schon was bringen, wenn das Signal $IN[1] relativ spät kommt, denn wenn es erst kommt, wenn der Roboter auf dem Weg von Vorposition2 auf Home ist, dann gibt es bei $advance=3 einen Stop, bei 1 keinen.


    4. bin mir nicht sicher ob man beim WAIT FOR mit continue den Vorlaufstop verhindern kann. Da wäre ein Versuch mit

    Code
    continue
    if not $in[1] then
     wait for $in[1]
    endif


    sinnvoll.


    5. Siehe wieder 1.: Da kein Originalcode kann man nicht sehen, ob die Punkte mit Inlineformularen oder als 'Expertbefehle' programmiert sind. Evtl. findet da ein Toolwechsel mit Lastdatenwechsel statt, dann gibt es auch einen Stop.


    6. XHOME ist ein Punkt vom Typ E6AXIS, wie sich da das Überschleifen mit C_DIS verhält weiss ich nicht, evtl. C_PTP versuchen, oder einen normalen E6POS verwenden.


    Wie so oft ein Fall für die verlorene Glaskugel. :lol:

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