Beiträge von observer

    Das Echtzeitsystem hat immer vorrang vor dem unkritischen Windows. Wäre es also die Echtzeit wird die Hmi träge.

    Mmh... ich glaube, es laeuft isoliert auf einer eigenen CPU. Bei den VM Einstellungen sind 2 Prozessoren eingestellt und unter Windows wird nur ein Prozessor verwendet, daher die Annahme. Wenn ich den Task Manager betrachte ist die CPU Auslastung in der VM bei ca. 20 %. Waehrend des Speicherns der Datei pendelt sie dann zwischen 20 - 30 %. Waehrend die KUKA HMI beim Speichern komplett einfriert, kann ich Windows im Hintergrund noch ganz normal bedienen.

    Nachtrag: es liegt wohl nicht an der Verbindung WoV <-> OL, sondern an OL selbst.

    Die gleiche Denkpause benoetigt OL wenn ich eine Datei direkt in OL abspeichere. Was mir auch aufgefallen ist, ist dass eine meiner CPUs dauerhaft zu 90-100 % ausgelastet ist. Beim Speichern ist sie dauerhaft auf 100 %. Ich schaetze, dass es das Echtzeitbetriebssystem ist, dass die CPU so stark auslastet, denn die HMI reagiert sehr schnell.


    Gibt es da Einstellmoeglichkeiten?

    Hallo an alle,


    ich habe angefangen OfficeLite zu nutzen und habe nun das Problem, dass die Uebertragung der geaenderten Dateien aus WoV im "Programmierung und Diagnose" Arbeitsbereich zu OL sehr lange dauert. Jede Datei braucht ca. 20-30 Sekunden. Gibt es irgendeine Einstellung oder Firewall-Filter den ich einstellen muss?!

    OL Version 8.6.8 Build 13 - Hyper V Image

    WoV Version 6.0.26 Build 2225

    Die Systeme laufen auf Windows 10 Pro Build 19045.

    Moin an alle,


    benutzt jemand von euch git, um euren Code zu versionieren?

    Es nervt mich, dass

    - sich der Header der Dateien staendig veraendert, wenn man eine Programmkopie von der Steuerung zieht,

    - die Werte der Variablen neben der Deklaration in der .dat Datei abgelegt sind,

    was immer wieder zu Aenderungen an den Dateien fuehrt.


    Wie geht ihr damit um? Setzt ihr Filter oder Hooks ein, um Header und Werte zu ignorieren?

    Moin moin,

    ich versuche gerade Bohrungen (6 - 12mm Durchmesser) mit einem Agilus KR10 (KSS8.5) mit dem ForceTorqueControl (4.0) Paket zu entgraten. Hierfuer muss ich mit einem kegelfoermigen Werkzeug in einer HF Spindel die Fase der Bohrung kreisfoermig mit definiertem Druch mehrmals umfahren.

    Dadurch, dass das Zentrum des Werkzeugs sich in der Bohrung befindet, verringert sich der Innendurchmesser, den der Roboter abfahren muss, zum Teil auf 2-3mm. Mit dieser Konstellation habe ich gerade schwer zu kaempfen. Versucht habe ich bisher folgendes:

    1. mit dem Werkzeug soweit in die Mitte der Bohrung eintauchen, sodass sich der Roboter nur noch in X/Y bewegen muss, um die Fase zu umrunden

    2. sensorgefuehrt im Tool KS bis an die Fase fahren (Kontakt herstellen)

    3. nun will ich ja mehrere Kreise mit derselben Kraft umfahren, wobei der Kraftvektor sich naturlich senkrecht auf der Tangenten des Kreises befinden soll. Hierfuer habe ich zuerst eine (Kraft-)ueberlagerte (Folgebewegung im Kontakt) CIRC Bewegung erstellt, wobei ich den genau abzufahrenden Innendurchmesser anhand der Eintauchtiefe des Werkzeugs, des Kegelwinkels, der Antastposition aus Schritt 2 sowie dem bekannten Durchmesser der Bohrung berechnet habe. Sprich, es sollten eigentlich nur kleine Korrekturen im zehntel-Bereich notwendig sein.


    Ein erstes Problem scheint aber bereits die Definition des TTS darzustellen. Durch die Abhaengigkeit von dem Tool-X und dadurch, dass ich die Orientierung des Werkzeugs beim Abfahren der Bohrung nicht veraendere, kippt das TTS nach spaetestens einer halben Umdrehung und statt gegen die Fase zu druecken, faengt der Roboter nun an in die entgegengesetzte Richtung zu korrigieren. Kann man das irgendwie umgehen oder mache ich etwas falsch? (Beim Schreiben ist mir aufgefallen, dass ich ja theoretisch Tool-X in die axiale Achse des Werkzeugs legen koennten. Damit duerfte das TTS damit nicht mehr interferieren. Ich werde dies morgen testen koennen.)


    Das naechste Problem ist, dass trotz erreichter Kraft der Roboter beim Umfahren der Fase manchmal stehenbleibt, ohne dass ich im RSI Monitor einen Grund hierfuer feststellen kann (Sollkraft erreicht, Istkorrektur noch unter der Maxkorrektur). Nach 1-2 Sekunden gehts dann weiter. Aktuell habe ich Fx (radiale Kraftrichtung) und Fy (die Kraft von "oben", die durch den Kegel am Werkzeug ansteht) auf eine definierte Kraft und Fx auf 0N eingestellt, aber toll ist es nicht.

    Wie wuerdet ihr diese Aufgabe angehen?


    Ich habe die CIRC Bewegung bereits durch einen Polygon ersetzt, den ich beliebig einstellen kann, um hier mehr Freiheit beim Setzen der verschiedenen Konfigurationen zu haben. Dazu habe ich zwei ueberlagerte Konfigurationen mit entgegengesetzen Kraeften erstellt, die ich nach einem Halbkreis aktivieren kann. Es fuehlt sich aber alles nicht so richtig an, was ich tue.

    Leider nicht. Bei Rechenanweisungen kann die Gruppenmaskierung (hierbei leider auch nicht indirekt über Register) angegeben werden, aber nicht bei Fahranweisungen.
    Man kann zwar, wie oben angegeben, $SCR_GRP.AXISORDER nutzen, um einzelne Achsen zu deaktivieren. Dies funktioniert nur leider nicht, wenn man der Achse einen Joint Speed Limit zuordnet, um die Achse sicher zu deaktivieren. Ich hatte hierzu schon eine Funktion geschrieben, die der nicht-aktiven Achse immer die aktuelle Position zugewiesen hat, bis ich die Safetyfunktionen aktiviert habe :???:

    Hallo Ngos,


    ein Register ist ein Speicherbereich, in dem du Zahlen speichern kannst. Dabei können sowohl Ganz- als auch Kommazahlen gespeichert werden. Wenn du in anderen Programmiersprachen bewandert bist, so sind es einfach nur Float Variablen.
    Zu dem Unterschied zwischen einer Positionsvariablen/Positionsregister (ohne Anspruch auf Vollständigkeit):
    - Positionsvariablen werden direkt im Programm gespeichert und sind auch nur dort erreichbar
    - Positionsregister sind von jedem Programm aus erreichbar
    - Positionsregister können im Programm verändert werden, Positionsvariablen nicht
    - Positionsregister speichern die Tool- und User-Frame nicht, womit allerlei Verschiebungen durch diese möglich sind. Positionsvariablen werden mit einem festen Tool-/User-Frame Tupel gespeichert und können nur mit diesem angefahren werden
    - Positionsregister können als Offsets verwendet werden, Positionsvariablen nicht


    Ein schöner Blog zu Fanuc Roboterprogrammierung: https://www.onerobotics.com/

    Hallo an alle,
    ich stehe vor der folgenden Aufgabe: es soll ein Roboter mit zwei externen Rotationsachsen programmiert werden. Die beiden Achsen befinden sich auf einem Drehtisch, sodass sich immer nur eine von den beiden Achsen im Arbeitsbereich des Roboters befindet. Die andere befindet sich dann außerhalb der Roboterzelle zum Umrüsten auf ein neues Werkstück. Ansonsten ist es für den Roboter relativ egal, welche von den beiden Achsen gerade im Arbeitsbereich ist, da auf beiden die gleichen Teile bzw. die gleichen Arbeitsschritte zu erledigen sind. Ich hab hierzu einen Screenshot aus der Fanuc Doku angehangen, die Zelle ist fast identisch aufgebaut.
    Die beiden Achsen habe ich in jeweils einer eigenen Gruppe angelegt, sodass ich mit dem Roboter nun drei Bewegungsgruppen habe.


    Dazu habe ich nun einige Fragen, die ich leider nicht vollends ergoogeln konnte. Es geht mir hierbei um die Logik und nicht um das sichere Abschalten der Achse:
    1. Ist es möglich im Programm (bspw. durch das Setzen einer Variablen) eine von den Drehachsen zu deaktivieren bzw. die Fahrbefehle zu ignorieren?
    Ich habe hierzu bisher die Variable $SCR_GRP[1].AXISORDER gefunden. Es funktioniert auch, dass sich die Achse nicht bewegt, jedoch werden die hinterlegten Achsbefehle für die jeweilige Gruppe dennoch ausgeführt, sodass sich entsprechend nichts bewegt, weil sich die Achse nicht bewegt. Ich möchte im Grunde, dass der Fahrbefehl für die jeweilige Achse einfach ignoriert wird.


    2. Über die Gruppenmaskierung eines Programms ist es möglich, eine Gruppe zu ignorieren. Da ich jedoch die gleichen Bauteile auf beiden Achsen habe, möchte ich ungern zwei mal das gleiche Programm haben, nur mit unterschiedlichen Gruppenmaskierungen. Ist es aus dem Programm heraus möglich, eine Gruppenmaskierung einzuschalten?


    3. Meine aktuelle Lösung wäre nun das hin und herkopieren von PRs, wobei ich den Wert der zur Zeit nicht benötigten Achse einfach auf den aktuellen Wert (JPOS) setze. Diese Lösung finde ich jedoch ebenfalls nicht schön und umständlich, weil ein TouchUp so erschwert wird und ich die Achswinkel in zusätzlichen Registern abspeichern muss. Gibt es hier einen schöneren Weg, wenn 1. und 2. nicht möglich sind?


    Schönen Gruß, Maxim

    Hallo SJX,
    ich bin heute nicht vor Ort, versuche es jedoch bestmöglich zu beantworten.
    Die beiden Dateien $machine.dat und $robcor.dat habe ich von D:\KRC_CD1\Internat\MADA\KR15-2\FLOOR\R1 (die einzelnen Ordnernamen sind jetzt aus dem Gedächtnis und daher evtl nicht ganz richtig) genommen und einfach in den R1\Mada Ordner des Roboters eingefügt, nachdem ich den Submit Interpreter abgewählt habe. Also alles direkt am KCP und nicht über Windows. Daraufhin hat sich der Robi auch direkt rekonfiguriert. Die Meldung, dass die Maschinendaten nicht passen war auch weg.
    Softwarestand alter PC: 4.x
    Softwarestand neuer PC: 5.2.x
    Nach einem Kaltstart sind wirklich nur die Busfehler + Justage durchführen Meldungen da.

    Hallo an alle,


    bei einer KRC2 von 2004 mit einem KR15-2 ist leider der Rechner kaputt gegangen und ein Ersatz wäre erst in zwei Wochen lieferbar. Da wir noch einen KRC2ed05 Rechner von 2006 da haben, haben wir mal versucht diesen in die Steuerung einzubauen. Nachdem ich die Madas des KR15-2 von der D-Partition in den R1 Mada Ordner überspielt und die Festplatten-Daten ans RDW angepasst habe, hatte ich keine relevanten Meldunngen mehr (nur Justage durchführen und Profibus-Fehler) und konnte die Antriebe des Roboters einschalten. Versucht man den Roboter nun in T1 manuell zu bewegen, egal welche Achse, sackt die A2 einige Grad runter und zwar jedes Mal.


    Ich habe schon versucht einige Madas und Servo-Dateien aus den R1 und STEU Ordnern der alten Festplatte auf den neuen Rechner zu überspielen, jedoch ohne Erfolg.


    Funktioniert so ein Tausch überhaupt? Und wenn ja, habe ich irgendwelche Daten vergessen?