You are on page 1of 62

This document contains a list of bug fixes and added features to the

U500 Software and Libraries. It is meant as a guide to track problems

and fixes as they occur.
Version 3.12 Aug 30, 1993
1) Axis 2 and 3 miss Feedback trap error flags
New Features:
1) MEssage command, added serial port output
2) GEar command added
3) CAm table added
4) Add TACH feedback to PID loop by setting Kd=0
Version 3.13 Sept 1, 1993
1) If axis calibration data size is more than 128 points, UNIDEX 500
fails to update calibration table.
2) Fix servo loop calculation truncation error
New Features:
1) Added MEssage command to C-Libraries ( NOT BASIC Libraries )
Version 3.14 Sept 14, 1993
1) MEssage command, %s case can't handle hex data (A..F)
2) MEssage command, input to variable doesn't work correctly
3) Improve circular (G2/G3) contour path
4) Axis calibration data file error, data point 196 and up offset by 2
word in memory
5) When motion distance >= 2^23, U500 makes extra move
6) Fail to acknowledge some fault condition
7) Fix INdex (G0) deceleration overshoot problem
8) Fix Contour (G1/G2/G3) invert-sin ramp type deceleration problem
9) If all axes feedback device set to non-encoder type, all input line
show 0 state
10) If feedback device is resolver, home cycle is not working properly
New Features:
1) Modify MEssage command for C-Libraries ( NOT BASIC )
Return 126 if the command is taken,
check message_where bit 8 for input or not
2) Added Borland C 3.1 Library U500CB.LIB
3) For TACH feedback, Kp will be scaled by 256 and
Ki will be scaled by 4096 internally
Version 3.15 Sept 21, 1993
1) If Axis name ( XYZU ) is more than 1 letter (XX XB ...) system hangs
2) UMfo command misinterpret to U axis distance
3) Index motion (G0) If motion distance = 0, system hangs
Version 3.16 Oct 4, 1993
1) For Library commands, current axes position doesn't offset by
relative position register, so after SOftware HOme (G92), current
position still references hardware home only.
2) For INdex (G0), if motion distance less than max ac/de rate system
3) For contour motion (G1/G2/G3), if feedrate is too high, and motion
distance too short, cause incorrect motion
4) HOme more than 1 axis, system hangs
5) Increase RMS Current trap accuracy
6) Freerun command would output a large error during deceleration at
feedrates > 2.9 Mhz
7) Stepper current command glitch in one phase in the CW direction
8) Increase internal Ki,Kp resolution
New Features:
1) Change UMFO from block-to-block command to real-time command
Version 3.17 Oct 8, 1993
1) Circular command (G2/G3) doesn't work in release 3.15, 3.16
Version 3.18 Oct 25, 1993
1) Absolute mode accumulates position error
2) Installation running out of memory on some machines
New Features:
Version 3.19 Nov 5, 1993
Fixed Libraries:
1) Libraries aer_abort function cause rel/abs position error
Fixed Interface:
1) Fixed decimal display( # of decimals not being displayed properly )
2) Open Param/Config files from project in diff directory was
not working
New Features:
1) Added aer_open_param, aer_open_config, aer_check_initz to Libraries
Version 3.20 Nov 15, 1993
Fixed Libraries:
1) Axis calibration is on, display shows axis position + correction,
fixit to show actual position only
2) Primary/Secondary feedback setup codes 2&3 for primary/secondary
feedback channels 9-16 (RDP1,RDP2) are wrong. Fix Firmware to
configure properly
Fixed Interface:
1) Open Param/Config files without initializing board
2) Calculate the scale factor
New Features:
1) Added new command CInt ON/OFf
2) New aer_reset_intr for C Libraries
3) aer_read_status(5) in Bit 22 to indicate that interrupt has been set
Version 3.21 Nov 22, 1993
New Features:
1) Added Parameter X62 "Servo Loop update rate"

2) Parameters 138/139/238/239/338/339/438/439 : max. setting increase
from 20 to 200

3) Add new command to update PLC_BIT P0xnnnnnn for 24 bits data
or Pn,m,n,m... where n= 0 to 23 bit location, m=0/1
4) Add PLC function
command name PLC, need at least 3 letters, ( so PL will be treated
as PLane )
PLC ON ;convert this plane queue buffer to PLC buffer, ready to
accept PLC program
PLC OFf ;resume this plane queue buffer, no more PLC program

PLC ENable 0-31/ALl ;enable PLC program 0-31, or all of them
PLC DIsable 0-31/ALl ;disable PLC program 0-31, or all of them
PLC FRee 0-31/ALl ;free ( erase from memory ) PLC program 0-31,
or all of them

PLC OPen 0-31 ;open PLC program 0-31 for editing
PLC CLose ;close PLC program currently open for editing
PLC conditional statements :
PLC conditions : I0 - I15 : 16 input line
P0 - P23 : 24 PLC bit
PO0 - PO3 : 1/2/3/4 axes machine steps
F100 - F115 : 1st axis fault condition
F200 - F215 : 2nd axis fault condition
F300 - F315 : 3rd axis fault condition
F400 - F415 : 4th axis fault condition
= equal to
> great than
< less than
Version 3.22 Dec 9, 1993
Fixed Libraries:
1) PLC Function:
" WHILE " condition statement doesn't work
2) PLC function :
" AND " / " OR " condition statement doesn't work
3) New parameters added to system that do NOT appear in old param
file will default to 0. The file is NOT modified until saved
from parameter window.
Fixed Interface:
1) Memory Leak during display updates
New Features:
1) Changed scaling of "P" term when used with in tachometer mode.
The "P" term now carries 16 times more weight than before.

2) MC (Motor Communication) command, now disables position, velocity,
and integral traps automatically. It also works with brush motors
and can be used to output constant torque.
1) Removed Axis Parameters X21( max overshoot ),
X30( current output scale ). NOT USED
2) Added UTILITY for generating U500 coefficients for Notch and
Lowpass Filters( NFLTER.EXE, LPFLTER.EXE )
Version 3.23 Dec 21, 1993
C-Library Enhancements:
1) Speed up aer_initialize
2) Reduced hardware set time form 1 sec to .25 sec
3) Added aer_adjust_motion function:
int aer_adjust_motion( long double ax1,
long double ax2,
long double ax3,
long double ax4);
Send real-time motion adjust data to each axis, U500 will
perform this motion on top of the motion already on progress
return: 0 successful, <> 0 no
4) SOftware LImit did not work
New Features:
1) Add new parameter X63
If each axis is open loop stepper, what is the micro step / rev
2) Add new parameter X64
If each axis is open loop stepper, whether encoder verification
is enable or disable
3) Parameter X42 added case 3
drive is stepper, with current re-circulate option
1) Increased program size from 500 Bytes to 2K Bytes
2) Fixed Axis Display for Remapping Axis
Version 3.25 Feb 15, 1994
1) Fix 3.24 RDP Read problem. V3.24 does not inhibit the 2S80 tracking
conventions. The result will be a noisy servo and/or vel/pos traps.
2) Re-code Freerun and backlash compensation routines to increase
efficiency. 1 shot freerun ac/de now x1 instead of x2.
3) Add stepper encoder verification, scaling, and correction routines.
4) Y,Z,U Calibration bug fix
5) Add Axis param x65 "Stepper encoder correction speed(microsteps/ms)"
6) Add General param 15 "PSO Mailbox dual port ram base address"
7) Add General param 16 "PSO Command dual port ram base address"
8) Axis Parameter x62 range from (1-100) to (1-32000)
9) Firmware recognizes aer_adjust_motion(...)
10) V3.24 does not contain support for new stepper parameters x63, x64
as released in v3.23
11) Axis param x44 max range increased from 23 bits to 48 bits
12) Increase commutation resolution from 256 vectors/electrical cycle to
65,536 vectors/electrical cycle
1) C and BASIC to respond correctly to "BO #" command
2) C Library - aer_read_param: add return value 14 for 2int Hex Number
3) C Library - Add decoding error #22, PSO Mailbox Full
4) Added Library variable for current software version:
double ver_500;
DLL's NOW AVAILABLE For More Information Call Aerotech

Version 3.26 Feb 18, 1994
U500C.LIB -> U500MS6.LIB
U500CP.LIB -> U500MS7.LIB
U500CB.LIB -> U500BC31.LIB
1) Gearing is available at ALL levels
2) Axis enable resets commutation vector for AC servo motors
Libraries - Enhancements:
1) Increase PC-DSP Speed
Avg frequency = 100 Khz
Avg Command Transfer Time ~= .300 usec
Libraries - NOTES:
1) aer_read_param valid return value is 0..15
1) Fixed Axis Param x44. Was unable to edit in Parameter Edit field
2) Diagnostic Window CW, CCW, and Home Limits now properly displayed
3) Diagnostic Window Encoder Count fixed
4) Contour Feedrate parameter (76) in Param Edit field was displaying
yes / no as the value
5) Param x65 displayed in Param Edit
New Features:
1) Add command to output real time servo infos on DAC channel
"DS ax#,case,scale,dac_channel"
ax # : servo axis
1-4 ( X,Y,Z,U )
0 stop all display
case : display data
"PC" - pos command = 0
"PA" - actual position = 1
"PE" - pos error = 2
"VC" - vel cmd = 3
"VA" - velocity actual = 4
"VE" - vel error = 5
"TQ" - torque command = 6
scale : volts / bit, 0 to 10v

dac channel : display channel 1-8
2) Enhance Command Interrupt function for multi-boards interrupt
daisy chain capability
ON/OFf : PC bus interrupt after command finish
n: set bus interrupt line on input "n" low
( 0,1-16 ) 0 kill, 1-16 = input 0-15
m: set output bit "m" low along with pc interrupt
( 0,1-8 ) 0 kill, 1-8 = output 0-7
Version 3.26.10 Feb 25, 1994
1) Fixed Axis Param x31 to save proper # sig digits in ParamEdit
2) Program Menu "Run" Option changed to "Load"
Version 3.26.20 March 18, 1994
1) Hall Effect as position feedback( channel 25-28 ) bug fix. Axis
will not servo properly( for LensGen 200 spndle axis only )
2) Freerun, multiple axis; Flags get destroyed after first freerun
stop. Subsequent free run stops cause the commanded velocity
to goto 0.
1) Program Line - With GOTO FILE statement and comment not being parsed
2) Feedhold( Pause Button - F11 ) changes text from Pause to Resume
Depending on current state.
3) Paremeters in Setup were 0's before initializing.
1) ASCPRM.EXE to work with Param changes( x44, x63, x64, x65 )

1) INSTALL.EXE program size reduced
2) MANINST.BAT (Manual Installation) added to disk
Version 3.27 April 5, 1994
1) Fix hardware reset
a) Made pulse 250ms
b) Enable watchdog when board is taken out of reset. - This
eliminates the timeout/blinking LED program seen with
some CPU's
2) Fix Modulo machine step parameter.
3) G2/G3 move - Y axis velocity error.
1) aer_checkstatus bug. Would feedback false data under certain
2) GEAR command - Added new channel for iSBX. ( Not yet implemented
in firmware )
1) Fix Edit Parameter bug before initializing board ( Project file
must be present )
2) About Box now displays full internal version number (i.e. 3.26.30)
Version 3.28 April 22, 1994
1) GEAR command - Modified for iSBX Counter Board as master.
GEar n,S1,a,b
2) Joystick/Handwheel - Axis will NOT move past a limit if encountered
1) PC I/O Bus interface loop count increased before Bus Timeout
2) Libraries modified for 32 Bit compilation.
OS/2 Libraries available:
WATCOM C/C++ 32 Bit v9.5 & v10.0
Version 3.28.10 April 26, 1994
1) Joystick fixed to work at speeds below 1000 steps/sec
Version 3.29.10 May 17, 1994
1) GAin command sent incorrect N1/N2/S1/S2 notch filter coeff.
2) Fix PSOC,3,xxx,xxx command problem
3) Fix PSOf,3,X,Y,Z,U command problem
4) Fix PSOf,4,N,X,Y,Z,U command problem
5) Fix PSOf,5,N,X,Y,Z,U command problem

New Features:
1) Replace PSO parameter #15 to :
PSO mailbox dual_port ram base address = , default is 0x0d800
2) Replace PSO parameter #16 to :
PSO-HOST and PC interface address = , default is 0x0
3) If parameter #15 & #16 not 0, and there is PCPSO firmfare called
"PCPSO.FRM" inside the same sub-dir as U500 DSP firmfire called
"U500.JWP", then each time user reset U500, will automatically
reset PCPSO, if reset sucessful, feedback 0 , otherwise
=11 PCPSO time out
=12 PCPSO firmware i.d. doesn't match
=13 PCPSO checksum error
=14 PCPSO communication fail
4) Add PSO large array function call
SHORT aerq_psodlarray( SHORT board, long _far *data,
long timeout, long nPoints )
Version 3.30.00
1) GEar function, slave axis only move 1/2 the desired distance, when
ratio is less than 1
Version 3.30.10 July 18, 1994
1) For commands, such as feedrate, G70/71, G8/9, G23/24 ,
after handled by firmware, still show inside the queue buffer
2) If ramping type set to non-linear case, abort function will crash
the next contour motion (G1/2/3)
1) "C" quick library function "async_motion" misses endpoint in negative
New Features:
1) Parameter 130/230/330/430
"current output scale (1-100)%", no longer needed
Change to
"current scale (6th gain, 0-8388607)",
to handle special application which 6th servo gain
2) Parameter x36/x46/x47/x48/x53
increase resolution from 0-100% to 0.0000-100.0000%
4 digits after decimal point
3) Change operation of "in-position" bits in library.
Active when Command Vel=0 and Pos Error < Deadband
1) Highlight color changed from Light Blue to Cyan
2) Software version now displayed in TitleBar
3) Abort Button No longer asks if you are sure while running
a parts program.
Version 3.31.00 Aug 1, 1994
1) Fix conversion (Scale factor) truncation problem... If scale
factor has integer part and move distance is > 2^23, move will
not complete.
2) Add iSBX General purpose language
a) $00-$0F - iSBX 1 Addresses
$10-$1F - iSBX 2 Addresses
8/16 Bit Data
Ex. $00=125
b) Bit Address
$00n where n=Bit # 0-15(F)
Ex. v0=$103 -> Read Bit 3 (result 0,8)
$110=1 -> Set Bit 0
3) Parameters x06 (Home Offset) and x07 (Home switch to Marker)
now +-48 Bit number
1) Abort and Software Position commands update Front-End software
absolute and relative positions with SERVO COMMAND POSITION
2) Add servo command position to C/BASIC Libraries
Case 12/13/14/15 for Axes 1/2/3/4
3) Add System Variable
$XFP/$YFP/$ZFP/$UFP - RealTime Position FeedBack
$XCP/$YCP/$ZCP/$UCP - RealTime Command position

