The Intelligent Motion Systems (IMS), Inc. Manual




	Congratulations on your purchase of the high performance indexer option with Variable 
Resolulion Microstep Control. This unique indexer coupled wilh our powerful 
microslepping drivers combine to make a unique cost effective off the shell solution that 
can provide designers with a versatile system to get you into the market fast and to 
provide you with the competitive edge needed in today's fast moving market.

	This SOFTWARE REFERENCE MANUAL, will assist you in obtaining the best performance
from your stepper system. It's purpose is to provide immediate access to information 
that will fecilitate a reliable and trouble-free inslallalion. In addilion to the Software 
Referellce Manual, an optional Windows based GUI Indexer Software program is available. 
This powerful programming tool is an easy to use. menu driven utility file which enables 
you to quickly take advantage of the advanced programming features and system
capabiliiies inherent in that are standard in our microslepping systems.
Although the SOFTWARE REFERENCE MANUAL and supporting documentation were designed to simplify the installation and on-going operation of your equipment. We recognize that the integration of motion control often requires answers to many complex issues. Please feel to take advantage of our technical expertise in this area by calling one of our engineers to discuss your appiicalion. THANK YOU!



Traditional designs normally rely on a fixed resolution step motor driver. In order to 
obtain high shaft speeds. Step pulse rates must reach hundreds of thousands of steps 
per second. This approach requires elaborate and costly circuitry. Now, through the use 
of advanced techniques. We are able to achieve comparable results by varying the step 
resolution for any required motor shall velocity by inlegrating standard hardware with a 
technology called variable resolution microstep control in the indexer software. At low 
shaft speeds, the indexer produces high resolution microstep positioning for silent 
resonance-free operation. As shalt speed increases, the output resolution decreases 
using our "on motor pole" synchronization. As shaft speed decreases towards the end of 
a move, the target micro position is trimmed to ]/100 of a step to achieve and maintain 
precise positioning.

Although the "Command Resolution" is 1/100 of a step, the driver actually allows for a 
much finer resolution. A built-in 100 position compensation table enables calibration in 
increments of 1/256 step resolution.
This user programmable "Look-Up" table is located in the non-volatile memory and may 
be used for specific motor characterization 

Communicalion to the INDEXER is through the use of high level commands issued over an 
RS-422 link. This type of communication permils precise motion control and the ability 
to communicate with multiple units using only one serial port, at a standard speed of 
9600 baud. 




The INDEXER option comes complete with 2048 bytes of non-volatile memory for the 
storage of operational parameters and motion sequence programs Extensive signal 
buffering, optical isolation and a differential serial interface provide high reliabjlity in 
harsh industrial environments. Standard features include: 

	Simple RS-422' serial communications interface 
	Party Line mode 
	Assignable series address 
	Speeds to 20,000 steps per second 
	Molor shaft speeds to 6,000 RPM 
	Speed alterable with ramping "on the fly" 
	Unique variable step mode resolution to 1/256 step 
	Resonance free motor operation 
	Bi-directional ramping between speeds 
	Programmable acceleralion/deceleration ramps 
	Programmable driver run/hold current control 0-100% 
	Register up to 16.7 milljon steps per Move command 
	Absolute or relative position commands 
	Read posilion/encoder register counters while moving 
	Receive/send commands while moving 
	3 buffered general purpose input ports 
	3 buffered general purpose output ports 
	Vector on port instruction 
	Soft decelerate stop command and input 
	Moving output signal 
	Optically isolated limit and home switch inputs 
	Programmable Iimit polarity 
	Sell-contained home routine 
	2 speed bi-directional jog inputs 
	Over 50 motion command instructions 
	Programmable trip point 
	Go on strobe feature 
	Single step attribute 
	2048 byte non-volatile memory 
	"Optional RS-232 to RS-422 converter is available. IMS Part number CV-3222. 




PC's or terminals that provide a serial RS-232 communications port may communicate 
with the indexer/driver models by utilizing INTELLIGENT MOTION SYSTEMS optionally 
available CV-3222 communications adapter or -2 option board. These small adapter 
modules provide an "in-line" conversion of single ended RS-232 signals to differentially 
driven RS-422 protocol. 


The INDEXER/DRIVER modules "E" option provides encoder feedback for closed-loop 
applications that require positional verification and stall delection A built in line count 
multiplier extends normal encoder resolution by a factor of "4X." The "E" option is 
available upon initial order only and not as an upgrade lo existing units A -DE option 
board is available which allows operation with a differential encoder.


QuickSTEP is a GUI (Graphical User Interlace) menu driven software program that runs 
under Windows and provides an easy yet powerful method to control the indexer. This 
program is designed to get the user up and running with the indexer very quickly. 


The BB-34 breakout board comes with an 18 inch ribbon cable with a 34 position 
connector that plugs directly onto the INDEXER/DRIVER modules. At the opposite end is 
a double row 34 position screw type terminal strip to allow easy access to all interface 



The INDEXER/DRIVER modules feature full duplex, RS-422 party line communicalions. 
The 4 wire interface implements a differential transmission/receiver pair. The 
differential operation provides a high degree of reliability in industrial environments. 
Multiple modules may be connected in parallel lo the host (terminal or 
computer) to act as "listeners", awaiting a single character representing its unique 
"name". Optional RS-232 adapters are also available. 

Multiple units may be controlled from a single communications port via Party Line 
mode. Each controller is initialized by first assigning a unique single character "Name" 
prior to Party Line operation. Up to 32 controllers may be connected in a multi-drop 
configuration, requiring only a single host computer or hand held terminal with an RS-
422 communications port This Party line mode permits full duplex communications with 
all controllers listening simultaneously for incoming commands 

NOTE; It is recommended that all multi-axis, Party Line configurations be powered-up 

Speeds are specified in steps per second. Initial and final velocities are independent 
variables. Ramp parameters are computed internally depending on specified speeds, 
ramp slope and selected step resolution. Step motion is controlled at speeds up to 
20,000 steps per second 

Bi-directional jog inputs allow manual jog positioning at one of two independent 
programmable speeds. The speed select input selects between the two independently 
programmable jog rates. The readable position counter is continually updated, 
simplifying teach or alignment applications development. 

The Trip point is a programmable position that allows pre-defined operations to be 
triggered when the motor position matches the established Trip point position. A typical 
application may involve turning on a valve when a desired position is passed. A signal 
output is available as well as interrogating via commands. Stored programs can execute 
user defined sequences based on position.

The controller can ramp either up or down to the specified constant velocities or step 
resolution. The ramp slope may be altered prior to changing speeds while the trip point 
can be used to trigger velocity changes 

The units hosts 2048 bytes of non-volatile memory as a standard feature. The non
volatile memory provides storage of operational parameters, speeds and user programs. 
Direct read and write commands allow host use of the memory. Additionally 64 bytes of 
internal controller RAM is available for "Scratch Pad" (fast Read/Write) applications. 

The Go input or "C" command executes user sequences that have been previously 
]oaded and stored in memory. Terminals, hosts. etc are NOT required, allowing low cost, 
stand-alone operation.

The INDEXER/DRIVER has a programmable current feature that permits control of motor 
winding current with 1% resolution. Independent settings for "run" and "hold" currents 
permit full motor torque when stepping and automatic power down to the hold current 
value after motion is complete. The "hold" current value is used to minimize motor 
power dissipation when in the idle mode. 

The controller also implements a disable feature that turns off the entire output stage 
for sensitive applications requiring quiet mode operation. 

Communications are via RS-422 protocol and may operate in either Single or Party Line 
mode. Each Module receiver monitors the host and responds when receiving a matching 
Name character. Communication lo each individual axis in Single mode is performed to 
assign the unique Name for each slave axis. 

The Single mode provides user friendly one axis communication for set-up and debug 
functions. Setup usually involves optimizing operational parameters, writing and storing 
programs and assigning a unique Name for Party Line operation. 

Once the unique Name has been assigned and stored in the non-volatile memory. 
multiple axis may be connected in parallel for Party line mode operation. An input on 
the INDEXER/DRIVER module allows convenient selection between modes. 

Party line protocol requires the correct input character sequence to address an axis II 
is recommended that a PC or other computer be used to simplify programming. 

Party line operation provides for parallel communications of up to 32 INDEXER/DRIVER 
units from a single serial communications port. 

To enable Party line operation. the Party line enable input is connected to ground. To 
disable Party line communication, and to put the INDEXER/DRIVER Module in a stand 
alone mode, the Party enable input can be left floating, or connected to the opto supply. 



The 34 pin header provides auxiliary inputs and outputs. Bullered signals use optical 
isolation or TTL level bullers.

	OUTPUT 1 		General Purpose Output 
	OUTPUT 2           "       "       "
	OUTPUT 3           "       "       "
	INPUT 1 		   "       "     Input
	INPUT 2            "       "       "
	]NPUT 3            "       "       "
	*LIMIT A 		Limit + Input 
	*LIMIT B 		Limit - Input 
	HOME 			Home Input 
	JOG 1 			Jog + Input 
	JOG 2 			Jog - Input 
	JOG SPEED 		Jog Speed Select Input 
	GO 				Start Program 
	SOFT STOP 		Stop Program 
	Moving 			Motor Moving 
	Oplo Supply		Input Opto Supply Voltage 
	+5V 			+5V from internal regulator 
	GND 			Signal ground for opto reference 

*Optically isolated inputs 

	Spare Outputs are open collector TTL Compatible with 10k pull up resistors.
	The opto supply input supplies optical isolator power for limits, home and remote 
	party line select. 

Refer to the hardware reference manual for interface requirements.



The indexer communication rate is 9600 Baud The line settings are shown below.

Hosl/terminal settings: 

DataLenglh    Stop Bits    Parity     Baud 

    8             1         none      9600 

The INDEXER section incorporates a buffered UART input. Because motion control is of 
the highest priority, processing of received information may be delayed if commands are 
sent while stepping at very fast rates. This condition may only occur at 
internal/external step rates exceeding 10,000 steps per second in serial applications 
where commands are sent while motion is active, the user should monitor echoed data to 
avoid UART over-run. Another technique is to insert a small delay between characters. 

Automatic reset occurs each time the power is turned on or a "^C" command is issued 
from serial communications. During reset all inputs and outputs will be at a high state. 
Afler hardware reset all parameters are initialized to factory set default values. Checks 
for Party Line operation and communication baud rate are initialized. 

