Beiträge von INTERRUPT

    Hallo Zusammen,


    ich sitze seit langem mal wieder an einer KRC2 und möchte eine simple Info-Meldung programmieren.


    Ich habe es geschafft, die Meldung mit einem festen Text abzusetzen, möchte aber eine INT-Variable (Stücktzähler) mit anzeigen, und bekomme dies nicht hin.

    Wenn ich folgenden Code ausführe hat er mir test Stueckzahl = 1 ausgegeben, aber dann eine Fehlermeldung gebracht, dass der String zu lang wäre.


    Vielleicht sieht jemand wo mein Fehler liegt.

    Vielen Dank!


    Mein Aktueller Ansatz:


    Code
    $msg_t = {msg_t: valid false, release false, typ #notify, modul[] " ", key[] " ", param_typ #key, param[] "Test", dlg_format[] " ", answer 0}
    swrite($msg_t.param[], STATE, OFFSET, "Stueckzahl: = %d", stueckzaehler)
    
    $msg_t.valid = true
    
    wait for $msg_t.valid == false

    Hallo,
    warum bist Du denn der Meinung, dass das Programm gar nicht aufgerufen wird ohne SAK-Fahrt im T1?
    Habt ihr das von eurer Software-Seite aus so geregelt?
    Wenn nicht -> Du kannst direkt im SPS.SUB keine Fahrbewegungen machen (Ausnahmen bestätigen die Regel, z.B. asyncrone externe Achsen). Ein Programm kann auch ohne SAK gestartet werden (Auch im Auto oder EXT) - nur muss die erste Bewegung eine PTP-Bewegung sein und dort gibt es dann ggf. die SAK-Fahrt (Die soweit ich weiß auch im AUTO funktioniert. Wenn Du dort PTP $POS_ACT machst solltest Du safe sein (Abgesehen von den Themen weshalb es die SAK-Fahrt gibt, aber ich denke das wirst Du bedacht haben).
    Wenn ihr es verhindert -> Warum? Vielleicht solltet ihr das überdenken.

    Also wird mir das INCLUDE in diesem Leben nichts mehr nützen...
    Vielleicht ist es so weit wenn Du die 2200 Beiträge knackst -> Also halt Dich ran :)


    Dann kapere ich mal meinen eigenen Beitrag mit einem etwas abweichenden aber doch dazu passenden Thema:


    Wenn ich beim erreichen einer Position eine Aktion ausführen will gibt es ja WITHIF (oder wie der schöne Befehl grad geschrieben wird). Hier habe ich ja das gleiche Problem mit dem Überschleifen wenn ich CALLP nutze. Gibt es die Möglichkeit irgendwie ein SUB/Programm/etc mit Parameterübergabe aufzurufen ohne nen Genauhalt zu provozieren.


    Grüße


    Interrupt

    Hallo Urmel,
    danke für Deine Antwort und glückwunsch zu den runden 1100 Beiträgen :)
    Umgehen ist leider nicht möglich, da das Programm in Teilprozesse gegliedert wird, die abhängig von Eingangssignalen in undefinierter Reihenfolge abgearbeitet werden müssen. Daher muss jeder Teilprozess nach jedem anderen Stattfinden können.
    GoSub ist keine Alternative, die Teilprozesse sollen in Programme ausgelagert sein um ein wenig die Übersichtlichkeit zu erhalten.
    XLoad muss ich mir mal ansehen.
    Was heißt "Demnächst" bei Mitsubishi? Bei Kuka ist das meist 6-12 Monate.
    Include klingt nach dem Mittel der Wahl!
    Grüße
    Interrupt

    Möglichkeit 1:
    Menü -> Datei -> Anzeige -> Istposition -> Achswerte
    So lange von Hand baggern bis Du in der Nähe bist (ab 0,1° wird es witzlos!) und dann wieder auf der Bewegung PTP XHOME Touchup drücken.


    Möglichkeit 2:
    Menü -> Konfiguration -> Benutzergruppe -> Experte -> Anmelden
    Menü -> Anzeige -> Variable -> Einzeln -> Als Variable XHOME.A1 eintragen. Wert von A1 eintragen und Wert setzen drücken.
    Mit A2-A6 wiederholen.


    Möglichkeit 3:
    Du machst erstmal ein Backup Menü -> Datei -> Archivieren -> USB-Schrank -> Alles
    Das speicherst Du auf deinen PC weg und spielst das alte Backup wieder ein.
    Oder Du traust dem nicht und öffnest einfach in deinem Backup die $config.dat (C/KRC/R1/SYSTEM/$config.dat)
    und suchst nach XHOME und trägst dort die Werte ein.
    Wenn keine der drei Möglichkeiten für Dich in Betracht kommen lass die Finger davon und lass es jemand machen der
    es kann....

    Hi,
    danke für die Rückmeldung.
    Das immer angefordert wird kann ich aber nicht unterschreiben. Habe z.B. grad ne Applikation mit nem
    Laserscanner... Klar könnte ich mit nem Meldefeld anfordern und erst mit dem Schutzfeld die Überwachung aktivieren,
    aber wenn jemand zu schnell ist und das Feld halt keine 15m groß ist...


    Mein Ansatz ist mal im ersten Moment OV_PRO abzusenken und ne halbe Sekunde später die Überwachung zu aktivieren.
    Ich werde berichten.

    Hallo,
    ich kopiere hier mal die Antwort der Kuka Hotline zu meiner Frage rein.
    Zusammenfassung des Ganzen:


    Schlafen legen geht, aufwecken eher nicht.
    Ob der Kuka auf WoL reagiert habe ich bisher nicht getestet.


    [size=2][font=Calibri,sans-serif][size=1]bitte beachten Sie, dass entweder ProfiEnergy engesetzt werden kann, oder PowerManagement.[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]ProfiEnergy ist erst ab der Profinet Version V2.2.x möglich (und auch erst ab dieser im WoVi aktivierbar).[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Es muss generell zwischen ProfiEnergy und unserer Funktion PowerManagment unterschieden werden:[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][font=Arial,sans-serif]-[/font][font=Arial,sans-serif] [/font]ProfiEnergy ist ein Bestandteil des ProfiNet Protokolls. Für die Verwendung dieser Funktion, muss auf der Robotersteuerung lediglich in WorkVisual in den ProfiNet Einstellungen der Hacken für ProfiEnergy gesetzt werden. Auf der SPS muss dann der Siemens Baustein für ProfiEnergy und unsere Robotersteuerung integriert werden.
    (Siehe Dokumentation ProfiNet)
    [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][font=Arial,sans-serif]-[/font][font=Arial,sans-serif] [/font]Die Funktion PowerManagement beinhaltet das An- und Abschalten des Antriebsbus, die Steuerung in den Hibernate Modus versetzen und das Einleiten eines Kaltstartes der Steuerung. Die Funktion „WakeOnLan“ ist dabei nicht Bestandteil. Für die Verwendung von PowerManagement muss die Datei CapCtrl.xml unter C:\KRC\ROBOTER\Config\System\Common\ angepasst werden.[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]PowerManagement[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]C:\KRC\ROBOTER\Config\System\Common\CapCtrl.xml[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Knoten <PowerDownByPLC>[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Diese Funktion belegt 1 Byte (8 Bit) Eingangsdaten und 1 Byte (8 Bit) Ausgangsdaten. Die Bedeutung und die Lage der Signale kann aus der Kundendokumentation entnommen werden (siehe unten).[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Beispiel:[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][size=1]<[/size][size=1]PowerDownByPLC activated[/size][size=1]="[/size][size=1]on[/size][size=1]">[/size][/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][size=1] <[/size][size=1]Input[/size] [size=1]driver[/size][size=1]="[/size][size=1]PNIODriver[/size][size=1]"[/size][size=1] bus[/size][size=1]="[/size][size=1]PNIO-DEV[/size][size=1]"[/size][size=1] bitOffset[/size][size=1]="[/size][size=1]128[/size][size=1]" />[/size] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][size=1] <[/size][size=1]Output[/size] [size=1]driver[/size][size=1]="[/size][size=1]PNIODriver[/size][size=1]"[/size][size=1] bus[/size][size=1]="[/size][size=1]PNIO-DEV[/size][size=1]"[/size][size=1] bitOffset[/size][size=1]="[/size][size=1]2288[/size][size=1]" />[/size] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][size=1] [/size][size=1]<!--[/size] [size=1]Erster freier Eingang liegt auf Bit 128. [/size][/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1][size=1] Erster freier Ausgang liegt auf Bit 2296.[/size][/size][/font][/size]
    [size=2][size=1][size=1][font=Calibri,sans-serif][size=1] Wenn Bitoffset benötigt wird, dann immer Byte-weise[/size][/size][/size][/font][/size]
    [size=2][size=1][size=1][font=Calibri,sans-serif][size=1] Bsp. 128 + 8 oder 2296 + 24 [/size][/size][/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Nach der Änderung der CabCtrl.xml muss ein Kaltstart mit „Dateien neu einlesen“ durchgeführt werden.[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Konfiguration der Extern Schnittstelle für IO Bedienung
    Die Konfiguration findet in der Datei C:\KRC\Config\User\Common\CabCtrl.xml statt.[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Beispiel mit Profinet:[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]<PowerDownByPLC activated="on">[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] <Input driver="PNIODriver" bus="PNIO-BUS" bitOffset="416" /> [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] <Output driver="PNIODriver" bus="PNIO-BUS" bitOffset="2576" /> [/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]</PowerDownByPLC>[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Dabei haben die Eingänge folgende Bedeutung:
    Bit 0 Bit 1 Bit 2 Aktion[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]1 0 0 Abschalten des Antriebsbusses[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]0 0 0 Wiedereinschalten des Antriebsbusses[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]0 0 1 Herunterfahren der Steuerung für Kaltstart[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]0 1 0 Herunterfahren der Steuerung für Hibernate[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Dabei haben die Ausgänge folgende Bedeutung:[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]Bit 0 Bit 1 Info[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]1 0 Antriebsbus ist abgeschaltet[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1]0 1 Steuerung ist betriebsbereit[/size][/font][/size]
    [size=2][font=Calibri,sans-serif][size=1] [/size][/font][/size]

    Wenn der Raum bereits aktiv ist würde ich die Geschwindigkeiten für die Bewegungen die in den Raum führen anpassen.
    Also z.B.


    IF RAUM_AKTIV THEN
    C_VEL = 0.25
    ELSE
    C_VEL = 2.4
    ENDIF
    Wenn sich der Roboter bereits in der Bewegung befindet, also seine Bahnplanung schon durch ist könnte man noch mit dem OV_PRO spielen und diesen z.B. in der SPS.SUB anpassen.
    Wenn sich der Roboter aber schon im Bereich befindet wenn er als reduziert aktiviert wird dann hilft das alles nur bedingt.
    Vorschlag vom Kuka Support den ich da erhalten habe war den Roboter kurz zu stoppen -> Raum aktivieren -> Roboter start.
    Dann hält er sich brav dran.

    Ich würde die Profibus Kommunikation nutzen und dann folgendes machen:


    1. In einer Dat-Datei genug Positionen (Tipp nimm ein Array) anlegen um deine Positionen aufnehmen zu können
    2. Am Anfang vom Programm alle Positionen via Profibus anfordern und in die passenden Positionen im Dat-File kopieren
    3. Das Programm ganz normal laufen lassen mit den Positionen - nun kannst Du alle Schweinereien wie Überschleifen, Spline, etc nutzen.


    Grüße


    Marcel

    Hallo,


    grober Vorschlag:


    $AXIS_ACT (oder $AXIS_INT bei interrupt) auslesen.
    Wenn Du die Info auswerten willst Base 0 Tool 0 auswählen und mit Forward oder Inverse (bin mir grad nicht so sicher)
    in einen Frame / Eine Pos umwandeln.


    Grüße


    Interrupt

    Mal ausm Kopf runtergetippt.


    Grüße



    Probiere mal dein Unterprogramm im Vorlauf auszuführen (CONTINUE).


    Das könnte wirklich die Ursache für den Vorlaufstopp sein.


    Grüße