1) Fixed interface so that it works with PSO card
Version 3.32.00 Sept. 12, 1994
Firmware (Fixes):
1) Change limit operation when under handwheel ( gear ) or joystick
modes of operation. If axis is moving under handwheel or joystick
mode out of a limit, the motion is not smooth due to the normal
error processing sequence. Fixed by ignoring the normal error
processing code for this case.
2) FREERUN command does not run at less than 1 step/ms for all
feedrates due to a round off problem.
3) Fix 1020 command loop modulo and commutation modulos. (internal bug)
4) Fix hall effect commutation algorithm. Generates illegal vectors if
phase offset is not 0 degrees.
5) Modify commutation offset to shift hall signals in 60 degree
6) U500 resets under certain sequence of PSO commands
7) Tracking display function cause velocity command error by blocking
out servo loop interrupt.
Firmware (Changes):
1) Change commutation algorithm for AC motors to save processor time.
Update rate is lowered to 2Khz. Commutation table resolution is
256 vectors / electrical cycle for rotary motors and
65536 vectors for linear motors. Linear motors are specified by
setting the number of electical cycles / rev parameter to "1".
2) Change utility program "U500DIAG.EXE" to display 32 bit machine
3) Add handwheel operation when all four axes are resolvers. New case
added for slaveing to on-board encoder counters "C1" to "C4".
SYNTAX: "GEAR a,Cn,d,e"
where a: master axis (no change)
n: on board encoder channel 1-4 (NEW)
d: (optional) slave integer ratio (no change)
e: (optional) master integer ratio (no change)
4) Change hall effect inputs to track feedback channel setting if
between 1 and 4 ( encoder counter ). Hall signals are still fixed
for inductosyn feedback.
5) Add PLC command : PLC EN/DIsable plc# can be a command too.
During PLC program editing, if PLC EN/DI command appear before
PLC CLose, this command will stay inside PLC buffer, and executed each
time PLC scan to this command. If PLC EN/DI appear after PLC CLose,
this code won't stay inside PLC buffer, It becomes a control
6) Add PLC command : for PLC condition checking commands ,
IF..ELSE..ENDIF and WHILE..ENDWHILE, User can combine them in
the same PLC program, also nest each command indefinitely
7) Add DWell on event command : for better communication between PLC
and QUEUE buffer, add dwell on event command
DWell ( G4 ) In=0/1 ; dwell when INput bit n (0-15) .eq. to 0 or 1
DWell ( G4 ) Pn=0/1 ; dwell when PLC bit n (0-23) .eq. to 0 or 1
8) Add parameters #166/266/366/466 for each axis:
"AC motor phase advance, base speed (mach steps/ms)",
parameters #167/267/367/467 for each axis:
" base speed advance(degrees)",
parameters #168/268/368/468 for each axis:
" phase speed (mach steps/ms)",
parameters #169/269/369/469 for each axis:
" phase speed advance(degrees)",
9) Add parameter #170/270/370/470 for each axis :
"Drive fault signal normally open(yes/no)" (default is normally open)
10) Modification of LVdt command :
old: LVdt axis_#,channel_#,CW/CCW ;speed will be home speed
new: LVdt axis_#,channel_#,CW/CCW,speed1,speed2
if speed1 or speed2 .eq. 0, will use home speed for search
speed1 and speed2 are in machine steps/ms
CNC.EXE Software
1) Feedrates can now be changed in Jog window.
2) The Home button now works within the Jog window.
3) Axis enabled state is now correctly indicated by their checkboxes
with more than one axis active.
Version 3.33.00 Jan. 2, 1995
FIRMWARE bug fixes:
1) CAM FREE function doesn't work right
2) CAM MASTER & SLAVE function didn't wait for master axis
come to in-position before set up initial position. Cause slave
to axis miss position.
3) Fix glitch in SPLINE operation.
FIRMWARE changes:
1) Change hall effect inputs to follow velocity feedback channel
if encoder channel 1-4.
2) Reduce overhead time for motion trajectory generator software
NEW "C" library commands:
1) SHORT aer_set_atd( SHORT en_disable );
In order to read U500 on board QUAD_A/D converter, use this
command to enable A/D data fetch ( set en_disable to != 0x0 ) or
disable A/D data fetch ( set en_disable == 0x0 ) the reason for
this is to reduce U500 firmware overhead.
2) long aer_read_atd(SHORT atd_number);
after function call 1) set to enable, use this to read any of
the 4 A/D data. set atd_number to 0, 1, 2, 3 to read A/D
channel 0, 1, 2, 3 one at a time
3) SHORT aer_set_velocity_timebase(long minisec);
set axis velocity scan time base, from 1 to 2^24 minisecond
4) SHORT aer_set_velocity_tracking(SHORT axis_number, SHORT en_disable);
enable or disable each axis velocity tracking function.
axis_number : 0/1/2/3 for axis 1/2/3/4.
en_disable : 0 for disable, <> 0 for enable
5) long double aer_read_velocity(SHORT axis_number);
read each axis velocity ( with timebase defined, & tracking enable )
axis_number : 0/1/2/3 for axis 1/2/3/4.
NEW user commands:
1) Enhance "ENable" and "DIsable" commands to work with ADC tracking
( see "aer_set_atd()" C function )
Example: EN X Y AD ;enable axes X & Y, also start A/D data fetch
DI AD ;disable A/D data fetch
2) Add system variables :
$AD0, $AD1, $AD2, $AD3 for A/D channel 0/1/2/3 data
Example: V0=$AD1 ;read A/D channel #1, then put result in V0
3) "AF n,m,null,db,gain,vlim,plim"
Front end prototype for AUTO FOCUS function.
**** NOT implemented in firmware. DO NOT use !!!! ****
4) "DUmp filename.ext"
where filename.ext contains binary format long (32 bit) data
of X/Y/Z/U 1ms move. U500 will pass 4 axes long data
(only 24 bits) to servo loop. completely bypasses all traj.
generator routines.
1) Axis display fixed for 'mapped' axes
Version 3.33.10
1) (CNC.EXE) Jog Distance and Feedrates were not being mapped
properly in Jog Window

Version 3.34.00 Feb. 7, 1995
1) Add axis orthogonality correction table. same format as axis
calibration except for axis number. axis number can now be a two
digit number "AB". If A is not specified, axis calibration is done
to axis B. If A and B are specified, A is the axis to be corrected,
and B is the position dependent axis. Correction will not
begin until the B axis is homed. The A axis does not need to be
homed. A maximum of 256 points are allowed for ortho.
correction. The sample distance must be greater that 256 encoder
Example: An axis number of "21" represents correction to axis 2
based on the position of axis 1. Correction to axis 2 will begin
when axis 1 completes a home cycle and axis par 115 is "yes".
2) Fix axis cal bug. Sometimes axis cal checksum routine would enable
calibration when the data was not vaild.
3) Gantry: enable / disable slave when master is enabled / disbaled.
4) Fix Integrator clamp routine added in v3.33. Integrator clamp
could cause random servo faults on "next" axis. X->Y, Y->Z, Z->U
5) Fix top feedrate trap value. clamp value was in 16.8 format.
6) Add PSO command to wait for "PSOF,2,n" (fire n sets of pulses) to
finish. Command "PSOF,2,0" will wait for previous "PSOF,2,n"
command to finish.
7) Change "abort" function. will not clear que block out bit until
all faults are acknowledged. ( #23,X:<SERVOSTAT )
8) G23/G8 mode, deceleration will be sinusoidal if programmed.
9) If move is too short to ramp up to speed, G8 will still blend moves.
10) Circular move will occasionally generate huge error.
1) add LZR2100 general parameters...
090 : LZR2100 board 1 - PC I/O address (hex)
091 : LZR2100 board 1 - parameter file name
092 : LZR2100 board 2 - PC I/O address (hex)
093 : LZR2100 board 2 - parameter file name
(NOTE: these parameters are not supported by the U500 or LZR2100 yet!!)
2) add "C" library support for parameters 91,93 in function...
SHORT aer_read_param(SHORT which);
add case 16 : 8.3 ASCII file name
Version 3.35.00 March 2, 1995
1) Fix axis calibration bug added in previous software. Will not work if home
direction is CW.
2) Remove INTEGRAL clamp parameter functionality from servo loop. Intergator
will clamp if torque output clamps or saturates.
3) Scale factor bug added in previuos software. Will generate large velocity
command with some scale factors.
4) Implement axis parameter x10 - "limit to mechanical stop". Used to calulate
the decel rate such that the axis will decel within the specified number
of machine steps. Will use the max ac/de parameter if it is greater than
this rate. 0 will defeat this function.
5) Change default AC motor phase angle to match the POWERFLEX amplifier
with a commutation phase offset of 0 degrees. (previously needed 300)
6) Add axis parameter x71 - "Orthogonality correction table enabled"
default = "no". ( see version 3.34 ) This parameter allows Ortho
correction to be enabled without axis cal. The axis must be homed first.
Add axis parameter x72 - "2-D error mapping" (default = no) . This parameter
will be used on the Unidex 500 Rev B boards and is currently not
1) Add PSO dual ported ram interface functionality to DLL's.
2) Add axis parameters x71, x72. (see above)
V3.35.10 March 27,1995 ( CUSTOMER SPECIFIC RELEASE )
1) Add target tracking functions to user interface...
"TE axis" - enable target tracking on single axis 1-4.
will not enable if axis is in fault condition.
multiple axes can be enable by repeating the command.
"TD axis" - disable target tracking mode on single axis 1-4
and return to normal.
"TP axis,pos,vel,filter" - set tracking position for single axis
axis = axis number 1-4
pos (machine steps )
target position for the specified
axis. this position is with respect to
the hardware home position and is
in machine steps.
vel ( machine steps / second )
max speed at which the axis will move
to get to the target position.
filter ( 0 - 1 )
exponential ramping filter. a value of
1 will produce no ramping effect. values
close to 0 will produce long ramp times.
( typical values = .01 to .001 )
Example: Enable target tracking for X axis and move to target position.
( assumes "X" is mapped to drive 1 )
... ;
... ;
Initial Release of Windows Based TOOLKIT and MMI software packages.
V4.00 Date: April 18, 1995
1) Changed SOFTWARE LIMIT command to adjust for conversion factor.
2) Conversion factor parameters (x00 and x01) defaults = "1.0".
1) Resolver dual loop bugs :
a) commutation does not intialize properly if resolver is
is used for velocity loop.
b) dynamic switching does not work properly for resolver
velocity loop. ( added accel calc to velocity fetch routine )
2) Axis calibration bug. Firmware used "sample distance" as table size.
3) Added parameters x73 ( Enable vel/accel feedforward during home cycle )
and x74 ( Use home limit during home cycle ), both defaults = "yes".
4) Modify gantry home cycle. Axes now do independent home cycles.
5) Increase axis calibration maximum useable range. Ok for rotary
inductosyn with 65536*360 counts / rev, calibrated every 10 degrees.
V4.01 Date: June 16, 1995
1) CVI command added, truncates values to integer.
Example: v0 = CVI(v0)
v1 = CVI(v7*12.54)
2) Fixed position rollover problem for positions requiring more than
32 bits.
3) Changed default values of fault mask parameters, new defaults:
x55 Error Mask FAULT ffff,ffff,31ff
x56 Disable axis ffff,fff0,af87
x59 Halt queue ffff,fff0,8e00
x60 Abort motion ffff,ffff,9e78
4) Changed parameter file editing, copy of parameter file can be created
this copy of the parameters exists as parameters for board 6.
1) COM functions listed in Appendx E of the manual are now functional.
The command COM SET _STATUS_ is changed slightly, in CNC the argument
was just a number, in MMI it is a user variable.
Example: CNC: COM SET _STATUS_ 23 ;status saved in V23
MMI: COM SET _STATUS_ V23 ;status saved in V23
2) ME CO command fixed.
3) Added VAR commands, this command saves and restores U500 variables.
VAR OPEN filename -- opens file to store and retrieve vars from.
VAR READ #,#,#,... -- read variable from the open file and sends
the value to the card. ( # = 0 to 255)
VAR READ ALL -- reads all 256 variables
VAR WRITE #,#,... -- writes current value of variable to open
file ( # = 0 to 255 )
VAR WRITE ALL -- writes values of all 256 variables to file
VAR CLOSE -- closes open variable file

4) Fixed multiple board bug. After initializing all boards, the axis
display for the first board was using parameters from the last board
5) Axis display can show different number of decimal places for axes on
different planes.
6) Joystick digitizing with two boards is fixed.
7) Parameter editor creates copy of parameters ( using new library
functions). This solves problem of overwriting parameter files when
editing parameters of one board, while libraries set to a different
1) Circle command end point error. Negative correction at end of move
can cause error of 2^24.
2) Fix Scale Factor internal bug. Internal representation of data was
wrong, lower fraction not in .23 format.
3) If two consecutive decel motions overlap in G8, U500 will miss position.
Internal sign correction was missing ( see move.asm, CISGCD )
4) Fix backlash compensation routine. If axis cal and backlash are on,
the tracking display shows an incorrect axis position. Also modify
to allow "large" backlash correction values.
5) Remove "old" DOS software tune functions to make fimware file smaller.
6) Change commutation offset operation for resolver mode. Add internal
phase angle correction in 16 bit degrees. ( MSET bug initial release )
V4.02 Date: July 25, 1995
1) Added autotuning: AT command added, motor identification routine added.
AT axis,startfreq,amplitude,startcycles,numfreq,sampletime(ms),numsample
2) Added general parameters 90 - 97.
90, 92, 94, 96: A/D channel 1-4 joystick deadband in A/D counts
default = 0 --> 16 A/D bits
91, 93, 95, 97: A/D channel 1-4 center position
default = 0 --> 127
( parameter values of 0 are converted into internal default values of
16 and 127. These default values are changed if parameters are
entered non-zero. )
3) Added part rotation...
ROT X,Y,45 ; start part rotation - rotate XY plane by 45 degrees
ROT X,Y,0 ; turn off part rotation
Part rotation begins when the "ROT" command is given with a non-zero
rotation angle. All moves are rotated with respect to the point when
rotation was turned on. Rotation continues until the ROT command is given
with a zero rotation angle.
( Added new file "U500ROT.C" to library )
1) Added auto tuning.
2) Calculates expressions for IF conditions and LOOP repetitions properly.
3) On-line help added.
4) Fixed IM command, not required to be in first column.
5) Fixed ME FI command, output string shortened from 256 chars to length
of string.
6) Enables/Disables the appropriate function keys upon leaving the password
screen when the password is required.
1) Fix MSET bug in V4.01. ( 6-22-95 )
2) Add Primary Position Feedback Channel cases 29-32 for encoder gantry
operation. This corresponds to axis 1-4 actual feedback. To make axis 3's
servo loop identical to axis 1's, set axis 3's feedback channel to 29.
Axis 3's servo loop will use the EXACT same velocity command and feedback
that axis 1 used. All servo loop parameters and traps should be set the
same. All motion and home parameters are based on the master axis. (6-22-95
3) Invert polarity of scope torque for auto-tune. Makes more sense too.
4) Fix V4.01 firmware release dates 6-16-95 and 6-22-95. DSP fast interrupts
cause SR register corruption. This can cause random errors in trajectory
generator software. Causes position, velocity or runaway in servo and
missed position / runaway in stepper systems. (7-19-95)
V4.03 Date: Sept. 6, 1995
1) Print option added to Axis Tuning Screen.
2) Velocity and Distance to go displays added to the Axis Positions window.
3) Fixed password on startup, if no password required, no options will be
disabled. (MMI)
4) In password, Desktop Config access level now enables/disables ability
to change axis position display options. (MMI)
5) Removed decimal point when displaying steps.
6) Added hall effect inputs to diagnostic screen.
7) Globally defined subroutine file added. Defined in the System Options
menu, syntax is identical to any subroutine. (MMI)
8) User defined M-Code file added. M-Code replacement is limited to one
command. Syntax: M## "replacement command" (MMI)
In M-Code file:
M23 "ou 1"
M24 "$in0"
In U500 program:
9) Fix bug: Using Jog + and Jog - Function keys jog axis is same
direction if parameter x12, + Jog is CW, is set to no. (MMI)
1) Relative and absolute position registers changed to save machine steps
rather than program steps.
2) Position registers fixed to avoid negative numbers when axis rollover
is used.
3) Added cutter radius compensation commands, G40-G44 for ULTRA only.
G40 - cutter comp off. next command is move off of part.
G41 - cutter comp on left, next command is move on to part.
G42 - cutter comp on right, next command is move on to part.
G43 - define cutter comp radius. ex. "G43 R.1".
G44 - define cutter comp axes. ex. "G44 X Y".
New error codes returned from aer_send()
104 - CRC buffer full, too many commands between contours.
23 - CRC has been enabled without specifing axes.
24 - CRC has been enabled without specifing tool radius.
( Added "U500CRC.C" to DOS library to do cutter comp )
( Drafting: Add cutter comp CAD drawings to next manual rev. )
4) Added parameters:
General parameter 98: Safe zone output bit (0,1-8), default = 0
Axis parameters x75: Safe zone - limit (mach. steps), default=0
x76: Safe zone + limit (mach. steps), default=0
5) Overriding scale factor command added.
SCF X2 Y.5 -- sets scaling of x to twice programmed distance,
y axis to half of programmed distance
SCF X1 Y1 -- turns off scaling for x and y axes
SCF Z-1 U1 -- produces mirror image
1) BUG - When all axes are in target tracking mode, commands not decoded
from loop queue properly. Change IDX16 operation.
2) BUG - If a limit fault acknowledge cycle is aborted, the fault cannot
be cleared. (CHECK_ABORT)
3) Make decell smoother during abort motion. (IDX10 and IDX12)
4) Implement SAFE ZONE function. Output bit specified by general
parameter # 98, will be set low when all axes are in their
specified safe zone. Axes must be enabled and homed first. An
axis' safe zone function is defeated by setting the + and -
limits to zero. The safe zone function is turned off by setting
the safe zone output bit to zero.
5) Fix bug added in V402 for tach systems. Polarity of amplifier
output was inverted for auto tuning function. Was not changed
for tach loop.
V4.04 Date: Oct. 18, 1995
1) Fix three digit m-codes interpreted as last two digits ( M102 no
longer decoded as M02 ).
2) Added axis parameter x77: Home/limit switch debounce (steps)
range: 0-8388607, default=0
3) Added iSBX arguments to QUEUE INPUT command.
Syntax: QU IN,$nn,value ;$nn=address of iSBX, value is bit
pattern to wait until
QU IN,$nnb,value,$nnb,value
$nn = address of iSBX, must be same for all
arguments within a command
b = bit number to check
value= value of bit number ( 0 or 1 )
New aer_send() error codes added:
25 = iSBX addressed must be the same
26 = Incorrect iSBX address
4) Fix writing of defaults for case 4 of parameters ( x06, x07, x22,
x23, x75, x76)
5) Tab character no longer recognized as part of a label.
6) Default values for some parameters changed.
Param # Old default New Default
2 Yes No
19 300 150
21 Yes No
37 300 150
39 Yes No
55 300 150
57 Yes No
73 300 150
75 Yes No
x04 5 25
x05 12 25
x07 500 0
x08 256 100
x10 1000 2000
x17 5120 440
x19 1000 4000
x46 80 70
x47 40 35
x49 2000 10000
x55 ffff,ffff,31ff ffff,ffff,319f (no soft limits)

