KRC / VKRC - KRL Variable Scanner

▲ What the scanner shows

The KRL Variable Scanner is the object browser of a KUKA robot: it reads all *.dat files of the robot archive (optionally also the *.src files) and lists every declaration in a tree - file » declaration. You see at a glance where a variable, signal, structure or subprogram is declared, with its type, value and line, and which global names are declared more than once with different definitions.
KRL Variable Scanner of a KRC archive: files with the number of declarations, files with a syntax error in red, the declarations of $config.dat with type, value and line. The robot name and the path are hidden in the picture.

▲ Starting the scanner

Set a KRC or VKRC robot as the active project (project tree » Set active robot) and choose KRC » KRL Variable Scanner (for VKRC: VKRC » KRL Variable Scanner). The scanner takes $config.dat of the active robot and scans the whole archive (three folders above KRC\R1\System).

Another archive can be scanned without opening it as a project: choose another $config.dat with the button in the path field, or drag a $config.dat or a ZIP archive of the robot onto the window, then Rescan. Backup copies of the editor (~name.src, ~name.dat) are skipped.

▲ Tabs and columns

TabContentsColumns
Primaryvariables (DECL, also arrays)Name, Type, Value, GLOBAL, CONST
SignalSIGNAL declarationsName, From, To (e.g. $IN[1] TO $IN[8])
ChannelCHANNEL declarationsName, Interface, Var
StrucSTRUC typesName, Members
EnumENUM typesName, Enumerators
Routinesubprograms and functions (DEF, DEFFCT) from *.srcName, Type, Params, Kind
All tabs also have the columns: A file whose declarations cannot be read is shown in red with the syntax error and its position; the number after a file name is the number of declarations found in it.

▲ Options

After changing an option click Rescan.

▲ Filter, opening a declaration, export

Use the Conflicts column before a commissioning or after merging programs from several robots: a global variable declared twice with different types or values leads to errors when the programs are loaded on the controller.