Nach Neustart immer wieder cell.src geladen

  • Guten Tag zusammen,


    ich habe momentan das seltsame Phänomen, dass an einer KRC4 nach jeden aus- und wiedereinschalten das vorherig Geladene Programm nicht angewählt ist, sonder die Steuerung immer wieder cell.src geladen ist. Die Betriebsart ist ext.


    Kennt einer die Erklärung dafür?


    Vorab vielen Dank!


    vg

  • Schritt für Schritt zum Roboterprofi!
  • Das ist normal so weit ich weiß und ist im SPS.sub hinterlegt.



    Mit dieser Zeile wird immer CELL angewählt wenn die Steuerung hochfährt und der Roboter auf EXT ist,. Da könntest du natürlich jedes andere Programm reinschreiben

  • Danke für die Antwort!

    Mein wunsch ist es, den Roboter genau in dem Programm zu lassen, wo er vor dem Ausschalten war.

    Bekomme ich das hin in dem ich diese Anweisung lösche?

  • Leider ist das nicht so leicht bei KUKA (zumindest soweit ich weiß). Ich hab jetzt einiges getestet, bin aber immer auf ein Problem gekommen: Die Programme, welche aufgerufen werden sollen, müssen sich in R1 befinden, ansonsten geht der Programmaufruf nicht. Ich weiß aber nicht ob das so gewollt ist, oder ob ich einfach zu unfähig dafür bin.


    Wenn du das aber so willst, brauchst du:


    1. In der $config.dat folgende Variablen


    INT iTemp=0

    BOOL bTemp=FALSE

    CHAR chStartprogramm[80]

    chStartprogramm[]=" "

    CHAR chAktuelles_Programm[80]

    chAktuelles_Programm[]=" "


    2. In dem SPS.sub im AUTOEXT INI FOLD:


    bTemp = STRCLEAR(chStartprogramm[])

    iTemp = STRADD(chStartprogramm[], "RUN /R1/")

    iTemp = STRADD(chStartprogramm[], chAktuelles_Programm[])

    iTemp = STRADD(chStartprogramm[], "()")

    IF $MODE_OP==#EX THEN

    CWRITE($CMD,STAT,MODE,chStartprogramm[])

    ENDIF


    3. In jedem Programm, was aufgerufen werden soll, irgendwo in der INIT:


    bTemp = STRCLEAR(chAktuelles_Programm[])

    chAktuelles_Programm[]=$PRO_NAME[]


    Das mit STRADD könnte man mit SWRITE auch machen, aber bei mir hat das immer Leerzeichen reingegeben, somit hab ich das mit STRADD gemacht. Ansonsten, wie gesagt, geht es nur vom /R1/ Ordner aus. Vielleicht schaffst du es ja, wenn du dich noch ein wenig spielst. Schreib dann ein Update rein wenn du es geschafft hast, würde mich auch interessieren

    LG

  • Was mir gerade einfällt, was wesentlich leichter wäre:


    Du vergibst jedem Programm eine Programmnummer im INIT, rufst jedes mal bei EXT das CELL Programm auf und machst dann einfach ein SWITCH CASE mit der Programmnummer. Somit wird zwar CELL immer wieder aufgerufen, aber dann gleich weiter geschliffen in das eigentliche Programm. So funktioniert das normalerweise bei Anlagen mit mehreren Programmen.

  • Wenn ansonsten alles funktioniert, die Option "Kaltstart erzwingen" abschalten. Dann geht das System beim Ausschalten in den Suspend und macht nach dem Wiedereinschalten genau da weiter, wo es aufgehört hat.
    Das ist eigentlich das Default-Verhalten, es ist nur äußerst unpopulär bei der Instandhaltung - weil "AEG" ("Ausschalten, Einschalten, Geht wieder") dann nicht möglich ist und alle Fehler, die es vor dem Ausschalten hatte, hinterher gleich wieder da sind.

  • Wenn ansonsten alles funktioniert, die Option "Kaltstart erzwingen" abschalten. Dann geht das System beim Ausschalten in den Suspend und macht nach dem Wiedereinschalten genau da weiter, wo es aufgehört hat.
    Das ist eigentlich das Default-Verhalten, es ist nur äußerst unpopulär bei der Instandhaltung - weil "AEG" ("Ausschalten, Einschalten, Geht wieder") dann nicht möglich ist und alle Fehler, die es vor dem Ausschalten hatte, hinterher gleich wieder da sind.

    Du meinst wohl hypernate….

  • Ich ziehe es vor zu prüfen, ob im EXT-Modus das richtige Programm angewählt ist. Ist dies nicht der Fall, Programm wird deselektiert durch Submit und das richtige wird angewählt. Auf diese Weise ist es mir egal, welcher Modus oder welches Programm verwendet wird, wann oder ob ein Neustart durchgeführt wurde und welche Art von Start verwendet wurde. Der Benutzer kann immer noch zu T1 wechseln und ein beliebiges Programm testen. und wenn sie vergessen, es abzuwählen, kümmert sich Submit darum, sobald der Modus wieder auf EXT geändert wird.

  • Ich ziehe es vor zu prüfen, ob im EXT-Modus das richtige Programm angewählt ist. Ist dies nicht der Fall, Programm wird deselektiert durch Submit und das richtige wird angewählt. Auf diese Weise ist es mir egal, welcher Modus oder welches Programm verwendet wird, wann oder ob ein Neustart durchgeführt wurde und welche Art von Start verwendet wurde. Der Benutzer kann immer noch zu T1 wechseln und ein beliebiges Programm testen. und wenn sie vergessen, es abzuwählen, kümmert sich Submit darum, sobald der Modus wieder auf EXT geändert wird.

    Aber wie kann man das richte Programm wieder mit dem Submit selektieren? Ich habe es nur geschafft, wenn sich das Programm direkt in /R1/ befindet. Wenn das Programm aber in einem Unterordner ist, geht das nicht, zumindest hab ich es nicht geschafft.

  • mag sein... hab dein code gesehen aber da stimt was nicht... wozuCWRITE wenn program bereits selectiert ist und auch lauft?


    Wahrsheinlich du hast versucht den Pfad eingeben. das ist falsh... soll immer "RUN /R1/HAUPT_PROG()" sein egal ob Pfad ist

    KRC:\R1\HAUPT_PROG.SRC

    oder

    KRC:\R1\Program\HAUPT_PROG.SRC

    oder

    KRC:\R1\Program\Mein_Verzeichnis\HAUPT_PROG.SRC

    usw.


    solte ungefahr so aussehen:


  • Das wars, ich habe immer den gesamten Pfad angegeben, obwohl das anscheinen so nicht funktioniert.

    Danke für die Antwort!

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