x56 ffff,fff0,af87 ffff,fff0,ef87 (add E-stop)
x63 12800 4000
x65 5 1
x73 Yes No
x74 Yes No
x77 0 750
7) Fix bug added in v4.03. Overflow error will occur if using G2 or
G3 motion with non-adjacent axes ( Ex. X and Z ).
8) Added ability to read PSO inputs.
Syntax: $PSO - reads all inputs (32 bits)
$PSO,xx,... - reads specific input bits
where xx is the hex bit value 00 to 1f
Note: current implementation only uses 8 input bits ( 00 - 07 )
v0=$pso ; v0 = value of all pso inputs
if $pso,06=0 :label ; if bit 6 of pso inputs is low
jump to label
if $pso,05,00=65 :label ;jump if bits 0 and 5 are high
9) Fix overwriting reprogrammed function key F3 with Abort or Pause.
10) MMI now allows programs greater than 32767 lines (using IM command).
1) Fix RMS current error bug. If servo sample time is not .25 ms, RMS
trap value will be off.
2) Fix iSBX general bit output function ($00n-$0Fn, $10n-$1Fn) bug. could
not clear individual bit outputs. (9/21/95)
V4.05 Date: Nov. 27, 1995
1) Fix remapping of axes in Jog screen and joystick digitizing screen.
2) Fix overflow if no axes selected in Axis tuning screen.
3) Added LZR reset option screen to System Options screen.
1) Added iSBX input functionality to PLC.
Syntax: $nn - byte input
or $nnb - bit input
nn = isbx address 00-0f - isbx chip select 0, address 0-f
10-1f - isbx chip select 1, address 0-f
b = specifies bit number for test (0-7)
IF($000=1)THEN ; check bit #0 = 1; cs0, address 0
IF($137=0)THEN ; check bit #7 = 0; cs1, address 3
IF($00=0x1f)THEN ; check byte = 0x1f (bits 7-5 0, #4-0 1)
IF($00=31)THEN ; same as above except in decimal
2) Exponentials added to variables and message display commands.
me di "%ev0" ; displays v0 in exponential format
3) Changed default parameters:
Param # Old default New Default
x18 100 1000
x20 12000 655360
4) Added filtering of velocity and torque to autotuning.
1) Added firmware support for iSBX library inputs
2) Changed amplifier fault scan rate. Was 2 ms changed to 1/4 ms.
1) Fixed "PSOM" bug. Bit mapped firing used wrong internal register.
V4.06 Date: February 8, 1996
1) Added pause command, valid in MMI only.
Syntax: PAUSE ON,inputbit,bitstate
inputbit = input bit number 0 - 15 or valid
isbx input bit $000 to $127
bitstate = bit value to send pause 0 or 1

After a PAUSE ON command is issued, when the inputbit goes to
the bitstate value, the pause state of the board is toggled.
The PAUSE OFF command stops the scanning of the input bit.

2) isbx argument added to INT command.
Syntax: INT nCNC, nLevel, nInputBit, nOnOff, Label
nInputBit can be 0 - 15 (16 input bits) or
$000 - $127 (isbx inputs)
3) Added cycle command, valid in MMI only.
Syntax: CYCLE ON,inputbit,bitstate
inputbit = input bit number 0 - 15 or valid
isbx input bit $000 to $127
bitstate = bit value to send cycle start 0 or 1

After a CYCLE ON command is issued, when the inputbit goes to
the bitstate value, the cycle start command is issued.
The CYCLE OFF command stops the scanning of the input bit.
4) Fixed bug: comment directly following label parsed as part of
1) Changed for Windows 32 bit compatability.
2) U500.H now includes the file COMPILER.H.
3) Fixed G2/G3 bug: complete circle sometimes not executed.
4) Relative and absolute position registers stored in program
5) Fixed overflow error if General Parameters 3-6 (Axis mapping)
set to 0.
1) Modify firmware to allow MSET to initialize commutation. If
the axis is enabled while an MSET command is active, commuation
will start from the MSET angle. The MSET angle should be 90
degrees. The value of the phase offset parameter ( #x45 ) does
not matter.
ER 0,0,0X98 ; defeat all faults except limits
EN X ; enable axis
MSET 1,1,90 ; send open loop vector
DW 2000 ; wait for axis to settle
EN X ; will restart commutation
ER 0,0,0X31FF ; enable desired faults
2) Change interrupt levels:
UINT_N (IRQA) level 2 ( disabled )
SERVO LOOP level 1
HOST / IRQB level 0
3) Set axis acceleration to minimum value (.004 steps/ms/ms)
if 0 is commanded.
4) Add alternate PID loop and axis parameter x78 to turn it on. Works
only on RevC. boards or greater.
parameter x78 ( x =1..4 )
bit #0 0 = pos+vel loop (current)
1 = parallel loop (new)
#1 0 = Kpos always on
1 = Kpos on when vel cmd = 0
#2 0 = vff scaling is 256
1 = vff scaling is 65536
#3..23 reserved
parameter type Integrator/Position loop control Vff scaling
default 0 pos+vel none x256
1 parallel none x256
2 pos+vel Kpos on only when vel cmd = 0 x256
3 parallel Kpos on only when vel cmd = 0 x256
4 pos+vel none x65536
5 parallel none x65536
6 pos+vel Kpos on only when vel cmd = 0 x65536
7 parallel Kpos on only when vel cmd = 0 x65536
Parallel loop does not support dual loop mode. Vff should
no longer be set to 256. It should be set to 0 if not used.
5) Fix software limit bug. May take multiple "FAULTACK's" to move
axis off of software limit.
Firmware update to fix PSO firing problem. Would sometimes miss
a firing point due to an interal interrupt.
V4.07 Date: February 21, 1996
1) Fix bug added v4.06: Truncation of moves <= 1 step.
1) Fix Irms current rounding problem. Causes early Irms fault.
2) Clear pid loop torque output buffer during disable. ( used in
scope window )
V4.08 Date: March 15, 1996
1) Changed parameter x12 name from "+ Jog is CW" to " + Jog same
direction as + Move".
2) Changed parameter x70 name from "Drive fault signal normally
open" to "Drive fault signal active low"
1) Added axis parameters:
x79 Primary current command offset (mV) default = 0
x80 Secondary current command offset (mV) default = 0
These parameters provide a dc offset to the generated
current commands.
2) Added axis parameter:
x81 Home marker search speed (machine steps/ms) default = 0
This parameter changes the speed at which an axis searches
for the home marker after hitting the home limit. The default
value of 0 will search at same speed as before this parameter.
V4.09 Date: March 27, 1996
1) Fixed Jog screen: allow decimal point for Y, Z, U feedrates.
2) (MMI only) Fixed Jog +/- problem when using function keys F5 and F6.
3) (MMI only) Fixed abort within jog screen and INT command:
abort no longer set outputs when called by either of these functions.
1) Axis remapping fixed to work properly with cutter compensation,
parts rotation, and overriding scale factor (SCF command).
2) Increased low end feedrate clamp.
1) BUG FIX : 3/21/96
Only affects axes in gantry mode:
slave axis' Kpos gets cleared after home cycle completes.
1) PSOT,4 bug fix: If a PSOT,4 is issued while in velocity tracking
mode, an error can occur. Fixed in 4-5-96 release.
V4.10 Date: May 3, 1996
1) Added ability to have PSO firmware file in different directory
than the U500 firmware file. PSO firmware added to project
1) Added functions:
a) aer_initializeU500(char *config, char *program, char *parameter)
This function initializes the U500 only and does not try
to initialize the PSO, the return codes and arguments are
identical to the aer_initialize function.
b) aer_initialize_pso(char *firmware)
This function initializes the PSO card using the firmware
as specified by the argument, the default firmware file is
Return codes:
0: PSO initialized
11: PSO timeout
12: PSO firmware ID does not match
13: PSO checksum error
14: PSO communications failure
15: U500 not initialized
16: parameters not set for PSO board
c) aer_scope_command
This function is identical to WAPIAerScopeCommand.
d) aer_scope_dump
This function is identical to WAPIAerScopeDump.
a) WAPIAerInitializeU500 Lib "WINAER.DLL" (ByVal lpsConfig As String, B
yVal lpsFirm As String, ByVal lpsParam As String) As Integer
This function is identical to aer_initialize_u500.
b) WAPIAerInitializePSO Lib "WINAER.DLL" (ByVal lpsFirm As String) As I
This function is identical to aer_initialize_pso.
2) Added parameters:
General Parameters:
99 Option board setup code ( Advanced motion tab )
default = 0 range = 0 to 8388607
bit #0 - scan 4EN I/O
#1 - scan ISBX encoder port
500 User interrupt setup code ( Advanced motion tab )
default = 0 range = 0 to 8388607
bit #0 - abort all axis motion on UINT_N
#1 - UINT_N always enabled
Axis Parameters:
x82 Encoder multiplication ( Motor feedback tab )
default = 0 range = 0 to 8388607
3) Added functions for 4EN encoder board.
a) short AER_LIBENTRY aer_iowrite( short brdaddr, short bank, long data );
short AER_LIBENTRY aer_iowritebit( short brdaddr, short bank,
short bitnum, long highlow );
WAPIAerIOWrite Lib "WINAER.DLL" (ByVal brdaddr as integer,
ByVal bank as integer, ByVal data as long) as integer
WAPIAerIOWriteBit( ByVal brdaddr as integer, ByVal bank as integer,
ByVal bitnum as integer, ByVal highlow as long) as integer

brdaddr = address of u500 board
bank = 0 for 8 outputs of u500 card
1-4 for banks 1-4 of encoder card
data = data to be output
bitnum = bit number to change
highlow = 0 to set bit low, 1 to set bit high
return code:
0 = OK
<>0 error
These functions set output bits on the u500 card or on the 4EN
encoder card.
b) long AER_LIBENTRY aer_ioread( short brdaddr, short bank,
short *error );
long AER_LIBENTRY aer_ioreadbit( short brdaddr, short bank,
short bitnum, short *error );
WAPIAerIORead Lib "WINAER.DLL" ( ByVal brdaddr as integer,
ByVal bank as integer, error as integer) as Long
WAPIAerIOReadBit Lib "WINAER.DLL" (ByVal brdaddr as integer,
ByVal bank as integer, ByVal bitnum as integer,
error as integer ) as long

brdaddr = address of u500 board
bank = 0 for 8 outputs of u500 card
1-4 for banks 1-4 of encoder card
bitnum = bit number to change
*error = pointer to error code
0 = OK
1 = communications port busy
2 = error sending address
3 = error reading MSW of result
4 = error reading LSW of result
return code:
value of input port, either entire bank or 0/1 if reading
individual bit.
These functions read input bits on the u500 card or on the 4EN
encoder card.
4) Added commands:
a) OE# val or OE# bit,highlow,bit,highlow,...
This command sets output bits on either the u500 card or
the 4EN encoder card.
# = 0 for u500 card (OE0 command same as OU command)
1-4 for 4EN card banks 1 to 4
val = value of output
bit = bit number to set
highlow = 0 sets bit low, 1 sets bit high
b) IN# or IN#,bit,bit,...
This command reads the inputs of the U500 card or the 4EN
encoder card. IN0 is similar to $INP command, however, the
IN0 command reads the inputs directly, the $INP command
input value is updated with a check_status call.
# = 0 for u500 card
1-4 for 4EN card banks 1 to 4
bit = 0-23 for bit number to read
c) MR mtype,addr
This command reads the value of a memory location.
mtype = X, Y, or L for X, Y, or L memory space.
addr = address within memory space to read.
v0=mr x,0xb ;this reads the data at address 0xb from
X memory space and places the value in v0
(this is the location of the 16 inputs)
d) MW mtype,addr,data(,mode)
This command writes a data value to a memory location. The
mode argument indicates whether to overwrite the existing
memory data, AND the new data with the previous data, or OR
the new data with the previous data.
mtype = same as MR
addr = same as MR
data = data to be written
mode = AND if anding data
OR if oring data
otherwise overwrite data
mw y,0x1a,6 ;writes a 6 to memory location 0x1a in Y
memory space (this is the location of the
8 outputs)
mw y,0x1a,1,or ;set bit 0 of the outputs and does not
affect the other bits.
e) Bitwise AND and OR functions have been added to the math functions.
Bitwise AND operator is &, bitwise OR is |
v0=2|1 ;v0=3, the bitwise or of 2 and 1
v0=0xf&0x2 ;v0=2, the bitwise and of hex F and 2
1) Added support for 4EN encoder board. Can only be used for velocity
feedback. Setup as channels 5-8. Currently does not support hall inputs.
( Can use as position feedback channel for debug but does not read
limits , etc. )
2) Added encoder capture interrupt "UINT_N" functionality. See files
"ENCCAPT.DOC" and "ENCCAPT.C" files for more details. Available only
from "C" interface.
3) Fix G8/sine ramp bug. U axis velocity profile stops during decel then
generates a large spike at end of move.
4) Added 4EN card I/O support.
5) Added UINT_N option support.
6) Changed ISBX encoder card software to work with new parameter #99. Fixed
marginal bus timing requirements thru software.
V4.11 Date: July 30, 1996
1) Fixed multiple board Axis letter display in tracking display window.
2) "Abort motion on Fault Acknowledge" check box added to System Options
screen. If checked, abort will occur when the fault acknowledge key
is hit.
3) Added 2 Axis X-Y plotting to the Axis Scope window.
4) (MMI only) M-codes functional from the MDI window.
5) (MMI only) Added command:
SC Scope Collect command
This command is used to tell the scope window to collect
one set of data. This is identical to selecting "Collect
one set of data" from the Trigger menu of the Axis scope
screen. The scope window must be open for this command
to work.
Syntax: SC no arguments
1) Added command to download axis calibration data from a file.
CAL filename
where filename is the file containing the axis calibration
data, the file should be in the same format as any other
U500 axis cal file
2) Added function to download axis calibration data directly.
SHORT aer_download_caldata( long *caldata, short ncalpoints )
WAPIAerDownloadCaldata( caldata as long, ByVal ncalpoints as integer)
as integer
caldata = address of start of calibration data, each value should
be stored as a long (only 24 bits used).
* The first long is the axis to be calibrated (1,2,3,or 4) or
a 2 digit number for orthogonality correction, with the first
digit being the axis to be corrected and the second digit is
the axis to which the correction is based. ( Ex: 23 = axis 2
is corrected based on the position of axis 3 ).
* The second long is the distance in machine steps between
correction values.
ncalpoints = number of calibration points (does not include the
first two long values)
return code:
0 = OK
<>0 = error