Resident non-volatile memory is accessed, and the parameters most recently stored by 
"S" command are down-loaded, replacing the standard defaults in the working registers of 
the controller. The following block of parameters are stored and recovered as a set: 


Initial velocity (I)		400 steps per second 
Slew velocity (V) 			3004 steps per second 
Divide factor (D) 			O (Full SLep) 
Ramp slope (K) 				]0/10 
Jog speeds (B) 				30.200 
Trip point (T) 				off
Step Resolution (H) 		] (Auto Variable) 
Aulo power down 			yes 
Hold/Run current 			5/25 
limit polarity 				low 
Auto position readout (Z) 	off
Name (after reset) 			undefined 

NOTE; Commands that modify these parameters use the working registers inside the 
controller. Actual non-volatile memory storage is initiated by the "S" (save) command 
Once initialization is complete. Jog and Go inputs are active to allow jogging or a low 
pulse on the Go input to execute a program previously stored in non-volatile memory. A 
terminal or host is NOT required for these functions and may be initialed from the 
Auxiliary Input/Oulput connector. 

The words "host" and "terminal" are used interchangeably and refer to any source of 
commonly available standard RS-422 interface including; terminals, printer ports and 
UARTs (COM ports). A character is a stream or packet of 8 consecutive bits (1s and 0s) 
with a defined sequence. Each unique character represents a letter, number, 
punctualion or unreadable control character as defined by an international set of 
standards called ASCII. The speed that characters are sent or received is defined by the 
Baud rate. The serial communications link refers to any two wire, full or half duplex 
communication link. 

If a PC is used for the communication interface, a terminal emulator program is all that 
is required lo "talk" to the INDEXER. The Terminal program that is supplied with 
Microsoft's Windows is an example of a terminal emulator program. 

The INDEXER/DRIVER tests input characters for the proper start sequence. In Single mode 
a Space (hex 20) initiates the sign-on sequence If proper communication exists, an 
acknowledgment code "xxxx xxxx AMS MAX-2000 Vx.xx" * will be echoed back. indicating 
the Encoder controller date code. INDEXER controller date, and version number. If the 
Encoder option is not present, the acknowledgment code will not contain the Encoder 
date code. Motion or program commands may now be initiated. NOTE: Any program 
loaded at location 1600 in memory will execute on power-up, preempting the sign on 
message. ESC will abort the program, allowing sign on as described below 

Single Mode Start-up Sequence: 

1) Connect a Terminal or PC running a Terminal Emulation program to the Driver. 

2) Check all wiring for proper power connections. 

3) Apply power to the driver. 

4a) Press the key for the Party Line Name. (Optional if only using Single Mode) 

4b) Press the SPACE key on the Terminal.

5) The indexer responds with the sign-on message. 

6) Press the ENTER key. 

7) Indexer responds with "#" and is ready to accept commands.

8) Press the "S" key to save the name assignment from step 4a. 

9) Party line operation can now be performed. 

*Sign-on message for v1.14 and higher is 	xxxx xxxx ADVANCED MICRO SYSTEMS. INC 
											MAX-2000 vX.XXi 

Party Line Mode


Party Line operation requires each axis to have a unique Name assignment prior to
establishing communication AND for the Party input to be properly grounded. 

Name assignment is accomplished in Single mode by typing the single character 
assignment before the Space Bar sign-on and then issuing an "S" (save) command 
immediately after. (See previous page for sign-on message). 

1) Press Control C (^C) or cycle power to the driver/indexer. (Parly input NOT grounded) 
2) Type the character thaL will be the name for this unit (Name will be echoed) 
3) Press the space bar (ASCII 32) The unit will send the sign-on message. 
4) Press the S key foIlowed by Enter or Carriage Return to save the assigned name. 
5) Ground the Party input for Party Mode operation. (Be sure Opto supply is powered). 

When starting in Party Line the controller reads its Name from the non-volatile 
memory and then skips any sign-on procedure. At this point the INDEXER/DRIVER 
monitors the start of all host serial communication for a match of its name. 

To communmicate with the unit, the Name must be issued prior to a command or 
program sequence followed by a "^J" or "^Enter" (Hex OA) to perform a Line Feed 


EXAMPLE: To move axis "X" 1000 steps in + direction: Type X+]O0O^J 

Vaild Axis Name assignments include: 		The following characters cannot be used: 
	upper case A through Z 
	lower case a through z                		ASCII 		HEX
	ASCII 		HEX 							^c			03
	[			5B  							CR			0d
	\			5C  							LF			0A
	]			5D 								@			40
	^			5E								*			2A
	-			5F
	'			60 

During Party line operation characters will NOT be echoed to the host until the proper 
"Name" is detected All Indexer/Drivers monitor concurrently the common TXD line 
from the host. Once the Name is received, the target axis will wake -up and start 
echoing as described above The asterisk character (*) is a global address in Indexer 
versions 1.15 and higher. All axis will respond to commands sent with this address 

Note: The following commands will not echo alpha data Party Line Mode: P,Q,q,X 
Although alpha data is not echoed, it is received by the Indexer in the case of the P 
command arid the program statements will be stored correctly.

Command Entry


Command lines consist of an ASCII character followed by O, 1 or 2 decimal ASCII numbers 
depending on command requirements. The user may edit the line prior to entry by using 
the BACKSPACE (^H or ASCII 8) key The command Iine may be up to 12 characters long. 
including spaces. Spaces are optional between the command character and first number. 
Motion commands with 2 data fields require at least one space between the fields. In 
general, motion command characters are issued as UPPER CASE, while encoder command 
characters are lower case, with a few exceptions. 


+1000 (Carriage Return) 			Step 1000 steps in + direction 
+ 1000 (Carriage Relurn)			Same as above 
H O (Carriage Return) 				Set fixed step resolution 
HO (Carriage Return) 				Same as above 
H (Carriage Return) 				Same as above (O is used by default) 
R -1000 (Carriage Return) 			Move to position-1000 

In single mode all commands are executed upon receipt of a Carriage Return (hex OD). In 
Party Line mode all commands are executed upon receipt of a ^J or ^Enter (hex OA). In 
Single Mode the controller responds by echoing all characters (EXCEPT the Line Feed 
character hex OA) up to and including the Carriage Return. A Line Feed character is 
automatically output following the Carriage Return. In Party Line mode the Indexer 
responds by echoing all the characters up to and including the Line Feed. The echoing of 
characters can be used as a "handshake" wilh a host system running a program to 
communicate with the Indexer. 

Commands such as Jump and Loop instructions are only valid when used in the Program 
then Execute mode. The following can only be executed from programs stored in oplional 
non-volatile memory: 

J O 5 (Carriage Return) Jump to location 0, 6 (n + 1) times. 
JO 5 (Carriage Return) same as above. 

Some commands result in a numerical display. These consist of whole numbers that may 
have preceding spaces and are followed by a Carriage Return and Line Feed character. 
Negalive numbers are preceded by the minus "-" sign 

Command Processing


For each Motion command there are four cycles: 
	1. ENTRY 

Other commands have three cycles: 
	3. RESU1T 

In the idle state the controller continually tests for Jog. Go or Command input. The 
Following describes each sequence operation that Lakes place on receipt of a command: 


The input command and data are loaded via RS-422 interface. Command and data 
informalion is placed in a command line buffer as received. Editing is permitted in 
Single mode. ESCape aborts operation and returns to an idle state. A Carriage Return 
(^J or ^Enter for Party Line) terminates the Entry cycle and initiates execution. 


The command is processed. In the case of two consecutive action commands, execution 
will be delayed until any previous completion cycle has been completed 


The result cycle outputs any numerical result required by the command, i.e. the position. 
The result type is signed numerical data, preceded by space padding and followed by a 
Carriage Return and Line Feed II the result does NOT produce numeric data then the 
Carriage Return. Line Feed output indicates execution is compiele. 


The completion phase is required for any Action command cycle The following are Action 

GO 										Until last instruction is complete 
STEP RESOLUTION 						Until previous action complete 
CONSTANT SPEED 							Until previous ramp is complete 
FIND HOME 								Until home is found 
RELATIVE MOVE 							Until full index is complete 
+STEP INDEX 							Until full index is complete 
-STEP INDEX 							Until full index is complete 

During the Completion cycle (except for Go) any non-action command, such as read 
position, may be executed. The controller has he capability to queue up another action 
command during the Completion cycle of a preceding Action command. The Execution 
and Result cycle of this Pending command is delayed until the Completion phase is 
finished This interval is called the Pending Period. During this Pending Period the 
command accepted is the one character interrupt (abort) command, limit switches, sell 
stop input, and home switch input. 

External indication of Pending Period end, Execution and Result cycle of the pending 
instruction is the Carriage Return. The Go command is regarded as a command that has 
a continuous Pending (Instructions Queued) Period. 

Interrupt commands are single character commands that will interrupt the operation in 
process as follows: 

Abort: Any Action command may be terminated using the ESCape command 

Command line input 			Clear input buller 
Program Mode 				Exit without inserting "End" 
Action command 				Terminate all motion Hard Stop 
Program execution 			Terminate execution Hard Slop 

NOTE: All process(es) are aborted upon ESCape. 

The Soft Stop "@" can be either a command (Immediate mode) or a single character 
interrupt (Program mode) The Soft Stop operates only when motion resulting from 
action commands or instructions is taking place. 

After velocity deceleration the process is terminated. 

Pending period 				Decelerate and cancel pending instruction. 
Program execute 			Decelerate then terminate execution. 

During Pending Periods that are a result of Multiple and Constant Velocity commands 
(intra-speed ramping) and deceleration will be delayed until the previous ramp-to-speed 
has been completed. 

Jog input and home speed is a special case of the constant velocity command Intra
speed ramping is used if the programmed jog speeds are above the initial velocity 
Homing does NOT employ a deceleration ramp on reaching the home sensor. 

NOTE: In any mode jogging and command reception are mutually exclusive. A command 
can NOT be loaded while jogging and jogging can NOT be performed until the last 
command is complete. A command starts with the reception of the first command 



