Skip to content

System values

Built-in values like program state and override, usable by name with no tag to declare.

Some things about a controller are always true of every controller — which program is selected, whether the robot is running, the speed override. These are available as system values, and they need no tag. Use one by name in any expression or label: {active_program}, {robot_running}.

Bind a control to one the same way: they appear in every tag picker under System values, separate from the tags you defined. Read-only ones are offered only where reading makes sense — a slider is offered override and not robot_running.

The Tags panel lists the ones a document uses, under System values in use.

The names are reserved: a tag cannot be called override or active_program. A document that already has one still works, and Validate flags it for deleting — the name reads the same value without it.

To use a different name, add a tag, set its Kind to SYS, and pick the value from the Variable dropdown. {speed} then reads the override.

Value What it holds Writable
active_program The program the controller currently has selected. yes
override Speed override, as a percentage. yes
program_state What the selected program is doing. no
robot_running Whether a program is executing. no
tp_enabled Whether the teach pendant is enabled. no
estop_op Operator panel emergency stop. no
estop_tp Teach pendant emergency stop. no
uframe_num The user frame the robot is in; 0 is WORLD. no
utool_num The tool frame the robot is in. no

Writing active_program changes the controller’s selection, and writing override changes the speed. The rest are read-only.

uframe_num and utool_num are read-only on purpose. Both are selections a TP program or the operator makes, and writing one from a screen changes the frame the robot actually moves in — a decision worth making deliberately rather than as a side effect of a slider someone dragged.

Gate a Start button on the cell being safe and a program being selected:

{active_program} != "" && !{estop_op}

Show a warning banner while the pendant is enabled, since the robot will not run in automatic while it is:

{tp_enabled}

Put the selected program in a label so an operator can see what is about to run:

Ready to run {active_program}

Show which frame a job is set up for, so an operator can see at a glance that the wrong one is active:

UFRAME[{uframe_num}] / UTOOL[{utool_num}]
  • Expressions — the syntax these are used in.
  • Program control — reads active_program without you naming it.
  • Dropdown — bind one to active_program to change the selected program.