3) Re-added iSBX functions removed in v4.10.
4) Changed parameter x82 Encoder multipication to allow negative
5) (Watcom only) Fixed compiler error with function aer_is_open.
6) Target Tracking functions made available as user functions.
short aer_targettrack_enable( short axis )
Function in manual as targetrack_enable.
short aer_targettrack_disable( short axis )
Function in manual as targetrack_disable.
short aer_targettrack_position( short axis, long tarpos,
double adjvel, double lpcoeff )
Function in manual as targetrack_position.
short WAPIAerTargetTrackEnable( short axis )
Same as aer_targettrack_enable.
short WAPIAerTargetTrackDisable( short axis )
Same as aer_targettrack_disable.
short WAPIAerTragetTrackPosition( short axis, long tarpos,
double adjvel, double lpcoeff )
Same as aer_targettrack_position.
1) Modify orthogonality correction operation...
Multiple axes can now be linked to the same master axis.
31 ;; correct axis 3 based on position of axis 1
1 2 3 4 5...
41 ;; correct axis 4 based on position of axis 1
1 2 3 4 5...
2) REVC Firmware not sending proper brake status info to diagnostic window.
3) Axis may not stop completely at the home switch. This can occur if
ac/de rate is low and feedrate is high. Added software flag to fix bug.
4) Add firmware to allow the scope function to collect up to 7500
samples per axis of actual position or command position. This
feature is available with the U500 ULTRA only using the C
V4.12 Date: October 8, 1996

1) (MMI only) Program window now displays the commands sent to the
U500 when running programs in IM mode. It will display the last
8 commands executed.
2) Fixed installation program, did not install WINPRM.DLL properly.
V4.11 setup program changed on 8-26-96.
3) (MMI only) Subroutines can be called from MDI window. The
subroutines that can be called are any subs defined in the global
subroutine file or any subroutine in the current program.
A subroutine call can be made only if there is a program presently
4) (MMI only) Message command functional from the MDI window.
5) Restart button resets the program to the original starting program.
6) Abort always occurs on a Fault Acknowledge.

7) Variable labels accepted for branching (subroutine and goto commands).
SU :%v###
GO :%v###
where ### is a U500 variable 0 through 255
su :%v25 ; program execution will jump to label :700
me di "program jumped to here"
1) Writing default parameters for yes/no parameter type fixed. No
longer overwrites several parameters or writes no for yes defaults.
2) Re-added parameter x30, Notch Filter N0. default=0, range = -4.0
to 4.0. On Servo Loop tab.
3) Fixed lock up due to zero distance move with specified feedtime.
1) Add new position feedback case 33..36 for axis1..4 spindle. Same as
25..28 except uses standard hall sequence ( no "000" "111" state ).
2) Added new trajectory generator routines. Not supported in lib/dll yet.
3) Change Kpos * Perr to increase fractional resolution.
4) Fix ramp command, would not decrement # actions in queue.
5) Change queue decoding scheme for modal commands...
lin/sin ramp, eng/met, rounding, g8/g9
next command is decoded from same plane before executing motion routine.
This allows mode changes for new contouring routines without breaks
in motion profile. Also changed "start n" command to continue decoding
on same plane.
6) Fixed contour/index feedrate, # commands in queue. Could generate negative
command count in queue.
V4.13 Date: October 25, 1996
1) Change tabwidth in parameter screen when fonts are different sizes.
2) INT command, when in global subroutine file, will be valid for all
programs being run.
3) Ability to jump into a subroutine from an IF statement added.
IF <condition> SU :label
jumps as a subroutine to :label
4) Execute button for MDI window now executes subroutines and message
5) Added ability to jump to a line number in a program with the GOTO
sets program to line number ##
6) Fix Invalid Propery Value in Axis Tuning screen related to
displaying 100 points.
1) Homing problem. If limit switch debounce distance is <> 0, axis
may take a long time to decel when moving out of limit.
2) V4.12 queue decodeing change not working properly. Contour moves
with feedrates specified may not execute properly if motion
is queued.
V4.14 Date: December 12, 1996
1) Fix Cycle and Pause commands, bit value of 0 or 1 may be checked
2) Abort key in Axis Tuning screen will stop program execution.
1) Modified gantry parameters, 7-10, to allow for inversion of the
command sent to the slave axis.
y,# - current syntax, slave axis # to master axis
y,-# - invert the command sent to slave axis #

2) Added General Parameters:
31, 49, 67, 85 : "Contouring Mode" for planes 1 - 4
default = 0, on "Advanced Motion" tab.
3) Added Command:
Contouring Mode command (CM).
Syntax: CM # - # = 0 for original contouring mode
= 1 for new contouring mode
This command changes the contouring mode of the U500.
This command is used to turn on enhanced G8 mode. The original
contouring mode blends moves together using by combining
deceleration of one move with the acceleration of the next move.
The new mode does not. It requires that the last move is
preceeded by a G9 ( velocity profiling off ) if in G8 mode.
4) Added Axis Parameter, x83, "Filter Time Constant (ms)"
default = 0, on "Servo Loop" tab.
5) Added Command:
Filter Time Constant (FL).
Syntax: FL X#,Y#,Z#,U# - # is filter time constant in ms.
This command is used in conjunction with the new contouring mode,
the argument is in ms. This command activates an exponential filter
on the specified axis. The time constant of the filter is given in
milliseconds. The primary use of the filter is to smooth a
trajectory that constists of non-tangential moves in G8 (velocity
profiling) mode. The filter should also be used in the new contouring
mode if feedhold or MFO is desired. A low filter value ( 10 ms ) is
sufficient in these cases. A filter time constant of 0 turns the
filter completely off. A parameter setting of 1 dissipates the filter
contents with no filter affect. If you do not plan to use the filter,
the time / parmaeter should be set to 0.
6) Added Axis Parameter, x84, "Aux output active high"
default = YES, on "Traps" tab.

7) New command added:
CS Command Scope command
This command works identically to calling the
aer_scope_command function from the libraries.
v#=CS #### where #### is the cmd argument
to the aer_scope_command, returns the return code
of the aer_scope_command into the specified variable.
v0=cs 0x40000+1 ;sets timebase to 1 ms
v0=cs 0xb0000+7500 ;sets "long" number of samples
v0=cs 0xc0000 ;collect data
v0=cs 0xd0000 ;return number of points to collect
if v0>0 :here
8) Cutter compensation: Full circle bug. Would sometimes pick the
wrong intersection of line and circle.
1) Change feedback channel #25-28 to use 0,1,1,0,-1,-1 commutation
sequence. Also requires a 000/111 hall sequence.
2) Fix PLC "F" (fault) case. Fault status was latched forever.
3) Change firmware for new parameter format 7-10.
4) Add support for new axis parameter x84. "AUX OUTPUT active high ?"
Setting this parameter to no inverts the polarity of the axis
AUX output bit.
V4.15 Date: January 27, 1997
1) Fix execution of entire program when subroutine call made from
MDI window.
2) Modified program printing to fix problem of multiple page printing
with a dot matrix printer.
3) (W32) UMFO command fixed.
4) (W32) Plane 4 mapping corrected.
5) Multiple HALT commands can be sent. (HALT and START command added
to 32 bit version).
6) (W32) Fix parameter file printing.
7) (16 bit) Only one instance of 16 bit application can be run at one
8) Initial release of Windows 95 driver.
1) Target tracking disable bug, always disables the X axis.
2) Fix Cutter Compensation bug. When two moves are at an angle
slightly over 180 degrees, a full circle could be generated
at the intersection. This is due to rounding. Any move less
than 3 program counts will now be added to previous move.
3) Fix cutter compensation bug with NEW CONTOURING mode ( CM 1 ).
Improper sync of G8/G9 mode with compensated moves.
4) Fix new contouring mode bug with "+ Move CW" parameter and part
5) Fix variables within FL command.
V4.16 Date: April 19, 1997
1) (W32) Fix calculate scale factor in parameter editor.
2) (W32) Install fix added. Previous versions of MMI software could
generate "Error 31037", this is due to error registering DLL's,
specifically OLEPRO32.DLL and OLEAUT32.DLL
3) (W32) Fix 'transfer parameters between planes' utility.
4) (W32) Fix IM program bug greater than 32767 lines.
5) (W32) SOFTWARE POSITION command does not work properly.
6) Autotune amplitude changed from machine steps to user units.
7) (W32) MMI will check if board is initialized on startup, will
assume using parameter file of current project.
8) Saving plot file now saves the current gains and a comment.
1) Changed point to point move (G9) in new contouring mode. Preserves
programmed acceleration (Feed/ramp). Used to always ramp to
programmed Feedrate.
2) Removed GEAR "house_keeping" function. Was keeping gear function
from executing until previous commands were finished, even in
different plane.
3) (W32) CM 1 , skips next block
4) (W32) Add null pointer check to "execprgblk()"
5) (W32) Can now define an M function as a SUBroutine call.
6) (W32) U500 BASE will not accept G1/LInear command.
7) (W32) fix G92 multi plane operation. Would clear all axes if no
argument was given, regardless of current plane.
8) (W32) Update enable flags in software_initialize.
9) (W32) Fix axis CW/CCW limit parameters.
10) (W32) Fix new contour mode, english circles calculated using
metric scale factor.
1) Improve new contouring mode (CM 1) interpolation of 1ms to .25 ms. Now
does 1st order interpolation.
2) Add feedback channel case 37-40. Reads command position from channel
0-3 for 37-40. Encoder feedback from default channel.
Example: Axis Parameter 338 = 37
==> Axis 3 reads position command from channel 1. Encoder
feedback from channel 3 counters.
1) Fix PCPSO problem. "PSOF,0" does not turn off the firing output
in all cases.
2) Setup REVA dsp firmware to output 20Mhz encoder sample frequency.
To use, remove JP45,46,47,48, install JP52.
3) Added aer_DSPMemRead / aer_DSPMemWrite functionality to PSO firmware.
Base address is PSO base address. Can also use DSPDUMP.EXE from DOS
to look at PSO memory.
INPUT BUS ADDRESS = Y:0xFFE0 bits 0-7 ( read )
OUTPUT BUS ADDRESS = Y:0xFFE0 bits 0-15 ( write )
( dont overwite bits 23-16, use DSPMEMAND and DSPMEMOR to clear
and set bits )
V4.17 Date: May 15, 1997
1) (32) New installation program. Customer parameters, configuration,
and calibration files should be copied onto disk 4. Installation
disks are now the same for 95 and NT.
2) (32) Fix isbx commands within INT, PLC, CYCLE and PAUSE commands.
3) (16/32) New printing of axis tuning plots. (NOTE: There is a bug
in the 16 bit printer driver HP LaserJet 4/4M that will not print
the tuning display.)
1) "START plane" command not working. Bug added in V4.15 firmware.
1) (16/32) Cutter compensation bug. If DSP buffer fills, incorrect
motion path can be generated.
2) (32) iSBX commands functional.
3) (16/32) Modify NEW CONTOUR mode. If ramp time is set to 0, no ramping
wil occur.
4) (32) Add helicoil/2-circle capability to command decoder.
5) (32) "NEXT" command not working properly. Command(s) following could get
6) (32) Added syntax checking of MESSAGE command.
7) (32) DAC command not returning runtime error code.
V4.18 Date: June 10, 1997
1) (32) Interrupt structure updated when jumping between programs.
2) (16) Fix autotuning, display in mm or inches, value in machine steps.
1) (32) Fix axis mapping. drive 0 = "1,Y" 1 = "2,X" case did not work prope
Qlib functions should be called as "AXIS1-AXIS4". Axis registers
are mapped as drive 0-3.
2) (32) Fix G8 sync problem with cutter comp.
3) (16/32) Fix feedrate sync problem with cutter comp.
4) (32) If in CM 1, G9, short move, feedrate not correct
for circle. Bug added in v4.16 with accel rate clamp.
5) (32) Spline mode: specified time "T" was not modal. If a time value
is given, all following seqments will be executed in that time until
a new time is given or a feedrate is specified.
V4.19 Date: July 31, 1997
1) (32) Fix invalid property value in Axis Scope window if range of
data is large.
2) (16/32) Added "PSOF,0" command to the Abort key to stop the firing
of the PSO.
3) (32) Startup project and ini file default to installation directory
rather than the desktop when run from the Start Menu.
4) (16/32) Change AT command to work in program units. Allows axis as
number 1-4 or XYZU.
5) (16/32) Changed GEar command to allow C5,C6,C7,C8 as master (4EN board)
6) (16/32) Position Error values calculation changed to avoid truncation
if position values are large.
1) AT command uses axis parameter #11, "+ move is CW ?"
2) Added support for gear on 4en board.
3) Fault acknowledge did not work properly if axis was disabled.
1) (32) PSO dual-port ram functions added to device driver.
2) (32) Fix Software Position command, previously command only worked
on X axis.
3) (32) User program not closed properly. Could cause MMI error
"Could not open file xxxx".
4) (32) Autotuning for axis 3 and 4 now works.
V4.20 Date: September 9, 1997
1) (16/32) Save ASCII data from plot, velocity and position errors now
can be non-integer.
2) (16/32) COM functions fixed. Overflow error fixed if COM SET
_TIMEOUT_ value set too high. Multiple terminating characters
bug fixed.
1) Home cycle accel / decel rate always uses axis parameter #16. Previously
programmed accel "AC Xn..." was used.
2) Modify MSET command. If the axis is enabled when in mset, the U500 will
continue to track the commutation vectors when the axis is disabled.
Subsequent MSET functions are not necessary ( but still can be used ).
MSET 1,0,0 will clear the tracking mode.
WARNING: If the encoder power is lost and the motor shaft is turned,
the commutation will not be preserved! This is also true if
the maximum tracking rate of the feedback device is exceeded.
ER 0,0,0 ; turn off faults
GA X KPOS0 KI0 KP0 ; set gains to 0
EN X ; enable axis
MS 1,1,90 ; set commutation alignment vector
GA X KPOS? KI? KP? ; restore gains
EN X ; re-enable axis,
ER 0,0,0xFF319F ; restore global fault mask
... ;
DI X ; commutation still tracking
... ; ...
EN X ; commutation preserved
3) Added bit #21 feedhold status to aer_read_status(5). ( Bit #23 = GPB
full, bit #22 = PC bus interrupt generated )
4) Could not fault acknowledge ESTOP or INTERLOCK fault due to change
made in V419.
5) Increase PSO access time due to pal change on PSO.
1) (W32) Plane 4 metric flag was wrong in internal buffer.
2) (W32) Slew command mapping was wrong.
V4.21 Date: September 29, 1997
1) (32) Fix overflow if frequency of autotuning set to less than 1.