The controller is designed to control step rates with a high degree of accuracy. As a 
result, step control is given priority over other processes. At high step rates this will 
manifest itself as a slight latency. The execution time increases when high step rates are 
active during command cycles. An example might be reading positions while moving at 
a high speed. Usually this latency has little affect at step rates below 10,000 steps per 
second. At speeds approaching the maximum step rate the processing latency may have 
to be taken into account. 

When running a program (from the Go command) several "fetches" from the non-volaljie 
memory are required along with the service time. This latency may allow several motor 
sleps to occur before the desired action takes place 

Loop on port may exhibit similar latency effects at high speeds. The port will require a 
longer "true" condition to be recognized. A faster method is to implement the "wait for 
port" condition using the "Go-Sub," (branch on port) condition.

Program Memory


The INDEXER/DRIVER is designed utilizing the Xicor type X2416 EEPROM non-volatile 
memory for programs and parameters These devices are rated to retain data for 100 
years. However, as with all EEPROM devices, the number of times it may be 
reprogrammed is limited. Each time a cell is written a small number of electrons are 
trapped in the dielectric. After many write cycles the dielectric becomes less effective 
and the cell cannel retain its charge. Specifically, the X2416 has an endurance rating of 
approximately 460,000 cycles. 

A special area of "Scratch Pad" memory of 64 bytes is accessed in location 128 to 192 for 
use in the working registers of the controller.

The EEPROM has a finite life of approximately 400,000 "write" cycles. Care should be used 
when writing to nonvolatile memory to exclude unnecessary write cycles For example. 
the Restore command ("^C" from a terminal) will retrieve the parameters from the 
EEPROM without doing a write. If the Initialize command ("C1") was chosen, 
the first 256 bytes of EEPROM are written. Should you require a sequence of motions to 
be done without host attention, you may breakup the motions into subgroups rather 
than repeatedly programming the same EEPROM locations. Use the Go from address 
commandto execute the subgroups in the required sequence. 

Use the Save command sparingly. The controller parameters are set so quickly that it is 
sufficient to just let the host download them. 

Changing parameters should NOT be done by writing directly to EEPROM locations using 
the "[" command. The INDEXER will not know that it was changed and may initiate an 
over-write. Use the commands available to set parameters. Unlike writing, reading is 
non-laxing on the EEPROM. 

The 64 bytes of "Scratch Pad" program memory are configured as fast shadow memory at 
locations 128 through 192 The data in these locations are down-loaded from the 
external EEPROM to internal RAM at power up instructions executing in this segment run 
faster than other locations that fetch from relatively slow EEPROM (1Ms. per byte). 
Programmers should reserve this segment for time critical code or code that changes 

The Scratch Pad RAM area is not actually written to non-volatile memory until the Store 
("S") command is issued. Host computers may download subroutines within this area 
without concern about wearing out the EEPROM. 

Locations 256 through 511 are predefined if the "G 2048" command is used in an 
applicalion. The Trip command can jump to any location between O and 255.

Memory Map


The nonvolatile memory (NVM) is used to store user programs for future execution via 
the "G" command or Go input. Any number of programs may co-exist. limiled only by 
the available memory space 

The following memory map defines the address locations, segmented into 8 pages, that 
are accessible through direct read/write commands: 

1		0-255 		O-FF 		Program, Trip, Gol 
		128-192 	80-CO 		Program, k-Trip, Shadow 
2 		256-511 	100-1FF 	Program, Go2 
3 		512-767 	200-2FF 	Program 
4 		768-1023 	300-3FF 	Program 
5 		1024-1279 	400-FF 		Program 
6 		1280-1535 	500-5FF 	Program 
7 		1536-1791 	600-6FF 	Program 
		1600 					Program. Power-Up3 
8 		1792-1893 	700-765 	Micro-position lookup table 
		1894-2041 	766-7FF 		Operational parameter storage 

I. Aux. Input "Go" (hardware) activaled. 
2. "Go Sub" Branch on Port Condilion. 
3. Execute User instruction upon power-up at location 1600. 

The values of the following parameters are modified by the command indicated. They are 
NOT stored in non-volatile memory until a Save command is issued. 
Stored default set: 

Inilial velocity (I) 				400 steps per second 
Slew velocity (V) 					3004 steps per second 
Divide factor (D) 					O (Full SLep) 
Ramp slope (K) 						10/10 
Jog speeds (B) 						30.200 
Trip point (T) 						off 
Auto power-down 					yes 
Auto Variable Resolution (H) 		1 (Auto variable) 
Hold/Run current (Y) 				5/25 
Limit polarity (]) 					low 
Auto position readout (Z) 			off 
Name (after reset) 					undefined 
User programs 						cleared 

Program Entry


In the Command mode, commands are normally executed as soon as they are entered. 
The use of non-volatile memory allows storage of a list of commands. These stored 
program(s) can be triggered at power-up for automatic or repetitive operations by 
initiating a "G" command or by strobing the Go input to a logic low. When in the 
Program mode, the entered commands (now called instructions) are directed into the 
non-volatile memory. Alter leaving Program mode, the stored program(s) may be 
subsequenlly executed as described above. 

The following procedure assumes a standard (RS-422) serial interface using a common 

The Program mode is initiated by entering "P aa" (Carriage Return). The desired start 
address "aa" is chosen by the user Generally address location O is a good choice for the 
main program because a program located at that address can be started with a simple 
"C" command or by strobing the "Go" input low 

Once in the Program mode the current memory location is displayed on the terminal and 
instructions have the same format as in the Command mode.

