Überschleifen von Unterprogramm zu Unterprogramm

  • Hallo zusammen,


    ich würde gerne den letzten Bewegungsbefehl eines Unterprogrammes überschleifen damit der Roboter am Ende eines Unterprogrammes nicht stehen bleibt wenn er die erste Bewegung im nächsten Unterprogramm ausführt. Ich habe schon probiert den Überschleifdistanz auf den Wert "1" zu setzen aber er bleibt immer bei der letzten Bewegung kurz stehen und führt dann die nächste Bewegung des nächsten Unterprogrammes aus. Was ich herausgefunden habe das er an dem Punkt wo er das Überschleifen der Bewegung startet er kurz stoppt. Habe auch schon bei allen was ein Vorlaufstop auslösen könnte ein CONTINUE davorgeschrieben aber


    Habe eine KRC4 Steuerung mit KKS8.7.3 Version


    Ich hoffe Ihr könnt mir helfen .


    Programmcode am Ende des Unterprogrammes:

    Programmcode vom Anfang des nächsten Unterprogrammes:

  • Schritt für Schritt zum Roboterprofi!
  • Startet dein UP mit einem INI-Fold? Dann den bitte rausnehmen. Enthält Vorlaufstoppende Anweisungen. Ist meistens der Grund für dein Problem und findet sich wahrscheinlich schon x-Mal hier im Forum. Evtl. auch noch ein IF drum wenn du den INI-Fold in gewissen Situationen doch willst.


    CONTINUE bezieht sich immer nur auf Anweisungen direkt in der nächsten Zeile. Die Aufrufe vom BAS bestehen aber aus vielen Zeilen. Du bekommst es so wie du es machst nicht über das ganze BAS. BAS sind UPs.


    Irgendwie so


    IF considerBas THEN

    BAS(...)

    ENDIF


    Generell: Tool und Base zu wechseln löst aber eigentlich keinen Vorlaufstop aus. Einzige Aussnahme ist Toolwechsel mit gleichzeitig verbundenen Lastwechsel und absolutgenauem Roboter. Kannst du also auch eindampfen zu


    $BASE = $NULLFRAME

    $TOOL = TOOL_DATA[1]

    $LOAD=LOAD_DATA[1]


    Fubini

    5 Mal editiert, zuletzt von fubini ()

  • Danke für deine Antwort.


    Die INI Zeile habe ich nicht drin. An sich funktioniert auch der Sprung in das nächste Unterprogramm mit einem Vorlauf vom eingestellten Wert "3". Sehe ich im Debugging.


    Nur bei der letzten Bewegung bleibt er an der Stelle kurz stehen wo der Sart der Überschleifung beginnt. Der Vorlaufzeiger ist bei der letzten Bewegung im vorherigen Unterprogramm schon im nächsten Unterprogramm.


    Wenn ich z.B. den Überschleifwert auf den Wert "500" einstelle , fährt er in der letzten Bewegung bis zu dem Punkt wo die Überschleifung startet, hält kurz, fährt die Bewegung zu Ende und geht ohne zu stoppen nahtlos in die 1.Bewegung vom nächsten Unterprogramm über.

  • Das ist ein Indiz für Überschleifen nicht möglich. Was sagt denn $Stopnoaprox? Funktioniert das Überschleifen dieser Sequenz wenn keine UP-Grenze dazwischen ist.

    Fubini

    Das Überschleifen hat ohne UP-Grenze auch nicht funktioniert. Habe den Punkt gelöscht und neu angelegt. Funktioniert jetzt endlich :)

  • Hallo Culater68,


    du manipulierst die Variable $Advance. Das ist die Einstellung, die das überschleiffen einstellt. Jetzt kannst du nicht die Grundeinstellung manipulieren und gleichzeitig erwarten, dass die Aufgabe erfüllt wird. Das wäre wie ein Rad an-/abzubauen und gleichzeitig zu erwarten , dass das Auto noch fährt.


    Die Lösung:

    In deinem Unterprogramm brauchst du keine Vorlaufmanipulation. Bei dir würde es reichen Zeile 3-8 zu löschen. Die Basisparameter bzw. die klassische INI Zeile bei KUKA hast du wahrscheinlich schon in deinem Hauptprogramm durchlaufen.


    Wenn du deine selbst deklarierten Variablen manipulierst, brauchst du in der Regel kein Continue davor.

  • Warum soll man etwas löschen was man benötigt?

    Macht natürlich keinen Sinn, aber der nächste Bewegungsbefehl ist so ein sagenhafter Standard Fold, da werden alle Parameter sowieso gesetzt, also kann man zumindest bis Zeile 7 alles löschen.

    Dem kann ich nicht zustimmen...könnte auch ein signal sein....

    Signalvereinbarungen würde ich nicht als Variable bezeichnen ;)

  • Also wir hatten das damals (2019) bei Kuka in der Schulung so gemacht:


    DEF Unterprogramm1

    .....

    CONTINUE
       PTP Nachpos1

    END


    DEF Unterprogramm2

    CONTINUE

       PTP Nachpos1

    ....

    END


    Es musste PTP und nicht SPTP benutzt, und soweit ich mich erinner ein Continue über beide geschrieben werden. Ich meine mich auch zu erinnern, dass es GENAU die selben Positionen sind.
    Hatten das damals mit der Homeposition gemacht.
    Ob das immer noch funzt, bzw orginell ist, kann ich nicht sagen.

  • Das macht ja gar kein sinn….


    Was man nicht machen sollte ist PTP und SPTP mischen….

  • Jo, schön ist es echt nicht.
    Aber wie gesagt, haben wir in der Schulung so gemacht...
    Da hatten wir auch SPTP und PTP gemischt :/


    Trotzdem gut zu wissen, dass es kappes ist ;)

    Ja hab echt keine Ahnung wieso ihr das gemacht habt…vorallem zu welchen zweck….


    Es kommt zu einem Fehler wenn man das mischt …weiß jetzt auch nicht mehr welche Fehlermeldung da kommt…sollte aber auch in deiner Schulung vorgekommen sein 😁


    Bei kuka gibt es immer so mysteriöse Dinge….genau so wie das überschliefen…bei spline nimmt man SPL ….alle Programme laufen bei mir mit C_DIS 😂

  • Es kommt zu einem Fehler wenn man das mischt

    Nein. Überschleifen ist halt nicht möglich.


    bei spline nimmt man SPL ….alle Programme laufen bei mir mit C_DIS

    c_spl und c_dis sind bei spline synonym. Aber wie die Kriterien angewandt werden ist unterschiedlich. Steht in der Doku wurde aber auch hier schon mehrfach erklärt. Einfach mal die Suche bemühen


    Fubini

  • Höchstens wenn $stopnoaprox auf true ist. Das sollte man aber nur zur Diagnose anschalten. Welche meldung kommt denn?

    Die variable kenn ich …das kann ich ausschließen!

    Das war das letzte mal im Sommer als das bei uns vorkam und war jetzt kein Einzelfall. Ich weiß das halt weil wenn mein Kollege ein neuer bewegungspunkt per ILF einfügt und das nicht auf PTP umgestellt hat.


    Zum Testen hab ich erst wieder in kw 3 ein Roboter

  • Warum soll man etwas löschen was man benötigt?



    Dem kann ich nicht zustimmen...könnte auch ein signal sein....

    wenn du das Programm dir anschaust, wirst du sehen, dass du die Ini Falte in einem UP nicht erneut benötigst. Im HP einmal durchlaufen reicht.


    Signal != Variable


    Meine Aussagen stehen und sind so für diesen Fall technisch richtig :-).

  • Du benötigst leider beim KUKA diese Initialisierung wenn du das jeweilieg UP manuell direkt aufrufst.

    Beim Ablauf in Automatik ist dies ja in der Cell, oder dem jeweiligen gewählten Hauptprogram, schon passiert.


    Aus dem Grund wird der durchlauf dort ja nicht benötigt und führt ja zu diesem Stop.



    Wir klammern das immer mit dem IF $T1 THEN aus, natürlich mit einem vorgelagertem CONTINUE. ;)

    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!

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