2) (32) Fix error when saving gains from Axis Tuning window.
3) (32) Upgraded FarPoint Tab control to get rid of warning message
when opening a parameter file: "License file not found..."
1) Multiple axes would not move out of limit. Also FAULTACK would
cause other axes to not respond to commands.
1) (32) SOftware POsition did not work for any axis other than X.
V4.22 Date: November 4, 1997

1) (32) Fix MS and MC command to work on axes 3 and 4.
2) (32) Add :%Vn GOTO and SUB support. GOTO will search current program.
SUB will search current program first then search global subroutine
file if present. If the label is not found, an error message will
be gerenated.
3) (32) Changed version tracking calls for the device driver and qlib.
Now they return major and minor version instead of a AER_VERSION
struct. Also QLB50032 and WIN50032 dll versions can be viewed in
4) (32) Device driver - removed kernel call for time delay
KeDelayExecutionThread(), use internal function. Could cause problem
running multiple threads.
V4.23 Date: December 3, 1997
1) (32) Increased program execution speed by adding checks of function
key labels and if displaying messages, program does not get loaded
into list box.
1) (W32) Changed CM 1 to blend steady state moves <= 10 ms into accel
or decel.
2) (W32) MDI immediate commands are not affected by WAIT mode. Always execu
as if wait is off.
3) (W32) Added math checking on move distances and feedrates. Maximum
move is 2,147,483,647 program steps.
4) (W32) Added support for PSOS ( pso scaling ) commands...
PSOS,0 - scaling off
PSOS,1 - scaling on
PSOS,2,Xa,Yb,Zc,Dd - set scale factors a,b,c,d
5) (W32) Fix plane in WAPIGetUbj function to correct display of feedrate
in status windows of MMI.
6) (NT) Removed interrupt information for the PSO from the device driver.
Fixes crash of NT when PSO address is set in registry.
7) Fixed parameters 3-6 "Axis n map to plane as X-U". When parameter set
to 0, return value previously was "none".
1) Added decode support for PSOS scaling, still need kernal support (RBR).
V5.00 Date: January 20, 1998
( Software REV levels changed to match up U511 and U500 )
1) Add general parameter #501 to define input to abort. 0 = none, 1-16 are
u500 primary inputs. When input goes high, all axes will ramp to stop
at max ac/de rate.
2) Changed Auto Enable window in System Options screen from axes X - U
to 1 - 4. Problem caused during re-mapping of axes.
3) Fixed parameter editor, previously would cause occasional crash of
U500 software when in NT.
4) (32) Auto execute program fixed.
1) Add GPB59/5A for 24.24 feedrate and internal ramp time
2) Add axis status bit #9 aer_read_status(1-4) and aer_read_status(5)
bit #20 to indicate abort input active. See new parameter #501.
3) Smooth axis cal output. Correction is generated at every 8ms. Every 1ms
+/- 1 count is sent to servo loop.
4) Added SA,SD support.
1) (W32) add new DSP case for 24.24 feedrate - CM 1 only
2) (W32) modify feedrate/ramptime if CM 0/G9 to keep profile smooth - prese
rve accel
3) (W32) fix feedtime if CM 1/G9 or CM 0/G9.
4) (W32) Add new plane trigger commands. "SAn" and "SDn" where n is the
plane to start 1-4. SA starts the specifed plane after the accel of th
move. SD starts the specifed plane at the decel of the move.
plane 2 ; Assumes Y in plane 2, X in plane 1
halt ;
g1 y10 ; will not execute until decel of x move
plane 1 ;
g1 x10 f1000 sd2 ; start plane 2 at decel point of x move
V5.01 Date: February 5, 1998
1) (NT) Fix multiple board device driver crash added in v5.00.