Terminating the Program mode is done by entering a "P". This will cause the end of 
program flag to be inserted and the controller will echo the pound (#) character. The 
INDEXER will return to the Command mode. 

Several programs may co-exist in memory. Each program may be executed 
Independently by issuing a "G aaa" command. where "aaa" is the appropriate address. 
The length and quantity of programs may occupy the full 2K memory space. 

NOTE: The end of program indicator occupies one additional byte A program sequence 
that will be "called" when a trip point is passed may be located at an address defined for 
the trip point. 

Existing program(s) may be modified at anytime. The user can review the exisling 
instructions by entering the "q" command. This command produces a list of instructions 
along with their memory addresses. The "Q" command lists the program instructions one 
at a time. 

Program Editing


To edit an existing program enter "P aaa" where "aaa" is the desired address. Proceed to 
enter the new instruction(s) as in the Program mode. The edit session may be 
terminated in two ways. If the edit results in a program that is longer than the previous 
program or lf the user wishes to discard the old instructions (shorten program). 
enter "P" to terminate edit and cause an end of program marker to be inserted before 
the end of the old program. If only one or several successive new instructions are to be 
altered, entering ESCape will terminate the edit. Any instructions outside of the edit area 
will NOT be altered. 

NOTE: If any instructions are of different byte lengths than existed previously, the 
program could wind up with invalid instructions in the middle of the program. Keeping 
track of the byte count will avoid this condition The user may insert redundant or 
"dummy" one byte instructions to fill the gap. If in doubt re-enter the remaining portion 
of the program. Use of the "Q" or "q" command to review the stored program is highly 

Command Format


	Command: 	Keystroke. 
	Function: 	Functional description of command. 
	Type 		Immediate: direct execution. 
				Program: executable in stored program 
				Global: all axis present. 
				Default: initial parameter setting 
				Hardware: auxiliary I/O 
	Bytes: 		Storage requirements in program 
	Mnemonic: 	Single character prefix used in muliiaxis protocol: (prefixed by axis 
				"name" assignment in Party-Line mode). 
	ASCII: 		ASCII code in decimal for the command character 
	Data 1: 	Affected parameter(s) and the range of accepted data 
	Data 2: 	(as required) 
	Example:	Example of the command in use

Command Set


Global Abort terminates any active operation and forces the controller to revert to the idle state. Output 
drivers or ports are not effected Stepping and position counler update will cease immediately without
deceleration. Any program "running" will be terminated. Encoder auto-hunt functions are also aborled.
Any axis in the program mode will exit the program mode without creating the "end of program marker." 
therefore the escape character is useful in editing non-volatile program segments. In single mode a 
pound (#) sign is returned. 

NOTE: Because the deceleration is immediate (without ramping) mechanical overshoot may resull. 
especially with high speeds and/or inertia loads. 

The Soft Stop command is useful as a gentle stop. It behaves differently depending on how it is used. If 
the axis is moving it causes an immediate deceleration to a stop, based on the established 
deceleralion K value. 

If the command is issued with no data or a O following the command, the Indexer will decelerate to a 
stop and will not terminate a running program 

If the command is issued with a 1 following the command, the Indexer will decelerate to a stop and any 
running program(s) will terminate. 


Software Reset is a global RESET command. All axis ABORT immediately and a reset. equivalent to the 
power-up condition. is executed: 

	A. Down load default values from the non-volatile memory. 
	B. Determine encoder presence 
	C. Calibrate power driver to on-phase position. 
	D. Set origin(s) to zero. 
	E. Calibrate motor current to hold value 
	F. Test for and execute any user power-up program starting at location 1600 
	C. Assume an idle state waiting for CO pulse input. Jog input serial command input. 
Encoder position maintenance will not be active until a motion function happens 

The Port command provides access to the general purpose inputs and outputs Six (6) general purpose 
porls are available for user applications The pre-configured hardware defines 3 inputs 8N 1, 2 
& 3) and 3 outputs (Out 1. 2 & 3) All ports are read or written as a parallel 6 bit binary value 
To set the output ports, the following table is used: 
	O 			low 	low 	low 
	8 			high 	low 	low 
	16 			low 	high 	low 
	24 			high 	high 	low 
	32 			low 	low 	high 
	40 			high 	low 	high 
	48 			low 	high 	high 
	56 			high 	high 	high 

Other values beside those listed may cause improper operation of the input ports. 
Reading of the inputs is accomplished by sending an "A129". A decimal number is returned indicating the 
state of all of the 1/O bits. Convert this number to binary to determine the state of the 6 1/O bits. The 
bit weighting for the 1/0 status is shown below.

	bit 7 	bit 6 	bit 5 	bit 4 	bit 3 	bit 2 	bit 1 	bit 0 
	n/a 	n/a 	out3 	out2 	out1 	in3 	in2 	inl 
	bit weights 	32 		16 		8 		4 		2 		1

Inputs and outputs are the TTL compatible levels with internal 10K pull-up resistors.

Data range 1 and data range 2 represent the speeds to use when the jog inputs are utilized. The first is 
usually a slower speed. The second number is used when the high speed jog is held low. The values are 
multiplied by 30 to determine the actual step rate in steps per second. Setting values of O will disable 
the jog inputs. Jog resolution is determined by the microstep mode "H" and "D" values. Ramped 
acceleration using the "K" value is implemented Ramped deceleration is used if the high speed input is 
released while maintaining one of the two jog inputs on (low). Both + and - jog inputs operate at the 
same speeds. 

The Jog inputs are active: 
	A. After power-up. 
	B. When not executing a motion command 
	C. When not running a program (A GO command will take priority over Jog inputs) 

Jogging is inhibited during actual command line entry. 


The controller incorporates a total of 8 pages of program memory. The data values refer to the page of 
nonvolatile memory to clear Page 8 (1192-2047) contains the parameter default storage, pages 1 
thru 7 (0-1191) may be used for user programs. 

Clear and Restore re-initializes or clears the system non-volatile memory. All page numbers except a 
zero cause a 256 byte write cycle, taking approximaleiy 200 Ms. Frequent use of this command should be 
avoided as memory longevity may be effected 

"C O" Reloads the last saved parameters from non-volatile memory. No write operations occur and 
oderation is similar to what happens during a power-on reset. 

"C 1" thru "C 7" Erase the corresponding page of non-volatile memory. 256 bytes at a time. 

NOTE: Programming overwrites non-volatile memory as it proceeds. It is not necessary to use 
this complete erase, except to "clean up" a segment. 

"C 8" Forces complete non-volatile initialization to factory default values. This should be done only when 
new non-volatile memory is installed or existing memory is corrupted 

"C 9" Forces initialization of the "micro look up table." This list of 100 eight bit numbers starts at 
location 1192 in page 8 Each value corresponds to a micro position with a resolution of 1/256 micro 
step. The default values assume an ideal linear relationship between phase currents and actual armature 
posilions. Designers may insert their custom tables here. Any new list must be monotonic in nature. 

NOTE: The INDEXER/DRIVER must be completely reset (i.e. Power on reset) after executing a C8 or C9 

The Divide Resolution factor is used to set the microstep resolution when operating in the fixed resolution 
mode. Indexes are made using the specified resolulion. 

	O 			full 		6,000 
	1			1/2 		3,000 
	2 			1/4 		1,500 
	3 			1/8 		750 
	4 			1/16 		375 
	5 			1/32 		187 
	6 			1/64 		93 
	7 			1/128 		46 
	8 			1/256 		23 
This command may be used (with caution) when operating in the Variable Resolution mode. Its effect is 
to prescale the motor shaft speed to operate with higher resolution. The programmer should observe 
that the maximum velocity specified does not exceed the maximum shaft RPM available at a given 

The Controller features automatic motor reduction capability. After an index, the winding current will be 
reduced or shut off as determined with the "Y" parameter. This specifies the delay in 10's of milliseconds 
before activation of the auto-power-down feature Successive indexes will activate the run current (as 
required) prior to the index. Auto-power-down will not occur if the encoder auto-hunt-mode is on. 

The Find Home command eliminates hysteresis inherent with encoders, switches and syslem mechanical 
backlash. The Controller implements an intelligent homing algorithm that is designed in such a way that 
home is always approached from the same direction on receipt of a home command: 

A. 	Initial direction is determined by the state of the home switch and direclion parameler 
	If the dir = O and Home switch is low, motor starts in the negative direction. 
	If the dir = O and Home switch is high, motor starts in the positive direction. 
	If the dir = 1 and Home switch is low, motor starts in the positive direction.
	If the dir = 1 and Home switch is high, motor starts in the negative direction. 

B. 	The motor steps until the home switch changes state. 
C. 	If home switch was low and changes to a high, homing is finished, 
D 	If home switch was high and changes to a low, direction is reversed and motor steps until 
	home switch goes high, then stops. 

The homing speed is specified in the speed parameter. The direction parameter establishes the initial 
seek direction to use. If the specified speed is above the initial velocity a start ramp will be used When 
the Home switch changes state, motor is stopped without ramp. Then, if needed, the last phase of home 
proceeds at the initial velocity. 

Seek speed is a word value (20-20,000) allowing a range to 20,000 steps per second.

The Go command executes a user programmed sequence starting at a predefined address location 
Although most programs will start at "O", the user can start at another address. That address, however, 
MUST begin at a stored instruction address. 

The Trace option is useful in debugging single axis programs. If trace is a one, the Trace mode is turned 
on. A display of the current step being executed is produced while the program is 
running. The list format is the same as that of the "Q" command. The Trace mode will be in effect until 
the program execution terminates or until an embedded Go without the trace attribute is 
encountered. Address locations between 1894 and 2047 are reserved for parameter storage and may not 
be used in programs. 

The Controller features a special case for the Go instruction. If the address is specified as 2048 (above 
the last non-volatile address), the control signal will branch to an address based on the 
state of input ports 1 through 3. The target address starts at the second page of program memory at 
address 256 with 16 character (byte) intervals This instruction is analogous to "on PORT go to." 

Input port state 	Address of go to 		The remainder of this page of NVM must 
IN1 IN2 1N3 								contain the following Instructions: 
  O   O   O 		256 					384 	G256 
  1   O   O 		272 					400 	G272 
  O   1   O 		288 					416 	G288 
  1   1   O 		304 					432 	G304 
  O   O   1 		320 					448 	G320 
  1   O   1 		336 					464 	G336 
  O   1   1 		352 					480 	G352 
  1   1   1 		368 					496 	G368 

Strobing the hardware Go input to a momentary low pulse will have the same effect as the "G" command. 


This command selects one of two primary step modes. 

mode O - Fixed Resolution (FR MODE) 
Stepping occurs at a fixed resolution (full to 1/128) determined by the "D" command. The index distance 
for a given step count is also determined by the specified resolution, i.e. a + 200 step index will 
result in a 1 revolution at full step, 1/2 revolutions at 1/2 step, 1/32 revolution at 1/32 step, etc. The 
maximum shaft speed is limited Lo 20.000 steps/second at a given resolution. Fractional 
positioning is not available. Ramping is used. 

mode 1 - Auto Variable Resolution (VR MODE) 
This is the most powerful index capability of the Controller. The Controller determines the optimal step 
resolution for the specified initial and slew velocities. During acceleration or deceleration. 
step resolution is coordinated with step rate and changed at predetermined speeds to maintain smooth 
acceleration. This "gear shifting" always occurs on a motor full step pole positio, where 
torque is highest. 

The following events take place in response to an index command. This example assumes an index in 
excess of 1 full step: 
***See "D" Command: The user must send DO to get mar verocity. 

	A. Any prior motion from a previous command is completed. 
	B. The next "TARGET" position is calculated in "N" whole 
	   steps and a fractional "F" remainder. 
	C. The motor is energized to the run current, as required. 
	D. A course index of "N" whole steps is executed. 
	E. The motor is "Trimmed" to the linal position "F" with 1/256 
	   step resolulion. 
Note: Do not use Variable Resolution with an encoder. 

The initial velocity command sets the parameters to be used in subsequent motion commands. 
In VR Mode the speed is in equivalent full steps per second. In FR Mode the speed is in pulses per second 
applied at the specified resolution, i.e.. the shalt speed is halved for each smaller microstep setting (see 
the "D" command). 

The initial velocity applies to: 
	A. All index commands (+, -, R) 
	B. Start speed used in constant velocity (M). 
	C. Decelerate to O in constant velocity or soft stop 
	D. Final phase of home routine. 

Jump to address, count + I times. This loop command allows repetition of a sequence up to 255 times. 
The address specified MUST be a valid instruction address and may be used only within a program. Only 
one jump counter is available for use at any given time. However, the Primary "J" command and 
Secondary "j" command can be nested. Use of the "G" command is recommended for single jump 

Note that if a jump loop does not run to completion (due to branching out of the loop) the jump counter 
will have the remaining counts left to complete the jump loop that was not completed. Use a dummy 
jump loop to run the count to zero if a "fresh" jump loop counter is needed. 

The ramp slope is used to adjust the dv/dt during acceleration and deceleration. The profile or shape of 
the acceleration/deceleralion curve is defined by an internal look-up table. Depending on the initial and 
final velocities, O to 500 discrete velocities may be required to accelerate or decelerate. The K value 
determines how many steps are made at each step rate point along the acceleration curve during 
ramping. High values increase the time of the acceleration ramp. Lower values decrease the time of the 
ramp. A value of 0 eliminates any ramping. 

In practical applications, it is easier to decelerate a system rather than accelerate a system. The separate 
acceleralion and deceleration ramp values allow for greater flexibility over systems with fixed acceleration 
and deceleration ramps.

The Loop command will test the specified input port for the required condition. If the port is NOT at the 
required level, the program will jump to the specjfied address. If the address is to a previous instruction. 
the program will loop until it becomes the specified level. The program will then continue to the next 
step. Input ports are tested as follows: 

	O 				IN1 High 
	1				IN1 low 
	2 				IN2 High 
	3 				IN2 Low 
	4 				IN3 High 
	5 				IN3 low 

The Controller has an additional feature for implementing a "wait until" function. The standard loop tests 
the condition every 2-3 mS. If the unique address is 2048, the Controller executes a tight loop at this 
instruction while monitoring the specified condition. When the condition is met, program execution 
continues. This feature is helpful in situations where the condition may be of short duration. This 
command is usable only in non-volatile program execution. 

	NOTE: Reference the special case of the Go command for branching on inputs. 

The "+" or "-" sign determines the direction during the move at constant velocity function. The motor 
will ramp up or down to a constant step velocity and motion will continue at the given speed 
until a new velocity is entered. The specified slew speed is in steps per second. 
Ramp parameters may be modified prior to each velocity command, allowing different ramp slopes. The 
direction is specified by the sign preceding the velocity. The controller has the capability of 
decelerating from full speed in one direction to full acceleration speed in the opposite direction with this 
single command. Motion may be terminated by: 

	A. The "M O" command 
	B. Soft stop "@" command or interrupt. 
	C. ABORT (ESC) interrupt (without deceleration) 

The default initial velocily is used at the first invocation of the command. The following commands 
modify effective speeds and resolutions: 

	D. Resolution 
	K. Ramp factor 
	H. Mode 

Position Trip points may be used. If the encoder feedback option is implemented, stall supervision is 

The Set origin command resets the internal position counter to Zero. Units with encoder feedback are 
also reset. This command is not allowed while moving. The following commands will also reset the 

	A. Power on reset 
	B. (e) enabling the encoder. 

The micro trim position is re-calibrated to the "on pole" position as required (Non-Encoder mode). 

Program Mode allows entering commands for future execution by use of the "G" command or external go 
signal. Existing programs are overwritten as new instructions are stored. Entering a second "P" 
command will terminate the Program mode, and insert an end of program marker in the stored program 
before returning to the Immediate Command mode. While in Program mode, commands and data are 
direcled into the non-volatile memory The address specifies the start point in non-volatile memory 
where the application program will reside. As instructions are entered. the address counter is updated 
and displayed. Any number of independent program segments can co-exist. These can be accessed via 
Jump, Loop, Go or other special instructions. 

Special locations: 
"Shadow Memory": 64 bytes of the program are configured as FAST memory locations 128 through 192 
are down-loaded from the external EEPROM to internal RAM at power-up. Instructions executing in this 
segment run faster than other locations that fetch from relatively slow EEPROM (1 Ms. per byte) 
Programmers should reserve this segment for time critical code. The shadow RAM is not actually written 
to non-volatile memory until the Store command is issued. Host computers may down load 
subroutines without concern about wearing out the EEPROM 

locations 256 through 511 are pre-defined if the "G 2048" command is used in an application. The Trip 
command can jump to any locations between O and 255. 

Editing of programs should be done WITH CAUTION as follows: 

	A. Start programming at desired address. 
	B. Enter new instructions. 
	C. Terminate programming with the ESC command This will cause a return to the Command mode 
	   without inserting the end of program marker 

NOTE: Do not attempt to use locations above 1192 for programs (default storage).

This command will produce a list (disassembled) of the instructions stored in non-volatile memory using 
the format: 


	A. The values will be displayed only if applicable to the 
	   particular instruction type. 
	B. One instruction will be listed at a time. 
	C. The space key will advance the address and list more 
	D. Listing is terminated when an "end of program" marker is 
	   found or the ESC character is received. 

A lower case "q" command may be used to produce a listing of up to twenty consecutive instructions. 

Note: This command does not function in party line mode. 

Move with ramping relative to the origin. The distance of the index is determined by subtracting the last 
(or current) position from the target position. If an index is under way when the command is issued, the 
controller will wait until that index is complete. The units used for target position can assume three 
meanings based on the mode of operation: 

Non-encoder, Variable Resolution mode Range +/- 8,388,607.99 Full Steps 
The target position is specified in terms of whole motor steps (typically 200 steps per revolution) and a 
fractional portion with .01 step resolution. Indexing will proceed at various resolutions, based on 
velocities, until the target "whole step" position is reached. A fine adjustment is then made to position 
the rotor to .01 to .99 slep 

Non-encoder, Fixed Resolution mode Range +/- 8,388,607 Steps 
The target position is specified in terms of steps at the specified resolution (see the "D" command). This 
mode permits step translations of 1/200 thru 1/51,200 motor steps per revolution. Shaft speed is limiled 
to 20,000 steps per second at a given resolution. 

Encoder, Fixed Resolution mode Range +/- 8,388,607 Encoder position 
The target position is specified in terms of encoder position. The shaft resolution is 4 times the encoder 
line count Indexing will proceed at various resolutions. based on velocities until the target is reached. A 
line adjustment is then made to position the encoder at the specified target The resolution used for this 
phase is up to 1/256 motor/step. Automatic stall detect (with "n" retries) may be enabled. Aulomatic 
position maintenance after index may also be enabled. 

Related commands D, E, H, I, K, O, V. 

Store Parameters to non-volatile memory. Many parameters are automatically read from non-volatile 
memory each time power-up occurs, eliminating the necessity of inserting redundant initializing 
commands in programs. The following are user defaults that are stored in the non-volatile memory: 

B Jog speeds 		3/20 (30/200 steps per second) 
D Divide 			O (lull step) 
E Settling delay 	50 (500 Ms.) 
H Resolution mode 	1 (Variable) 
Initial velocjty	400 
K Ramp slopes 		10/10 
T Trip point 		011 
V Slew speed 		3004 
Y Currents 			5/25 
Encoder option 
d Dead zone 		30 
e Encoder setup 	oil 
h Hunt resolution 	4 
r Stallretries 		5 
s Laglactor 		20 
t Stalldelta 		5 
v Hunt speed 		700 
Assigned Name 

The Store command also saves the contents of the high speed "Shadow RAM." Locations between 128 and 
192 are stored only when this command is issued, extending the life of the EEPROM. These 64 
locations are automatically downloaded on power-up reset. 


The controller has a programmable "Trip point" feature. During motion operations, the position counter 
is continuously updated. If the trip point function is enabled, the position is continuously 
compared to the programmed trip position. When an equality is detected, a trip event will be 
If a program is running, a call or "Go Sub" will be made to the specified address between 1 and 
Programs located at the specified address can perform almost any function, including turning on/off 
ports and setting new trip points. A trip point cannot be "re-entered" i.e., when executing a 
trip subroutine and a new trip is set as part of the subroutine, the new trip cannot be triggered until the 
end of the first trip subroutine. Routines located between 128 and 192 will execute faster because of 
the "Shadow RAM" feature. Trip service routines should not contain index, wait or time.
consuming instructions. The P command is used at the end of the trip subroutine in program memory to 
cause a return to the point where the trip occured in the main program. 

To turn off the trip function use O (zero) as the address parameter. 

NOTE: This command is only functional in fixed resolution (non encoder) mode. 

Set final Slew Velocity after ramping up to speed 

The following commands use this parameter 

	R 	Relative index 
	+ 	Plus index 
	-	Minus index 

Note: For entered values of slew velocity, the indexer calculates the actual velocity used and displays this 
number in () in the X command output. This actual velocity may be different than the entered value since 
the indexer uses an internal counter to generate the clock pulses and the actual divide ratio for this 
counter may not correspond to the exact user specified velocity. In all cases, the indexer will always 
calculale and use the next highest value for velocity if it can't achieve the exact user entered value 
Example: Type V3000. The X command displays 3004 indicating 3004 sps will be used for slew velocity.

Wail n x 10 milliseconds, where n is the Data 1 field. 

The controller will remain in an idle slate for the specified time. This time is derived from the crystal 
clock and is very repeatable and accurate. It is independent of motion in progress and times 
functions while moving. One timer is available. 

NOTE: SPECIAL CASE--wait for motion completion: 

Using a O (Zero) time value will delay the next command/instruction until any index (+,- or R command) 
motion has been completed or a limit switch input in the direction of the move is activated. In the 
Immediate Command mode the echoed line feed is delayed providing an alternative means for the host to 
determine motion complete (only practical in single axis designs). The WO must follow the motion 
command to be waited on and precede the next command to be executed following the motion command. 
The WO must be used for every instance when this action is desired. 

The Examine command displays settings of many parameters and provides useful information. Two lines 
of operational parameter data are displayed. Up to five lines of data are displayed if the Encoder and 
Auto position functions are enabled. In Single mode the display is as follows. In Party Line Mode the X 
command returns "32. Refer to the Appendix for information on obtaining parameters using the Read NVM 
command to view parameters in Party Line Mode. 

Line #1:	Y=hold/run, E-n, K=up/dn, H-vr(fr), na=name. {T=ppp/aaa} 
Where: 		run=run current, hold=hold current, n=lOx milliseconds 
			up=acceleration slope, dn-deceleration slope, vr=Variable Resolution mode, 
			fr=Fixed Resolution mode, name=most recent name assignment for party Iine 
			ppp=trip position (if enabled) aaa=trip branch address 

Line #2: 	I-iv (av/res), V=sv (av/res), (rl=nnn) 
Where: 		iv-initial velocity, sv-slew velocity, av=actual velocity used, res=actual resolution used, 
			rl=ramp length (multiply times K for actual) 
		NOTE: The divide factor (D) can be determined from the res. values 

Line #3: 	(if encoder is enabled) e = ll, (ratio=rr) 
Where: 		ll=lines specified, rr=computed ratio (lines/full-step) 

Line #4: 	(if auto position is enabled) d = dz, v=vh/hres 
Where: 		dz=dead zone size, vh=hunt steps per second, hres=hunl resolulion 

Line #5:	(if auto stall is enabled) s=ss, t=tt, r-rr, (lag=lll) 
Where: 		ss=stall percentage, tt=tt=test delta, rr-retry attempts, lll-maximum allowable encoder lag 
		  distance (based on s and t values) 

Items displayed in parentheses () are computed internally, based on parameter settings.

This command allows specifying the hold and run values of motor current (per phase) between O and 
100% with a resolution of 1%. 
The switching between Hold and Run values is automatic whenever a motion function is executed. Current 
reduction lo the "hold" value is automatic and occurs when stationary. A programmable settling 
time is inserted after each index (see "E" command) 
NOTE: In units that output STEP CLOCK and DIRECTION, false pulses will occur when switching to a non-
zero hold current value. This "phenomenon" can be eliminated by using either a value of O for the hold 
current or setting the hold and run current to the same value. 

Read and display the current position. During motor move commands the value will change depending on 
the direction of travel. 
The "Z1" enables continuous readout via the serial interface. Any change in position causes the position 
data to be sent to the serial output. The readout is terminated by a Carriage Return only. 
The Readout mode will be defaulted "on" if a Save command is issued. This mode is only practical using 
single axis protocol. The decimal portion will be non-zero only when fractional positioning is enabled 
(non-encoder, Variable Resolution mode). 

NOTE: When an Encoder is being used, the lowercase z will display encoder position information. 

NOTE: Issuing a Z1 in Party Line Mode may produce undesired results. 

The Read Non-Volatile Memory command allows the user to display any byte of the 2041 byte external 
non-volatile memory. The address specifies the desired location to access. 

The optional count allows display up to 255 locations, 10 bytes per line. 

For listing memory as program instructions, refer to the q and Q commands. 

	A Zero is returned if no limits are on. 
	I=Limil A. 2=limit B. &Both limits 

Permits the user to examine the status of the various signal jnputs The result will contain the sum of 
the decimal values as follows: 

Decimal value 
	 1. Home input 
	 2. Encoder error direction (internal) 
	 4. Encoder error (internal) 
	 8. Go input (not usually readable when running) 
	16. Soft stop input 
	32. Jog + input 
	64. Jog - input 
   128. Jog speed inpul

Step in a positive or negative direction for the specified distance, The motor will ramp up, slew, then 
ramp down per the previously set parameters. If an index is under way when the command is issued. the 
controller will wait until the index is complete. The unit used for target position can assume three 
meanings based on the mode of operation: 

Non-encoder, Variable Resolution mode Range +/- 8,388,607.99 Full Steps 
The target position is specified in terms of whole motor steps (typically 200 steps per revolution) and a 
fractional portion with .01 step resolution. Indexing will proceed at various resolutions, based on 
velocities, until the target "whole step" position is reached. A fine adjustment is then made to position 
the rotor to .01 to .99 slep 

Non-encoder, Fixed Resolution mode Range +/- 8,388,607 Steps 
The target position is specified in terms of steps at the specified resolution (see the "D" command). This 
mode permits step translations of 1/200 thru 1/51,200 motor steps per revolution. Shaft speed is limiled 
to 20,000 steps per second at a given resolution. 

Encoder, Fixed Resolution mode Range +/- 8,388,607 Encoder position 
The target position is specified in terms of encoder position. The shaft resolution is 4 times the encoder 
line count Indexing will proceed at various resolutions. based on velocities until the target is reached. A 
line adjustment is then made to position the encoder at the specified target The resolution used for this 
phase is up to 1/256 motor/step. Automatic stall detect (with "n" retries) may be enabled. Aulomatic 
position maintenance after index may also be enabled. 

Related commands D, E, H, I, K, O, V. 

The Read Moving Status command is used to determine the current moving and mode status of the 
controller. These status bits are converted to a decimal numbed (0-255). 

	The status byte result contains the decimal sum of status bits as follows: 
	Bit 	Decimal 
	O 		1 			moving - indicates axis moving 
	1		2 			constant - high in constant velocity 
	3 		8			homing - homing routine is active 
	4 		16			hunting - encoder correction 
	5 		32 			ramping up or down. 

	Other bits in this result should be ignored 
EX. If the returned value is a 9 this would indicate moving (1) + homing (8) 

The Write to Non-Volalile Memory command allows the programmer to directly modify any byte in the 
memory. The life expectancy of the non-volatile memory may be effected by excessive use of this 

	NOTE: Non-volatile memory has a finite life of approximately 10 years for data retention and 
	460,000 write cycles. 

This command specifies the differential position distance, in encoder counts, that the motor shaft is 
permitted to differ from the encoder position register before automatic position correction is executed 

When a correction is required the position is re-homed to the desired position. The total dead zone value 
is double the specified distance. thus a value of 10 will maintain the position within +/- 10 encoder 
steps. After completing a move using automatic position correction, further position corrections will be 
automatic. Full motor power is maintained, and the moving output signal is asserted "on". The minimum 
practical value is affected by encoder resolution, backlash, and hunt step rate/resolutions. A value that 
is too low will result in constant hunting or shaft oscillation. 

A value of O disables this function. A non-zero value activates position maintenance immediately. An 
abort command (ESC) will halt tracking. 

This command specifies the encoder resolution, in lines, for one revolution of the motor. The controller 
multiplies this value times 4 for encoder position readings. A 500 line encoder will produce 2000 steps 
per motor revolution. The line count values are based on a standard 200 step/rev motor. resulting in 
allowable settings between 50 and 2000 in increments of 50 (i.e. 100, 150, 200, etc.) Non standard 
applications must be scaled appropriately 

A value of O disables all encoder functions, and subsequent indexing is in motor steps rather than 
encoder steps. 

NOTE: Always execute this command last in the sequence when configuring the encoder settings since this 
command immediately enables encoder actions. 

NOTE: Be sure the HOLD current setting (Y command) is not set to O when using position maintenance. 

This command causes the motor to rotate in the specified direction until the optional encoder marker 
output (option on encoder) is detected Searching is accomplished using the hunt speed ev") and 
resolulion ehl. To avoid missing Lhe index signal. the microstep resolution should be high. Values 
between 1/32 and 1/256 are recommended The mark is only usable in the fixed resolution mode 
The motor pole to mark relationship requirements preclude practical use in variable resolution mode. 

The Hunt Resolution defines the motor micro step resolution as defined by the H command. used during 
deadband recalibration operations A value of O corl€esponds lo full step and 8 equals 1/256 step. See 
the "H" command. 

For moderate to high resolution applications. resolutions of 1/16 and above are recommended 

Very high resolutions will lend Lo increase the time required for brge position error corrections. 
	"v" Hunt Velocity 
	"d" Deadband Enable 

The SPECIAL TRIP command is a REAL TIME TRIP sequence, stored in "Shadow" RAM. It permits 
programming port output sequences to occur based on position. This powerful command can be used to 
generate port sequences in real time, while moving. For example, "turn on and off 3 valves at various 
posilions during a cycle". 
Description of operation: 
	A. A trip position is set using the T command, address field points to k command in RAM. 
	B. When the trip position match occurs: 
		a. Program vectors to trip address and the port data is output (see the "A" command). 
		b. The trip position register is loaded with the NEXT trip position as specified in the k command. 
		c. The trip vector address is automatically advanced by 5 to point to the next k command. 
	C. A new trip position is now set (k command just executed) and the process repeats from step B. 
1. The k instructions must exist in high speed RAM (BETWEEN 128 AND 192). 
2. A trip point must be active with a vector address pointing to the k commands in RAM. 
3. Sequences must occupy contiguous RAM address space. 
4. To disable the last k vector address, use a T O O after sequence executes. 

The use of this powerful command is best understood by way of example. Two valves V1 on port #4, & Y2 
on port #5 need to be sequenced as follows: 

			POSITION 	VALUES 				PORT VALUE (Date 2 of A command) 
	start 	O 			V1 off. V2 off 		O 
			100 		V1 on 				8 
			200 		V1 on. V2 on 		24 
			300 		V2 off. V1 on 		8 
			400 		V2 off. V1 off 		O 
	a. Enter the "STATES": 
			 P l30 		*start programming in shadow ram area
		130  k 200 	8 	*V1 on. next trip set to position 200
		135  k 300 	24 	*both on. next trip set to position 300
		140  k 400 	8 	*V2 off. next trip set to position 400
		145  k 500 	O 	*both off (postion 500 is set but might never be hit) 
		I50  P 			*exit program mode 
	b. The commands now exist in RAM. Issue a Save "S" command to store in NV memory. 
	c Load the main program: 
	   P 0 
		0 	0 				*set origin to O 
		1 	T 100 130 		*set trip position and vector address
		6 	A 0 			*set outputs off 
		8 	R+1000 			*start move
		13 	WO 				*wait for move to complete 
		16 	T 0 0 			*clear trip at 500 set by last k command 	

The lower case L controls the polarity of the limit switch inputs as recognized by the controller. The data
value determines how the limit switch input is acted upon when closed. 

	O - Normal (Active Low) limit inputs 		1 - Invert (Active High) limit inputs 
	2 - Enable Soft Slop on limit input low 	3 - Enable Soft Stop on limit input high

NOTE: Limit A is the limit for moves in the "+" direction 
	  Limit B is the limit for moves in the "-" direction. 

This command sets the posilion counter to O. This command is identical to the upper case version. 

List application programs from non-volatile address. 20 lines at a time. See the "Q" Command. 

Set Stall Retry Count will automatically re-attempt to execute a new index if, during the course of an 
index, a stall condition is detecled. 
	A. Stop motion. 
	B. Read encoder position. 
	C. Automatically execute a new index based on the new computation. 

Upon exhaustion of the retry count the controller will still attempt to acquire the desired position if the 
Hunt (Deadband) feature is enabled. Limit inputs or Abort commands will terminate retries.

This command sets the encoder counts lag distance as a percentage of the sample rate (t). A value of 
255 represents ]00%. The formula for determining the number of encoder lag steps is: 

	Lag Distance = Stall Test Value(t) x Encoder Steps per Motor Step x Stall Factor(s) / 255 

