KRC-Punkteditor




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.

▲ Editor öffnen

Das Fenster öffnet sich mit den bereits eingetragenen aktuellen Werten dieses Folds. Previous und Next springen zu den benachbarten Bewegungs-Folds, ohne das Fenster zu schließen, sodass eine ganze Folge von Punkten nacheinander geprüft werden kann.

▲ 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: Die Änderung eines Wertes in einer Registerkarte berechnet die andere über die Kinematik des Roboters neu (inverse Kinematik von kartesisch nach Achsen, Vorwärtskinematik in umgekehrter Richtung). Eine Position, die nicht erreichbar ist oder in einer Singularität liegt, wird im Meldungsbereich neben der 3D-Vorschau gemeldet, statt stillschweigend übernommen zu werden.

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:
▲ 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: Existiert der neue Name noch nicht, wird dafür ein vollständiger Satz Deklarationen (E6POS/E6AXIS + FDAT + PDAT/LDAT) angelegt und beim nächsten Speichern des Programms an dessen .dat-Datei angehängt.

▲ 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. Bei einer Änderung von Tool oder Base fragt der Editor, ob die Koordinaten für das neue Werkzeug / die neue Basis umgerechnet werden sollen (der Punkt bleibt physisch an derselben Stelle) oder ob sich nur die Referenznummer ändert (die Nummern ändern sich, die Werte bleiben). Bei einem Achspunkt wird diese Frage gar nicht gestellt - Achswerte hängen weder vom Werkzeug noch von der Basis ab.

▲ 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: Lokale Punkte sind von keiner der beiden Optionen betroffen.




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.