Frage zum Rechnervorlauf

  • Hallo zusammen,


    ich habe eine Frage bzgl. des Rechnervorlaufs und zwar liest dieser auch Bewegungssätze ein, wenn diese in einer IF-Abfrage stehen und deren

    Bedingung nicht erfüllt ist?


    Kurzes Beispiel:

    Unterprogramm 1:


    PTP P10 CONT ...... Base[1]:xxxx


    If Fall_x And Fall_y then

    PTP PSicher CONT ...... Base[6]:xxxx

    Endif


    END

    ------------------------

    Jetzt Sprung ins Unterprogramm 2 aus dem Haupt-Ablaufprogramm


    UP2:


    PTP 1 CONT ..... Base[2]:xxxx


    Hintergrund meiner Frage ist, bevor im UP1 die If-Abfrage und die PSicher eingefügt worden, war der Übergang vom UP1 P10 zum UP2 P1

    sehr flüssig, jetzt stoppt die Bewegung am Ende der PTP P10 regelrecht und fährt erst nach kurzer Verweilzeit im UP2 weiter, obwohl die

    If-Bedingung nicht erfüllt ist!

    Daher meine Frage, ob die PSicher Bewegung trotzdem eingelesen wird und oder eventuell die Änderung auf Base[6] dies verursacht?

    Die Anlage läuft leider permanent, so daß ich nicht so zum probieren komme.


    Advance ist 1

    Continue hab ich schon erfolglos versucht.

    KRC2 V5.6.8


    Viele Grüße

    explorers16

  • Schritt für Schritt zum Roboterprofi!
  • Das lesen von Eingängen ist eine Anweisung die den Vorlauf anhält und wartet bis der Hauptlauf aufgeholt hat. Erst dann wird die Bedingung ausgewertet. Willst du bereits im Vorlauf auswerten musst du ein CONTINUE davor schreiben. Dann wird aber auch die Bedingung mit dem Wert ausgewertet der in dem Moment ansteht zu dem der Vorlauf die Programmzeile erreicht.

  • hast du das "Continue" direkt OHNE Leerzeile davor geschrieben? benutzt du in der IF verweigung eine Systemvariable?


    wäre ganz gut du postest die gesamte zeile und nicht nur pseudo code



    Gruß Loipe

  • Hier der Orginalcode.


    ;FOLD PTP P10 CONT Vel=100 % PDAT4 Tool[1]:GRP 1 Base[1]:Band;%{PE}%R 5.6.13,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P10, 3:C_PTP, 5:100, 7:PDAT4

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT4

    FDAT_ACT=FP10

    BAS(#PTP_PARAMS,100)

    PTP XP10 C_PTP

    ;ENDFOLD

    CONTINUE

    If OhneMasch1 And OhneMasch2 then

    ;FOLD PTP PSicher CONT Vel=100 % PDAT3 Tool[1]:GRP 1 Base[6]:Uebergabe;%{PE}%R 5.6.13,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:PSicher, 3:C_PTP, 5:100, 7:PDAT3

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT3

    FDAT_ACT=FPSicher

    BAS(#PTP_PARAMS,100)

    PTP XPSicher C_PTP

    ;ENDFOLD

    Endif


    END

    ----------------------------


    OhneMasch1 u. 2 sind vom Typ BOOL

    Gruß explorers16

  • wenn OhneMasch1 And OhneMasch2 bools sinds sollte überschleifen so gehen.


    geht das über schleifen nicht wenn die Bedingung gegeben ist oder nicht gegeben ist oder bei beidem?


    fahr mal das Programm ab und beoabchte die Variable $PRO_IP wenn sich der SNR ändert schau nach wo er hängen bleibst.


    kannst auch die Variable $StopNoAprox auf true setzen und in T2 fahren beim Vorlauf stop gibts ne Quit Fehlermeldung dann schaust du dir $PRO_IP an


    an erster Steller steht SRC und SNR wo der vorlaufstop steht musst nur die Koppfzeilen zum SNR hinzuzählen (Also &Real &Ver zeilen oben vor der deklarationszeile)

    Einmal editiert, zuletzt von Loipe ()

  • Hallo Loipe,


    vielen Dank für die Antworten.

    Im nächsten src sollte alles OK sein, da dieses auch aus anderen Positionen her aufgerufen werden kann, ohne diese Probleme.

    Wie gesagt, das ist erst, seit diese Abfrage mit dem PSicher reingekommen ist.

    Teste morgen mal deine Vorschläge.

  • Servus,


    - alles probieren $ADVANCE auf 3

    - Inlineformular öffnen von P10 => Kontrolle ob wirklich "CONT" drinnen steht

    - Überschleifdistanz kontrollieren

    - Roboter mal neustarten (Kaltstart) (wirkt oft Wunder bei KRC2 und KRC4 ;))


    Wurde ein Punkt umgeteached?


    => evtl. ist das System durch Hintergrundanwendungen zu stark ausgelastet


    Es gibt sehr viele Möglichkeiten warum es nicht funktioniert.....


    $ADVANCE wirklich auf "1" => mit Variablenansicht kontrolliert?


    Gruß

    Martl

  • Bemerkt, dass, wenn die Letzte Bewegung der Funktion in AXIS {A1, A2..} (oder PTP_REL {A3 30} C_PTP), dann tritt beim übergang in eine neue Funktion ein Schlag auf.

    Nach dem Wechsel zu POS {x 10, y 0....} alles beginnt gut zu funktionieren.

  • Hallo zusammen,


    nochmals dank an alle für die vielen Hinweise.

    Die von Loipe angesprochene Variable $PRO_IP hat den Übeltäter entlarvt. Der Vorlauf war tatsächlich schon

    im nächsten Unterprogramm, welches 4 verschiedene Einsprungmöglichkeiten hat. In dem einen, welches vom UP1

    aufgerufen wird, hat sich ein netter Kollege mit einem Lesen auf einen SPS-Eingang verewigt. Das stoppt den Vorlauf.

    Ärgerlich und hätte man selbst finden können.||


    explorers16

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