If s = 224 the maximum lag is: 10 x ]O x 224/255 = 87.8 encoder steps (see t command below) 

Every 10 motor steps the encoder position is sampled. If the motor distance has not moved at least 87 
encoder steps a stall condition is set and the controller takes corrective action 

This defines the sample rate or distance increment (in full motor steps) between stall tests.
By example: 
	A 200 step/rev motor is coupled to a 500 line encoder, which yields 2000 encoder steps per 
	revolution, or 10 encoder steps per motor step (2000/200). 
	The sample distance (t) is 10 full sleps. 
	The encoder change each "t" step is 10 x 10 = ]00 encoder steps. 
	The actual sampling should allow for some backlash as defined by the stall factor. 

Hunt Velocity specifies the hunt step rate lo be used during deadband repositioning. Motion is at a fixed 
resolution, specified by the "h" parameter. 

NOTE: The controller may get "stuck" in a hunt mode if v is set too high or too low and ESC will not work 
to abort the hunt function. Turning the motor shaft may allow the position to be found and the hunt 
function to terminate. If the controller does get "stuck", cycle power and change the v parameter before 
attempting to move again. 

This command causes a carriage return line feed to be sent to the terminal. This command is useful 
when displaying position as part of a program. Without this command following the Z to display position, 
the position reports would be send on the same line, causing the display to wrap around at the end of a 
display line. When the y command follows a Z command, the next position report would appear on the 
next display line, providing a format which is easier to read. 