V5.02 Date: February 27, 1998
1) (32) Added CALLDLL function for the ability to call any DLL function
from a parts program. See the installed file CALLDLL.DOC.
2) (16/32) Modified Axis Scope screen to take into account the "+ move
is CW" parameter.
3) (16/32) Set outputs on abort due to input bit high according to
parameter 501.
1) Add multirow ortho table. ( not fully supported yet )
<---- axis 1 ---0
*--*--*--*--*--+ 0 | a
*--*--*--*--*--+ | x
*--*--*--*--*--+ | i
*--*--*--*--*--+ | s
*--*--*--*--*--+ V 2
21 ; correct straightness of axis 1 by moving axis 2
200000 ; sample distance of axis 1
1250000 ; sample distance of axis 2 ( between rows )
10 ; number of points per row
x x x x x x x x x x ; row 1 data
x x x x x x x x x x ; row 2 data
x x x x x x x x x x ; ...
2) Fix queue status if executing "QU IN" command.
V5.03 Date: 3/13/98
1) MSET command was not clearing "commutation valid" flag. (see V420)
2) AC motor with resolver was not working properly due to a change made in
v4.22 gantry mode.
1) (32) Decoding of error messages in WIN50032.DLL returning
incorrect message: "Error in DLL". This bug was added in v5.02.
2) (32) Notch filter parameter "default" not working properly.
V5.04 Date: April 15, 1998
1) Bit #3 of servo loop parameter x78 used to do 1 cycle velocity
averaging (add 8 to parameter to activate).
2) Global abort input would clear if another abort was given and the
abort input was in the inactive state.
3) Add encoder gantry feedback channels 41-44. Will read command position
from channel 1-4 respectively. Feedback is from own encoder cahnnel.
Marker search during home cycle is seperate as are home offsets.
1) (16/32) Fix moves of < 1 mach. step in CM 1.
2) (32) Cutter comp and part rotation was not working due to new
commands added in V5.00. ( 24.24 Feedrate, ramptime, SA,SD commands )
3) (32) Added function WAPIAerGetQlibError. This function returns the
error message of the previous quick library command.
Syntax: AERERR_CODE WAPIAerGetQlibError( char *psErr )
Return: quick library error code number
*psErr = pointer to a string that will be filled with the
quick library error message.
4) (32) Added function to return firmware info.
Syntax: AERERR_CODE aerq_get_firmware_info( BOARD *pb, long *plInfo )
Arguments: *pb - address to board pointer
*plInfo - address of array of 10 longs. This number of longs
is set by constant NUM_FIRMWARE_INFO.
Return: 0 if OK
plInfo[0] = firmware version
plInfo[1] = parameter base address
plInfo[2] = plane 1 base address
plInfo[3] = plane size
plInfo[4] - [9] = spare
5) (32) Added extra functions for the calldll command. Commands added:
LOADDLL and FREEDLL. These calls are required only to keep the
dll loaded between calldll commands.
v## = LOADDLL "dllname"
Argument: dllname = name of dll to load
handle of open dll into v##. This handle used in freedll call.
v## = FREEDLL v##
Argument: v## = variable containing handle returned from loaddll call
Returns 0.
1) Added more diagnostics to the device driver. See "qlib_ex5.c"
for usage.
V5.05 Date: June 18, 1998
1) Recalculation of autotune gains performed when BW or damping changed,
without requiring retuning.
2) (32) The configuration file is obsoleted. The calibration file name
replaces the config file name in the project. Upgrades will automatical
replace the config file name with the cal file name in the project.
3) (32) Registry editor tools added (u500reg.exe).
4) (32) SC command is now a queued command. No need for a WAIT ON before it
5) (16) Software initialization available if board is already initialized.
The parameter file should be the command line argument and is used to se
up the software and libraries.
1) Add trigger command.
2) Add command vector to enable scope_dump interrupt. Should be called from
scope_dump routine.
1) Changed CM 1 to handle short moves better.
2) Allow ramp time to be set to 0.
3) Added TRIgger command , "TRI 1,2,3,4" to trigger planes. This is a
realtime non-queued command. Also changed libraries to allow all planes to
be halted.
4) Add "REF XYZU" command to move axis to its marker. Executes like a home
cycle. Software positions / hardware positions are cleared.
5) Changed servo loop default parameter values.
6) (32) Added command to read parameter values from current parameter file.
Syntax: v## = prm(xxx)
where ## is variable number
xxx is parameter number
This command only works for parameters that return numeric values.
The yes/no parameters will return 1 for yes, 0 for no.
7) (32) Added command to read the current gains from the U500 card.
Syntax: v## = gain axislet gaintype
where ## is variable number
axislet = X, Y, Z, or U
gaintype = KPOS, KI, KP, VFF, or AFF
Ex: v0 = gain x kp ;returns kp value of x axis
8) added command vector for scope dump
9) (w32) added trigger accel / decel commands as standard
10) (w32) added NOMAPPING def for future firmware versions
11) (w32) changed contour routine to modify ramp time and feedrate even on
G8/G23 moves (for CM 0)
12) Add aerq_pso_mem_read/write commands to access PSO memory directly
( qlib's only ).
13) (w32) Fixed bug with UMFO command. Would not execute next block in prog
14) (32) Added scope trigger command. This command is used to queue the tr
iggering of collecting
data. This command is used in place of the aerq_scope_command with arg
ument dwCmd = SCMDENABLE.
Function: AERERR_CODE AER_LIBENTRY aerq_scope_trigger(BOARD *pb);
1) Add "PSOC,4,low,high" command. This command will fire a pulse ( PSOP,4
mode only ) when the specified axis is within the window defined by
"low" and "high". These values are in machine steps and are referenced
to the point where firing was enabled ( with the PSOF,3 command ).
PSOD,0,100 ; fire every 100 machine steps
PSOP,4,1000 ; define pulse width ( 1000usec = 1ms )
PSOC,4,10000,100000 ; define window in machine steps
PSOF,3,X ; start tracking
1) Add trigger command.
2) (W32) Minimize time wasted in driver if buffer is full.
3) (W32) Add command vector to scope_dump to fix problem when calling check
between scope_command and scope_dump. requires firmware change
but is backwards compatible.
V5.06 Date: July 14, 1998
1) (32) Fix GO LINE command for IM programs.
2) (32) Added data collection of inputs and outputs in Axis Scope window.
1) Adjust MFO in CM 1 to reduce the end of move glitch when not set to 100%
2) Encoder gantry modes now enable/disable based on either axis.
3) Add case aux case 3 and 4 to scope routines for collecting inputs and
1) Some parameter default values have been changed:
num name old new
x25 Kpos 1000 50
x26 Ki 10000 5000
x27 Kp 600000 100000
2) Add "EF" command to specify ending feedrate of a G8 contour move. This
only works in CM 1. EX: G1 G8 X10 F1000 EF500
3) Add "WAIT ON/ALL [mask]" option. "mask" is the readstatus(5) AND mask.
Program flow will not continue until ( readstatus(5) & mask == 0 ).
WAIT ON/ALL default operation changed to only wait in the current
EX: "WAIT ON 0xfff10" waits for all planes and axis 1 in pos.
4) Fix invalid error code from VAR READ/WRITE calls.
5) (32) Add SYNC command. This is a queued command that will wait for
the duplicate buffer to finish. This is useful for G8/G23 mode.
1) Add diagnostic call, returns:
+0..3 axis encoder positions.
+4 input bits
+5 ADC value ( note: this is option hardware )
+6 output bus value
+7..11 spare ( 0's )
NOTE: The diagnostic data is only updated when the PSO is not tracking!!!
1) Add PSO diagnostic calls.
2) Re-write checkstatus routine to use a HOST COMMAND vector instead of
GROUPA sequence.
3) Change scope and memory read functions to use new send_gpa function.
V5.07 Date: August 10, 1998
1) (32) Fix 2-axis plot bug added in v5.06.
2) Fix changing of auto-execute program.
3) (32) Two options to auto-execute programs: Autorun or Silent Autorun.
Autorun: normal program execution mode.
Silent: program execution window not visible.
Programs will be run on software startup (if board init) and reset.
1) u500cn.jwp - abort does not stop execution of PLC. PLC execution does no
set checkstatus "busy" bits.
2) Add "DY axis time kpos " command. EX: "DY X 20 1"
3) BUG: Encoder gantry mode 29-32, 37-40,41-44. If axes are disabled, moved
, then
re-enabled, slave axis may have a torque offset.
4) Software limits will not activate during home cycle.
5) Increase speed of limit fault acknowledge. Will move out of limit
at power on home feedrate.
6) If the U500 is controling steppers and servos, the stepper update rate
will be 4Khz instead or 8Khz. Servo interrupt could be missed due to
read of TCSR before RTI.
1) HALT/START were not affected by wait mode. A problem could occur if the
following sequence was used...
... ; would wait here for ever.
2) Add support for helix interpolation in CM1. G1 command MUST follow G2/G3
EX: "G2 X0 Y0 I1 J0 G1 Z3.14 U3.14 F1200"
1) Bug added in V5.05 - PSOD command would not work due to diagnostic
subroutine. Diag sub moved to 10Khz interrupt. Will be called
if the PC diagnostic routine is run. This will degrade tracking
performance and should only be used for diagnostic purposes.
1) Add minimum number of checkstatus tries in addition to the timer.
V5.08 Date: October 22, 1998
1) Fixed bug in U500CN.JWP file. During accel/decel, interpolation to servo
loop could cause audible noise.
2) Axis can be homed based on the marker by setting axis parameters 8
and 77 to 0. The marker must be pulse width extended to .5ms min
and tied to the home limit input.
3) Gantry mode 29-32: If servo update is less than 4Khz, the slave servo
loop's current will ramp up over time.
4) Do zero order interpolation in U500CN version if either velocity is 0.
1) (W32) MEssage strings can now contain the reserved characters
"(", ")" and "'".
2) (16) Fixed Contour mode 1 bug added in v5.04, fixed cutter comp
bug added in v5.07.
1) Fix bug added in V5.06 - PSOF,3 would not work for more than 1 axis
ie. PSOF,3,X,Y would not work.
1) (32) Fixed truncation of decimal numbers when running German version
of NT/95.
V5.09 Date: 2/12/99
1) MMI code upgraded to Visual Basic 6 .
2) Fix COM SEND "V(%L)###" command (truncating variable to int).
3) When the 'Cancel' button on the input variable dialog box is
pressed the program execution now changes to Single Step mode.
4) Fixed Run-Time Error when using Password option.
5) Added search/replace options for program editor.
6) If collecting one set of data or collecting data continuously,
in the scope window, the command queue is not checked.
7) Printer Dialog Window added when printing from the Axis Scope
1) DY command not working for slave axis.
2) CM 1 now is smoother before decel.
3) Would only decode first index feedrate given in a G0/INdex command.
4) Add feedback cases 45-48 for optional 12 bit A/D convertor position feed
channel U500 P1 DR500 BB501
45 96 (AIN1) J13-25 (MISC.IO) TB1-4
46 95 (AIN2) J13-24 (MISC.IO) TB1-3
47 90 (AIN3) J12-6 (JOYSTICK) J12-6
48 89 (AIN4) J12-3 (JOYSTICK) J12-3
This feedback position is absolute w.r.t. voltage...
+10V -> 2047
0V -> 0
-10V -> -2048
5) Axis Cal/Backlash/ortho/2-d ortho/3-d error mapping - use un corrected
command position. This keeps routines form interacting.
6) Encoder gantry: tracking display does not show corrections for slave axi
7) Adjust scope positions during home cycle so there is no spike on display
8) Max segment size internally limited to 10 ms to save firmware space.
9) Fix bug that may cause an axis to home in the wrong direction under
certain circumstances.
10) iSBX/AD/Velocity host interrupt changed so that DSP will not wait
for data. Could cause 0 velocity if NT driver gets swapped out.
1) Add :MULTI 3D error map table decoding. Cal files can also now
contain comments in data area.
1 2 ; input axes
1 2 3 ; output ( corrected axes )
10000 10000 ; sample distance (row col)
0 0 ; offset from home to start of table
5 ; number of points per row
1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 ; correction data in groups of
... ; three (XYZ) (XYZ) ...
2) Add QU POS 1 [,2,3,4] command. Halts current queue until specified axes
are in position. ( pos err < prm x35, axis is enabled, vcmd == 0 )
EX: QU POS 1,2,3 ; wait for axis 1,2,3 to come into position
3) Add "ACcel PLane=a" command. Where "a" is maximum acceleration in
UNITS/SEC/SEC or STEPS/SEC/SEC. This will limit the acceleration
during linear and circular moves by lowering the feedrate and
adjusting the ramptime. One block look ahead is used to slow down
before a circle or final move in a G8 sequence. This command works
for contour mode 1 (CM1) only. Setting "a" to 0 will turn this
function off.
Look ahead is done only in the MMI or with the "::" command.
EX: AC PL=1000 ; set acceleration at 1000 mm/sec/sec for current
4) Contour moves are now passed as "blockmove" structure. This keeps
better sync when doing cutter comp. Also feedrate, g8/g9,
ramptime, rounding, and traj type are passed along in blockmove
structure. They are not sent to the U500 individually. Circle
centers are kept as double.
5) Add PSO velocity tracking abort command. ( Aborts PSOT,4 and PSOT,5 comm
ands )
Syntax: "ABORT PSOT,endvoltage,msec,flags,outmask,outdata"
endvoltage - DAC output will end up at this voltage after ramp (
msec - number of milliseconds to ramp to "endvoltage"
flags - #0 kill laser at beginning of ramp
- #1 " " " end of ramp
- #2 set outputs at beginning of ramp
- #3 " " " end of ramp
- if all bits are 0, the laser fire output and output
- wil not be changed.
outmask - defines output bits to change, bits #15-0 =1 to cha
outdata - defines output pattern bit #15-0
Note: This is a realtime, non-queued command sent directly to the
PSO board from the PC.
6) Adjust circle center if the starting and ending radii are not the same.
The average radius is used. The start and end points are preserved.
This fixes some problems in cutter comp which generate a wrong
direction circle due to programming errors.
7) Modify cutter comp to keep fractional centers and endpoints internally.
This fixes problems when moves are almost tangent. Could generate
a circle in the wrong direction.
8) Better error checking for WHILE/ENDWHILE, IF-THEN-ELSE-ENDIF, and
LOOP statements.
9) Add intrinsic corner rounding mode. Will command a circle between
linear (g1) moves only. Moves must be greater than two times the
programmed radius. Look ahead is done only in the MMI or with the "::"
G25 X Y R1 ; define axes and radius
G26 ; rounding on
G1 moves ...
G27 ; rounding off
10) Two commands can be send in immediate mode, seperated by a double colon
"::". This is used to implement one block look ahead using the WAPIAerSend(
function. See G25 and AC PL commands. Only the first block is executed, the
second block is for look ahead purposes only!
Syntax "block1 :: block2"
EX: "G1 G8 X10 F2400 :: G2 X0 Y-2 I0 J-1"
"G2 X0 Y-2 I0 J-1 :: G1 G9 X-10"
"G1 G9 X-10"
11) Add auto focus command. Requires 12 bit A/D convertor option.
AFCO axis,channel,pos,gain,vel[,db,max,min,flags]
where: axis XYZU
channel A/D convertor channel 1-4, or 0 = off
pos desired A/D position to track to ( in A/D counts )
gain sets responsiveness of loop ( Like KPOS )
vel maximum motor speed ( units-steps/min-sec )
(opt.) db dead band in A/D counts
(opt.) max maximum motor movement in positive direction ( uni
ts )
(opt.) min minimum motor movement in negative direction ( uni
ts )
(opt.) flags see help file
Example: "AFCO X,1,0,100,10000,1,1,-1,0"
Description: track on analog input #1 with a gain of 100. Maximum
correction speed is 1000 mm/min. There is one
A/D count of deadband. The encoder will move +/- 1 unit
relative to the point where to command was given.
channel U500 P1 DR500 BB501
45 96 (AIN1) J13-25 (MISC.IO) TB1-4
46 95 (AIN2) J13-24 (MISC.IO) TB1-3
47 90 (AIN3) J12-6 (JOYSTICK) J12-6
48 89 (AIN4) J12-3 (JOYSTICK) J12-3
12) Add bit #2 to general parameter 99 to scan optional 12 bit A/D.
The A/D value will be display in the diagnostic window also.
13) (16 bit) Fix CM 1 bug where deceleration ramp is inverted.
14) "SUB :%Vn" will search local program, global sub, then all other
program for label defined by Vn.
1) See PSOT abort command.
1) Add PSOT abort command.
2) send_gpa protocol used for iSBX/AD/VEL interrupt.
V5.10 Date: April 23, 1999
1) Added FFT utility to Axis Tuning Window.
2) Added parameter editor utility to calculate low pass and notch filter
3) Fixed Run Time Error when cursors used with the torque data displayed wh
using auto-tune.
4) When the sc command was used, torque data was collected by default, desp
other choices for the auxilliary data.
5) Added the "-i" command line option to the MMI and the stand alone parame
ter editor.
When this option is used, the parameter editor contains the option of cr
eating a
new default parameter file.
6) The System Options now allow the specification of the setup and calibrat
ion files
for the LZR board.
7) Added the 'goto line number' option in the program editor.
1) Add bit #2 to general parameter #500. If set, the UINT will generate
a PC bus interrupt. Previously, a PC bus interrupt was generated
by default.
2) Fix gantry mode ( gen prm #7,8,9,10 ) . If slave axis hits a limit,
would not fault acknowledge. Also if feedforward not on during
home, axes would not land on markers.
3) Add "SLAVE Flags,SlaveAxis,MasterAxis,SlaveDist,MasterDist,Ramptime, [..
command. ( see word doc )
4) Axis would not remain calibrated if disabled and moved.
5) SLEW C command not working for U500CN.JWP.
6) LVDT command would hang up for any axis other than X (axis 1).
1) Fix bug with axis mapping: If an axis is un-mapped, it will overwrite
the first axis in CM 1.
2) Add "PARallel=a" command, where a is degrees. If the U500 is
in G8 mode and CM 1, the U500 will switch to G9 mode if the
angle between contour moves (G1,G2,G3) is greater than that
specifed by this command.
3) Add "WAIT QUEUE n" command. This sets max number of commands in queue.
4) Cutter comp stops after first move. Bug added in V5.09.
5) Add ABS optional argument to scale factor command. This will update the
scale factor but not reset the reference position.
"SCF ABS Xn...". ABS must appear after SCF.
6) Add IRQ {on|off} command to generate a queued PC bus interrupt request.
7) Fix bug in cutter comp: Error occasionally occurs if two consecutive
moves are the same.
8) SOFTWARE POSITION command automatically does checkstatus.
9) Changed axis parameter x73 "Enable vel/accel feedforward during home"
default from no to yes.
10) Add axis parameter #85. If yes, joystick direction will be reversed.
11) Added functions to create default parameter files. Also added
function to check if a parameter value was equal to the default value.
12) The registry functions can now read and write the base address and time
out value
for the LZR driver.
1) Implement "PSOD,7 <#pulses>, <distance>". Defines number of pulses to
generate for and integer machine distance.
2) PSOT,4... and PSOT,6 can now be given without stopping tracking.
PSOT,4,0,0,10,100 ; setup vel tracking mode 100steps/ms max vel
PSOF,3,X,Y ; enable tracking
G1 G8 X10 F100 ; motion commands
PSOT,6,0,10,0,1000 ; tell PSO to ramp analog output down in 1000
G1 G9 X1 ; last move in sequence
3) Change interrupt structure and velocity tracking code. 10khz and
gpb commands are highest level.
1) Change abort function. Abort no longer delays for 100ms minimum.
V5.11 Date: 12/10/99
1) PCI FPGA Setup tab added in System Options.
2) Scope window overlaps 2-d position command and position feedback.
3) Scope window updates scale factors after every reset.
4) Added code to support multiple program execution.
5) Program editor Undo buffer cleared after loading another program or
quitting the editor.
6) Second diagnostics window was added. Currently available only when usin
g PCI card.
1) Modified in position bit for U500CN.jwp firmware. Now checks feedback
velocity to make sure < 1 count.
2) Error mapping not working if home direction is + (CW).
3) Slave command would not ramp up properly if UINT was not used.
4) Firmware uses 12 bit A/D for joystick if bit #2 of prm #99 is set.
( requires hardware option (ADC12) )
5) MFO now works in continous freerun mode (again).
6) Add bit #3 to general prm #500 ( interrupt setup code ). If set (prm=8),
U500 will scan the encoder sample latch at 1ms rate and write to
internal circular buffer. U500PCI/U511 only!!
DO NOT USE WITH BIT #1 SET (prm=2)!!!!!
7) Encoder verification mode not working. Bug added in V5.09.
8) Scope_command/scope_dump sequence can now be interrupted.
9) Analog input data format in diagnostic window changed so that
-8388608 = -10V ; 8388607 = +10V. For 0-5V 8 bit A/D's, the value rea
is 0 = 0V, 4194303 = +5V.
10) Added "U500PCI.JWP" for U500PCI card firmware.
11) "POSITION TO GO" display shows wrong values in CM0.
1) Feed time not working for CM 0. ( Still does not work for CM 1 )
2) Save Status command added.
SS var,type
where, var = PLC variable to save status to
type = status type to save (0=input bus)
Presently, only command SS 0,0 is fuctional. The input bus is
saved to memory location Y:1be1. The command is not incorporated
with the PLC variables yet.
3) PSOC,0 command was not getting sent the the U500/PSO.
4) Adjust feedrate for every G0 move to preserve acceleration more closely.
5) Add "$XCP", etc. ( servo command position )
6) Allow negative and > 360 degree angles in mset function.
7) Slew mode waits for cancel before executing next command. "SLew C" is
now a real time command ( not queued ).
8) Added "QUeue X > or < a" command. Queue will wait until specified axis
position is greater ( or less than ) than "a". The position
"a" is in current programming units and is referenced to the hardware
home position.
9) New commands for U500PCI...
a) FIRE / WINDOW : single axis pulse output
b) DUAL : dual axis pulse output
c) ANALOG : analog output prop to velocity / position
d) POSITION : set output when multiple axes are in position.
e) DAC 9,10
10) Added code to support multiple program execution.
1) Re-enable SCI interrupt in PSOF,0 (in case it was turned off by PSOC,4)
2) Fix pulse train output. Would not generate pulses after the first sequen
1) Add NT,95,98 support for U500PCI card.
1) Added example VI that waits for a move to complete
V5.12 Date:8/8/00
1) M Codes could not work until a program was loaded.
2) Fixed auto-run program bug.
3) Fixed bug with COM commands.
4) Diag2 position display for axis 5-8 was incorrect
5) Added Variable Watch Window
6) U500 registry editor allows selection of PCI or ISA registry entries.
7) MMI can now run a command line executable on Reset.
8) Added labels that can be included in the global subroutine file to redef
MMI command buttons.
9) 'Skey Get' command did not wait for the soft key to be pressed.
10) Fixed bug with the Frequency Response tool in the Axis Tuning Window.
1) Internal ESTOP fault mask could not be cleared once set. Setting the
ESTOP fault mask bit to 0 will now disable ESTOP for all axes.
ESTOP fault mask bit must now be set for all axes to allow estop to be
2) Memory mapping problem created in V5.11. "Long scope" function would
overwrite internal queue data.
3) PCI: "start", "sd n" commands would cause card to reset.
4) PCI: Joystick not working.
5) PCI: Add support for FPGA #2 position / velocity feedback.
6) ISA/PCI: Code re-organization for future PCI enhancements.
7) Limit to marker / home offset moves can now run at 65Mhz max command.
( feedhold no longer works during home cycle and pnt-pnt freerun )
8) Add support for axis 5-8 as ABCD ( Enable/Disable/Freerun only ) .
ABCD axes are CLK/DIR only axes.
"ENable A/B/C/D",
"DIsable A/B/C/D",
"FReerun A/B/C/Dspeed,dist,accel"
speed [machine steps/sec]
distance [machine steps]
accel [machine steps/msec/msec ]
9) Add support for PCI card gearing. Encoder channels 5-8 can be used
as master. "GE 1,C5"
10) Add HALT mask operation.
11) Add filter to ANALOG vector tracking output voltage.
12) "IOn bit,state" command would affect all bits in bank. Fixed diag2
display for bank ABC setup as outputs.
13) PCI: AUX output bit works for 8x3 IO port (P4). Set axis prm 54 to
9-16 port 0, 17-24 port 1, 25-32 port 2. Port must be set as output
using IOSET command.
1) Fix open driver function for Win98 ISA card.
2) Fixes bug with "loaddll" command
3) Allow axis names "XYZU" in "ER" ( error mask ) command in addition to
4) Added radius argument to G2/G3 command.
Syntax: G2 Xxx Yyy Rrr
where rr is radius of the circle. The curve created will be
the shortest arc that connects the two points. If the radius
value is negative, the longer of the two arcs will be traced.
G2 X3 Y4 R5
G3 X10 Y7 R-12
5) Fixed cutter comp bug. Turn off cutter comp if final move does not
require motion.
6) Four axis G0 command would not work.
7) PCI: Add "SEGMENT ARRAY xyzu startidx numseg" command.
Execute "numseg" 1msec segments from on board U500PCI PLUS/ULTRA
array starting at "startidx". One to four axes may be specifed.
8) PCI: Add "TOGGLE" argument to "FIRE" command. This mode generates contin
pulse output at specified pulse width.
9) Increase number of variables from 256 to 10000.
10) Added EC "environmental comp" command for using LZR1100 directly with U5
00 analog
11) When using scf or ec command, the read_position function now returns the
non-scaled position.
12) Add "aerq_plane_ready" function to indicate when plane 1-4 can accept an
other command.
13) Add "system" command. This command allows the U500 to launch another ex
ecutable program.
Ex: system "c:\user\custom.exe"
14) The aerq_readadc and WAPIAerReadAtd functions now return the A/D voltag
e as type
15) Add "pause enable/disable command"
1) The ReadAtd function in now returns the A/D voltage as typ
e double.
V5.13 Date: 12/4/00
1) Added graphical display of the A/D channels.
2) RMS values of the torque in the axis scope window were not calculated co
3) When the MMI starts, the device driver version is compared to the dll ve
rsions. If a PCI
card is used, a utility shows the steps to update the driver in Win2k an
d Win98.
4) Installation can now install the U500 manual from the installation CD.
5) Program execution would not preserve the selected auto/single mode when
the program was restarted.
6) Added Program Fault Mask to System Options. A program can now run despi
te selected fault conditions.
Useful when running a PLC type program in a certain task.
1) Fix gear command ( again ). Internal gear memory was not being initializ
2) MSET commutation initialization generates feedback fault if halls
are not present, it should not.
3) Fix QU POS internal check for new status format.
4) (PCI) Current commands glitch if axis time base is set to 2 or greater
OR gantry mode 29-32.
5) (PCI) Home cycle would not work correctly if UINT occurs during marker s
( This situation was caused by excessive noise on the UINT input)
6) Axis calibration was not turning off for gantry slave axis (37-40).
7) Gantry mode 37-40 for U500ISA - the slave axis could be off after homing
by the amount of the master axis position error.
8) Filter E stop input. Input must be active for 10msec before generating
an Estop fault.
9) All abort actions would use the "switch to mechanical stop" parameter
x10 if set. Now only limit faults use this.
10) MemWrite subroutine changed so that DSP saturation logic would not occur
11) DAC offset for ICMDA1-4 did not work when servo loop active.
12) Add bit #8 to parameters x40 and x41 ( pos/vel feedback setup code )
to invert feedback polarity. ( set to 256 )
13) Add bit #9 to parameter x40 (pos feedback setup code) to read limits
on pos feedback channel rather than vel feedback channel. ( set to 512
14) Axis 2,3,4 would not switch to low current and recirculation mode.
15) Improvements to Index move (PCI only).
1) Add read status "RS(n)" command. This corresponds to the function
"aerq_read_status()" function when "n" is the index.
2) Add "RM x,y" command to read misc. data from U500. "x" is command, "y"
is offset ( axis, plane, etc ).
3) Added text mode to the VAR command. Variable values can be read and wri
tten in ASCII format.
4) EC command can now accept command line parameters if analog voltage inpu
ts aren't used.
5) (U500 ISA/ PCPSO) Added $PSO command to read the status of the 8 inputs
on the PSO card.
V0 = $PSO
6) ARRAY command would not load to DSP array correctly.
7) Added the cubic command This function is used to generate a motion segme
nt based on the following
cubic equation pos = a*t^3 + b*t^2 + c*t
cubic axis dist,a,b,c Ttime
1) Win2k ISA driver support added. Need to use u500isa.inf to install.
2) Fixed problem with 2k PCI when "ABORT ON INPUT BIT" is used. PC would l
ock up.
1) ProgInfo example VI added to show how to call U500 library functions with
out using the code interface node.
V5.14 Date: 5/03/01
( parameter file size is now 1789 bytes, was 1757 )
1) Add new axis parameter x86: "Enable software limit on input"
If input condition is true, software limits function normally. If
input condition is false, software limits are defeated. 0 = off
prm value input checked
0 off
1-8 input 1-8 high
9-16 input 9-16 high
17-24 output 1-8 high
25-32 8x3 IO bank A
33-40 8x3 IO bank B
41-48 8x3 IO bank B
49-56 home limit axis 1-8 ( 1-4 for ISA ) ( hardware level )
57-64 CW limit axis 1-8 ( 1-4 for ISA ) ( hardware level )
65-72 CCW limit axis 1-8 ( 1-4 for ISA ) ( hardware level )
A negative entry will result in a TRUE condition if the input is low.
2) Add new axis parameter x87: "Axis abort on input"
Individual axis abort on input condition. Abort will clear when input
clears. Position must be updated to PC when done. 0 = off.
( see axis prm x86 for inputs )
3) MSET not working properly for commutation initialization.
4) Add bits to general prm #99:
#4 = 1 display axis 5-8 command pos in diagnostic 2 window
#5 = 1 display axis 5-8 in scope window
5) Changed BOARD command so that it is affected by a WAIT ON.
Board would change immediately in an MMI program even if preceded by a W
6) Added two menu choices under the Tools menu. Fiber Command Setup and
Fiber Align Vision Interface. Both are used for fiber alignment.
7) Changed FIBER routine commands. Routine calls no longer take arguments.

