Variable Assembly Language. Variable Algorithmic Language (VAL) is a computer-based control system and language designed specifically for use with Unimation Inc. industrial robots.

The VAL robot language is permanently stored as a part of the VAL system. This includes the programming language used to direct the system for individual applications. The VAL language has an easy to understand syntax. It uses a clear, concise, and generally self-explanatory instruction set. All commands and communications with the robot consist of easy to understand word and number sequences. Control programs are written on the same computer that controls the robot. As a real-time system, VAL's continuous trajectory computation permits complex motions to be executed quickly, with efficient use of system memory and reduction in overall system complexity. The VAL system continuously generates robot control commands, and can simultaneously interact with a human operator, permitting on-line program generation and modification.

A convenient feature or VAL is the ability to use libraries or manipulation routines. Thus, complex operations may be easily and quickly programmed by combining predefined subtasks.

The VAL language consists of monitor commands and program instructions.
The monitor commands are used to prepare the system for execution of user-written programs. Program instructions provide the repertoire necessary to create VAL programs for controlling robot actions.

Terminology
The following terms are frequently used in VAL related operations.

Monitor
The VAL monitor is an administrative computer program that oversees operation of a system. It accepts user input and initiates the appropriate response; follows instructions from user-written programs to direct the robot; and performs the computations necessary to control the robot.

Editor
The VAL editor is an aid for entering information into a computer system, and modifying existing text. It is used to enter and modify robot control programs. It has a list of instructions telling a computer how to do something. VAL programs are written by system users to describe tasks the robot is to perform.

Location
Location is a position of an object in space, and the orientation of the
object. Locations are used to define the positions and orientations the robot tool is to assume during program execution.

VAL programming
Several conventions apply to numerical values to be supplied to VAL commands and instructions. Preceding each monitor-command description are two symbols indicating when the command can be typed by the user. A dot (.) signifies the command can be performed when VAL is in its top-level monitor mode and no user program being executed (that is, when the system prompt is a dot). An asterisk (*) indicates the command can be performed at the same time VAL is executing the program (that is, when the system prompt is an asterisk). If both symbols are present the command can be executed in either case. Most monitor commands and program instructions can be abbreviated. When entering any monitor command or program instruction, the function name can be abbreviated to as many characters as are necessary to make the name unique.

For commands and instructions, angle brackets, < >, are used to enclose an item which describes the actual argument to appear. Thus the programmer can supply the appropriate item in that position when entering the command or instruction. Note that these brackets used here are for clarification, and are never to be included as part of a command or instruction.

Many VAL commands and instructions have optional arguments. For notations, optional arguments are enclosed in square brackets, [ ]. If there is a comma following such an argument, the comma must be retained if the argument is omitted, unless nothing follows. For example, the monitor BASE command has the form:
 BASE [<dx>] , [<dy>] , [<dz>] , [<rotation>]

To specify only a 300-millimeter change in the Z direction, the command
could be entered in any of the following ways:
 BASE 0,0,300,0
 BASE ,,300,
 BASE ,,300

Note that the commas preceding the number 300 must be present to correctly to relate the number with a Z-direction change. Like angle brackets, square brackets are never entered as part of a command or instruction.

Several types of numerical arguments can appear in commands and instructions. For each type there are restrictions on the values that are accepted by VAL. The following rules should be observed:
 Distances are entered to define locations to which the robot is to move. The unit of measure for distances is  millimeter, although units are never explicitly entered for any value. Values entered for distances can be positive or negative, with their magnitudes limited by a number representative of the maximum reach of the robot (for example, 1024 mm and 700 mm for the PUMA 500 and PUMA 250 robots, respectively). Within the resultant range, distance values can be specified in increments of 0.01 mm. Note, however, that some values cannot be represented internally, and are stored as the nearest representable value.
 Angles in degrees are entered to define and modify orientations the robot is to assume at named locations, and to describe angular positions of robot joints. Angle values can be positive or negative, with their magnitudes limited by 1800 or 3600 depending on the usage. Within the range, angle values can be specified in increments of 0.01°. Values cannot be represented internally, however they are stored as
nearest representable value.

The VAL system
The function of VAL is to regulate and control a robot system by following user commands or instructions. In addition to being a compact stand-alone system, VAL has been designed to be highly interactive to minimize programing time, and to provide as many programming aids as possible.

External communication
The standard VAL system uses an operator's console terminal and manual control box to input commands and data from the user. The operator console serves as the primary communication device and can be either a direct play terminal or a printing terminal. Interaction with other devices in an automated cell is typically handled by monitoring input channels and switching outputs. By this means the robot can control a modest cell without the need for other programmable devices.

VAL Operating System
The controller has two levels or operation:
 the top level is called the VAL operating system, or monitor, because it administers operations of the system, including interaction with the user;
 the second level is used for diagnostic work on the controller hardware. The system monitor is a computer program stored VAL programmable read-only memory (PROM) in the Computer/Controller.
PROM memory retains its contents finitely, and thus VAL is immediately available when the controller is switched on. The monitor is responsible for control of the robot, and its commands come from the manual control unit, the system terminal, or from programs. To increase its versatility and flexibility, the VAL monitor can perform of its commands even while a user program is being executed. Commands that can be processed in this way include those for controlling the status of the system, defining robot locations, storing and retrieving information on the floppy disk, and creating and editing robot control programs.

References
 PUMA 560 VAL Manual

Robot programming languages
Robotics software
Robotics at Unimation