Diese Seite beschreibt den einfachen KRC-Editor – den allgemeinen Viewer für normale KUKA-Dateien
.src/.dat, die nicht auf der festen VW/VKRC-Programmstruktur eines bestimmten Kunden
aufbauen. Das Dokument wird laufend erweitert, sobald neue Funktionen im
KRC-Viewer hinzukommen.
- Überblick
- Folds – Zuklappen, Aufklappen und ihre Grenzen
- Punkteditor
- Punkttabelle
- Kopieren, Ausschneiden und Einfügen von Punkten und Folds
- Protect Folds
- Befehle aus einem KRL-Befehlskatalog (.kop / .kfd) einfügen
- Syntaxprüfung – was "Check syntax" tatsächlich prüft
- Go to definition und Find all references
- Bekannte Einschränkungen
▲ Überblick
Anders als der VKRC-Editor setzt der KRC-Viewer kein bestimmtes Technologiepaket oder Programmlayout eines Kunden voraus. Stattdessen erkennt er die Struktur direkt im KRL-Text selbst:
- jeder Block ;FOLD ... ;ENDFOLD, beliebig tief verschachtelt, wird als zusammenklappbarer Fold behandelt;
- ein Bewegungs-Fold (ein PTP/LIN/CIRC-Punkt) wird zusätzlich als Punkt-Fold erkannt – seine Koordinaten, Werkzeug-/Basis-/Frame-Daten und Bewegungsparameter (Geschwindigkeit, Beschleunigung, Überschleifen, ...) stehen nicht im Fold selbst, sondern nur ihre Namen (z. B. XP1, FP1, PPDAT1) – die eigentlichen Werte werden in der zugehörigen .dat-Datei des Programms nachgeschlagen.
▲ Folds – Zuklappen, Aufklappen und ihre Grenzen
Jedes Paar ;FOLD / ;ENDFOLD kann, unabhängig davon, wie tief es in anderen Folds verschachtelt ist, durch Klicken auf das schwarze oder weiße Dreieck daneben zu- oder aufgeklappt werden, oder indem Sie den Cursor hineinsetzen und Ctrl+Q drücken.
Die schließende Zeile ;ENDFOLD eines Folds wird zusammen mit dem übrigen Inhalt des Folds ein- oder ausgeblendet – sie verhält sich genau wie jede andere Zeile im Fold, nicht wie eine separate, immer verborgene Markierung. Das entspricht KRL selbst, das für jeden Block ein explizites schließendes Schlüsselwort verlangt (IF/ENDIF, WHILE/ENDWHILE, SWITCH/ENDSWITCH, ...): Der Editor zeigt Ihnen das passende ;ENDFOLD, sobald der Fold geöffnet ist, sodass die schließende Grenze nie implizit bleibt oder erraten werden muss.
Ein neuer Fold lässt sich aus den markierten Zeilen mit KRC » Make FOLD from selected text erstellen; Bewegungspunkte sollten nicht in andere Folds gelegt werden – siehe Kommentare und Folds.
▲ Punkteditor
Der KRC-Editor hat einen integrierten Punkteditor für die drei grundlegenden Bewegungsarten PTP, LIN und CIRC. Er bearbeitet den Punkt selbst (Koordinaten, sowohl kartesisch als auch als Achswerte, mit 3D-Vorschau) und das Inline-Formular der Bewegung – Art, Geschwindigkeit, Überschleifen, Punktname, Werkzeug, Basis –, sodass eine vollständige Bewegung in einem Fenster geändert werden kann, ohne den rohen Fold-Text anzufassen.
Er öffnet sich per Doppelklick auf den Bewegungs-Fold, über Edit point coordinates im Kontextmenü des Editors oder per Doppelklick auf den Punkt in der Punkttabelle.
Insert motion point (Roboter-Werkzeugleiste) geht den umgekehrten Weg: Es fügt eine neue PTP-Bewegung in der Zeile des Cursors ein – mit Koordinaten null, Werkzeug 0 und Basis 0 und mit der nächsten freien Punktnummer als Vorschlag – und öffnet dasselbe Fenster dafür, sodass die neue Bewegung an einer Stelle fertiggestellt wird. Wird dieses Fenster ohne Apply geschlossen, wird das Einfügen rückgängig gemacht. Siehe Neue Bewegung einfügen.
Punkteditor – vollständige Beschreibung » (Koordinaten und Achsen, die Leiste der Bewegungsparameter, Umbenennen eines Punkts, Ändern der Bewegungsart, Achspunkte und kartesische Punkte, was Apply schreibt und wohin, sowie die Sicherheitsoptionen für globale Positionen)
▲ Punkttabelle
Die Tabelle unter dem Editor listet die Positionen des geöffneten Programms auf – kartesische Punkte und Achspunkte in zwei getrennten Tabellen, jeweils mit dem zugehörigen Werkzeug, der Basis und den Bewegungsparametern. Das Kontextmenü hat das Untermenü Path (TCP) mit den Path toolsn (Bahnlänge, Bewegungszeit, CIRC-Informationen, Prüfung von C_DIS und TRIGGER WHEN PATH, Einfügen eines Punkts auf der Bahn in einem vorgegebenen Abstand).
In der Abbildung oben werden XP1 bis XP4 von den im Programmtext sichtbaren Bewegungen verwendet, XP5 ist in derselben .dat-Datei deklariert, aber keine Bewegung verweist darauf, und die untere Tabelle enthält die beiden Achspositionen XHOME1/XHOME2 aus $config – einer globalen Datei, die alle Programme dieses Roboters gemeinsam nutzen.
▲ Spalten, Symbole und Farben
- ein Punktname in Rot bedeutet, dass der Punkt von einer Bewegung in diesem Programm verwendet wird;
- derselbe Name in grauer Kursivschrift bedeutet, dass der Punkt in einer .dat-Datei deklariert ist, aber keine Bewegung in diesem Programm darauf verweist. Das kommt ganz natürlich vor: Wird der Punkt einer Bewegung von P1 in P2 umbenannt, wird die Deklaration von P1 nicht gelöscht, sondern nur nicht mehr verwendet. Ein solcher Punkt bleibt voll bearbeitbar und wird wieder rot, sobald eine Bewegung diesen Namen verwendet. Die Anzeige lässt sich abschalten – siehe Nicht verwendete Deklarationen anzeigen unten;
- ein kleines Symbol vor dem Namen kennzeichnet eine HOME- oder globale Position, sodass auf einen Blick erkennbar ist, dass die Position nicht zum geöffneten Programm gehört; ein Warndreieck an dieser Stelle bedeutet, dass der Punkt deklariert, aber von keiner Bewegung verwendet wird – es ersetzt das HOME-/Global-Symbol, das die Spalte Module ohnehin wiederholt;
- die Spalte Module zeigt, aus welcher .dat-Datei die Deklaration stammt;
- ein Ausrufezeichen am Wert A5 eines Achspunkts warnt vor der Handgelenk-Singularität (A4 und A6 parallel, A5 innerhalb von ±0.01812°).
Der Streifen über jeder Tabelle zeigt die gewählte Position in der jeweils anderen Darstellung: Achswerte für einen kartesischen Punkt, kartesische Koordinaten für einen Achspunkt. Für eine Achsposition zeigt er außerdem S (Status) und T (Turn) dieser Stellung, berechnet aus den Achswerten – eine E6AXIS-Deklaration hat diese Felder nicht, sie werden aber jedes Mal benötigt, wenn die Position als E6POS geschrieben werden soll.
▲ Nicht verwendete Deklarationen anzeigen
Settings » KRC » Others » Show points declared in .dat but not used in the program (standardmäßig aktiviert) legt fest, ob die oben beschriebenen grau-kursiven Einträge überhaupt aufgelistet werden.
Mit eingeschalteter Option beantwortet die Tabelle die Frage „Gibt es diese Position noch?“ – nach einem Umbenennen, nach dem Löschen einer Bewegung oder wenn eine .dat-Datei von einem anderen Werkzeug geschrieben wurde. Mit ausgeschalteter Option listet die Tabelle nur Positionen, die tatsächlich von einer Bewegung verwendet werden – genau wie vor Einführung dieser Option.
Ein Doppelklick auf den Namen eines verwendeten Punkts setzt den Cursor des Editors auf seine Bewegung. Für einen nicht verwendeten Punkt gibt es keine Zeile, zu der gesprungen werden könnte; der Editor nennt dann die .dat-Datei, in der die Deklaration steht, statt nichts zu tun.
Die Option gilt auch für nicht verwendete globale/HOME-Positionen, und eine gemeinsame
Positionsdatei enthält davon meist weit mehr, als das geöffnete Programm lokale Punkte hat. Wird die Tabelle
in einer Zelle mit großem gemeinsamem Positionspool zu unübersichtlich, ist dies der Schalter, den Sie
ausschalten sollten.
▲ Werte in der Tabelle bearbeiten
In der Tabelle können Sie bearbeiten:
- die Koordinatenwerte direkt (X, Y, Z, A, B, C, E1-E6 bei kartesischen Punkten; A1-A6, E1-E6 bei Achspunkten);
- die Nummern von Tool und Base – bei einer Änderung wird gefragt, ob die Koordinaten des Punkts für das neue Werkzeug / die neue Basis neu berechnet werden sollen (physisch an derselben Stelle bleiben) oder ob nur die Referenznummer geändert werden soll, wobei die rohen Koordinatenwerte unverändert bleiben;
- denselben Wert für mehrere gewählte Punkte gleichzeitig, über das Kontextmenü der Tabelle ("Set equal value for selected points" / "Set equal Tool/Base value for selected points"). Betrifft eine solche Sammeländerung mehrere globale Punkte, werden sie zu einem Schreibvorgang pro betroffener .dat-Datei zusammengefasst, nicht zu einem pro Punkt.
Lokale und globale/HOME-Punkte werden sehr unterschiedlich gespeichert – das sollten
Sie verstehen, bevor Sie einen davon bearbeiten:
- eine Änderung an einem lokalen Punkt (deklariert in der eigenen .dat-Datei des aktuellen Programms) wird nur im Speicher gehalten und sofort in der Tabelle angezeigt – in die .dat-Datei geschrieben wird sie erst, wenn Sie das Programm speichern (mit derselben Speicheraktion wie für den Rest der Datei);
- eine Änderung an einem globalen oder HOME-Punkt wird sofort nach Ihrer Bestätigung in dessen eigene gemeinsame .dat-Datei geschrieben – für diese Punkte gibt es keinen Zustand „ungespeicherte Änderungen“, und das Speichern (oder Nichtspeichern) des gerade geöffneten Programms hat überhaupt keinen Einfluss auf sie.
Da das Bearbeiten eines globalen/HOME-Punkts sofort eine mit anderen Programmen gemeinsam genutzte Datei ändert, zeigt der Editor beim ersten Mal in einer laufenden Sitzung einen Bestätigungsdialog, der genau dies erklärt, mit dem Kontrollkästchen "Don't show this message again" (es wird beim nächsten Programmstart zurückgesetzt, sodass die Warnung nie dauerhaft abgeschaltet ist). Antworten Sie in diesem Dialog mit "No" oder schlägt das Schreiben aus irgendeinem Grund fehl (z. B. weil die Zieldatei von einer anderen laufenden Instanz des Editors gesperrt ist), springt die Tabellenzelle auf den Wert zurück, der tatsächlich auf der Festplatte steht – sie zeigt also nie einen Wert an, dessen Speicherung unbemerkt fehlgeschlagen ist.
▲ Kontextmenü (Rechtsklick) der Punkttabelle
Was das Menü anbietet, hängt von der angeklickten Zelle und der Anzahl der gewählten Zeilen ab. Beide Tabellen – kartesisch und Achsen – haben dasselbe Menü, mit Ausnahme des Abstands.
Die Abbildung zeigt das Menü für zwei gewählte Punkte, geöffnet auf der Spalte Y.
| Eintrag | Angezeigt wenn | Funktion |
|---|---|---|
| Jump to point definition | Rechtsklick auf den Punktnamen oder auf die Spalte Module | öffnet die .dat-Datei, in der die Deklaration steht, und springt direkt dorthin – für lokale, globale und nicht verwendete Punkte gleichermaßen. In der Spalte Module enthält das Menü außerdem Open file (siehe Spalte Module). |
| Set equal <column> value for selected points | Rechtsklick auf eine Koordinatenspalte (X..C / A1..A6, E1..E6) | fragt nach einem Wert und setzt ihn entweder in dieser Spalte jedes gewählten Punkts (Set new value) oder addiert ihn zu den aktuellen Werten (Add to the old value) – z. B. um eine Gruppe von Punkten um 10 mm in Z zu verschieben. Von der Änderung betroffene globale Punkte werden einmal pro gemeinsamer .dat-Datei geschrieben, nicht einmal pro Punkt. |
| Set equal Tool value / Base value for selected points | Rechtsklick auf die Spalte Tool oder Base | setzt für alle gewählten Punkte dieselbe Werkzeug- oder Basisnummer, mit einer gemeinsamen Frage, ob ihre Koordinaten für den neuen Frame neu berechnet werden sollen (siehe Werte in der Tabelle bearbeiten). |
| Cartesian distance | genau zwei Punkte in der kartesischen Tabelle gewählt | zeigt den TCP-Abstand der beiden Punkte und die Differenzen |X|, |Y|, |Z|, |A|, |B|, |C|. Verwenden die Punkte unterschiedliche Werkzeuge oder Basen, warnt das Fenster, dass das Ergebnis nur eine Differenz der rohen Koordinaten ist, kein echter physischer Abstand. |
| Copy <name> coordinates Assign coordinates to <name> |
genau ein Punkt gewählt; Assign nur, wenn die Zwischenablage eine kopierte Position enthält | kopiert die Position eines Punkts zusammen mit Werkzeug und Basis und weist sie einem anderen zu – siehe Koordinaten kopieren und zuweisen unten. |
| Copy selected coordinates as plain text | mindestens eine Zeile gewählt | kopiert die gewählten Zeilen mit einer Kopfzeile als tabulatorgetrennten Text – bereit zum Einfügen in eine Tabellenkalkulation oder einen Bericht. |
| Select all | die Tabelle ist nicht leer | wählt alle Punkte der Tabelle aus, z. B. vor einem der Einträge "Set equal". |
▲ Koordinaten kopieren und zuweisen
Copy coordinates und Assign coordinates to ... (Kontextmenü der Tabelle und des Programmtexts) übertragen eine vollständige Position von einem Punkt auf einen anderen. Übertragen wird die Position selbst zusammen mit Werkzeug und Basis – nicht die Bewegungsparameter. Beide Tabellen bieten diese Befehle an, die kartesische und die Achstabelle: Eine als Achswerte gespeicherte Position ist ein gewöhnlicher Punkt, und die Zwischenablage trägt die Speicherform mit, sodass die empfangende Seite immer weiß, welche der beiden sie erhalten hat.
Typische Anwendungen:
- eine Bewegung an dieselbe Stelle wie eine andere schicken – die Position des bereits korrekten Punkts kopieren und sie dem Punkt zuweisen, der dorthin soll;
- eine früher geteachte Position wiederherstellen – sie aus einem Programm kopieren, das noch den richtigen Wert hat, und im anderen zuweisen;
- eine geteachte Position auf einen neuen Punkt duplizieren – zusammen mit der Umbenennungsfunktion des Punkteditors ist dies der übliche Weg, eine neue Bewegung aus einer bestehenden zu erzeugen, ohne sie am Roboter erneut zu teachen;
- eine Position zwischen einem Roboter und seinem Zwilling übertragen – die Werte sind einfache Zahlen und können daher zwischen Programmen verschiedener Roboter übertragen werden, solange Werkzeug und Basis auf beiden dasselbe bedeuten.
- Werkzeug/Basis – wurde die kopierte Position mit einem anderen Werkzeug oder einer anderen Basis geteacht als der Zielpunkt verwendet, fragt er, ob die Koordinaten neu berechnet werden sollen (damit der Punkt physisch an derselben Stelle bleibt) oder ob die Zahlen unverändert übernommen werden. Bei einem Achspunkt als Ziel entfällt die Frage, weil Achswerte nicht von Werkzeug oder Basis abhängen;
- Speicherform – würden kartesische Koordinaten einem als E6AXIS gespeicherten Punkt zugewiesen (oder umgekehrt), landeten die Zahlen sonst in den falschen Feldern, weil beide Formen in der Deklaration denselben Speicherplatz teilen. Der Editor bietet an, sie über inverse/Vorwärtskinematik umzurechnen und die Form des Punkts beizubehalten, oder – bewusst – den Typ des Punkts zu ändern, wodurch seine gesamte Deklaration neu geschrieben wird;
- geschützte Positionen – die beiden unter Sicherheitsoptionen für globale Punkte beschriebenen Optionen gelten auch hier: Eine globale JOINT-HOME-Position nimmt keine kartesischen Koordinaten an, und der Typ eines globalen Punkts wird nicht zur Änderung angeboten.
Sind Werkzeug und Basis auf einer der beiden Seiten unbekannt, können sie nicht verglichen werden, und der Editor
kann auch keine Neuberechnung der Position anbieten. Er weist darauf hin und fragt, ob die
Zahlen genau so zugewiesen werden sollen, wie sie kopiert wurden – das ist richtig, wenn beide Punkte dasselbe Werkzeug und
dieselbe Basis verwenden, und falsch, wenn nicht. Bei einem Achspunkt stellt sich die Frage nicht, weil
Achswerte nicht von Werkzeug oder Basis abhängen.
▲ Spalte Module – Deklaration öffnen
Das Kontextmenü der Spalte Module bietet:
- Open file – öffnet die .dat-Datei, in der die Deklaration steht;
- Jump to point definition – öffnet diese Datei und springt direkt zur Deklaration dieses Punkts. Das funktioniert für lokale und globale Punkte gleichermaßen und auch für Punkte, die vom Programm nicht verwendet werden.
▲ Kopieren, Ausschneiden und Einfügen von Punkten und Folds
Markierungen können wie überall im Editor kopiert, ausgeschnitten und eingefügt werden (Ctrl+C / Ctrl+X / Ctrl+V), mit zwei Regeln, die sich aus der Fold-basierten Struktur von KRC ergeben:
- eine Markierung, die einen Fold in der Mitte zerschneiden würde (Anfang oder Ende irgendwo darin, ohne das zugehörige Paar ;FOLD/;ENDFOLD vollständig zu umfassen), wird abgelehnt, damit kein defekter, unvollständiger Fold zurückbleibt;
- beim Einfügen eines kopierten Punkt-Folds werden seine lokalen Punkt-, Frame- und Bewegungsdaten unter einem neuen, eindeutigen Namen dupliziert und dem aktuellen Programm hinzugefügt; ein Punkt, der in der Quelle global/HOME war, wird dagegen als einfacher Verweis auf denselben gemeinsamen Namen eingefügt, ohne ein Duplikat anzulegen.
▲ Protect Folds
Menü KRC » Protect Folds ist ein Kontrollkästchen, standardmäßig aktiviert. Solange es eingeschaltet ist, blockiert der Editor Tippen, Delete, Backspace, Enter und Ausschneiden/Einfügen innerhalb des Inhalts jedes Folds, einschließlich verschachtelter Unter-Folds – nur einfache Programmlogik außerhalb aller Folds kann weiterhin direkt als Text bearbeitet werden.
Folge: Um etwas zu ändern, das in einem Fold steht – z. B. die Koordinaten eines Bewegungspunkts
oder die Parameter eines Technologiebefehls –, verwenden Sie die auf dieser Seite beschriebenen
Werkzeuge (den Punkteditor, die
Punkttabelle oder einen Doppelklick auf einen erkannten Befehls-Fold, um
dessen Parameterdialog erneut zu öffnen), statt den rohen Text zu bearbeiten. Das ist beabsichtigt: Der Fold-Inhalt
trägt meist Daten (Punkt-/Frame-/Bewegungsreferenzen oder die Parameter eines Technologiebefehls),
die im reinen Text nicht vollständig sichtbar sind, sodass freie Textänderungen das Angezeigte unbemerkt
vom tatsächlich Gemeinten entkoppeln könnten.
Protect Folds kann im selben Menü (oder in den Einstellungen des Editors, Seite KRC) ausgeschaltet werden, wenn Sie gezielt rohen Fold-Text von Hand bearbeiten müssen – z. B. um einen Fold zu reparieren, den der Editor überhaupt nicht erkennt. Das geschieht auf eigenes Risiko: Bei ausgeschaltetem Schutz kann eine Änderung, die die Struktur eines Folds inkonsistent hinterlässt, auch den Undo/Redo-Verlauf der Datei löschen (siehe Bekannte Einschränkungen unten).
▲ Befehle aus einem KRL-Befehlskatalog (.kop / .kfd) einfügen
Menü KRC » KRL Commands ist ein Untermenü, das aus einem KRL-Befehlskatalog erzeugt wird: einem Ordner mit .kfd-Dateien und/oder .kop-Paketen, die jeweils eine oder mehrere Befehlskategorien und die daraus einfügbaren Befehle ("InlineForms") beschreiben. Es ist dasselbe Dateiformat, das KUKAs eigenes smartHMI, WorkVisual und OrangeEdit für ihre Inline-Befehlsvorlagen verwenden – also kein von diesem Editor erfundenes Format.
Der Katalogordner wird einmalig unter Settings » KRC » General » KRL Command Catalog konfiguriert.
Der Katalog wird nur einmal beim Programmstart eingelesen. Ein in einer
.kfd/.kop-Datei definierter Befehl erscheint erst im Menü KRL Commands, wenn:
- die Datei tatsächlich im konfigurierten Katalogordner liegt, und
- der Editor danach (neu) gestartet wurde – das bloße Hinzufügen, Bearbeiten oder Ersetzen einer Datei in diesem Ordner oder das Ändern des Ordnerpfads in den Einstellungen aktualisiert ein bereits geöffnetes Menü KRL Commands nicht.
Die Auswahl eines Befehls im Menü öffnet einen Parameterdialog (sofern der Befehl konfigurierbare Parameter hat), in dem Sie die Werte wählen, bevor der Befehl an der Cursorposition eingefügt wird. Wird er in ein Programm eingefügt und als Bewegungspunkt erkannt, wird der erzeugte Text automatisch in einen eigenen zusammenklappbaren Block ;FOLD ... ;ENDFOLD eingeschlossen, und ein späterer Doppelklick auf diesen Fold öffnet erneut denselben Parameterdialog, vorbelegt mit den aktuellen Werten, sodass sie geändert werden können.
Eine einfache PTP/LIN/CIRC-Bewegung öffnet per Doppelklick immer den integrierten
Punkteditor, auch wenn der geladene Katalog
zufällig eine passende Befehlsvorlage enthält – der integrierte Editor bietet für diese
drei Bewegungen mehr (Koordinaten, beide Darstellungen, 3D-Vorschau) als ein allgemeines
Parameterformular.
▲ Syntaxprüfung – was "Check syntax" tatsächlich prüft
Menü KRC » Check syntax (F6) parst das Programm anhand der im Editor eingebauten KRL-Grammatik.
Diese Prüfung beschränkt sich auf die Sprachelemente, die tatsächlich im Editor
programmiert sind. Sie erkennt die Struktur der KRL-Sprache selbst – Bewegungsbefehle,
Kontrollfluss, Variablendeklarationen usw. –, kennt aber nicht die konkrete
Form (Anzahl der Parameter, gültige Bereiche, zulässige Auswahlwerte) von kunden- oder herstellerspezifischen
Technologiebefehlen.
Ein aus einem .kop/.kfd-Katalog (siehe oben) erzeugter Befehl wird zu gewöhnlichem KRL-Text, sobald er in das Programm geschrieben ist; "Check syntax" kann daher nicht prüfen, ob seine Parameter noch der Definition dieses Befehls entsprechen – diese Prüfung erfolgt nur einmal, nämlich beim Einfügen (oder erneuten Bearbeiten) des Befehls über seinen Parameterdialog. Ein von Hand getippter oder eingefügter Befehl oder einer aus einem Paket, das der Editor nie erhalten hat (nicht wie oben beschrieben importiert), wird von "Check syntax" nicht beanstandet, auch wenn er gegen die Regeln dieses Pakets verstößt, weil die Prüfung den Befehl schlicht nicht kennt.
▲ Go to definition und Find all references
Wenn die Konfiguration eines Roboterarchivs ($config.dat) geladen ist, erstellt der Editor im Hintergrund einen Index aller .src-, .sub- und .dat-Dateien dieses Archivs. Danach bietet das Kontextmenü auf einem Namen im Programm:
- Go to definition of <name> – öffnet die Datei mit dem DEF / DEFFCT eines Unterprogramms oder einer Funktion und springt zur Zeile. Gibt es mehrere Definitionen, wird jeder Kandidat mit Datei, Zeile und Art aufgelistet.
- Go to declaration of <name> – hat das Archiv keine Definition (z. B. bei einer Routine eines Technologiepakets), wird die Deklaration EXT / EXTFCT angeboten, meist in $config.dat; bei globalen Variablen, Signalen, Strukturen und Aufzählungen die Deklaration in der Datenliste.
- Find all references of <name> – ein Fenster listet jede Verwendung des Namens in den Programmen des Archivs auf (ganze Bezeichner, Kommentare werden übersprungen) mit Datei, Zeile und Text; Definitionen erscheinen fett. Ein Doppelklick öffnet die Datei in dieser Zeile.
Links: MsgQuit ist dreimal definiert – jeder Kandidat mit Datei und Zeile. Rechts: Find all references, die Definition fett.
▲ Bekannte Einschränkungen
- Neue Deklarationen werden angehängt, nicht an Ort und Stelle eingefügt: Bei einem vom Punkteditor erzeugten (oder durch Einfügen duplizierten) Punkt werden die .dat-Deklarationen beim nächsten Speichern geschrieben, angehängt am Ende der Datei direkt vor ENDDAT – dort, wo auch KUKAs eigene Werkzeuge sie ablegen. Der Editor meldet, welche Zeilen er angehängt hat, weil ein Diff der Datei nach einem solchen Speichern neue Zeilen zeigt, nicht nur geänderte Werte.
- Keine Anzeige „ungespeicherte Änderungen“ pro Punkt bei globalen/HOME-Punkten: Da jede Änderung an einem globalen/HOME-Punkt sofort auf die Festplatte geschrieben wird (siehe Werte in der Tabelle bearbeiten), prüfen Sie den Wert vor der Bestätigung genau – für einen bereits geschriebenen globalen/HOME-Punkt gibt es kein separates Undo.
- Undo/Redo: Das Bearbeiten oder Entfernen eines Folds mit Punkt-/Frame-/Bewegungsdaten (oder den Parametern eines Technologiebefehls) kann den gesamten Undo/Redo-Verlauf der Datei löschen. Das ist beabsichtigt: Statt ein Undo zu riskieren, das den sichtbaren Text wiederherstellt, die zugrunde liegenden Daten aber nicht, beginnt der Editor den Verlauf lieber neu ab einem bekannten, konsistenten Zustand.
- CIRC-Bewegungen (Kreisbewegungen): Eine solche Bewegung verwendet zwei Referenzpunkte; die Änderung von Werkzeug oder Basis nur eines davon wird nicht automatisch auf den anderen übertragen, sodass die beiden auf unterschiedliche Werkzeuge/Basen verweisen können, wenn Sie nur einen bearbeiten. Das CIRC-Inline-Formular selbst konnte nicht an echten Steuerungsdateien überprüft werden – siehe Bewegungsart ändern.
- Fold-Erkennung – sowohl zum Bearbeiten einer Bewegung als Punkt als auch zum erneuten Öffnen des Parameterdialogs eines Befehls per Doppelklick – setzt voraus, dass der Fold einem bekannten, festen Textmuster entspricht (basierend auf PTP/LIN/CIRC und PDAT_ACT/FDAT_ACT). Ein von Hand geschriebener oder ungewöhnlich formatierter Fold wird unter Umständen gar nicht als bearbeitbarer Punkt oder Befehl erkannt, obwohl er völlig gültiger, einfacher KRL-Text ist.
- Kommentare in einer neu deklarierten Zeile: Wird die Speicherform eines Punkts bewusst geändert (E6AXIS zu E6POS oder umgekehrt), wird seine Deklarationszeile komplett neu aufgebaut, sodass ein am Ende genau dieser Zeile stehender Kommentar nicht erhalten bleibt. Alle anderen Deklarationen in der Datei bleiben unverändert.