- Yaskawa-Viewer (JBI-Editor)
- Punkttabelle
- Editor für Bewegungsanweisungen
- Syntaxprüfung
- Speichern eines Jobs
▲ Yaskawa-Viewer (JBI-Editor)
Ein Job wird im Yaskawa-Viewer geöffnet (Einstellung Add Yaskawa viewer automatically to *.jbi file). Der Viewer zeigt die Anweisungen zwischen NOP und END mit Syntaxhervorhebung, Einrückung der IF- / WHILE-Blöcke, einem Symbol an jeder Bewegungszeile und den Zeilenmarkierungen der Syntaxprüfung. Schlüsselwortvervollständigung und Anweisungsvorlagen stehen wie in den anderen Editoren von DReS zur Verfügung.Job-Header
Standardmäßig ist der Header des Jobs (/JOB, //POS mit allen Punkten, //INST, ///ATTR, ///GROUP ...) ausgeblendet und nur das Programm wird angezeigt - das Header-Symbol in der ersten Zeile zeigt ihn als Tooltip. Die Punkte werden in der Punkttabelle und im Punkteditor bearbeitet; der Header wird beim Speichern des Jobs daraus neu aufgebaut. Mit Show header text in viewer (Kontextmenü oder Einstellungen) kann der Header im Text angezeigt werden.Tooltips: Variablen, E/A, Makros
Wenn Sie die Maus über ein Wort bewegen, wird angezeigt, was die Steuerung darüber weiß:- globale Variablen (B, I, D, R, S, P, BP, EX) - der Name aus VARNAME.DAT und der Wert zum Zeitpunkt des Backups aus VAR.DAT,
- Eingänge und Ausgänge (IN#, OT#, IG#, OG# ...) - der Name aus IONAME.DAT,
- Makros - MACRO1 MJ#(5) zeigt den Makro-Job aus MACRO.DAT und die Namen seiner Argumente mit den Werten des Aufrufs,
- aufgerufene Jobs - der Kommentar des Jobs,
- Labels - *START in einem JUMP oder in der Label-Zeile zeigt die Zeile des Labels und die Zeilen aller JUMPs dorthin (siehe Labels).
Globale Variable mit Name und Wert aus dem Backup; Makroaufruf mit dem Makro-Job und seinen Argumenten.
Dieselben Namen werden in der Langtext-Spalte rechts im Viewer angezeigt.
Go to (Kontextmenü oder Ctrl+Klick) öffnet den aufgerufenen Job - bei einem Makro den
Makro-Job aus MACRO.DAT. Solange Ctrl gedrückt ist, wird ein im Backup vorhandener Jobname
(CALL JOB:CELL, JUMP JOB:..., MACRO1 MJ#(5))
oder ein Label eines JUMP unter der Maus unterstrichen, und der Cursor wird wie bei einem Link zur Hand.
Labels: Sprung, Referenzen
- Ctrl+Klick auf das Label von JUMP *START (oder JUMP *OK-1 IF ...) setzt den Cursor auf die Label-Zeile *START,
- das Kontextmenü einer JUMP-Zeile enthält Go to label *START (line n),
- das Kontextmenü einer JUMP-Zeile oder der Label-Zeile enthält References of *START (n) - ein Untermenü mit der Label-Zeile und jedem JUMP zu diesem Label; ein Klick auf einen Eintrag setzt den Cursor dorthin.
Kontextmenü von JUMP *SCHW IF LB002<>2: Sprung zum Label, Referenzen des Labels.
Tooltip eines Labels in einem JUMP.
Labels werden ohne Berücksichtigung der Groß-/Kleinschreibung verglichen. JUMP JOB:... ist ein Sprung zu einem Job
(Go to öffnet ihn); JUMP LABEL: S000 und JUMP B000 nehmen das Label
aus einer Variablen. Die Syntaxprüfung prüft auch die Labels.
Blöcke: IFTHEN / ENDIF, WHILE / ENDWHILE ...
Die Anweisungen, die einen Block öffnen, unterteilen und schließen, gehören zusammen:| Block | Öffnend | Mitte | Schließend |
| IF | IFTHEN, IFTHENEXP | ELSEIF, ELSEIFEXP, ELSE | ENDIF |
| WHILE | WHILE, WHILEEXP | ENDWHILE | |
| SWITCH | SWITCH | CASE, DEFAULT | ENDSWITCH |
| FOR | FOR | NEXT |
- steht der Textcursor auf einem solchen Schlüsselwort, werden alle Teile seines Blocks hervorgehoben (wie zusammengehörige Klammern): die Schlüsselwörter der öffnenden, mittleren und schließenden Zeilen werden fett auf orangem Hintergrund dargestellt, z. B. IFTHEN, ELSE und ENDIF eines Blocks. Verschachtelte Blöcke gleicher Art werden Ebene für Ebene zugeordnet, sodass das innere ENDIF nie mit dem äußeren IFTHEN gepaart wird. Die Statusleiste zeigt den Block (ENDIF - block of line 66 IFTHEN LB001<>2, 70: ELSE),
- Ctrl+Klick springt zum anderen Ende des Blocks (IFTHEN → ENDIF, ENDIF → IFTHEN), von einer mittleren Zeile (ELSE, CASE) zum nächsten Teil,
- der Tooltip eines Schlüsselworts zeigt die anderen Teile des Blocks mit ihren Zeilennummern; bei ENDIF, ELSE, ENDWHILE ... steht die Bedingung der öffnenden Zeile (z. B. IFTHEN LB001<>2) an erster Stelle.
Cursor auf ENDIF (Zeile 74): IFTHEN, ELSE und ENDIF des Blocks sind hervorgehoben, die Statusleiste nennt den Block.
Ein Block mit schließender Zeile kann eingeklappt werden: Die öffnende Zeile (IFTHEN, WHILE, SWITCH, FOR) hat am
rechten Rand des Zeilennummernbereichs ein Dreieck. Ein Klick darauf blendet die Zeilen des Blocks aus - die öffnende und die schließende Zeile
(ENDIF, ENDWHILE ...) bleiben sichtbar -, ein zweiter Klick zeigt sie
wieder; Ctrl+Klick auf ein Dreieck klappt alle Blöcke ein / aus. Eingeklappte verschachtelte Blöcke bleiben
eingeklappt, wenn der äußere Block ausgeklappt wird. Go to oder Ctrl+Klick auf eine ausgeblendete Zeile klappt die Blöcke
darüber aus, und ein Block, dessen schließende Zeile entfernt wird oder der eine neue Zeile erhält, wird automatisch ausgeklappt. Die
Zeilennummern bleiben die Nummern der Zeilen des Jobs.
IFTHEN in Zeile 66 und WHILE in Zeile 85 eingeklappt (Dreieck nach rechts) - ENDIF / ENDWHILE bleiben sichtbar; das IFTHEN in Zeile 77 ist ausgeklappt.
Nicht geschlossene Blöcke und Blöcke ohne öffnende Zeile meldet die Syntaxprüfung.
Doppelklick und Kontextmenü
- Doppelklick auf die Anweisung einer Bewegungszeile (MOVJ, MOVL ...) öffnet den Editor für Bewegungsanweisungen,
- Doppelklick auf einen Punktnamen (C00012, P003 ...) öffnet den Punkteditor für diesen Punkt.
Menü Yaskawa
- Comment / uncomment selected text Ctrl+/,
- Check syntax F6 - vollständige Prüfung des Jobs, siehe Syntaxprüfung,
- Yaskawa Template - fügt eine Anweisungsvorlage ein (Datei yaskawa.template.xml).
▲ Punkttabelle
Unter dem Viewer listet die Punkttabelle alle Punkte des Abschnitts //POS des Jobs auf.| Spalte | Bedeutung |
| Name | C (Roboter), BC (Basisachse), EC (Station), P / BP / EX (Positionsvariablen) |
| Group | Steuergruppe des Punkts, übernommen aus der Anweisung, die ihn verwendet (///GROUP1 ... mit +MOVJ-Teilen) |
| Type | PULSE oder RECTAN (BASE / ROBOT / USER / TOOL) |
| Tool | Werkzeug des Punkts (///TOOL) |
| S, L, U, R, B, T ... | Werte wie in der Datei - Impulse, oder X, Y, Z, Rx, Ry, Rz bei RECTAN |
- Roboterpunkte, Basis- / Stationspunkte und die vom Job verwendeten globalen Positionsvariablen (aus VAR.DAT, nur lesen) werden in getrennten Tabellen angezeigt,
- Punkte, die von keiner Anweisung verwendet werden, sind grau und kursiv mit einem Warnsymbol,
- Werte außerhalb der Software-Endschalter der Steuerung haben einen roten Hintergrund, der Tooltip nennt den betroffenen Grenzwert,
- ein Wert kann direkt bearbeitet werden (Doppelklick auf den Wert) - die Änderung geht direkt in den Header des Jobs,
- die Punkte der Zeile mit dem Textcursor werden in der Tabelle ausgewählt; ein Doppelklick auf den Namen eines Punkts springt zur ersten Anweisung, die ihn verwendet.
| Jump to C..... | erste Anweisung, die den Punkt verwendet |
| Edit motion instruction of C..... | öffnet den Editor für Bewegungsanweisungen für diese Zeile |
| Point editor C..... | öffnet den Punkteditor |
| Copy C..... coordinates | kopiert C00002=-97993,1990,... in die Zwischenablage |
| Assign coordinates | weist dem ausgewählten Punkt die zuvor kopierten Koordinaten zu |
| Copy selected coordinates as plain text | Tabelle der ausgewählten Punkte (z. B. für Excel) |
| Set equal <axis> value for selected points | ein Wert der Spalte für alle ausgewählten Punkte |
| Axis difference [pulse] | Differenzen zweier ausgewählter Punkte Achse für Achse |
| Cartesian distance | Abstand zweier RECTAN-Punkte (gleiches Koordinatensystem und Werkzeug) |
| Select all |
▲ Editor für Bewegungsanweisungen
Ein Doppelklick auf die Anweisung einer Bewegungszeile öffnet den Editor für diese Zeile.- Instruction - MOVJ, MOVL, MOVC, MOVS, SMOVC, SMOVL. Wechselt die Bewegung zwischen Gelenk- und Linearbewegung, wechselt die Geschwindigkeit zwischen VJ [%] und V [mm/s], und der Editor warnt, dass sich die Bahn des Roboters ändert,
- Speed - VJ, V, VR oder VE, oder keine Geschwindigkeit (die Geschwindigkeit der vorherigen Zeile),
- Positioning - PL 0..8 oder keine,
- Additional motion - der Stationsteil der Zeile (+MOVJ EC00012 VJ=...) mit eigener Geschwindigkeit,
- Point values - Werte aller Punkte der Zeile; Werte außerhalb der Software-Endschalter sind rot markiert,
- die Zeile New: zeigt das Ergebnis vor OK. Alles andere in der Zeile (weitere Tags, Kommentar, Leerzeichen) bleibt unverändert; die Änderung kann mit Ctrl+Z rückgängig gemacht werden.
▲ Syntaxprüfung
Jede Zeile des Jobs wird mit dem INFORM-Parser (ANTLR4) geprüft, der nach der offiziellen Dokumentation DX200 Options - Instructions for INFORM language (Teilenummer 165301-1CD) erstellt wurde, und die Punkte werden mit dem Abschnitt //POS abgeglichen:- Syntaxfehler in Anweisungen und Header-Zeilen,
- Punkte, die von einer Anweisung verwendet, aber nicht in //POS deklariert sind,
- Punkte, die in //POS deklariert, aber von keiner Anweisung verwendet werden,
- Labels: JUMP *LABEL zu einem im Job nicht definierten Label und ein mehrfach definiertes Label (Fehler), ein von keinem JUMP verwendetes Label (Warnung - wird nicht gemeldet, wenn der Job JUMP LABEL: / JUMP B000 enthält, die zu jedem Label springen können),
- Blöcke (Fehler): IFTHEN ohne ENDIF, ENDIF / ELSE ohne IFTHEN, ebenso für WHILE / ENDWHILE, SWITCH / CASE / ENDSWITCH, FOR / NEXT, sowie sich überkreuzende Blöcke (IFTHEN ... WHILE ... ENDIF),
- fehlendes /JOB, NOP, END, Zeilen nach END,
- Parameterwerte außerhalb ihres zulässigen Bereichs - die Bereiche sind in der Yaskawa parser limits file (template/yaskawa.limits.ini) definiert und können angepasst werden:
JUMP *SCHWX zu einem nicht vorhandenen Label (Fehler) - das Label *SCHW wird dadurch nicht verwendet (Warnung).
ENDWHILE auskommentiert: Das WHILE in Zeile 85 wird als "WHILE without ENDWHILE" gemeldet und verliert sein Fold-Dreieck.
VJ=120.00 überschreitet den zulässigen Bereich 0.01 .. 100.
Das Ergebnis wird durch Markierungen im Rand der Zeilennummern angezeigt (Tooltip mit der Meldung)
und bei einer vollständigen Prüfung in der Meldungsliste:
| Wann | Einstellung | Standard |
| auf Anforderung - Check syntax F6, Kontextmenü Check full syntax | - | |
| beim Öffnen eines Jobs | Check programm syntax on load | aus |
| vor dem Speichern eines Jobs | Check programm syntax on file save | ein |
| während der Eingabe (nach einer kurzen Pause), nur Markierungen, kein Dialog | Check programm syntax on flow during editing | aus |
▲ Speichern eines Jobs
Ctrl+S schreibt den Job im Format der Steuerung:- der Header wird aus den Punkten neu aufgebaut (///NPOS, die Anzahl der lokalen Variablen), ///DATE wird auf das aktuelle Datum gesetzt, ///COMM übernimmt den Kommentar des Dokuments,
- Einrückung und Leerzeilen innerhalb des Programms bleiben erhalten - ein unveränderter Job wird bis auf das Datum identisch mit dem Original gespeichert,
- mit Check programm syntax on file save wird der Job zuerst geprüft; gibt es Fehler oder Warnungen, werden sie aufgelistet, und der Job kann trotzdem gespeichert oder das Speichern abgebrochen werden:
- eine Sicherungskopie der Originaldatei wird angelegt, wenn dies in den allgemeinen Einstellungen des Editors aktiviert ist,
- nach dem Speichern kann das PowerShell-Callback-Skript ausgeführt werden (Einstellungen).