Read and display the current encoder position. During move commands the value will change depending 
on the direction of travel and the position of the encoder. 

The "z1" enables continuous readout via the serial interface The readout is terminated by a Carriage 
Return only. 

The Readout mode will be defaulted "on" if a Save command is issued. This mode is only practical using 
single axis protocol. 

NOTE: The use of the uppercase Z command to display position when using an encoder may produce 
unpredictable results in the position information.



The following example illustrates the method of generating. editing and executing 
programs through the serial port, in Single mode operation. (CR) indicates the Carriage 
Return character (hex OA). 


	P O (CR) 	Place in Program mode,
	 			insert instructions at location O. 

Start inserting instructions. The address is displayed during entry. 

O			F1000 O(CR)		Find home at 1,000 SPS in the "+" direction
3			W O(CR)			Wait until move completes
6			O (CR)			Set origin to zero
7			R+10000 (CR)	Index "+" ]0,000 steps relative to origin
12			W O(CR)			Wait until complete
15			R-10000 (CR)	Index "-" 10,000 steps relative to origin
20			W O(CR)			Wait until complete
23			J 7 3 (CR)		Jump to address 7 (4) times
27			R+1000 (CR)		Index "+" ],000 steps relative to origin
32			W O(CR)			Wail until complete
35			R-1000 (CR)		Index "-" ],000 steps relative to origin
40			W O(CR)			Wait until complele
43			G 7 (CR)		Go to address 7 (endless loop)
46			P(CR)			End of program flag