Parameters are set beforehand by using the FIBER SETPARAM command.
8) Scope Window now automatically updates the gains for a gantry slave axis
with the gains for the master axis.
9) Added Analog Input Voltage monitor screen to the MMI.
10) Cursor values for the A/D input plots in the scope window were incorrect
11) Add "ABORT AD n,threshold_voltage,flags" command,
where n = A/D channel 0(off), 1-8 > threshold, -(1-8) < threshold
threshold_voltage = abort at this voltage and sample position
flags = 0 (optional,reserved)
12) "Program Setup" Tab added to System Options. The autoexec program (.prg
file) is still specified
in the "Default" Tab. Only the file labeled "Auto-Run" Program will exec
ute on initialization if the
the "Auto-run" or "Silent Auto-run" option is checked.
1) Add support for axis 5-8 ACCELERATION/INDEX/G0/ERRORMASK. Also
aerq_checkstatus2() library commands.
2) Change PSO commands to execute at 1msec rate maximum.
3) Fault Acknowledge would not always clear faults.
4) U500PCI - update firmware to support RDP card.
5) DWell command would not work properly at 8388 second rollover.
6) Ortho output on slave axis not working. Last worked in V5.11.
7) Fix abort. If decel occured faster than 4 msec, library command position
would not match servo command position.
8) PCI: All A/Ds are scanned at 1/4 msec.
9) Aux output bit not working properly.
1) MCODE - would skip command after M code.
2) Change "RM x,y" command y argument from 0-3 to 1-4 scale. See "readmisc.
1) Pulses would stop firing ocassionally.
1) Add support for axis 5-8 status.
2) Windows 98 ISA driver is now A WDM driver "u500isa.sys". u500isa.vxd is
3) Windows 95 is no longer supported
4) Windows 98 ISA and PCI registry entry location has changed. (no longer i
n the vxd folder)
See WAPI or QLIB programming help file.

1) Added U500Fiber.llb that holds all VI's specific to Fiber-Align Applicat
2) Added U500,GetErrMsg VI in u500w32.llb to return ASCII error messages.
V5.15 Date: 8/22/01
( parameter file size is now 1949 bytes, was 1789 )
1) Continuous scan mode type added for Fiber Alignment routine Spiral FINE.
2) Graphical Data Collection Utility added for SpiralFine and SpiralRough Search
3) "Disable Task Mask" added to Program Setup Tab in System Options to allow tas
ks 2, 3, and 4 to be disabled.
4) Scope Window would not accept "text-box" gain changes for gantry axes.
5) GPIB command set added for IEEE 488.2 communication.
6) Added Parameter Editor utility to set up parameters 99 Option Board Setup Cod
e and 501 User Interrupt Setup Code.
7) Fixed bug in Scope Window when displaying position command or feedback values
greater than the limit of the "single" data type.
8) Utility added to replaces any "SPLINE" blocks in the input program with
a series of "CUBIC" commands. The cubic curves pass smoothly through
each of the given spline knots by internally calculating the required
cubic spline coefficients. This utility is installed in the u500\mmi\utility\ d
irectory. The uility name is spline.exe. An example program is listed in splin
e-input.prg. The file README-SPLINE.txt contains directions on using the utilit
1) Dual loop mode: limits do not come in on the proper channel.
2) After a limit FAultacknowledge, the non-limit axes would not accept comma
3) SEgment ARray command would not work for more than one axis.
4) For aborts that take less than 4 msec, internal buffers get out of sequen
and require an additional abort.
5) FAultack causes loss of command position if move is given immediately aft
6) "ABORT AD n,V,flags", add bit #0 to flags to cause continous scanning of
A/D channel
and logging of max ( or min ) convertor value found. ( flags = 1 )
7) Add case 18 to RM ( read misc ) to read max ( min ) A/D convertor
value from "ABORT AD n,V,flags"
8) Gantry slave axis ( 41-44 ) would not track ortho correction properly
with the DY command.
9) In gantry mode 41-44 during home cycle, one of the axes may not execute
the home offset properly. Most likely to occur on ISA card.
10) Position grabbing interrupt did not work after a home cycle in
gantry mode (41-44).
11) For encoder gantry slave axis, position may not be 0 after reset (ISA onl
12) Update encoder FPGA design to hit marker more accurately at high speeds.
13) Increase commutation precision for systems with # electrical cycles > 1.
1) ABort now turns off velocity profiling ( for CM 1 ).
2) FIRE SET command did not work since V5.14 .
3) Contour move: When specifying feedrate in steps/min, proper feedrate was
not calculated.
4) Allow user to define variable as "#define v0 VariableName". This command
should be at the top of a user program and is only valid within a prog
Single character names are not allowed. Use in MEssage command is OK.
5) Axes mapping to drive now works properly using parameters.
6) Increase length of string that can processed by the MMI from 256 characte
to 512.
7) Change general parameters 3,4,5,6 to accept axis names up to 14 characte
If axis name is not XYZU, name must be greater than 1 character long.
8)Add second notch filter axis prm #88. This parameter consists of 5 numbers
N0,N1,N2,D1,D2 separated by commas which are the coefficients of the
filter numerator (N) and denominator (D).
9) MFO adjustment could not be made while a program was executing if Cutter
Radius Compensation was on.
10) Contouring Mode Parameter now defaults to 1.
11) Fiber Routines can now accept power input from either an A/D input or a G
PIB input.
12) Added whole-window parameter to Fiber Hillclimb routine to search the
entire window.
13) Error codes changed in libraries such that there are no longer separate
types of error codes for WAPIAerInitialize and WAPIAerSend. All functio
will be return error codes that can be decoded by either the WAPIErro
rtoAscii or the qlib_errortoascii functions.
14) Fixed error in Environmental Compensation function --- humidity calculati
ons were incorrect.
1) (PCI) Added extra error checking to reads of the status registers.
2) (PCI) Now uses a registry entry to control whether the PCI driver will
service an interrupt.
The registry entry is: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Serv
ices\U500\Parameters\Board n\Interrupt
This entry is created by the installation program. If the value of this
entry is 0, the driver will not service interrupts. If it is non-zero, it
will. The number does not have to be the interrupt number assigned to t
card, it is just used as a flag.
1) Fiber Alignment VI's updated to use library changes. FIBER/GPIB Example
VI added.
V5.16 Date: 1/25/02
1) Fixed Bug In Parameter File Comparator Program
2) Abort Button now aborts motion on all active boards
3) Fixed Diagnostic Window Display of Long Axis Names
4) Parameter Editor would not print parameters by number, only by tab group
5) Axis Tuning Window Would not work for axes with names longer than 1 charac
6) Fixed Bug with FFT Window Axis Select
7) Could not execute subroutines from the MDI Line, (subroutines do work with
in a program)
8) Message Command would not output text to the printer correctly.
9) Added Fiber Alignment Simulation to the Fiber Parameter Editor Screen. Al
so added options to save and load
the parameters to and from separate fiber ini files. They no longer need
to be included within u500win.ini.
10) Changed Notch Filter Calculator in the Parameter Editor. Can now specify
a notch depth.
11) Added option in Fiber Data Display to move to a position on the graph.
1) Increased 2D error map buffer size from 4096 to 16384 points total.
= 73x73 square grid of points (U500PCI only) .
2) 2D error map data could be corrupted if G0 is run and total data size is
greater than 3072 points (PCI).
3) Max distance between points in 2D error map table increased
from 8,388,607 (2^23) to 2,147,483,647 (2^31). (U500PCI only) .
4) Software limit scaling incorrect from command line. Was converting
to program steps and sending directly. Command line argument
should be in units with this fix.
5) Increased G0 internal feedrate to 24.24 and freerun/jog feedrate
to allow higher speeds when axis scale factor is small (PCI only).
6) Change 2D error mapping so that if 3rd axis (Z) is homed while in the
calibration grid, it will remain calibrated. Also now tracks the
outer edges of the table more closely.
7) Remove CM1 MFO adjust added in V5.06. Causes problems for long moves.
8) Add new cases to RM command to
case 20: return global fault mask for axis specified.
This corresponds to axis parameter x55 - Global Fault Mask.
Example: "V0=RM 20,1" ; x axis global fault mask
case 21: return DSP's X: memory base address of internal axis fault buf
This buffer is always located in DSP "X:" memory .
Example: "V0=RM 21,1" ; read axis 1 X: memory address.
case 22: return 0 if axis calibration is not active
1 if axis calibration is active
Example: "V0=RM 22,1" ; read axis calibration flag for X axis
axis argument 1-4 for axis cal, 5-8 for ortho correction.
case 23: return state of primary output bus bits 0-7 ( axis arg is ign
ored )
case 24: return 8x3 io bus direction setting: ( axis arg is ign
ored )
bit #0: 0 = input, 1 = output ( PORT 0 )
bit #1: 0 = input, 1 = output ( PORT 1 )
bit #2: 0 = input, 1 = output ( PORT 2 )
case 25: return current FIRE ARRAY location 0-65535
case 15: ( additions )
bit #6: CW limit hardware status ( mapped to feedback channe
l )
bit #7: CCW limit hardware status ( mapped to feedback channe
l )
bit #8: HOME limit hardware status ( mapped to feedback channe
l )
case 26: returns PID loop output (current command) for the specified ax
To convert to volts, multiply by (10/8388608).
Example: V0 = RM 26,1 ; read PID current command fo
r axis 1
V0 = V0 * 10/8388608 ; convert to volts
9) Gear command can now slave mulitple axes to master channels c1-c4/c5-c8.
Example: GEAR 1,C5 ; axis 1 slaved to U500PCI counter 5
GEAR 2,C6 ; axis 2 slaved to U500PCI counter 6
10) Axis abort does not work ( axis prm x87 ).
11) Gantry mode 29-32 ( current slave ) can be setup to use master's hall sig
if primary feedback setup code ( axis prm x40 ) bit #10 is 1.
( add 1024 to set )
12) Display Servo command (DS): If axis is a gantry master, the slave's
current cmd wil be averaged in also. Scaling is now required when
displaying current cmd."10" gives maximum output of 10V, same scaling
as axis scope window.
13) Change axis parameter #21 from Max overshoot % to "In position time (msec
The axis position error must be less than the in position deadband
for specified number of msec before in position status is true.
Previous default value of 30% ( 2516582 ) results in 0 msec internally.
14) (PCI) Added loop transmission firmware tool.
"LT master,slave,a/d channel,a/d scale,dac1,dac2"
master = 0 off or 1-4/XYZU
slave = 0 none, 1-4/XYZU ( slave axis if gantry )
a/d channel = input disturbance channel (1-8) +/-10V max
a/d scale = scaling of analog input, range = 0-1
dac1 = d/a ouptut channel before disturbance 1-10
dac2 = d/a output channel after disturbance 1-10
15) Analog command would not work if min (start) voltage was greater
than max (end) voltage. ( for ramp down ) Also eng/metric scaling
did not work properly.
16) (PCI) "FIRE ARRAY index,numpoints" : if numpoints = 0, the array will
wrap around to index 0 after executing index 65535.
if numpoints < 0 then array will return to 0 after specified #
of points and not stop.
Ex: "FIRE X PULSE 1000 SET 0 ARRAY 0,-4 ON"
will repeat first 4 array distances continously.
17) (PCI) Add firmware / FPGA support for U500pci RevB. (not in production ye
18) Acceleration feedforward command was sent to the servo loop during
an abort (limit), it now does not.
19) Add bit #7 to general prm #99 ( set to 128 ) to make scope collect data a
1/4 msec. The scope time base still is displayed in msec however.
1) Fiber - Added limit and "return to start" parameters to Fast Align Functio
2) Fiber - Added Centroid algorithm.
3) Fiber - On all threshold or edge_value fiber parameters, removed restricti
on for the parameter value to be
greater than zero. This allows parameter values to be negative wh
en specifying dB for GPIB meters.
4) Allow fire/window/dual commands to select encoder channels 5-8 as ABCD.
Arguments are always in machine steps when ABCD is used (no units).
5) Increase program execution speed in DLL thread.
6) Add "TOGGLE N" option to fire command. If N is specified, the U500PCI will
generate N output pulses. If N is not specified, the TOGGLE command wor
as before in continous mode.
7) Wait ON/ALL now automatically checks bit #23 of read_status(5)
for 0 ( ready for new command ).
1) Would not fire for 3 axes.
1) Fiber - FastAlign VI's missing parameters.
2) Added Centroid VI
V5.17 Date: 7/23/02
1) Fiber Parameter Editor: GeoCenter Values were not saved correctly. Centr
oid Parameter "Return To Start"
was not displayed.
2) Fiber Data Display window would crash if negative input voltage values we
re used.
3) Added Rs232 Terminal Window. MMI can recieve commands from a Com Port.
4) MMI software can now run on a computer that does not have a U500 card. W
hen the software is started
and a card is not found, it will prompt the user to enter demo mode. Th
is mode allows viewing
of all software screens, include the axis scope window and the parameter
editor. No commands can be
accepted and no programs can be run in this mode.
5) Fiber commands entered from the MDI line will no longer cause the MMI to
wait until the fiber routine has
finished execution. Control is returned immediately to the MMI so it ca
n update position and accept commands
while the fiber routine is executing.
6) Added commands to trigger the Fiber Data Collection Display from the MMI:
Fiber Data SPROUGH/SPFINE ; starts data collection for the spiral rough
or spiral fine routines
Fiber Data Stop ; stops the active data collection
7) Added Fault Handling support for the MMI. If any axis has an error condi
tion, and the global subroutine
file has the label :_FAULTS , the commands directly following the label
will be executed.
The jump is done as a "GOTO", so a return statement following the _FAULT
S label will not direct program
flow back to the point before the fault occured. However, a GOTO comman
d can be used after the :_FAULTS
label to direct program flow to another program or to another label in t
he global subroutine file. If a
global subroutine is not specified, or it the _FAULTS label is not prese
nt, no added fault handling will occur.
8) Parameter file Comparer Utility now saves the results to a text file. U
se the "Save As" Option from
the File Menu.
1) U500ISA - keep position during reset ( gen prm #1 ) did not work.
2) U500ISA - Could not read iSBX inputs.
3) Add support for "PHase" command.
4) If current output clamp occurs at time base other than 4khz, current outp
glitches after hitting max current. This only happens if more than one
is enabled.
5) Add delay in servo loop for axes updating < 4Khz to minimize beating
of subsequent axes.
6) Could not use SA and SD on the same move ( CM 1/2 ). Only the second one
would work.
7) Added target position, feedrate, and SA/SD to CM 2 command packet.
8) Increase divide table to 32 so that commutation can go up to 32 cycles pe
r rev.
9) U500PCI: commutation was off by up to 60 degrees when commutating from ha
channels 5-8 or from another axes' encoder channel (1-4).
10) U500PCI: Analog inputs (12 bit ) do not work properly if one or more axes
are configured as amp type stepper (case 2,3,4) .
11) Add general parameter 99, bit #10. When set, and FPGA2 is configured as
velocity feedback, the firmware will read encoder channel 5-8 positions.
These position will be displayed in the diagnostic 2 window and can be
read using aerq_read_position2() with argument "axis" = 8..11 for channel
5..8 respectively.
12) Increased ramp angle increment resolution for CM 1 sine ramp moves. Veloc
command no longer glitches if ramp times are long ( >= 500 msec ).
Firmware is not backward compatible with this change!
13) U500PCI: Increased 2D error map table size from 16384 to 65536. Also allo
two tables at the same time. If two tables are present, each ta
ble can
only contain 32768 points.
14) U500ISA: SLEW C command would cause random errors due to stack problem in
15) U500PCI: Ultra PSO changes/enhancements: ( see install DOCs )
added optional +/- argument to firing distance
added optional "offtime" and "numpulses" to PULSE command
"TOGGLE n" sytnax no longer supported, use PULSE command arguments
to generate "n" pulses.
SINGLE argument added to trigger one pulse event.
"QUEUE PSO" command support added to U500PCI-ULTRA PSO to wait for
pulse train complete.
16) Added 1-d and 3-d Centroid alignment routines.
1) Helix motion wouldn't work if LINEAR argument was used. Had to use G1.
2) The aerq_init or or WAPIAerInitialize functions could not be called more
than once in an application without closing and opening the board pointer
before the function call.
3) If an axis was named other than X,Y,Z, or U, axis motion may not occur
when using contour mode 1.
4) GeoCenter Fiber Alignment Routine did not work in absolute coordinates.
5) MMI programs would occasionally lock-up when collecting data and running
a fiber alignment routine.
6) When using cutter compensation on a helical move, extra linear motion was
added to the end of the move.
7) Add "PHase axis,angle" command where axis = XYZU or 1-4 and angle is betw
-360 and 360 degrees. This command dynamically adds (or subtracts) the
specified amount of phase from the commutation angle. This is a
queued command. Added Qlib command "aerq_phase_adjust()" also.
8) Added squareMode parameter to the GeoCenter routine. If this parameter i
s set to 1, this causes a raster
scan in the axis 1 direction only. Axis 2 edge values are found from the
data collected during the first
raster scan. In this mode, the scan_lines parameter is not used. The n
umber of rows and columns of
geocenter data is found by the (scan_size/scan_increment ) + 1.
9) Could not run programs that sent commands to multiple U500 boards when th
ose boards were configured with
long axis names.
10) Contour mode 1 with sinusoidal ramp, on last move of a G8 profile would
execute ramp down at 1.6 times the progammed time.
11) Add "QUEUE PSO" command to halt queue until PSO busy flag to clears. The
sets its busy flag when executing "PSOF,2,N".
12) Added aerq_fiber_set_sleep_mode function to allow the user to set a sleep
interval that fiber routines use
while waiting for each motion segment to complete. A longer sleep inter
val will free more CPU time but may
increase the algorithm's execution time.
13) The qlb32bc5.lib file for Borland C++ was updated. It previously did not
support new functions added to the dll.
The win32bc5.lib file is no longer installed with the software. The win5
0032.dll can be directly imported
into a Borland project.
14) FastAlign algorithms did not find the peak input value if there were both
positive and negative input values.
15) If G1 axis move distance is less than one machine step but greater
than 0 and in contour mode 1, a windows exception could be generated.
16) FIRE and WINDOW comammds now round to nearest integer machine step if
distances are in units. Fractional machine steps were previously trunca
17) Add "RND()" function to U500 ASCII language. Rounds to the nearest intege
1) FiberExample.VI and were not properly setting the de
vice number. LabVIEW Fiber alignments
would not work using GPIB.
V5.18 Date: 9/23/02
1) Added TCP/IP Server Window. The U500 can connect with up to 10 TCP/IP c
2) When exiting the System Options window with a program loaded, the progra
m would be
replaced with the default program specified in the System Options.
3) Added 3 Visual Basic examples to the u500\mmi\example\vb directory.
They demonstrate how to build a sample RS232 CLient, TCP/IP Client, and
a Fiber Align Project.
4) Silent AutoRun Programs would remap the function keys.

