BRAND.06 / DX + YRC + FS
The teach-pendant language that drives every Yaskawa Motoman controller.
INFORM is the language used by every Yaskawa Motoman controller — DX100/DX200, YRC1000 / YRC1000micro, and FS100. JOBs are bracketed by NOP and END; motion is expressed with MOVJ / MOVL / MOVC to P position variables; I/O lives on DOUT OT#(n) and WAIT IN#(n)=ON; flow uses JUMP *LABEL, structured IF / WHILE / FOR, and CALL JOB:NAME for sub-routines.
Every INFORM JOB starts with NOP and ends with END. The first JOB in a file is the entry point. Additional JOBs become sub-routines that you reach via CALL JOB:NAME, ending with RET to return.
NOP MOVJ P000 VJ=50.00 CALL JOB:PICK END ' --- JOB:PICK --- NOP MOVL P001 V=100.0 RET END
MOVJ is joint motion to a position variable, with VJ=NN.NN as a percentage of max joint speed. MOVL is linear motion at V=NNN.N (cm/min). MOVC chains three points to draw an arc.
MOVJ P000 VJ=50.00 MOVL P001 V=100.0 MOVC P002 V=80.0
INFORM stores Cartesian poses in P-variables (P000, P001, …) — each holds XYZ + orientation in the active frame. Numeric variables come in B (byte), I (integer), D (double) and R (real) flavours.
SET I000 0 SET R000 1.50 MOVL P001 V=100.0
DOUT OT#(n) ON|OFF drives general-purpose outputs. WAIT IN#(n)=ON|OFF blocks until the input matches. PULSE OT#(n) T=0.5 fires an output ON for half a second then OFF.
DOUT OT#(1) ON TIMER T=0.50 WAIT IN#(2)=ON PULSE OT#(3) T=0.30
INFORM supports both flat flow (JUMP *LABEL [IF cond]) and structured flow (IF...THEN / ELSE / ENDIF, WHILE / ENDWHILE, FOR / NEXT). Modern controllers prefer the structured form.
IF IN#(1)=ON THEN MOVL P001 V=100.0 ELSE MOVL P002 V=100.0 ENDIF
SET writes a value, ADD/SUB/MUL/DIV mutate in place, INC/DEC step a counter by 1. Combined with FOR or JUMP IF, this drives palletizing and counting routines.
SET I000 0 *LOOP ... do work ... INC I000 JUMP *LOOP IF I000<5
| Instruction | Category | Purpose | Example |
|---|---|---|---|
| MOVJ | Motion | Joint move (point-to-point) — speed in % of max joint speed via VJ= | MOVJ P000 VJ=50.00 |
| MOVL | Motion | Linear (Cartesian) move at speed V= (cm/min or mm/s) | MOVL P001 V=100.0 |
| MOVC | Motion | Circular move — chain three MOVC points to draw an arc | MOVC P002 V=80.0 |
| MOVS | Motion | Spline move through a sequence of points | MOVS P003 V=80.0 |
| IMOV | Motion | Incremental linear move — relative offset from current TCP | IMOV P010 V=50.0 BF |
| REFP | Motion | Reference point declaration used by weaving and other motion patterns | REFP 1 P020 |
| SPEED | Motion | Set the default playback speed override | SPEED VJ=50.00 V=100.0 |
| DOUT | I/O | Drive a general-purpose output ON or OFF — DOUT OT#(n) ON|OFF | DOUT OT#(1) ON |
| PULSE | I/O | Pulse an output ON for T= seconds then OFF | PULSE OT#(1) T=0.50 |
| AOUT | I/O | Set an analog output channel to a value | AOUT AO#(1) 5.00 |
| WAIT | Wait | Wait for an input condition — WAIT IN#(n)=ON|OFF [T=secs] | WAIT IN#(1)=ON |
| IN# | I/O | General-purpose input reference used in WAIT / IF expressions | IF IN#(2)=ON THEN |
| OT# | I/O | General-purpose output reference used by DOUT / PULSE | DOUT OT#(3) OFF |
| TIMER | Wait | Pause execution for T= seconds | TIMER T=0.50 |
| CWAIT | Wait | Wait for the previously commanded motion to finish before continuing | CWAIT |
| JUMP | Flow | Unconditional jump to a label, JOB, or with an IF condition | JUMP *LOOP |
| IF | Flow | Conditional clause used with JUMP / CALL — IF expr THEN <action> | IF IN#(1)=ON JUMP *PICK |
| THEN | Flow | Optional terminator after an IF expression | IF B000=1 THEN |
| ELSE | Flow | Else branch inside a structured IF block | ELSE |
| ENDIF | Flow | Closes a structured IF block | ENDIF |
| WHILE | Flow | Pre-test loop — WHILE expr ... ENDWHILE | WHILE B000<5 |
| ENDWHILE | Flow | Closes a WHILE loop | ENDWHILE |
| FOR | Flow | Counted loop — FOR var=start TO stop ... NEXT | FOR I000=1 TO 3 |
| NEXT | Flow | Closes a FOR loop | NEXT I000 |
| CALL | Job | Call another JOB as a sub-routine — CALL JOB:NAME | CALL JOB:PICK |
| RET | Job | Return from a called JOB | RET |
| NOP | Job | No operation — required as the first line of every JOB | NOP |
| END | Job | Required terminator on the last line of every JOB | END |
| PAUSE | Flow | Pause job execution and wait for the operator to resume | PAUSE |
| ABORT | Flow | Abort the current JOB immediately | ABORT |
| SET | Variable | Assign a value to an integer / double / real variable — SET var value | SET B000 1 |
| ADD | Variable | Add a value to a variable in place | ADD I000 1 |
| SUB | Variable | Subtract a value from a variable in place | SUB I000 1 |
| MUL | Variable | Multiply a variable by a value in place | MUL D000 2 |
| DIV | Variable | Divide a variable by a value in place | DIV D000 2 |
| INC | Variable | Increment an integer variable by 1 | INC I000 |
| DEC | Variable | Decrement an integer variable by 1 | DEC I000 |
| CLEAR | Variable | Clear a range of variables to zero | CLEAR B000 ALL |
| P-var | Position | Position variable holding XYZ + orientation in the active frame (P000..P127) | MOVL P000 V=100.0 |
| B-var | Variable | Byte (0..255) variable — typically used for flags and small counters | SET B000 1 |
| I-var | Variable | Integer (16-bit) variable — typically used for loop counters | SET I000 0 |
| D-var | Variable | Double (32-bit) integer variable | SET D000 1000 |
| R-var | Variable | Real (floating-point) variable | SET R000 1.50 |
| GETS | Position | Copy the current robot pose into a position variable | GETS P010 $PX000 |
| SFTON | Position | Enable a position shift offset for subsequent moves | SFTON P020 |
| SFTOF | Position | Disable the active position shift | SFTOF |
| *LABEL | Flow | Label target for JUMP — written as *NAME on its own line | *LOOP |
| MSG | System | Display a message string on the teach-pendant | MSG 'CYCLE DONE' |
| CWAIT | Wait | Wait for the previous motion to complete before continuing the program | CWAIT |
| ' | Misc | Comment to end of line — INFORM convention | ' pick up the part |
JUMP *LABEL is recognised but treated as a no-op — use FOR / NEXT or WHILE for executable looping in this simulator.