BRAND.07 / E + F CONTROLLERS
The structured program language that drives every Kawasaki E and F-series controller.
Kawasaki AS is the language used by every Kawasaki industrial robot from the E controllers (E70/E80/E90/E91/E92) through the modern F-series. Programs live in .PROGRAM name() ... .END blocks; motion uses JMOVE / LMOVE / C1MOVE / C2MOVE to taught position variables; I/O is driven by SIGNAL n (positive=ON, negative=OFF); waits are SWAIT SIG(n) and TWAIT 0.5; and flow uses structured IF / WHILE / FOR with CALL name for sub-routines.
Every Kawasaki AS program is a .PROGRAM name() block closed by .END. The first .PROGRAM in a file is the entry point. Additional .PROGRAMs become sub-routines reached via CALL name, ending with RETURN.
.PROGRAM main() JMOVE home CALL pick .END .PROGRAM pick() LMOVE pick SIGNAL 1 .END
JMOVE is joint motion (point-to-point, fastest). LMOVE is linear (Cartesian) at the active SPEED. A circular path is two statements: C1MOVE picks the via-point, C2MOVE the end-point. HOME returns the robot to its taught home pose.
JMOVE home LMOVE pick C1MOVE arcVia C2MOVE arcEnd
Position variables are simple identifiers (e.g. pick, place). POINT and SHIFT compose new positions from existing ones. TOOL / BASE swap the active TCP and work frame. SPEED nn ALWAYS sets a persistent override.
POINT drop = pick + SHIFT(0, 200, 0) TOOL gripper1 SPEED 50 ALWAYS
SIGNAL drives outputs — positive numbers turn ON, negative numbers turn OFF (e.g. SIGNAL 1, -2 sets OUT 1 ON and OUT 2 OFF). SWAIT SIG(n) blocks until input n is ON (use -n for OFF). PULSE n, t fires an output for t seconds.
SIGNAL 1, -2 TWAIT 0.5 SWAIT SIG(1) PULSE 3, 0.3
IF expr THEN ... [ELSE ...] END. WHILE expr DO ... END. FOR i = 1 TO 5 [STEP n] ... END. All three blocks are closed by the same END keyword. GOTO label jumps to a label written as name: at the start of a line.
IF SIG(1) THEN LMOVE pick ELSE LMOVE place END
SET writes a value or expression. Combined with FOR or WHILE, this drives palletizing and counting routines. TYPE prints to the teach-pendant.
SET count = 0 FOR i = 1 TO 5 SET count = count + 1 END TYPE "PARTS:", count
| Instruction | Category | Purpose | Example |
|---|---|---|---|
| JMOVE | Motion | Joint move (point-to-point) to a position variable | JMOVE pick |
| LMOVE | Motion | Linear (Cartesian) move at the active SPEED | LMOVE pick |
| C1MOVE | Motion | Circular move — first of two points: the via-point on the arc | C1MOVE via |
| C2MOVE | Motion | Circular move — second of two points: the end-point of the arc | C2MOVE arcEnd |
| HOME | Motion | Move all joints back to the configured HOME position | HOME |
| JAPPRO | Motion | Joint-approach: move to a point offset by N mm along tool Z | JAPPRO pick, 50 |
| LAPPRO | Motion | Linear-approach: move to a point offset by N mm along tool Z | LAPPRO pick, 50 |
| JDEPART | Motion | Joint-depart: move N mm away along tool Z from the current pose | JDEPART 50 |
| LDEPART | Motion | Linear-depart: move N mm away along tool Z from the current pose | LDEPART 50 |
| DRIVE | Motion | Drive a single joint by a relative angle at a given speed | DRIVE 6, 90, 50 |
| SPEED | Motion | Set the playback speed override — value is % of max (ALWAYS=persistent) | SPEED 50 ALWAYS |
| ACCURACY | Motion | Set the path accuracy in mm — smaller is closer to the taught point | ACCURACY 1 ALWAYS |
| TOOL | Motion | Activate a named tool transformation (TCP) | TOOL tool1 |
| BASE | Motion | Activate a named base transformation (work frame) | BASE base1 |
| SIGNAL | I/O | Drive outputs — positive=ON, negative=OFF (e.g. SIGNAL 1 turns OUT 1 ON) | SIGNAL 1, -2 |
| PULSE | I/O | Pulse an output ON for T seconds then OFF | PULSE 1, 0.5 |
| RESET | I/O | Reset (turn OFF) all output signals | RESET |
| SIG | I/O | Test signal state in expressions — SIG(n)=TRUE means input n is ON | IF SIG(1) THEN |
| SWAIT | Wait | Wait until a signal expression evaluates true (negate id for OFF) | SWAIT SIG(1) |
| TWAIT | Wait | Pause execution for N seconds | TWAIT 0.5 |
| WAIT | Wait | Wait for an expression to evaluate true | WAIT count > 5 |
| IF | Flow | Conditional block — IF expr THEN … [ELSE …] END | IF SIG(1) THEN |
| THEN | Flow | Marks the start of an IF block body | IF count<5 THEN |
| ELSE | Flow | Else branch inside an IF block | ELSE |
| END | Flow | Closes IF / WHILE / FOR / CASE blocks (and .PROGRAM in .END form) | END |
| WHILE | Flow | Pre-test loop — WHILE expr DO … END | WHILE count<5 DO |
| FOR | Flow | Counted loop — FOR var = start TO stop [STEP n] … END | FOR i = 1 TO 5 |
| TO | Flow | Range terminator inside FOR loops | FOR i = 1 TO 5 |
| STEP | Flow | Step value for a FOR loop (defaults to 1) | FOR i = 0 TO 10 STEP 2 |
| DO | Flow | Marks the start of a WHILE loop body | WHILE i<5 DO |
| GOTO | Flow | Unconditional jump to a label (label is written as name:) | GOTO loop |
| CALL | Program | Call another .PROGRAM as a sub-routine | CALL pick |
| RETURN | Program | Return from a CALLed sub-routine | RETURN |
| PAUSE | Flow | Pause program execution and wait for the operator to resume | PAUSE |
| HALT | Flow | Stop program execution immediately (operator must restart) | HALT |
| SET | Variable | Copy one value or position into another — SET dest = source | SET count = 0 |
| DECOMPOSE | Variable | Decompose a position into an array of joint angles or XYZ-OAT components | DECOMPOSE comp[1] = pick |
| POINT | Position | Compute or assign a position transform — POINT pose = base + offset | POINT drop = pick + SHIFT(0,200,0) |
| SHIFT | Position | Build a translation transform — SHIFT(dx, dy, dz) | SHIFT(0, 100, 0) |
| TRANS | Position | Build a 6-DOF transform from x, y, z, o, a, t | TRANS(400, 0, 300, 0, 180, 0) |
| HERE | Position | Capture the current robot pose into a position variable | HERE pNow |
| .PROGRAM | Program | Begin a program block — every AS file is one or more .PROGRAM bodies | .PROGRAM main() |
| .END | Program | Close the most recent .PROGRAM block | .END |
| TYPE | System | Print a message string and / or values to the teach-pendant | TYPE "CYCLE DONE" |
| PROMPT | System | Prompt the operator for a value | PROMPT "QTY:", count |
| ; | Misc | Comment to end of line — Kawasaki AS convention | ; pick up the part |
pick, place) are plotted at deterministic synthesized poses on the canvas — they do not reflect real teaching data from a controller.GOTO label is recognised but treated as a no-op — use FOR or WHILE for executable looping in this simulator.