1) The velocity command glitches to 0 during a fault acknowledge when
multiple axes are in a limit.
2) There was a possibility of invalid axis calibration data when
positioned near the end of the calibration table.
3) Added support for the data download and execution of "rotary axis
calibration." ( see library command below )
4) Add "SEgment" option to the ANALOG command to allow sample time base
to be extended from 1 msec. Product of velocity and sample
time must equate to 1 count per sample or greater, other wise
the analog output will remain at its minimum value. If SE is ommitted,
the sample time is 1 msec, as before.
Example: "ANALOG STEPS X VEL 10000 DAC 8,0,10 SE 10" ; 10 msec sample t
5) Add "abort on estop" feature. If ESTOP bit is set in ABORT and DISABLE
fault masks, axis will decel before disabling.
6) Add bit #11 to general prm #99. If set to 1, 2d error mapping correction
will be removed from axes when outside the table.
1) Axis rollover (parameters 011, 012, 013, and 014) would not work
properly when bit 24 of the rollover value was set.
2) Added support for "rotary axis calibration." This allows the axis
calibration table to always roll over at a set distance (the rollover
distance). The format of a rotary axis calibration file is:
Axis # (1-4)
Sample Distance In Machine Steps (>256)
Rollover Distance In Machine Steps
Absolute Machine Step Correction Data
3) Add optional OFF argument to SCOPE command so that scope will not
pop-up. Used for better synchronized data collection when using the CS
1) Installation now provides ISA and PCI device drivers for Windows XP. Lo
cated in the
winXPISA and winXPPCI directories on the installation CD.
1) VI's have all been upgraded. They are now only compatible with LabVIEW
6 and higher.
2) Added example for using the array mode fire command for the U500 PCI.
V5.19 Date: 3/14/03
1) Programs could not be run in "Messages" mode.
2) "Abort" button in the scope window would not abort an active program.
1) Make AUTOFOCUS available for all U500PCI version. For U500ISA requires
ultra version.
2) If "ANALOG OFF" command is issued when analog tracking is not active, t
next ANALOG command will not work. The one after that will however.
3) Added support for DUAL command additions (see library section).
4) Scanned position capture mode would return incorrect position on occass
off by 65536 counts.
5) Window counters now invert counting direction if axis parameter 11 is n
i.e. "+ move is CW" is false. This makes tracking display and window
have the same polarity. (U500PCI + PSO only).
6) Add case 27 to RM command to read U500PCI inputs 3-0B.
RM 27,n where n = -1 reads inputs as 4 bit parallel word
= 0-3 read individual input bits, return 0/1
Example: V0 = RM 27,0 ; read bit 0
Example: V0 = RM 27,-1 ; read in3-0B as 4 bit parallel word
7) Add bits 11-8 to OU command to set U500PCI output 3-0B.
8) Gantry mode slave axis position command would occur 1/4 msec before
master axis command during the marker search portion of the home cycle.
This would cause axes to fight especially on very rigid gantries.
9) Fix FIRE array mode when only two points were specified. Firing
would not turn off after the second point.
1) Assigning variables in exponential format with negative exponents did no
t work. (i.e V106 = 1.257e-4)
2) Added DUAL command [optional arguments]
"DUAL PULSE ontime[,offtime,numpulses] [SINGLE/TOGGLE]"
ontime is pulse on time in usec
(opt.) offtime is pulse off time in usec
(opt.) numpulses is number of pulses to generate at each trigger even
SINGLE generates a software "trigger" event ( numpulses wil
l be output )
TOGGLE generates a continuous stream of pulses. turn off wi
see "DUAL PSO enhancements in v519.doc" for more info.
3) Added bounds checking on "ontime","offtime", and "count" arguments for
FIRE PULSE command. ( Single axis PSO ).
4) Part rotation did not work when cutter comp was on.
5) Add "QUEUE AXISFLAG XYZU mask" command. This command halts the current
plane until the condition specified by "mask" is true for the axes spec
One to four axes may be specified. The following mask bits may be combi
mask = bit #0 (1) wait for axis enable
bit #1 (2) wait for axis disabled
bit #2 (4) wait for axis velocity command == 0 (stopped)
bit #3 (8) wait for axis velocity command != 0 (moving)
bit #4 (16) wait for axis in position ( does not check enable, o
r velocity command status)
bit #5 (32) wait for axis not in position (""")
6) Add "QUEUE OUTPUT bit#,hi_low,..." command. Halts the current plane
until specified outputs match the specified state.
7) Now distributing qlb32bc.lib and win32bc.lib. These allow Borland C V
ersion 5 and Borland C++ Builder 6
users to link with the QLIB and WAPI libraries. Examples are in the u
500\mmi\example\Borland directory.
1) Driver now stores axis positions as 64-bit quantities. Version 5.19 Dr
ivers must now be used only with
5.19 or higher versions of qlb50032.dll and win50032.dll.
1) Added new example VI for program execution using the WAPIAerRunProgram
2) Upgraded Can now run complete programs from this VI.
V5.20 Date: 1/12/04
1) Scope window will display data correctly when the 0.25ms sampling mode is
enabled with parameter 99.
2) Using variables with the message command did not work correctly when usin
g multiple tasks.
3) When using German/French Windows settings, numeric values used with the m
essage display command would
always be truncated to integer values.
1) Add bit #6 to axis parameter 78 "Servo loop type". If set ( add 64 )
the axis position will not be sampled during a user interrupt (UINT)
event. The internal array will resize as follows:
bit #6 cleared array size
4 axes (all) 4096 4 axis positions are collected
3 axes 5461 3 axis positions are collected
2 axes 8192 2 axis positions are collected
1 axes 16384 1 axis positions are collected
aerq_posgrab_read_array_size() return value will adjust per the
above table.
aerq_posgrab_read_position() will still return 4 positions with
"0" in the defeated axes.
2) Resolver dual loop mode did not work for PCI card. Also when using a reso
only one feedback setup code per axis should be set to 5 ( dynamic swit
ching mode ).
3) Limit did not work with resolver feedback.
4) Cable interlock may be defeated by "MW Y,0x0A,0x800000,OR" command. This
is for demo purposes only and is NOT recommended for normal operation.
5) Gantry bug during homing. The home offset move could be skewed betwen
the master and slave by one msec. This does not always occur. Also
abort during gantry marker search can cause axis skew, this problem
has not been corrected.
6) Stepper encoder scaling routine output is now blocked if axis is disabled
7) (U500ISA only) DSP memory overlap problem may cause UINT malfunction.
8) FPGA for two axis firing did not work in x2 encoder decode mode.
9) Add UINT capability for U500PCI base.
10) Add bit #11 ( 2048 ) to axis prm 40 to allow clk/dir input rather than s
"sin" input becomes "clk" input - rising edge active.
"cos" input becomes "dir" input - 25nsec setup time before rising clk ed
ge, 0 hold.
11) Firmware changed so that PSO WINDOW counter always matches diagnostic
window polarity. Now takes into account axis prm x82 and axis prm x40.
12) AXIS 5-8 would ignore (home direction) limit after homing sequence.
13) AXIS 5-8 would allow + or - freerun commands when either limit is active
Now only freerun command away from limit will execute.
1) Updated aerq_posgrab_read_position function to return double precision
position data to avoid rollover problem around 2^31 machine count.
2) The FIRE, WINDOW, and DUAL commands did not correctly decode the D2 argument.
3) Axis 5-8 FReerun commands could cause the MMI to stop executing the program.
4) Added WAPIAerSetSecondaryAxisPosition and aerq_set_secondary_axis_position fu
that will change the value of position registers for Axis 5 - 8.
1) Fixed the U500 ISA driver for Windows 98. ISA cards would not initialize in
Win 98.
2) ISA driver in Windows 2000/XP did not communicate with the PC-PSO card.
V5.21 Date: 3/17/04
1) The Axis Tuning window did not correctly load plots that were generated and s
aved in previous versions of
software. Now all plots from previous versions are supported.
1) Axis 5-8 freerun commands can now be commanded in velocity mode. Previously
these commands also required
a specified move distance.
FR A10000,1 ; velocity mode - freerun axis A at 10000 counts/sec and acc
eleration rate of 1
FR A10000,1000,1 ; distance mode - freerun axis A 1000 counts at 10000 counts
/sec and acceleration rate of 1
2) Single axis firing when used with array mode and window mode, would incorrect
ly load the first and second
array values immediately into the firing counter.
1) Un-commanded "CUBIC" command axes could have random command position register
2) The WAPIAerWaitForInterrupt/aerq_wait_for_interrupt functions did not properl
y reset the interrupt event. This
only allowed one interrupt event change to be seen unless the user manually c
alled the ResetEvent function.
3) Added a new parameter, "mode", to the aerq_freerun2 function. If mode = 0, ve
locity mode is used and the "dist"
argument is ignored. (See FIRMWARE Note 1)
AERERR_CODE aerq_freerun2(BOARD *pb, short axis, double feedrate, long dist,
double accel, short mode )
1) Changed Windows 2000/XP PCI device driver interrupt handler for compatibility
with dual processors
(ACPI Multiprocessor HAL's).
V5.22 Date: 4/12/04
1) The Axis Tuning window could not display position error when position values
exceeded 2^31.
2) The Help Menu Item would not always find the correct path for the help file.

3) When choosing default programs from the System Options windows, messages mode
could be inadvertenly activated.
1) V5.21 firmware change 2.) caused single axis firing to be nonfunctional in al
l cases
except window mode. Now fixed.
1) The Windows NT ISA driver did not initialize properly.