The program now resides in the non-volatile memory. 

The indexer responds with a "#". 

Enter: "q" O (Carriage Return) or "q" (Carriage Return) 

The terminal will display the instructions and addresses as follows (Note that the P at 
the end is not displayed): 

	O	F	1000 O
	3	W	
	6	O	O
	7	R	10000
	12	W	
	15	R	-10000
	20	W	
	23	J	7 3
	27	R	1000
	32	W	
	35	R	-1000
	40	W	
	43	G	7

Starting at location 0; Enter: "G" O 1 (Carriage Return) Note: The trace is turned on. 

The indexer will start executing the preprogrammed instructions starting at location O 
and loop forever. Because the Trace option is in effect the display will list each 
instruction prior to execution. The user may terminate program execution at any time 
by entering ESCape. 

After one or more instructions: 

Example: It is desired to change the instruction #30 to 5000 steps. 
as follows: 

	P 30 (Carriage Return) 
	+5000 (Carriage Return) 
The edit is complete. 

	"Q" O (Carriage Return) 
	To list each subsequent program line enter a Carriage Return: 

	O	F	1000 O
	3	W	
	6	O	O
	7	R	10000
	12	W	
	15	R	-10000
	20	W	
	23	J	7 3
	30	R	5000
	35	W	
	38	R	-1000
	43	W	
	46	G	7
	49	P	

Setting Output Current


The Indexer has the ability to control the motor operational "Run" and "Hold" drive 
currents The following procedure is used to access the independently programmable 
"Run" and "Hold" current feature. Values from O to 100% may be entered; Ref. "Y" 

1.	Issue thr "Y" command to program the desired current values. Entering Y 10 80 
	yields a 10% Hold current and 80% Run current 
2. 	Issue an "S" Save command. The values and mode are stored to non-volatile 
0n receipt of an index or other motion command, the control circuits are incremented 
to thr 80% boost, while moving is in process. On completion of motion (and a settling 
delay time) the current is automatically reduced to the 10% Hold current level.
Accessing the Current Disable feature will require using the following current set-up 

To establish a "Current Disable" and Running current of 80% of maximum 

Y0 80 	sets hold at O% (disabled) and run at 80% 

NOTE: If the number "O" is entered as the first data value during current control 
programming, the output chopper driver is disabled during "Hold" modes of operation.



The indexer/driver modules are extremely flexible in the manner in which they may be 
utilized. This is especially true for multiple axis applications. This section will outline a 
basic trouble shooting process. If you are still experiencing difficulties after following 
these procedures, please call IMS 8:30 AM to 5:00 PM EST for applications assistance. 

NOTE: Unauthorized service of your module may void warranly. 

Most common causes of operational problems arise from improper configuration/wiring 
of connections to the modules. The following notes should help to isolate these 



1. 	A general purpose VOM or DVM, preferably including a 10 Amp 
	currenT scale (O to 2 Amps will also work). 
2.	A suitable short, small gauge wire with small jumper clips or 
	female .025" contacts. (test jumper). 



3. 	An Oscilloscope may be useful for observing signal wave forms. 
4. 	A Logic Probe gives a quick indication of logic states at a glance.


1. 	As a basic precaution, disconnect all mechanical coupling and electrical connections 
	to the stepper motor(s). These tests will eventually require an electrical load. 
	however until indexer operation is achieved it is best to inhibit mechanical 
2. 	Verify proper DC power to the module by measuring the DC voltage output on the DC 
	power supply. 
3. 	Verily motor winding continuity and phase polarity. 
4. 	Attach the current meter in series with one of the Phase B motor connections. 
5. 	Plug in the DC power supply. 

The following test will verify basic motor operation: 
6. 	With power and a motor/ammeter connected to the module the motor should 
	exhibit "Holding Torque." The current value observed will correspond to the last 
	Saved or Default value of holding current. 
7. 	Place a test jumper connecting Logic Ground and Jog +. The motor should begin to 
	rotate at the (default) rate of 70 steps per second. 
8. 	Remove the connection to Jog + and place the jumper Jog -. The motor should 
	begin to rotate in the opposite direction. 
The above tests have verified basic controller, driver, and motor operation. Assuming 
that the initial trouble shooting tests 1-8 passed successfully the next step in the debug 
process is to verify system communications. The following procedure will test the serial 

Primary communication to the module is through the RS-422 serial port. A PC/AT 
compatible personal computer or a dumb terminal is required. 

9. 	Attach a terminal to the module. 
10.	Set the communication settings to 9600 baud, 1 stop, no parity, 8 data bits 
11.	With power applied to the indexer/driver module, press the Space Bar. 
	The module should return with a xxxx yyyy AMS MAX2000 vXXX Response 
		xxxx = Indexer version number. 
		yyyy = Encoder (optional) version number. 
		XXX = Operational code revision level. 


A. 	If there is no response. check the wire continuity and pin assignments from the 
	terminal and confirm the terminal settings. 
B. 	Use an oscilloscope to observe transmitted data output from pin 2 of the (25 pin) 
	RS-232 terminal output, while repeatedly pressing the Space Bar on the keyboard. 
C. 	Seek an alternate terminal for communication if there is no output observed as a 
	result of step B.

D. 	Type X (Examine Command) followed by a Carriage Return. 
	The following parameters should be echoed back: 

E. 	If the response does not match these default parameters Type "C 8" with a Carriage 
	Return. This is an initialization procedure. Type a ^C followed by a space, followed 
	by an X followed by a Carriage Return and observe the following: 

	xxxx 	yyyy 	AMS 	MAX-2000 	vX.XX
X 	Y = 20/75 E = 100 K = 10/10 H = vr na = 
	I = 400 (12000/32) V = 3004 (12047/4) (rl = 15) 

G. 	Type X and a Carriage Return and observe the parameters indicated in procedure D. 
	If the echoed parameters do not match, appear garbled, broken, spaced or partially 
	missing check the following: 
		1. 	Verily correct terminal settings. 
		2. 	Check the routing of the serial communications cable. 
			Verily that the cables are not bundled with motor 
			connection cables or in close proximity to other 
			sources of high speed switching currents or transient 
			voltage inducing devices (Solenoids, Relays, etc.) 
If you are still experiencing difficulties after following the above procedure, please call 
and ask for one of our applications engineers. 





	JOG + 
	JOG - 



Command Summery



K RAMP SLOPE				ACCEL			0-255				DECEL			0-255
T TRIP POINT				POSITION		+/-8,388,607.99		VECTOR ADDRESS	0-255
Y HOLD/RUN CURRENT %		HOLD %			0-100				RUN %			0-100

F FIND HOME					STEPS/SEC		20-20.000			DIRECTION		0-1
+ INDEX IN "+" DIRECTION	STEPS			0.01-8,388,607.99	NONE			NONE	
- INDEX IN "-" DIRECTION	STEPS			0.01-8,388,607.99	NONE			NONE

G GO						ADDRESS			0-1791,2048			TRACE OFF/ON	0-1
J,j JUMP					ADDRESS			0-1791				N+1 TIMES		0-255
k SPECI€I TRIP				POSITION		+/-8,388,607.99		PORT VALUE		0-56
L LOOP ON PORT				ADDRESS			0-1791,2048			CONDITION		0-5

