- Editor öffnen
- Neue Bewegung einfügen
- Koordinaten, Achsen und 3D-Vorschau
- Leiste der Bewegungsparameter
- Punkt umbenennen
- Bewegungsart ändern
- Achspunkte (E6AXIS) und kartesische Punkte (E6POS)
- Was Apply schreibt und wohin
- Schutzoptionen für globale Punkte
Der KRC-Editor hat einen integrierten Punkteditor für die drei grundlegenden Bewegungsarten - PTP, LIN und CIRC. Er bearbeitet den Punkt selbst (Koordinaten) und das Inline-Formular der Bewegung (Art, Geschwindigkeit, Überschleifen, Werkzeug, Basis), sodass eine komplette Bewegung in einem Fenster geändert werden kann, ohne den Rohtext des Folds anzufassen.
Das Fenster besteht aus vier Teilen: links die Koordinaten des Punktes in zwei Registerkarten (Cartesian und Joint), darunter die Zusatzachsen und darunter Werkzeug/Basis der Bewegung; rechts die 3D-Vorschau mit den Ansichtsschaltflächen und dem Meldungsbereich; unten die Leiste der Bewegungsparameter; und direkt über den Schaltflächen der Pfad der Roboterkonfiguration, mit der das Fenster arbeitet.
Der integrierte Editor wird für einfache PTP/LIN/CIRC-Folds verwendet - also für solche, deren Inhalt
dem von der Steuerung erzeugten fünfzeiligen Standardaufbau folgt
($BWDSTART, PDAT_ACT/LDAT_ACT, FDAT_ACT,
BAS(...), Bewegungszeile).
Technologiepunkte (Punktschweißen, Kleben, Servozange, ...) werden mit ihm nicht bearbeitet: Sie enthalten Parameter, die das Grundformular nicht kennt, ein Neuaufbau eines solchen Folds würde sie also zerstören. Für diese Folds ist die Parameterleiste abgeschaltet und das Fenster weist darauf hin - ihre Parameter werden über ihr eigenes Befehlsformular aus dem KRL Command Catalog bearbeitet, während die Koordinaten weiterhin ganz normal im oberen Teil des Fensters bearbeitet werden können.
Technologiepunkte (Punktschweißen, Kleben, Servozange, ...) werden mit ihm nicht bearbeitet: Sie enthalten Parameter, die das Grundformular nicht kennt, ein Neuaufbau eines solchen Folds würde sie also zerstören. Für diese Folds ist die Parameterleiste abgeschaltet und das Fenster weist darauf hin - ihre Parameter werden über ihr eigenes Befehlsformular aus dem KRL Command Catalog bearbeitet, während die Koordinaten weiterhin ganz normal im oberen Teil des Fensters bearbeitet werden können.
▲ Editor öffnen
- Doppelklick auf den Bewegungs-Fold im Programmtext, oder
- Edit point coordinates im Kontextmenü (Rechtsklick) des Editors, oder
- Doppelklick auf den Punkt in der Punkttabelle.
▲ Neue Bewegung einfügen
Insert motion point (Roboter-Werkzeugleiste) fügt in der Zeile des Cursors eine neue Bewegung ein und öffnet dieses Fenster dafür. Zuerst landet im Programm ein vollständiger, gültiger PTP-Fold und daneben, in der .dat-Datei des Programms, die drei Deklarationen, die jede Bewegung braucht: die Position (XP<n>), den Frame (FP<n>) und die Bewegungsdaten (PP<n>).
Die neue Bewegung wird nach der Zeile des Cursors eingefügt, aber nie innerhalb eines anderen Folds. Steht der Cursor auf einem Fold - der übliche Fall, da eine zugeklappte Bewegung eine einzige anklickbare Zeile ist -, kommt die neue Bewegung hinter das ;ENDFOLD dieses Folds, nicht zwischen seinen Kopf und seinen Inhalt. Abgelehnt wird nur ein Fold ganz ohne ;ENDFOLD, denn dann ist die Fold-Struktur des Programms bereits beschädigt.
Vor dem Einfügen fragt der Editor, wie der Punkt deklariert werden soll - XYZABC (E6POS) oder JOINT (E6AXIS) - mit zwei Schaltflächen, von denen immer nur eine aktiv sein kann. Das sind keine zwei Ansichten derselben Sache: Dieselbe TCP-Position kann in mehreren Armkonfigurationen erreicht werden, die Achsform enthält also Informationen, die die kartesische nicht hat - genau deshalb verwenden HOME-Positionen sie. Die Wahl wird für das nächste Einfügen gespeichert, die Frage wird aber immer gestellt, denn sie entscheidet, was der Punkt ist - eine spätere Änderung schreibt die gesamte Deklaration neu.
Der neue Punkt übernimmt die Werte der benachbarten Bewegung - der vorhergehenden oder, wenn es keine gibt, der folgenden - zusammen mit deren Werkzeug und Basis. Der Frame wird mit übernommen, weil kartesische Koordinaten nur in einem bestimmten Frame eine Bedeutung haben: Würden nur die Zahlen in einen Punkt mit Werkzeug 0 und Basis 0 kopiert, läge er stillschweigend an einer ganz anderen Stelle. Ist der Nachbarpunkt in der jeweils anderen Form gespeichert, werden die Werte über inverse bzw. Vorwärtskinematik umgerechnet.
Ohne Nachbarpunkt - oder wenn die Umrechnung nicht möglich ist - erhält der Punkt ersatzweise alle Koordinaten 0, Werkzeug 0, Basis 0. Der Editor teilt mit, welcher der beiden Fälle eingetreten ist: im Typdialog vor dem Einfügen und danach noch einmal in einer Meldung. Die Geschwindigkeit beginnt bei 100 %. Alles Weitere wird in diesem Fenster eingestellt und mit Apply geschrieben.
Die Nummer <n> ist die nächste freie, gezählt über Positionen, Frames und Bewegungsdaten des Programms und seiner globalen Positionsdateien zugleich, sodass alle drei Deklarationen des neuen Punktes dieselbe Nummer tragen. Die Benennung der Bewegungsdaten-Deklaration folgt der Konvention der Datei, in der sie landet, abgelesen an der benachbarten Bewegung: XP5 gehört zu PP5 in einer von OrangeEdit geschriebenen Datei und zu PPP5 in einem BMW-Archiv. Das ist nur ein Vorschlag: Der Name kann in der Leiste der Bewegungsparameter geändert werden, und ist der neue Name bereits vergeben, erscheint dieselbe Frage wie beim Umbenennen jedes anderen Punktes (siehe Punkt umbenennen). Die vorgeschlagenen Deklarationen werden dann verworfen, da nichts mehr auf sie verweist.
Wird das Fenster ohne ein einziges Apply geschlossen, wird das gesamte Einfügen rückgängig gemacht: Die Bewegung
verschwindet aus dem Programm und die drei Deklarationen aus der Punkttabelle. Eine Bewegung zu einem
Punkt voller Nullen, die niemand bestätigt hat, hat in einem Programm nichts verloren.
Bewegungen außerhalb der drei Grundarten - Technologiebefehle wie Swi_AdvSpot oder SG_MOVE - werden stattdessen aus dem KRL Command Catalog eingefügt, der ihre eigenen Parameterformulare enthält.
▲ Koordinaten, Achsen und 3D-Vorschau
Zwei Registerkarten zeigen dieselbe Position in beiden Darstellungen und werden synchron gehalten:
- Cartesian - X, Y, Z, A, B, C sowie S (Status) und T (Turn);
- Joint - A1 bis A6, jeweils mit einem Schieberegler, begrenzt auf die Software-Endschalter der Achse aus den Maschinendaten des Roboters.
Die Zusatzachsen E1-E6 werden einmal unterhalb der Registerkarten angezeigt - sie sind für beide Darstellungen gleich. E1 ist Teil der kinematischen Kette (Linearachse); E2-E6 werden unverändert übernommen.
Die 3D-Vorschau zeigt den Roboter in der bearbeiteten Position mit dem Werkzeugkoordinatensystem des Bewegungswerkzeugs und optional dem Arbeitsraum. Sie folgt jeder Wertänderung sofort. Ist für den konfigurierten Robotertyp kein CAD-Modell verfügbar, wird ein kinematisches Ersatzmodell verwendet, und der Bereich weist darauf hin.
▲ Leiste der Bewegungsparameter
Die Leiste am unteren Fensterrand (siehe Abbildung oben) enthält die Parameter des Inline-Formulars der Bewegung - dieselben Felder, die die Steuerung auf dem smartPAD anzeigt:
- Motion type - PTP, LIN oder CIRC;
- Point name - ohne das führende X geschrieben (die Eingabe P1 bedeutet die Deklaration XP1, den Frame FP1 usw.);
- Auxiliary point - nur für CIRC, das zwei Punkte benötigt (einen Hilfspunkt auf dem Bogen und den Endpunkt);
- Approximation - leer für eine Genauhalt-Bewegung, oder C_DIS (Distanz), C_ORI (Orientierung), C_VEL (Geschwindigkeit), C_PTP (achsspezifisch). Das Feld ist editierbar, sodass ein ungewöhnlicher, bereits in der Datei vorhandener Wert unverändert erhalten bleibt, statt normalisiert zu werden;
- Vel - Geschwindigkeit, in % für PTP und in m/s für LIN/CIRC. Sie wird als Text genau so gespeichert, wie sie geschrieben wurde, sodass ein Wert wie 0.1 nie als 0.100000 aus dem Editor zurückkommt;
- motion data list name - der Name der PDAT/LDAT-Deklaration. Dieses Feld ist schreibgeschützt: Es folgt dem Punktnamen (siehe Punkt umbenennen);
- Nummern von Tool und Base - ihre Namen aus $config.dat werden neben den Registerkarten angezeigt, genau so, wie die Steuerung sie für den Fold-Kopf zusammensetzt;
- extTCP - feststehendes Werkzeug (IPO_FRAME #TCP), d. h. das Bauteil wird vom Roboter getragen und das Werkzeug steht still;
- ACC (%) und APO (mm) - Beschleunigung und Überschleifdistanz aus der PDAT/LDAT-Deklaration in der .dat-Datei.
▲ Punkt umbenennen
Die Eingabe eines anderen Punktnamens ist eine vollständige Umbenennung des Bewegungsziels: Der Fold, die Frame-Deklaration und die Bewegungsdaten-Deklaration folgen ihm alle.
Der motion data list name wird nicht direkt bearbeitet - er behält die Beziehung, die der Fold bereits hatte und die sich je nach Steuerung und Programmgenerator unterscheidet:
| Punkt / Bewegungsdaten vorher | nach Umbenennen von P1 in P9 | warum |
|---|---|---|
| P1 / PP1 | PP9 | Bewegungsdaten = Präfix + Punktname |
| P1 / P1 | P9 | Bewegungsdaten = Punktname |
| HOME / DEFAULT | DEFAULT | ein gemeinsam genutzter Datensatz - das Umbenennen eines Punktes darf den Fold nicht von Daten trennen, die andere Bewegungen verwenden |
Gehört der neue Name zu einem Punkt, der im Programm (oder als globale Position) bereits existiert, fragt der Editor, wie das gemeint ist:
- Yes - hier die Koordinaten des vorhandenen Punktes verwenden. Die Bewegung führt dann an dieselbe Stelle wie der andere Punkt; die im Fenster angezeigten Werte werden verworfen;
- No - die im Fenster angezeigten Koordinaten behalten und den vorhandenen Punkt damit überschreiben. Dadurch ändert sich diese Position in jedem Programm, das sie verwendet;
- Cancel - es wird nichts geändert.
▲ Bewegungsart ändern
PTP verwendet eine PDAT-Deklaration, LIN und CIRC verwenden LDAT - ein Wechsel der Art wechselt also auch den Bewegungsdaten-Datensatz. Existiert die Zieldeklaration noch nicht, wird sie mit den Standardwerten angelegt, die die Steuerung für einen neuen Punkt verwendet (und beim nächsten Speichern an die .dat-Datei angehängt). Für den Wechsel zu CIRC wird zusätzlich ein Hilfspunkt benötigt; ist das Feld leer, wird ein vom Endpunkt abgeleiteter Name vorgeschlagen, damit es etwas zu korrigieren gibt statt eines leeren Namens im erzeugten Fold.
Das CIRC-Inline-Formular konnte nicht anhand echter Steuerungsdateien überprüft werden - im Material,
das zur Rekonstruktion des Fold-Formats verwendet wurde, stand kein einziger CIRC-Fold als Referenz
zur Verfügung. Sein Aufbau ist analog von LIN abgeleitet; der Editor fragt daher vor dem Erzeugen
nach einer Bestätigung, und das Ergebnis sollte auf der Steuerung geprüft werden.
▲ Achspunkte (E6AXIS) und kartesische Punkte (E6POS)
Ein Punkt wird in der .dat-Datei entweder als Achswerte (E6AXIS) oder als kartesische Koordinaten (E6POS) gespeichert. Der Editor ändert das nie von sich aus: Bei einem Achspunkt werden die Achswerte A1-A6 zurückgeschrieben, bei einem kartesischen Punkt die Werte X/Y/Z/A/B/C. Ist ein Achspunkt geöffnet, weist der Meldungsbereich ausdrücklich darauf hin.
Das ist keine Formalität. Dieselbe TCP-Pose kann mit mehreren verschiedenen Armkonfigurationen
erreicht werden; werden Achswerte durch eine aus der kartesischen Registerkarte umgerechnete Pose ersetzt, kann sich
die tatsächliche Bahn ändern, auf der der Roboter diesen Punkt anfährt. Die Entscheidung, die Speicherform
einer Position zu ändern, ist Sache der Person am realen Roboter, nicht des Editors.
Die kartesische Registerkarte bleibt auch für einen Achspunkt voll nutzbar: Ein dort eingegebener Wert wird über die inverse Kinematik in Achswerte umgerechnet, und diese Achswerte landen in der Datei.
▲ Was Apply schreibt und wohin
Apply übernimmt das gesamte Fenster in einem Schritt, in dieser Reihenfolge: zuerst die Bewegungsparameter (die den Fold-Text neu schreiben können), dann die Koordinaten.
- der Fold-Text in der .src-Datei wird nur dann neu aufgebaut, wenn sich ein darin sichtbarer Parameter tatsächlich geändert hat. Alles, was die Leiste nicht bearbeitet, wird unverändert übernommen: der Versionsstempel der Steuerung (%R), die Marker für Befehlskatalog und Variante, ein Suffix der Kollisionserkennung, fremde Zeilen im Fold-Inhalt (zum Beispiel Momentenüberwachung), der genaue Text der abschließenden ;ENDFOLD-Zeile und der Abstandsstil des Inhalts;
- Koordinaten folgen den üblichen Regeln: Ein lokaler Punkt wird im Speicher aktualisiert und beim Speichern des Programms geschrieben; ein globaler/HOME-Punkt wird sofort in seine gemeinsame .dat-Datei geschrieben;
- ACC/APO/Vel werden in die PDAT/LDAT-Deklaration geschrieben, Tool/Base/extTCP in die FDAT-Deklaration. Ein Wert, der sich nicht tatsächlich geändert hat, wird nicht neu geschrieben, sodass unberührte Deklarationen Byte für Byte unverändert bleiben.
▲ Schutzoptionen für globale Punkte
Zwei Optionen unter Settings » KRC » Others, beide standardmäßig aktiviert, schützen Positionen, die von allen Programmen eines Roboters gemeinsam genutzt werden:
- Block assigning XYZABC coordinates to global JOINT HOME positions - HOME-Positionen liegen in einer globalen .dat-Datei und sind bewusst als Achswerte gespeichert. Ist diese Option eingeschaltet, verweigert der Editor das Überschreiben mit Werten, die aus der kartesischen Registerkarte umgerechnet wurden, und erklärt den Grund;
- Block changing point type (JOINT <-> XYZABC) for global points - eine Änderung der Speicherform eines globalen Punktes schreibt seine gesamte Deklaration neu und betrifft jedes Programm, das darauf verweist; für globale Punkte wird diese Möglichkeit daher gar nicht angeboten.
Robotermontage: Unterstützt wird nur ein in $WORLD stehender Roboter ($ROBROOT = {0,0,0,0,0,0}) oder ein Roboter auf
der Linearachse E1; bei einem anderen $ROBROOT zeigt der Editor statt Achs- oder kartesischer Werte den Grund an.
Siehe auch: die Punkttabelle, die die
Positionen des gesamten Programms auflistet und eine Position von einem Punkt auf einen anderen kopieren kann.
