Rücksprung ins CELL ... Housten, wir haben ein Problem !

  • Hallo zusammen,


    (ja,ja der Elch schon wieder ^^ )


    ja, ich weiß, es gab schon einige Threads zum Thema.

    Ich habe auch fast alles gelesen was unter dem Tag #cell läuft, leider nichts konkretes gefunden, was mich einer Lösung näher bringen könnte, lediglich einige Ansätze, die mich auf diverse Lösungen/Ideen bringen könnten.


    Hier mein aktuelles Problem;

    im über_nachfolgenden Code bleibt der Roboter in der jeweils angeforderten Position stehen. Das funktioniert. Nur habe ich jetzt die Situation, dass ich aus dem aktuellen MAIN unter allen Umständen zurück in's CELL muss. Da dort, im Falle des Rüstvorganges ein zweites, MAIN2 (oder umgekehrt das MAIN) per PGNO abgefragt und gestartet wird. Ein RETURN würde mich nur in die aufrufende DEF zurück führen, kontraproduktiv, ich bleibe ja immer noch im Modul MAIN oder MAIN2.

    Mein Ansatz wäre jetzt, nach dem

    Code
    MoveTo(#HOME, AktPos)

    mir eine DEF zu basteln, die prüft, ob sich die PGNO von der SPS geändert hat und ggf. einen Reset ausführt, mit dem Ziel zurück ins CELL zu hüpfen.

    Aktuell ist es eben so, dass der ROB ohne "Programm zurücksetzen" oder "Ab/Anwahl" einfach im aktuellen MAIN oder MAIN2 verbleibt und einfach weiter macht. Was schlecht ist, je nach dem haben wir, entweder ölige Teile (vom Kühlschmierstoff, da nicht getaucht) oder der Schlosser muss das Tauchbecken richten ^^ (weil Teile zu groß im Durchmesser ;) )..

    Also, wie könnte ich innerhalb des Moduls die PGNO abfragen und entsprechend den Reset auslösen ? Auch wenn es über den SUB laufen müsste, da bin ich frei.

    Und wie immer, danke für eure Anregungen, Ideen, Denkanstöße :)

    Gruß, der Elch ;)

    Mein Name ist Hase. Ich weiß von nix.

  • Schritt für Schritt zum Roboterprofi!
  • Als Anstoß: Programm zurücksetzen und Start im "Cell" erzwingen geht ja mit der "CTWRITE-Anweisung". Wie es gehen könnte kannst du im "SPS.sub" nachsehen, bzw. in den dazugehörigen Dokus.

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Abwählen/Anwählen via Hintergrundtask ist die normale Methode - wobei dadurch natürlich jeder Kontext verloren geht. Wenn Dir das egal wäre...


    Anders geht auch:

    Ich hab' neulich mal einen komischen Hack angewandt, um garantiert und unter Erhalt der Laufzeitvariablen in eine bestimmte übergeordnete Routine zurückzuspringen, und zwar mit Hilfe der Interrupts. RESUME führt ja immer in die Routine zurück, in der der Interrupt deklariert wurde, und der Trigger kann ja was Beliebiges sein - ein unverbundener Ausgang, der aktiv vom Programm gepulst wird, z. B..


    Ist eine leider schwer durchschaubare Methode, die aber funktioniert....


    Grüße,

    Michael

  • update ..

    Der Sub ist quer geloopt und hüpft ins bgl.src, dort konnte ich die Bedingung ausmachen, welche das Tauchen auslöst oder eben nicht.


    TauchbadInterval=ToInt16(ibDipRefillIntervalB0, ibDipRefillIntervalB1)

    TauchbadAktiv=(TauchbadInterval>0)

    IF (TauchbadInterval>0) AND (#EXT_PGNO=1) THEN

    TauchbadAktiv=FALSE

    ENDIF


    Sollte #EXT_PGNO nicht direkt verwendet werden können, würde ich die Variable irgendwo global verpacken und dann damit arbeiten wollen .. Einen Reset will ich nicht unnötig auslösen, schon aus dem Grund, weil ich nicht weiß, wie die SPS damit umgeht. Tja, .. ich arbeite ausschließlich mit "Fremdbestand" und muss mich in jede neue Anlage einlesen .. und dann sieht man sehr oft den Wald vor lauter Bäumen nicht mehr, wenn doch eine Änderung ansteht ...

    Mein Name ist Hase. Ich weiß von nix.

  • UPDATE:

    ... alles schon einige Zeit her .. läuft seit gut einem Jahr problemlos ..


    Code
       ;bgl.src im SUBMIT (USER PLC) in das eingesprungen wird .. 
       IF B_AUTOEX THEN  
          MODE=#SYNC
          CWRITE($CMD,STAT,MODE,"RUN /R1/cell( )")
          B_AUTOEX=FALSE 
       ENDIF 

    Ziel ereicht ..

    das Scharfschalten der Variable wird mittlerweile auch genutzt, wenn Störungen anliegen und der MA den Rob neu startet - wobei eine Grundstellungsfahrt nach überprüfter ActPos ausgelöst wird. Ist alles OK/TRUE wird nach Hause gefahren, Variablen werden in den nötigen Zustand gesetzt und .. weiter gehts ..

    Mein Name ist Hase. Ich weiß von nix.

    Einmal editiert, zuletzt von elchi2018 ()

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