A PORT						WRITE/READ		0-128/129			NONE			NONE
W WAITDELAY					0.01 SECONDS	0-65,535			NONE			NONE
[ READ NV MEMORY			ADDRESS			0-2047				COUNT			0-255
\ WRITE TO NV MEMORY		ADDRESS			0-2047				DATA			0-255


Application Notes


When the indexer is operating in Party line mode, the X command does not provide the operational 
parameters as described in the manual for Single line mode. This application note shows a method for 
reading the stored parameters directly from NVM by reading the locations where the parameters are 
stored. Use the "[" command to read the desired location. 

Note that this table is only valid following an "S" store command and immediately following a power on 
The following paramters are used for the example in the following table. (Display shown after an X 

	X Y= 0/25 E= 50 K= 22/45 H=vr na=1 
	I= 400 (12800/32) V= 2048 (8192/4) (rl= 8) 
	e = 500 (ratio= 10) 
	d= 30 v= 700/16 
	s= 20 t= 5 r= 5 (lag=3) 
(Jog speed set to 11/33. Resolution set to Full Step) 

This following map defines the internal locations where the detaits are stored. These values resided in 
the NV memory starting at address 1984 and continue through NVM address 2019. 

Example Dump of 1984-1993: 
32	15 	5	O	11	33	22	45	0	O

Location Parameter		 	Values		Notes
1984 	statbits		 	32			used internally
1985 	resmode			 	15			15=vr, 14= fr
1986 	retry_count		 	5			r set to 5
1987 	divide factor	 	O			D command set to O
1988 	jog slow speed	 	11			First parameter in B command
1989 	jog hi speed	 	33			Second parameter in B command
1990 	up k fact		 	22			Firsl parameter in K command
1991 	down k fact			45			Second parameter in K command
1992 	trip_lo				O			No Trip Point set
1993 	trip_mid			O	

Example Dump of 1994-2003: 
O O O 25 50 244 1 20 30 O 

1994	trip_hi				O		
1995	trip_vector			O		
1996	i hold				O			First parameter in Y command	
1997	i run				25			Second parameter in Y command	
1998	settle time			50			E command	
1999	encoder lines lo	244			Remainder of Encoder lines/ 256 (e command)	
2000	encoder lines hi	1			Whole portion of Encoder lines/ 256         Ex. e=500 =>256t244
2001	stall factor		20			s command	
2002	dead zone lo		30			d command	
2003	dead zone hi		O		

Example Dump of 2004-2013: 
5		10		255		243		129		26		192		167		253		137

Location Parameter 				Value 		Notes
2004	stall interval 			5 			t command
2005	encoder ratio 			10 			internally calculated
2006	initial velocity lo 	255 		I command
2007	initial velocity hi 	243
2008	init velocity ptrl 		129 		used internally
2009	inil velocity ptrh 		26 			used internally
2010	initial velocity res	192 		used internally
2011	slew velocity lo 		167 		V command
2012	slew velocity hi 		253
2013	slew velocity ptrl 		137 		used internally

Example Dump of 2014-2019: 
26 		192 	36 		249 	196 	49 

2014	slew velocity ptrh 		26 			used inlernally	
2015	slew velovily res 		192 		used inlernally	
2016	hunl velocity lo 		36 			h command	
2017	hunt velocity hi 		249	
2018	hunt reslolution 		196 		used internally	
2019	name 					49 			ASCII "1" 			(decimal)

The following formula is used to calculate velocity values from the data stored in NVM:
				(14,7 x IO^6) / ((65535 - ((NVM Hi * 256) + NVM Lo)) * 12)

To communicate with the indexer, a terminal emulation program running on a PC is commonly 
used. An example of a terminal emulator is the TERMINAl program supplied with all versions of 
Microsoft Windows. To use this program to communicate with the indexer, the COM port must be 
properly configured. 

Start the TERMINAL program running by double clicking on the TERMINAL icon in the Accessories 
Screen in Windows. Refer to Figure 1 for the menu to select the Communication settings screen 
in TERMINAL. Once in the settings screen, configure the COM settings as shown in Figure 2. Be 
sure to set the COM port to the appropriate selection for the PC being used. Once these 
settings are established. click on the OK button Press the space key to initiate Single 
Mode communication with the connected indexer. Refer to the Communication section of this 
manual for more information.

Figure 1.

Figure 2.

The TERMINAL program can also be used for downloading pre-written programs to the indexer. An ASCII 
editor is used to create the program using the instructions shown in this manual. (For information on 
an ASCII editor, refer to the NOTEPAD program supplied with Microsoft Windows). 

To download a program using TERMINAL, some default TERMINAL settings must be changed as shown in 
Figures 3-6. Start TERMINAL and select the Text Transfers menu under the Settings menu as shown in 
Figure 3. Once in the Text Transfers screen, configure the settings as shown in Figure 4. Note that the 
delay between characters is set to 2/10 seconds and the send option is single character at a time. The 
delay value may need to be increased depending on the structure of the program being downloaded. 
This value should be set to 5/10 seconds if the "P" command is embedded in the program to be 

To download the program, select the Text Transfer menu as shown in Figure 5. Select the Send File 
setting. Select the file to download and select OK as shown in Figure 6. The file will be automatically sent 
by TERMINAL. All characters sent will be echoed by the indexer. 

Figure 3.

Figure 4.

Figure 5.

Figure 6.

This application note illustrats the use of the LIMIT input under program control to reverse direction of 
a move when the LIMIT is hit. Note that the system is configured such that index move +9000 will cause 
the LIMIT switch to be hit before position 9000 is reached. The WO following the +9000 causes the 
program to wait until the move of 9000 steps is complete OR a LIMIT input is hit. Once the LIMIT input is 
hit, program control continues with the next statement after the WO instruction. 

	0 0		set position counter to O		
	1 +9000	move in + direction toward limil. (assume Iimit will be hit before 9000)
	6 WO	wait for move complete		
	9 W500	wait 5 seconds at limit position		
	12 RO	return to O when limit is hit		
	17 P	end of program		

This application program illustrates the programming of a rotary motion using indexer commands. The 
desired motion is to move the motor 370 degrees at a rate of 200 rpm, wait 5 seconds, move back 10 
degrees, wait 5 secorlds then return to the starting point. During the first part of the move, an output 
must be turned on when the position is 270 degrees. Note that a 18 degree/step motor is used, giving 
200 full steps per revolution. 

First, the conversion of degrees to steps is made for each movement: 
	370 deg. x 1 step/l.8 deg. = 205.56 full steps 
	270 deg. x 1 slep/l.8 deg. = 150 full steps 
	10 deg. x 1 slep/l.8 deg. = 5.56 full steps 

Next, the speed in steps/second is determined: 
	200 rev/min x 1 min/60 sec x 200 steps/rev = 667 steps/sec 

Next, program the indexer: (Memory addresses are not shown in this example) 
	PO			start at location O		
	V 661		set velocity		
	H1			set variable resolution mode		
	DO			set full step resolulion maximum		
	O			set origin		
	T 200 150	set trip point at position 150, vector to address 200		
	A O			set output off		
	R +205.56	index to first position (trip routine will be executed at position 150)
	WO			wait for move complete		
	W 500		wait 5 seconds		
	-5.56		move back 10 degrees		
	WO			wait for move complete		
	W500		wait 5 seconds		
	RO			return to starting position		
	WO			wait for move complete		
	P			end of program		

	P 200		program trip routine at address 200		
	A8			set output 1 on		
	TO O		turn off trip		
	P			end of trip routine		

Here are the results of the timimg measurements the the IM483i for starting a move from 
program mode and from immediate mode. Note that the testing was done using a IM483i version 
1.09. Timimg for program mode was done using the command +1000 executed from both EEPROM 
(location 0) and RAM (location 130 with G13O at location O).
Program Mode using GO switch input 

Here are the results of measurements taken on the timing of instruction execution in the 
indexer. The program used in each case is as follows:

	G (to 1st location)

T1		3mS			.18mS
T2		7mS			.34mS

Note that the internal fetch instruction cycle time varies depending on the length and complexity
of the instruction. Inthe above case, the A command uses 2 bytes of memory while the G 
command uses 3 bytes. The total program is 7 bytes long and takes an average of 10 mS from
EEPROM and .52 mS from RAM. This translates to an average instruction time of 1.4 mS and .07 mS
for EEPROM and RAM respectively.

This application illustrates a method for controlling an AC powered device using the indexers OUT1 
output. Examples of applications requiring AC control are counters, lamps, solenoids ...etc. Each of the 
three general purpose outputs of the indexer are capable of SINKING up to 20mA of current when low. 
These outputs can be used to control a device called a Solid State Relay, or SSR, using an external 
power supply. The type of SSR used in this example has a DC input and an AC output and can be used 
to control the types of AC devices mentioned above. Connection of the input of the relay to the OUT1 
signal is shown below. The output of the relay controls the AC load. 

The programming of the output port requires the use of the "A" command. For this example OUT1 is 
used and the commands A8 and AO are used to toggle the state of bit 3 in the "A" command data which 
in turn controls the state of OUT1 through the indexer. The following program segment shows a method 
to toggle the relay on and off at a 5 second interval. Note that the indexer can be used as a logic 
controller, not requiring the use of a motor if motion is not required. 	

	A8		set outl high turning off relay
	W500	delay 5 seconds
	AO		set outl low turning on relay
	W500	wait 5 seconds
	GO		loop forever
	P		end of program

This application note demonstrates how to program the indexer to simulate a simple oscillator board 
using the three general purpose inputs. A cut to length machine is a typical application of this 
program. The inputs are defined as follows: 

	Input 1 - Active low input that initiales an indexed move. 
	Input 2 - Active low Jog input 
	Input 3 - Enables motor deceleration when high and disables 
			  deceleralion when low. 
	Soft stop -	dedicated input that decelerates the motor if it 
				is moving and aborts the program. To restart 
				the program, power must be cycled. 

	Limit A,B - Optically isolated limit inputs to restrict travel in specified direction. 
			    (Hardware controlled, no software programming necessary) 

The hardware connections are shown below. 

Program Description: 
On power up, the indexer will begin executing instructions at address 1600. The C O instruction at this 
location branches the program to address O, where the main section of the program is located. 
Addresses O through 10 and address 17 contain operating parameters that can be tailored for the 
application. Note that to change acceleration, the K parameters in both address 10 and address 17 
must be changed. Address 1O through 28 form a loop that will continuously poll the three input 
switches for a closure. If input 3 is high, the acceleration parameters at address 10 will be used by any 
subsequent moves. If input 3 is low, the acceleration parameters at address 17 will be used (At 
address 11 the deceleration slope is set to zero) Input 1 and input 2 each have their own service 
routines that will be executed when a closure is detected. The last instruction of each service routine 
must be a G10. This causes the program to return to the beginning of the loop that polls for switch 

Main Program: 
	Add		Instruction		Comments
	O		D O				Divide resolution
	2		H O				Resolulion mode
	4		I 255			Initial velocity
	7		V 2000 +		Slew Velocity
	10		K 20 100		Ramp Slope (normal)
	13		L 20 5			Branch to add. 20 if input 3 NOT low
	17		K 20 O			Ramp Slope (no deceleration)
	20		L 100 O			Branch to add. 100 if input 1 NOT High
	24		L 200 2			Branch to add. 200 if input 2 NOT High
	28		G 10			Always jump to add 10

Index (Input 1) service routine: 

The instructions shown here will drive the motar 4000 steps in the positive direction, delay 500 
milliseconds and move 4000 steps in the negative direction, returning to the original location. Change 
address 100 and address 111 for different length moves. Change address 108 for a different delay. 

	Add		Instruction		Comments
	100		+4000			Any sequence of instructions can be programmed here
	105		W O				Wait for motion to stop.
	108		W 50			Delay 500 milliseconds.
	111		-4000	
	116		W O	
	119		G 10			Return to address 10. Must be the last line of service routine.

Jog (Input 2) service rouline: 

	Add		Instruction		Comments
	200		M 2000			Change Jog speed or direction here
	203		1 203 2			Wait for input 2 to go high
	201		M O i-			Stop moving
	210		WO	
	213		G 10			Return to address 10. Must be the last line of service routine.

Boot instruction: 

	Add		Instruction		Comments
	1600	G O				Automatically start program at address O on power up.