|
NAME kl2000 - Newport MM2000/MM3000 motor
controller
DESCRIPTION
The Newport (formerly Klinger) MM2000 and MM3000 motor
controllers are supported by spec on both
RS-232C and GPIB interfaces. The MM2000 is also supported on the
ISA bus interface. On the serial interface,
spec supports the daisy chaining available on
the MM2000 and MM3000 controllers. All these controllers can be
used both with DC motors (with encoders) and with the 1.5M-type
stepper motors.
The controller is selected in the config file as
| -
RS_MM2000 = device_name baud_rate number_of_motors
RS2_MM2000 = device_name baud_rate number_of_motors
GP_MM2000 = gpib_address number_of_motors
PC_MM2000 = base_address number_of_motors
|
|
depending on the interface being used. The second example above
selects the daisy-chained RS-232C configuration.
When running the configuration editor, switch to the device
configuration screen to select the appropriate interface. On the
motor screen, select the MM2000 or
MM2000_E controller type for each motor to be
controlled. The latter choice indicates encoders are being used.
By default, motors are automatically assigned to the
controller channels in the same order they appear on the motor
screen. If there is more than one controller, the channels are
assigned to the controllers in the order in which the controllers
appear on the motor device screen. Also available is the new
nonconsecutive channel assignment feature that has been
implemented for selected motor controllers. Controller unit and
motor channel numbers can be selected and assigned on the second
line of the motor configuration screen in any order. Not all
channels need to be assigned.
When using the daisy chain feature, if automatic channel
numbering is selected in the configuration file, the controller
daisy-chain addresses must be assigned consecutively starting
with address 0 using either the controller dip switch, the
controller front panel menu or by sending a command over the
serial interface. If the unit/channel configuration is used, the
daisy-chain addresses will be derived from the channel number.
PARAMETERS
spec allows a number of additional
parameters to be set in the configuration file and by the
motor_par() function for these controllers. Use the
configuration editor to establish the long-term values of the
parameters in the configuration file. Use
motor_par() to make changes to the parameters that
only are in effect during a particular spec
session. To set the parameters from the configuration editor,
use the m command from the main motor screen to access the
optional-parameter screens.
The following parameters are associated with DC motor
operation. The two-letter command sent to the motor controller
associated with each parameter is given in parenthesis.
motor_par(motor,
"dc_proportional_gain" [, value])
- If
value is given, sets the
proportional gain, otherwise returns the current value.
("KP")
motor_par(motor,
"dc_derivative_gain" [, value]) - If
value is given, sets the derivative gain (or
damping constant), otherwise returns the current value.
("KD")
motor_par(motor,
"dc_integral_gain" [, value]) - If
value is given, sets the integral gain,
otherwise returns the current value. ("KI")
motor_par(motor,
"dc_integration_limit" [, value])
- If
value is given, sets the
integrator limit, otherwise returns the current value.
("IL")
motor_par(motor,
"dc_sampling_interval" [, value])
- If
value is given, sets the
derivative sampling interval, otherwise returns the current
value. ("DS")
motor_par(motor,
"dc_following_error" [, value]) - If
value is given, sets the following-error
threshold, otherwise returns the current value.
("FE")
To set the gain for the tth motor, for example,
use
| -
motor_par(tth, "dc_proportional_gain", 1000)
|
-
motor_par(tth, "dc_proportional_gain")
|
returns the current value of the
"dc_proportional_gain" parameter.
Another motor_par() parameter is:
motor_par(motor, "slop" [,
value]) - If
value is given, sets a threshold value in
steps, below which spec suppresses position
discrepancy messages when spec and the motor
controller disagree about motor position, otherwise returns the
current value.
COMMAND PASS THROUGH
Command pass through is available using the following:
motor_par(motor, "send",
cmd) - Sends the string
cmd to the MM2000 channel associated with
motor. For example, set
cmd to "SB1,3,8" to set output
bits 1, 3 and 8.
motor_par(motor, "read",
cmd) - Sends the string
cmd to the MM2000 channel associated with
motor, as above, and returns a string
containing the response.
JOYSTICK To enable joystick control for a
particular motor, use the command
| -
motor_par(motor, "joy_on", channel)
|
where motor is the motor number and
channel is the channel number, as explained
in the Klinger manual for the JY command. To
disable joystick control, use the command
| -
motor_par(motor, "joy_off")
|
Not only does the "joy_on" command send the proper
joystick enable codes to the MM2000/MM3000, but it also changes
behavior within spec. In particular, position
discrepancies between spec and the controller
are automatically corrected in favor of the controller for all
commands, except for the sync and
reconfig commands. (A message is printed, though,
when the position correction is made.) In addition, when
joystick control is enabled, the motor controller is queried to
read the current position for the motor on all
getangles commands, not just when the motor is
active, as is the joystick-disabled case.
Suggested macros for controlling the joystick are:
| -
def joy_on '
if ($# != 2) {
print "Usage: joy_on motor channel"
exit
}
_check0 "$1"
motor_par($1,"joy_on",$2)
'
def joy_off '
if ($# != 1) {
print "Usage: joy_off motor"
exit
}
_check0 "$1"
motor_par($1,"joy_off")
'
|
|
To make things even easier, you could define macros such as
| -
def on_joy '
joy_on tth 1
joy_on th 2
joy_on chi 3
joy_off phi 4
'
|
-
def off_joy '
joy_off tth
joy_off th
joy_off chi
joy_off phi
'
|
LIMITATIONS The MM2000/MM3000 motor controller only
allows its internal position registers to be set to zero. Thus
the chg_dial() function (used by the
set_dial macro) will not accept nonzero position
arguments. Similarly, if there is a motor position discrepancy
between spec and the controller, if you choose
to change the controller register position to agree with
spec and if the spec dial
position is not zero, the spec dial position
will instead be changed to agree with the controller, and the the
spec offset parameter will be changed to
keep the same spec user-units position.
VERSION
The above description describes the MM3000 firmware version
2.3.
... Meeting the software needs of scientists since 1985 ...
Last Formatted May 12, 2012
Last Updated 05/04/12
Send comments, queries, suggestions to
info@certif.com
© 1995-2003 Certified Scientific Software. All rights reserved
|
|