Beiträge von KoNo

    Hallo, Robot-Team,
    Es geht um einen Kuka-Roboter mit einer uralt-Steuerung (KRC1). Mein Kollege bat mich telefonisch um Hilfe,weil er die Antriebe nicht einschalten kann.
    Der Zustand ist folgender:
    DRIVES_OFF = 1
    DRIVES_ON = 1
    Peri_Ready = 0
    DRIVES_ON wird von der SPS automatisch auf 0 geschaltet, sobald die Rückmeldung Peri_Ready kommt.
    Wovon hängt Peri_Ready eigentlich (außer Drives_off Und Drives_On) bei dieser alten Steuerung noch ab. Kann uns jemand weiterhelfen?


    Dies wäre eine mögliche Lösung. Hier muss ein Interrupt programmiert werden (hier: Interrupt 8), der den Abbruch in die Wege leitet. Im Hauptprogramm wird das Programm BEWEGUNG aufgerufen, in dem das normale Programm abläuft. Bei einer Störung oder einem Abbruch wird von der SPS der Eingang 68 geschaltet und damit das Programm ABBRUCH eingeleitet.
    Im Programm ABBRUCH wird der Merker MSTOP gesetzt, der in der SPS.SUB wieder zurückgesetzt wird, wenn der Roboter in Home steht. Das Programm BEWEGUNG wird abgebrochen. In der nächsten Zeile steht die IF-Bedingung und das Programm RUE_RAUS wird aufgerufen und ausgeführt, bis der Roboter in Home steht.
    Das Ganze must du natürlich spezifisch für dein eigenes Programm anpassen.
    Viel Spass
    OLDDRAGON :lol:

    In T1 funktioniert es ja. Aber nicht in Automatik EXT, so wie es bei der ersten Anlage (0775) der Fall ist. Ich möchte einfach, dass nach dem Einschalten der Roboter in AutoEXT die Referenz anfährt.

    Hallo, Forum,
    Ich habe in einer seit einem Jahr bestehenden Anlage 2 Safe-Roboter stehen, die wunderbar funktionieren. Die masref_main wird im CELL zyklisch aufgerufen (nach Start und Übergabe einer gültigen Programmnummer). Nach einem Neustart der Anlage (Hauptschalter ein) läuft das System hoch, CELL wird angewählt und die Programme darin auch ausgeführt. (Anlage 0775)
    In einer neuen Anlage, die ich bereits fertig programmiert habe, funktioniert dieses automatische Referenzfahren seltsamerweise nicht, obwohl das CELL ähnlich programmiert wurde. Hier wird ein Fehler generiert, der mich zum Referenzfahren in T1 auffordert. Ich weiß aber nicht, was ich hier anders gemacht habe. (Anlage C00)


    Roboter: KR20
    Steuerung: KRC4-8.3.26
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Programmteil in beiden Anlagen:
    DEF BREMSuREFTEST( )
    masref_main()
    braketestreq()
    END
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Anlage 0775: BREMSuREFTEST wird nach Aufruf der Programmnummer - falls notwendig - ausgeführt: funktioniert
    DEF CELL ( )

    INIT
    BASISTECH INI


    IF $IN[68] then
    PRG_ABBRUCH()
    ENDIF
    CHECK HOME
    HOME Vel= 100 % DEFAULT
    AUTOEXT INI
    LOOP
    P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
    SWITCH PGNO ; Select with Programnumber


    ;======================================
    CASE 55; Vorrichtung 5: Seite B Serie
    [size=4] BREMSuREFTEST()[/size]
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    BAS(#TOOL,4)
    BAS(#BASE,1)
    WAIT SEC 0.5
    Gcodeexecute("PROGRAMM_55.nc")
    TOOLLAENGE()
    HOME Vel= 100 % DEFAULT
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Anlage C00: BREMSuREFTEST wird nach Aufruf der Programmnummer - falls notwendig - ausgeführt: funktioniert NICHT - erzeugt Fehler: Referenztest in T1 durchführen.
    DEF CELL ( )


    INIT
    BASISTECH INI
    CHECK HOME
    HOME Vel= 100 % DEFAULT
    AUTOEXT INI
    LOOP
    P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
    SWITCH PGNO ; Select with Programnumber


    ;####################################

    CASE 7; Wartungsstellung anfahren[size=4]
    [/size]
    [size=4] BREMSuREFTEST()[/size]
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 )
    WARTUNGSSTELLUNG()


    ;####################################

    CASE 11; TB_V_L_in C02 einlegen
    [size=4] BREMSuREFTEST()[/size]
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 )
    V_L_IN_C02()


    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    Gibt es einen Parameter, der sich auf die Referenzfahrt bezieht bzw. der mich zwingend auffordert, eine Referenzfahrt in T1 durchzuführen? Wenn ja, warum funktioniert es dann bei der ersten Anlage?

    Hallo, Robos,
    ich habe in meiner sps.sub einige Positionsberechnungen, für die ich ein aktives TOOL benötige. Da jedoch beim Einschalten kein Tool aktiv ist, kommt es zu einer Fehlermeldung. Abhilfe: Tool manuell anwählen, SPS.SUB ab- und anwählen. OK!
    Das kann ich aber dem Kunden nicht zumuten.
    Kann man in der sps.sub ein Tool zuweisen? Wenn ja, dann wie? Immer wenn ich es versuche, tauchen wieder Fehlermeldungen auf.
    Inhalt der sps.sub:
    unterhalb der INI!

    Code
    BAS(#TOOL,1)
    BAS(#BASE,1)


    Dann im LOOP:
    ;AUSGABE DER X- UND Y-POSITIONEN 0000000000000
    IF $ACT_BASE > 0 THEN
    $OUT[38] = TRUE
    XMASS0 = $POS_ACT.X + $BASE.X
    YMASS0 = $POS_ACT.Y + $BASE.Y
    ELSE
    $OUT[38] = FALSE
    XMASS0 = $POS_ACT.X
    YMASS0 = $POS_ACT.Y
    ENDIF


    IF $ACT_TOOL > 0 THEN
    ; Falls sich das TOOL im BEREICH VORN befindet (OUT212):
    IF $OUT[212]==TRUE THEN
    IF $TOOL.x > 0.0 THEN
    XMASS = XMASS0 * 1000.0
    YMASS = YMASS0 * 1000.0
    ENDIF
    ENDIF
    ENDIF
    ;00000000000000000000000000000000000000000000000
    ----------------------------------------------------------------------------------------------------------
    Nach dem Speichern der SPS.SUB wähle ich sie zuerst wieder ab und dann wieder an. Es erscheint der Fehler:
    $TOOL Variable schreibgeschützt in Modul BAS Satz 434


    Wer kann mir helfen? :evil1:

    Hallo, miteinander
    Ich möchte in bestimmten Situationen (z.B. nach einem externen Abbruch) aus einem Bauteil rückwärts rausfahren. Dazu habe ich mir folgendes Programm geschrieben:
    $VEL_AXIS[1] = 40
    $VEL_AXIS[2] = 40
    $VEL_AXIS[3] = 40
    $VEL_AXIS[4] = 40
    $VEL_AXIS[5] = 40
    $VEL_AXIS[6] = 40


    $ACC_AXIS[1] = 40
    $ACC_AXIS[2] = 40
    $ACC_AXIS[3] = 40
    $ACC_AXIS[4] = 40
    $ACC_AXIS[5] = 40
    $ACC_AXIS[6] = 40


    $VEL.CP = 0.01
    $VEL.ORI1 = 30
    $VEL.ORI2 = 30
    $ACC.CP = 1.0
    $ACC.ORI1 = 50
    $ACC.ORI2 = 50
    ;===================================
    $TOOL = TOOL_DATA[1]
    $BASE = BASE_DATA[1]


    ; Falls sich das TOOL im Bauteil befindet (OUT209):
    IF $OUT[209]==TRUE THEN
    PTP_REL{Z 0.2}#tool
    lin_rel{z 30}#tool
    lin_rel{z 350}#base
    ENDIF
    ################################################################


    Sobald ich das Programm starte, läuft es ab bis zur IF-Anweisung. Ist der OUT209 gesetzt, springt der
    Zeiger auf die Zeile PTP_REL{Z 0.2}#tool;
    Es erfolgt keine Bewegung und der Fehler "Unzulässige Startbewegung" wird angezeigt, obwohl dies doch eine PTP-Bewegung ist.
    Wer kann mir weiterhelfen?

    Hallo, Loipe,
    ich habe es gelöst, indem ich POS_TOOL = BASE_Data[30]:$POS_ACT verwendet habe (BaseData30: 0-Werte)
    LÄUFT!
    Danke an alle.
    Kuno

    Hallo, Loipe, hallo, Interrupt.
    Ich habe es laut dem Vorschlag von Loipe probiert, und zwar in der SPS.SUB: POS_TOOL = $BASE:$POS_ACT
    Allerdings führt das zu einem Fehler:
    "Kein Submitprogramm im Kommando Speicher hinterlegt."
    Ich brauch es aber dort, da ich die aktuelle Position zu jedem Zeitpunkt wissen möchte.
    Was mache ich falsch?
    (POS_TOOL wurde als Frame in der config.dat deklariert)

    Hallo, Fast!
    Tut mir leid, dass ich mich jetzt erst melde. Die Anlage läuft schon seit einigen Wochen fehlerfrei. :P
    Die beiden Dateien in deinem Anhang hatte ich bereits von Kuka bekommen; trotzdem vielen Dank
    für deine Mühe.
    Ich habe zwischenzeitlich einen Lehrgang bei Kuka absolviert und muss sagen, dass er mehr als hilfreich war. Nochmal vielen Dank! :danke:
    Kuno

    Nachdem ich bereits das ganze Forum durchsucht und nichts gefunden habe, wende ich mich an euch alle:
    Was ich suche, ist die aktuelle Roboterposition mit dem aktuellen Tool und der Base 0 (Nullframe), egal, welche Base gerade angewählt ist. Die Systemvariable $Pos_act gibt mir ja nur die aktuelle Position bezogen auf Tool und Base aus. Gibt es eine Variabele oder irgendwo in den datfiles einen Wert bzw Frame, den man auslesen kann. Wenn ja, wo ist dieser versteckt?
    Mir würde auch helfen, wenn ich die aktuelle Position der Sicherheitskugeln (TOOL) eines Safe-Roboters irgendwo auslesen könnte. Das muss doch möglich sein, da diese ja bei erreichen der Raumzelle - unabhängig von der Base - ein Signal geben.


    Wer kann mir weiterhelfen?

    Hallo, Fast!
    Es werden Kunststoffteile aus der Automobiltechnik bearbeitet. Ich bin erst am kommenden Freitag wieder am Robo; trotzdem vielen Dank für deine Antwort. Ich hoffe, dass ich damit ein Stück weiterkomme.


    Kuno

    Hallo, miteinander,
    wer von euch hat bereits Erfahrung mit Kuka CNC Fräsen? Es hapert bei mir bereits beim Konfigurieren der G-Funktionen, die in einem CNC-Programm x-fach vorkommen. Ich weiß auch nicht, wo ich das CNC-Programm hinterlegen muss.
    Ich bin für jede Info dankbar.

    Hallo,
    ich möchte nach einem Abbruch meinen Rob aus dem Bauteil herausfahren. Dazu möchte ich die LIN_REL-Bewegung nutzen, allerdings mit den TOOL-Koordinaten, so dass er in der Z-TOOL-Richtung herausfährt.
    Alles, was ich probiere, endet in einer WORLD-Bewegung. Kann man überhaupt in der Tool-Richtung mit dem LIN_REL-Befehl fahren?

    :???:


    Hat jemand von euch noch die richtige Steckerbelegung vom X11-Stecker einer KRC2-Steuerung? Wäre als PDF super. Ich kann sie nirgends mehr im Netz finden.