forked from epics_driver_modules/motorBase
ce53b5b9de
- Document PM500 LSIZE setting.
126 lines
4.2 KiB
Plaintext
126 lines
4.2 KiB
Plaintext
Newport ESP300
|
|
==============
|
|
|
|
Serial communication using the GreensSpring XM Octal I/O.
|
|
---------------------------------------------------------
|
|
|
|
The GreensSpring XM Octal I/O has a 16 pin jumper block for each serial port.
|
|
Assume (the manual does not define this) that the jumper pins are numbered
|
|
from, top to bottom, and from left to right; i.e.,
|
|
1 2 3 4
|
|
5 6 7 8
|
|
9 10 11 12
|
|
13 14 15 16
|
|
|
|
Then the "Default jumbering ..." depicted in Fig. 2 of the GreensSpring XM
|
|
Octal I/O manual is jumpered as follows; 1-5, 2-6, 9-13, 10-14.
|
|
|
|
The correct jumpering for the ESP300 is; 1-5, 2-6, 9-13, 10-11, 15-16.
|
|
|
|
|
|
Setting the motor resolution (MRES) field.
|
|
------------------------------------------
|
|
|
|
For DC motors, set MRES to the ESP300's response to the SU? command.
|
|
|
|
If there is no other mechanism (e.g., generic serial record, dumb terminal,
|
|
etc.) to communicate to the ESP300, the response to the SU? command can be
|
|
determined by following this procedure;
|
|
|
|
1 - uncomment the "USR_CFLAGS += -DDEBUG" line in the NewportSrc/Makefile.Vx
|
|
file (This selects the diagnostic messages to be compiled).
|
|
2 - "cd <motor>/motorApp/NewportSrc; gnumake clean; gnumake"; this re-compiles
|
|
the device drivers with the diagnostic messages selected.
|
|
3 - Rebuild your IOC; "cd <IOC>; gnumake".
|
|
4 - Add "drvESP300debug = 4" to the IOC's st.cmd file before "iocInit".
|
|
5 - Connect to the VxWorks shell and reboot the IOC.
|
|
|
|
The VxWorks shell output should contain lines like the following;
|
|
|
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
Starting iocInit
|
|
recv_mess(): message = ""
|
|
send_mess(): message = VE?
|
|
recv_mess(): message = "ESP300 Version 3.03 04/13/00"
|
|
send_mess(): message = ZU
|
|
recv_mess(): message = "0H"
|
|
send_mess(): message = 01ST
|
|
send_mess(): message = 02ST
|
|
send_mess(): message = 03ST
|
|
send_mess(): message = 01SU?
|
|
recv_mess(): message = "0.00005101"
|
|
send_mess(): message = 01MD
|
|
recv_mess(): message = "1"
|
|
send_mess(): message = 01TP
|
|
recv_mess(): message = "0.00000"
|
|
send_mess(): message = 01PH
|
|
recv_mess(): message = "18000000H, 7H"
|
|
send_mess(): message = 01MO?
|
|
recv_mess(): message = "0"
|
|
send_mess(): message = 02SU?
|
|
recv_mess(): message = "0.00005101"
|
|
send_mess(): message = 02MD
|
|
recv_mess(): message = "1"
|
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
Note the response to the SU? commands and set MRES to that value.
|
|
|
|
6 - Turn off diagnostic messages. Either set drvESP300debug = 0 in the st.cmd
|
|
file (there is a very small amount of CPU overhead associated with leaving
|
|
the diagnostic messages loaded), or go to step #1, and reverse the steps;
|
|
comment out the "USR_CFLAGS += -DDEBUG" line in the NewportSrc/Makefile.Vx,
|
|
etc., etc.,
|
|
|
|
|
|
Newport ESP100
|
|
==============
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
- Unlike the ESP300, the ESP100 must be told what type of motor it is connected
|
|
to. This is done using the "Set Motor Type" command; QM. "QM" arguments are
|
|
as follows:
|
|
0 - motor type undefined (default).
|
|
1 - DC servo motor.
|
|
2 - stepper motor.
|
|
3 - commutated stepper motor.
|
|
4 - commutated brushless DC servo motor.
|
|
After setting the motor type, the value must be saved to non-volatile memory
|
|
using the "SM" command.
|
|
|
|
Example
|
|
-------
|
|
|
|
Setting and saving an ESP100 for use with a DC servo motor driven stage (e.g.,
|
|
850G);
|
|
|
|
1QM 1<CR>
|
|
SM<CR>
|
|
|
|
|
|
Newport MM4000
|
|
==============
|
|
|
|
The MM4000 controller has an approximately 50ms delay before it responds to a
|
|
status query. Hence, it is impossible to get more that a 20 Hz update rate
|
|
from the MM4000; 7 or 8 Hz is attainable. This 50ms delay exists with both
|
|
RS232 and GPIB communication interfaces.
|
|
|
|
|
|
Newport PM500
|
|
=============
|
|
|
|
The PM500 has high and low speed loops. Since the EPICS PM500 device driver
|
|
does not set any of the low speed parameters (i.e., LSIZE, LACCEL, LDECEL, LV),
|
|
the low speed loop feature may interfere with EPICS setting the slew velocity.
|
|
I recommend preventing the PM500 from ever using the low speed velocity loop by
|
|
setting the Low Speed Loop Threshold (LSIZE) to the motor record's Retry
|
|
Deadband field (RDBD).
|
|
|
|
The LSIZE can be set from the EPICS motor record by entering the PM500 command
|
|
in the record's INIT field. LSIZE is in units of either um or arc-sec. For
|
|
example, if your RDBD = 0.123 mm, then set the INIT field to "LSIZE 123.0".
|
|
|
|
|