Programm zurücksetzen

  • Hallo zusammen,


    habe seit längerem mal wieder ein KUKA (KRC2, KR180-2PA) unter den Fingern. Und schon gibt es wieder Probleme. :wallbash: In der SPS.sub habe ich folgenden Programmcode (Programm stoppen und zurücksetzen):


    ;FOLD USER PLC
    ;Make your modifications here


    ; Roboterprogramm stoppen, rücksetzen
    IF diRobotReset==FALSE THEN
    $FLAG[1]=FALSE
    ENDIF
    IF (diRobotReset==TRUE) AND ($FLAG[1]==FALSE) THEN
    $FLAG[1]=TRUE
    CWRITE($CMD,STAT,MODE,"STOP 1") ; Prog stoppen
    WAIT SEC 0.5
    CWRITE($CMD,STAT,MODE,"RESET 1") ; Prog ruecksetzen
    ENDIF


    ;ENDFOLD (USER PLC)


    Das Problem dabei: Im T1 und T2 wird das Programm zurückgesetzt. Im Automatik Extern nicht! Aber gerade im AutExt benötige ich die Funktion. Was mache ich falsch?
    Das merkwürdige ist dabei, das dieser Programmcode bei einem anderen Roboter (auch KRC2, KR180-2PA) richtig funktioniert.


    Gruß HarryH

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Harry,
    um zu helfen wäre bei so Problemen immer wichtig welche Softwareversion läuft.


    - ist die Softwareversion gleich bei der funktionierenden und Deiner Steuerung?
    - ist der SPS.SUB gleich
    - wird bei Dir in AUTEXT die Codestelle wirklich durchlaufen ?


    Der einzige Unterschied ist doch, das in T1/T2 das Programm per Hand angewählt wird und in AUTEXT per CELL.
    Ist schon erstaunlich, denn das CWRITE-Kommande arbeitet in allen Betriebsarten gleich.
    Zufällig läuft gerade bei mir ein Test der Prozesskommandos (CWRITE mit STOP, RESET,..)
    in AUTEXT erfolgreich. Wäre auch hilfreich, wenn Du mir Dein SPS.SUB anhängst.
    Gruss Paul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    Die Softwareversion von meinem jetzigen Roboter ist ist 5.2.14. Bei der
    funktionierenden Steuerung ist Version 5.2.12 installiert.


    Die Codestelle wird im AutExt durchlaufen. Habe mir eine boolsche Variable
    testweise setzen lassen. Habe folgendes festgestellt: Wenn ich das Rücksetzen
    während einer Bewegung ausführe, stoppt der Roboter kurz und fährt dann
    aber weiter.


    In OfficeLite funktioniert das Zurücksetzen problemlos.


    Die SPS.sub habe ich mit angehängt.


    Gruß HarryH

  • Hallo HarryH,
    Deine Problembeschreibung ist Super.
    Die führt mich zur flg. Frage: hast Du eine echte SPS angeschlossen?
    Wenn ja, kann es sein das sie die Signale $APPL_RUN oder $ROP_STOPPED auswertet und Dein gestopptes Programm wieder anstartet?
    Dann muss auch im STAT.RET1 im RESET-Befehl ein Fehler gemeldet werden (z.B. #CMD_ABORT).
    Ich möchte gerne sicher sein, das es sich um einen Systemfehler in der V5.2.14 handelt.
    So ein Diff zwischen 2 Versionen ist nämlich ein wenig arbeitsintensiv.
    Gruss

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    ja es ist eine SPS über Profibus angeschlossen. Die Signale $APPL_RUN und $ROP_STOPPED verwende ich nicht. Zum wieder anstarten des Programms
    verwende ich...
    Eingänge: $DRIVES_ON, $CONF_MESS, $EXT_START
    Ausgänge: $PERI_RDY, $STOPMESS, $PRO_ACT


    Um wirklich sicherzugehen das die SPS nicht dazwischen funkt, habe ich das automatische Anstarten auf SPS Seite unterbunden. Die drei oben aufgelisteten Eingänge auf SPS-seite fest auf Null gesetzt. (Zu diesen drei Eingängen in AutExt verwende ich nur noch Fahrfreigabe $MOVE_ENABLE.) -->Selbe Situation: Der Roboter stoppt nur kurz und macht dann der selben Stelle im Programm weiter.


    Habe noch folgendes getestet:
    - Im "normalen" Automatik Modus lässt sich das Prog. wie gewünscht zurücksetzen (Bei laufendem und bei gestoppten Programm).
    - Ist das das Programm im AutExt über den Taster Motore AUS gestoppt, lässt sich das Programm zurücksetzen. --> Daraus folgere ich: Das Programm wird im AutExt über die Zeile "CWRITE($CMD,STAT,MODE,"STOP 1")" nicht gestoppt!? Gibt es eine weitere Möglichkeit das Programm zu stoppen?


    Wenn es noch nötig ist: Was ist "STAT.RET1 im RESET-Befehl ..." und wo finde ich das?


    Danke für deine Hilfe!
    Gruß HarryH

  • Hallo Harry,
    der Statuswert würde mir schon helfen im Fehlerfall.
    Siehe Punkt 6.10 in angehängter Doku


    Könnte dann morgen ein wenig im Code bohren
    Gruss Paul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • So mache ich das.


    IF (($Rob_Stopped == TRUE) AND (M_Reset == TRUE)) THEN
    CWRITE($CMD,STAT,MODE,"Stop/R1/Startprogramm()")
    CWRITE($CMD,STAT,MODE,"Cancel/R1/Startprogramm()")
    M_Reset = FALSE
    CWRITE($CMD,STAT,MODE,"Run/R1/Startprogramm()")
    ENDIF

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • LindePaul


    Danke erstmal für die Doku. Habe folgendes gemacht:
    1. In der $config.dat eingefügt: DECL STATE_T Status
    2. Habe das Rücksetzen von der SPS angesteuert
    3. Variable anzeigen: Status.Ret1 --> Da war keiner
    der laut Doku möglichen Werte drin. War nicht
    beschrieben.


    Ich bin mir aber auch nicht sicher ob ich das richtig
    gemacht habe. :huh:



    @ Roboman
    Danke für den Tipp. Werde ich gleich mal ausprobieren.


    Gruß HarryH

  • LindePaul


    STAT.RET1 direkt abfragen funktionierte nicht. Immer Meldung "Objekt nicht gefunden". Habe dann die Deklaration aus der SPS.sub rausgenommen und in die $config.dat eingefügt. Dann wurde STAT.Ret1 beschrieben.


    --> Habe die Zeit zwischen den beiden CWRITE Befehlen verlängert (3sek.), um die STAT.Ret1-Werte für beide CWRITEs auch ablesen zu können. Sonst würde es zu schnell durchlaufen.

    CWRITE($CMD,STAT,MODE,"STOP 1")
    WAIT SEC 3
    CWRITE($CMD,STAT,MODE,"RESET 1")


    STAT.Ret1- Werte:
    CWRITE($CMD,STAT,MODE,"STOP 1") --> #CMD_OK
    CWRITE($CMD,STAT,MODE,"RESET 1") --> #CMD_ABORT --> Dies CMD_ABORT klingt logisch, da wie oben schon beschrieben, das Programm durch den ersten CWRITE-Befehl nicht gestoppt wird. Komisch ist nur, das der erste CWRITE-Befehl #CMD_OK zurückliefert.


    Habe dann nochmal den zweiten CWRITE-Befehl (...Reset 1) auskommentiert, und wollte nur das Programm stoppen (... Stop 1). --> STAT.Ret1 liefert auch da #CMD_OK aber das Programm wird nicht gestoppt. Jedoch wird eine laufende Roboterbewegung kurz angehalten (siehe oben).


    Hast du noch eine Idee? Sollte ich mich nochmal direkt mit dem KUKA-Support in Verbindung setzen?




    Roland Keller


    Deine Variante zum Rücksetzen des Programms zeigt das selbe Verhalten wie oben beschrieben. Geht leider auch nicht :( Trotzdem :danke:

  • Hallo Harry,
    werde mich um den Fehler kümmern - aber nicht mehr heute. KUKA Support brauchst Du nicht mehr bemühen - ich bin der KUKA Support. Zufälligerweise habe ich das CWRITE auch implementiert :D
    schönes Wochenende

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • sorry, hatten den ganzen Tag bis jetzt Betriebsversammlung.
    Bin gerade dabei die V5.2.14 an einer Maschine mit SPS-Dummy zu installieren.
    Heute noch Ergebniss ?!

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo Harry,
    sorry weil es so spät wurde - Murphy war wieder unterwegs.
    Beim XP installieren ist meine alte Platte abgeka... . V5.2.14 installiert.


    Bei mir funktioniert Dein Programm SPS.SUB einwandfrei. Während der Bewegung wird gestoppt und nach .5 sec resetet.
    Testprogramm direkt in EXT angewählt (ohne Cell) --> stoppt sofort und geht auf Anfang Testprogramm --> läuft ERST wieder los nach STARTimpuls.
    Testprogramm angewählt über Cell (Prognr.) --> stoppt sofort und geht auf Anfang Cell


    Ich habe keine SPS sondern eine Devicenetbox mit SPS-Simulationsschaltern angeschlossen.


    Fazit: mir scheint das Deine SPS wieder anstartet. Das Programm/Roboter darf nach einem STOP nicht von alleine weiterlaufen --- Sicherheitsverletzung !!!
    Das wird bei KUKA bei JEDER Software durch automatische Testanlagen 1000 mal geprüft.
    Gruss Paul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    es lag an der SPS :peinlich: , nun läufts einwandfrei. :sorry: das ich dich auf die falsche Fährte geschickt habe und du extra V5.2.14 installieren musstest. :danke: für deine Bemühungen!


    Es war so:
    Der Kollege der die SPS gemacht hat sagte mir, das er den Programmteil zum Anstarten des RobiProgs aus einem lauffähigen Projekt kopiert hat. Da es nicht lief, habe ich das Anstarten auf SPS-Seite blockiert. Allerdings nur den ersten Schritt (Motore EIN). Sobald das Programm gestoppt wurde (CWRITE...,"STOP 1") ), hat die SPS das Programm wieder gestartet.


    Nochmal :danke:


    Gruss HarryH

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