KRC2 Programmstart im Aut-Modus (nicht Ext)

  • Hallo zusammen,


    ich habe erstmalig einen Roboter ohne SPS-Anbindung zu projektieren/programmieren. (KRC2, KR180-2PA).


    Zur Info: Es ist ne Palettierzelle, in welcher Kanister auf einer auf dem Boden stehenden Palette palettiert werden. Es gibt zu der Anlage einen zusätzlichen Bedienkasten mit Bedienelementen um dem Roboter gewisse Anwahlen zu geben. Zu steuern vom Roboter ist der Greifer (ca. 10 E/A's), der Kanistereinförderer (ca. 10 E/A's), sowie die Bedienelemente im Bedienkasten (ca. 15 E/A's). Abgesichert ist die Palettierzelle über eine Sicherheitslichtschranke.


    Nun zurück zu meiner Frage: Da ich keine SPS habe läuft der Roboter im Automatik-Modus (nicht Ext). Wenn der Bediener die SI-Lichtschranke auslöst, stoppt das Roboterprogramm. Ist es möglich, das Roboterprogramm über einen Taster im zusätzlichen Bedienkasten wieder zu starten? Oder geht es nur am KCP?
    Der Bediener muß sowieso zum Bedienkasten gehen um die SI-Lichtschranke wieder zu aktivieren. So wäre es schön, wenn er dort auch das Prog. wieder starten kann.


    Ich bin über jede Anregung dankbar!


    Gruß HarryH

  • Schritt für Schritt zum Roboterprofi!
  • Wenn dir der Bedienerschutz vom Roboter raus fällt stoppt das Programm und es wird eine Fehlermeldung BS aus gegeben. Um weiter zu fahren muss diese quittiert werden.


    Im Auto Mode (nicht Extern) müsste man erstmal auf "alles quittieren" und dann wieder auf "Start" drücken. Denk nicht, dass man das über externe Taster lösen kann, da der Automode unter anderem dafür gedacht ist, dass man eben keine weiteren Taster und man nur das KCP in der Hand hat.


    Im AutoExt Modus ist das natürlich möglich was du möchtest. Die Frage ist jetzt warum das ganze nicht im AutoExt Modus laufen lassen? Gibt es da eine Vorschrift vom Kunden und wenn ja ist da ein größerer Sinn dahinter?

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • egal ob in automatik, oder extern:
    erstmal muss der bedienerschutz quitiert werden, die antriebe eingeschaltet und das programm gestartet werden - in aut passiert das halt am KCP.


    Du hast keine SPS, kannst aber "extern" trortzdem verwenden. dazu brauchst du ein paar freie EA´s und eine Routine im SPS.Sub, die dir die Sache anwirft.
    DI_DrivesOff - 24V (Statisch 1)
    DI_DrivesOn - DO_DrivesOn (Drahtbruecke)
    DI_ConfMess - DO_ConfMess (Drahtbruecke)
    DI_ExtStart - DO_ExtStart (Drahtbruecke)


    4 Eingaenge und 3 Ausgaenge sind die minimal Anforderung, hast du die nicht - pech gehabt.
    Die restlichen signale in der KUKA extern schnittstelle kannt due vergessen, weil du die Systemvariablen (z.b.: $pery_rdy) verwenden kannst.


    Der rest wurde hier im Forum berteits mehrfach asugelutscht - einfach mal nach "extern" suchen.


    Gruss.. Stefan

  • Hallo Stefan,
    wenn wir schon I/O's sparen dann richtig :D


    $DRIVES_OFF kannst auf 1025 setzen


    $MOVE_ENABLE auch auf 1025,


    aber dafür muss in der Option.Dat $CHCK_MOVENA = FALSE gesetzt werden

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo Stefan,


    du schriebst:


    Wenn ich das richtig verstanden habe funktioniert das anstarten wie folgt:
    1. Den Programmstart-Taster verbinde ich mit "DI_DrivesOn" (Konfiguration AutExt)
    2. Mit der Rückmeldung "DO_DrivesOn" quittiere ich die StoppMeldungen "DI_ConfMess" (Drahtbrücke zw. "DO_DrivesOn" und "DI_ConfMess")
    3. Mit der Rückmeldung "DO_ConfMess" starte ich das Programm "DI_ExtStart" (Drahtbrücke zw. "DO_ConfMess" und "DI_ExtStart")
    4. "DO_ExtStart " zeigt mir an das das Programm läuft
    --> Ist das so richtig? :?:


    Was meinst du mit "eine Routine im SPS.Sub, die dir die Sache anwirft." Was muss ich noch "anwerfen"?


    Muss ich den Programmstart-Taster in der SPS.sub irgendwie verriegeln. z.B. wenn das Programm schon läuft, oder mit dem Schutzgitter?


    @ LindePaul: Das man MoveEnable mit $CHCK_MOVENA = FALSE deaktivieren kann wußte ich auch noch nicht, danke :D


    Gruß HarryH

    Einmal editiert, zuletzt von HarryH ()

  • Hi,


    Kannst du so probieren, war aber anders gemeint. Die Signale sind flankengetriggert. Wenn du am KCP die Stoptaste drueckst, wird dir das Programm dann gleich wieder angeworfen.
    Du brauchst dann noch Ausgaenge fuer $PeryRdy (bruecken auf $Conf_mess) und dann wirds schwierig mit dem Startsignal das sollte mit den negierten Stopmess gebrueckt werden (Relais).



    eher so: im SPS.SUB


    if not($Pery_Rdy or $in[DI_DrivesOn] or M_Start = 20) then
    M_Start = 10
    endif


    If NOT($Stop_mess) then
    $out[DO_Conf_mess] = false
    endif


    switch M_start
    case 10
    ; warte auf start durch bediener
    if $in[DI_DrivesOn] then
    M_Start = 20
    $out[DO_ExtStart] = false ; steigende Flanke sicherstellen
    end if
    case 20
    ; warte auf Antriebe eingeschaltet
    If $Pery_Rdy then
    M_Start = 30
    endif
    case 30
    ; Bedienerschutz quitieren
    $out[DO_Conf_mess] = true
    If NOT($Stop_mess) then
    M_Start = 40
    endif
    case 40
    $out[DO_ExtStart] = true ; Programm anstarten
    M_START = 50
    Case 50
    IF $Pro_act then
    ; Programm lauft
    M_Start = 10
    endif
    case else
    M_Start = 10
    end switch


    $Drives_off und $Move_enable kannst du wohl weglassen - hab ich nie probiert.


    Gruss Stefan

  • @ StefanM


    Das stimmt, wie ich das beschrieben habe geht es ja nicht, da das Signal Stopmess negiert ist.


    Danke für die Programmvorlage für die SPS.sub. Werde das so in der Art mal probieren. :danke:


    Gruß HarryH

  • @ StefanM


    Ich habe den Programmstart über Externen Taster so realisiert wie du das beschrieben hast. Leider noch nicht getestet, kein Roboter zur Hand.


    Habe dazu nochmal zwei Fragen:


    1.

    Code
    if not($Pery_Rdy or $in[DI_DrivesOn] or M_Start = 20) then
      M_Start = 10
    endif


    Warum ist in der if-Anweisung "M_Start=20" drin? Ich würde es weglassen.


    2. Ist das richtig, das du den DI_Starttaster in der AutExt-Koniguration mit $Drives_on verbindest?


    Gruß HarryH

  • Hallo,


    das ist eine State Machine, die lauft zyklisch durch.

    Code
    if not($Pery_Rdy or $in[DI_DrivesOn] or M_Start = 20) then
      M_Start = 10
    endif


    soll eine initialisierung sein, dass mann nach Ausschalten der Antriebe wieder auf die Fuesse kommt. Wenn du M_start = 20 weglaesst, muss sollange die Starttaste gedrueckt bleiben, bis die Antriebe tatsaechlich eingeschalten sind.


    Ja, mit dem Starttaster wuerden dann die Antriebe eingeschaltet, mit der Rueckmeldung $Pery_Rdy startet der SPS.SUb dann das Programm.
    $in[DI_DrivesOn] kannst du ueberall duch $Drive_on ersetzen



    Gruss Stefan

  • I also need to do this (Program Start in Automatic, not Automatic External). :oops: My German is not very good :oops:, so I ran the page through a translator, but it didnt produce an very good result.


    I THINK I have worked it out, but could someone please check my understanding below :-


    1. I have to define my variables as though I am Automatic External, using the Automatic External - Configuration - Inputs/Outputs screen - for example, $DRIVES_OFF = 1024, $CONF_MESS = 1026 etc


    2.
    DI_DrivesOff - 24V (Static 1)
    DI_DrivesOn - DO_DrivesOn (Cable link)
    DI_ConfMess - DO_ConfMess (Cable link)
    DI_ExtStart - DO_ExtStart (Cable link)


    So, if I am correct in 1), I have to do something like :-
    $IN[1024] <-> 24V
    $IN[1025] <-> $OUT[1025]
    $IN[1026] <-> $OUT[1026]
    $IN[1027] <-> $OUT[1027]


    3. Make sure $MOVE_ENABLE = $DRIVES_OFF


    4. In Option.Dat, set $CHCK_MOVENA = FALSE


    5. At the start of SPS.SUB, add DECL INT M_Start and also the whole function relating to the M_Start. (Should it be $STOPMESS or $STOP_MESS?)


    6. Go!

    :hilfe:

  • Hello,


    I think there is still a missunderstand of the modes. #EX does not mean controlled by PLC. It's more like #AUT: Automatic controlled by KCP, #EX means Automatic controlled by IO's. That can be IO's from PLC or push buttons.


    The most simple way are 3 push buttons:
    in /$machine.dat
    SIGNAL $CONF_MESS $IN[1]; the acknowledge push button
    SIGNAL $DRIVES_ON $IN[2]; the drives on push buttom
    SIGNAL $EXT_START $IN[3]; the program start button


    if not used you can jumper:
    SIGNAL $DRIVES_OFF $IN[1025]
    SIGNAL $MOVE_ENABLE $IN[1025]
    BOOL $CHCK_MOVENA=FALSE; $option.dat


    You do not need any submit program. Just have a robot program with home position and a loop for the work.
    May be you take precaution of the start position, because the robot will start fullspeed wherever it is.
    To start automatic you select your program, you select external mode, press push button acknowledge, press push button drives on, press push button start and the robot starts working.


    To recover from Estop you press the same sequence of push buttons.


    The solution can not be called comfortable, but simple. The code posted here earlier shows more comfortable solutions.


    Good luck
    DiDi

  • :danke:


    So, one more question. We have a light barrier that needs 24V to reset. Can I use the same SIGNAL $CONF_MESS $IN[1], or does it have to be a button that is pressed before?


    In other words, if the button for $CONF_MESS is pressed and held on, when all the errors are clear, will it reset, or does $CONF_MESS have to be pressed AFTER all the errors are clear?

  • Hello,


    $conf_mess is an acknowlege signal. Usual behaviour of the controller is a state message as long as the fault is present e.g. emgerency stop. After the fault has gone, the state message disappears and an acknowledge message shows up, e.g. ackn. EStop. $conf_mess acknowledge this message and you are ready to go.
    If your light barrier is independent and does not force any faults on the robot controller, you can reset it with a second contact on your ackn. pusch button. Other wise you can use a fouth push button to reset your light barrier or press the push achnowledge button twice.


    Good luck
    DiDi

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