Files
motorBase/documentation/motor_release.html
T
2002-07-18 19:14:13 +00:00

716 lines
36 KiB
HTML

<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
<meta name="Author" content="Ronald L. Sluiter">
<meta name="Description" content="Synopsis of modifications, fixes and new features for each motor record release.">
<title>EPICS Motor Record Release Notice</title>
</head>
<body>
<center>
<h1> <b><u>Motor Record Version 4.5 Release Notice</u></b></h1>
</center>
<b>!WARNING!</b><br>
motorRecord.dbd has been modified.&nbsp; This requires you to 'rebuild' any
and all user trees (i.e., &lt;ioctop&gt;) that load the motor record (see
README item #2 for details).
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<b><u>Communication Retries</u></b>
<p>Once a communication error is detected, one retry is attempted (Further
retries are made, if the position RETRY field is non-zero).&nbsp; If the retry
fails, then a communication error is reported.&nbsp; No further attempt is
made to communicate with the controller until subsequent user input (e.g.,
a new target position is entered).&nbsp; This change affects all device drivers
using GPIB or RS232 serial communication mechanisms (i.e., non-VME Bus boards).
</p>
<h4> </h4>
<h4>
<h4><u>Requirements Clarification</u></h4>
</h4>
The requirements on how the motor record processes a new target position
while the motor is in motion have never been specified.&nbsp; The requirements
are as follows:<br>
<blockquote>Case #1: &nbsp;The motor record is given a new position, which
is in the opposite direction from the current motor motion.&nbsp; The motor
is immediately stopped and given a motion command to the new position.</blockquote>
<blockquote>Case #2: &nbsp;The motor record is given a new position, which
is in the same direction as the current motor motion, but the new position
is closer to the motor's current position than the original target position.&nbsp;
The motor is stopped after it has gone past the new position; then a command
is given to return to the new position.<br>
<br>
Case #3: &nbsp;The motor record is given a new position, which is in the
same direction as the current motor motion, but the new position is further
from the motor's current position than the original position. &nbsp;After
the motor reaches the original target position and stops, a command is given
to the new target position (Previous motor record versions ignored the new
target position.)</blockquote>
<h4><u>Bug Fix for Driver Power Monitoring error</u></h4>
The <i>Driver Power Monitoring</i> feature (available only with OMS VME58
controllers) was erroneously and randomly being enabled.&nbsp; This resulted
in the error message <i>Drive power failure at VME58 card# motor# </i>appearing
at the VxWorks console.
<p><b><u>Soft Channel device support modifications</u></b> </p>
<ul>
<li> Prevent record processing before "interruptAccept" is true.&nbsp; This
helps prevent alarms.</li>
<li> If the readback is changing, but motion was not initiated by this
record, then reset the motor record's target to actual position (i.e., VAL/DVAL/RVAL
= RBV/DRBV/RRBV) after the move.</li>
<li>Lowered the priority of the "soft_motor task below the "dbCaLink"
task.&nbsp; This fixes the "DMOV processing before the last DRBV update"
problem.<br>
</li>
</ul>
<b><u>Bug Fix for Array Holes in VMEbus based controllers</u></b>
<p>For VMEbus based motor controllers only (i.e., OMS), a <i>hole</i>
in an array of VME based motor controller boards caused the system to crash
with a memory <i>access error</i> on the address of the missing controller.&nbsp;
For example, if oms58Setup(3, 8, 0x4000, 190, 5, 10) was issued without a
board at 0xFFFF5000, a bus error would occur if the user attempted to move
a motor on the missing board.</p>
<p>This release allows <i>holes </i>in an array of VMEbus based motor
controllers. </p>
<p><b><u>RES Field</u></b> </p>
<p>With previous releases of the motor record, the RES field was set
to either ERES or MRES, based on whether or not the following statement was
true; MSTA indicates an encoder is present, AND, UEIP is set to YES.&nbsp;
This state (i.e., MSTA indicates an encoder is present, AND, UEIP is set to
YES) resulted in the record converting all position and velocity related values
from EGU's to raw encoder counts before sending them to the motor controller.&nbsp;
This is the manner in which the OMS controllers work (see OMS User's Manual,
ER# command).</p>
<p>With this release, all raw positions, velocity and acceleration are
in terms of motor steps. &nbsp;The RES field is preserved for backward compatibility
only. &nbsp;With this release, the RES field is always equal to MRES. <br>
</p>
<h4><u>Backlash Correction</u></h4>
Previous motor record releases put both the "slew" and backlash correction
moves on the same motor controller command line.&nbsp; Some controllers (i.e.,
OMS) handled this correctly by processing the slew move followed by the backlash
correction move.&nbsp; Other controllers (i.e, Newport) did not handle this
correctly and processed the commands immediately, resulting in the controller
moving to the target position without backlash correction, but at the backlash
correction velocity.<br>
<br>
With this release, backlash correction commands are not issued to the controller
until after the slew move is completed.<br>
<h4><u>Separa</u><b>te +/- Limit Switch status bits</b></h4>
The MSTA field has been modified by providing separate +/- limit switch status
bits. &nbsp;The MSTA bits are defined as follows:
<blockquote>
<ol>
<li> DIRECTION: (0:Negative, 1:Positive)</li>
<li> DONE: motion is complete.</li>
<li>PLUS_LS: plus limit switch has been hit.</li>
<li> HOMELS: state of the home limit switch.</li>
<li> Unused</li>
<li> POSITION: closed-loop position control is enabled.</li>
<li> Unused</li>
<li> HOME: if at home position.</li>
<li> PRESENT: encoder is present.</li>
<li> PROBLEM: driver stopped polling.</li>
<li> MOVING: non-zero velocity present.</li>
<li> GAIN_SUPPORT: motor supports closed-loop position control.</li>
<li>COMM_ERR: Controller communication error.</li>
<li>MINUS_LS: minus limit switch has been hit.<br>
</li>
</ol>
</blockquote>
<br>
<center>
<p><b><u>New Features</u></b></p>
</center>
<p><b><u>Advanced Control Systems and Mclennan device driver support</u></b>
</p>
<p>Mark Rivers has added device driver support for the following motor
controllers: </p>
<ul>
<li> Advanced Control Systems, Corp. model MCB-4B</li>
<li> Mclennan model PM304</li>
</ul>
<center>
<h1> <b><u>Motor Record Version 4.4 Release Notice</u></b></h1>
</center>
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<b><u>Disable Travel Limits</u></b>
<p>The travel limits can be disabled by setting both dial high and
low limits equal to zero; i.e., DHLM = DLLM = 0. </p>
<p><b><u>RVAL ignored error</u></b> </p>
<p>A problem was discovered with entering target positions through
RVAL.&nbsp; If the difference between the current and the next target position
(i.e., RDIF, DIFF) was less than the retry deadband (RDBD), and the next
target position was in the "preferred direction", then the new RVAL was ignored.&nbsp;
This error occured on releases as far back as V3.4. </p>
<center><b><u>New Features</u></b></center>
<b><u>Jog velocity and acceleration parameters</u></b>
<p>Two new fields (JVEL and JAR) were added to&nbsp; support jog velocity
and acceleration parameters.&nbsp; These fields are only supported with Oregon
Micro Systems, Inc device driver support.&nbsp; The JVEL field allows the
user to change the jog velocity of the motor on-the-fly. </p>
<center>
<h1> <b><u>Motor Record Version 4.3 Release Notice</u></b></h1>
</center>
This release of the motor record is strictly a bug fix release; no new features
have been added.
<p><b><u>STOP field hangs record</u></b> </p>
<p>An error was introduced into the motor record with the release of
V4.2 (see README file item #14 under V4.2 ).&nbsp; This error occurred if
the STOP field was activated when the motor was not moving (i.e., MIP = 0).&nbsp;
The motor record would become "stuck", and not respond to a move request (due
to the internal state machine associated with IP being set to the "stop"
state), until the condition was cleared by either a SPMG-stop or some other
user action that forced the MIP field to zero. </p>
<p><b><u>HIDEOS support removed</u></b> </p>
<p>HIDEOS is no longer supported.&nbsp; MPF is the only supported alternative
to HIDEOS. <br>
&nbsp; </p>
<center>
<h1> <b><u>Motor Record Version 4.2 Release Notice</u></b></h1>
</center>
This release of the motor record is compatible with EPICS R3.13.2 and above.
<p><b>!WARNING!</b> <br>
motorRecord.dbd has been modified.&nbsp; This requires you to 'rebuild' any
and all user trees (i.e., &lt;ioctop&gt;) that load the motor record (see
README item #20 for details). <br>
&nbsp; <br>
&nbsp; </p>
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<b><u>Precedence between field pairs</u></b>
<p>At boot-up, if one field of a field pair (i.e., VMAX/SMAX, VBAS/SBAS,
VELO/S, BVEL/SBAK) is zero and the other field is nonzero, the nonzero field
takes precedence.&nbsp; If both fields of a given field pair are nonzero,
the RPS member of the field pair (i.e., SMAX, SBAS, S, SBAK) takes precedence.&nbsp;
This requirement was lost with the release of V4.0. </p>
<p><b><u>Moving Off a Limit Switch with a Oms58 device</u></b> </p>
<p>An error occurs with the OMS VME58 when the user runs the motor
into a limit switch and then attempts to move away from the limit switch.&nbsp;
If either an absolute or incremental move is utilized to move away from the
limit switch, the OMS VME58 ignores the 1st move attempt.&nbsp; Subsequent
moves work.&nbsp; In addition, the user can jog off a limit switch.&nbsp;
This error was hidden in most applications if RTRY was nonzero. </p>
<p><b><u>Separate motion commands for target and backlash moves</u></b>
</p>
<p>The record level support assumed that the motor controller would
accept two motion commands on the same command line.&nbsp; This occurs when
backlash compensation is enabled.&nbsp; Since the IM483[PL/SM] controller
does not have this capability, support for a command line "record separator"
character was added.&nbsp; The record separator is defined as an ASCII (IS2)
character = /x1E.&nbsp; Currently, only one record separator is allowed in
a command line. </p>
<p><b><u>Errors introduced in V4.0</u></b> </p>
<p>Unfortunately, several errors were introduced into the motor record
with V4.0.&nbsp; The following have been fixed: </p>
<ul>
<li> If the "ncards" argument of the omsSetup() function in st.cmd file
was not accurate (i.e., did not match the actual number of OMS VME8/44 boards
in the VME crate); the "dbior" command could result in erroneous information
or a bus error.</li>
<li> Jog request would not work after the state of the UEIP field was changd.</li>
<li> Backlash correction was not occurring after a JOG.</li>
<li> The motor record would 'hang' in the moving state on the rare occasion
when a target position (i.e., VAL or DVAL) fell almost exactly half way between
two integer RVAL values, and the retry feature was enabled (i.e., RTRY is
nonzero)</li>
</ul>
<center>
<h4> <b><u>New Features</u></b></h4>
</center>
<b><u>Newport PM500 device support</u></b>
<p>Device driver support for the Newport PM500 is available for this
release of the motor record.&nbsp; This device/driver is based on Mark River's
PM500 V2.0 release. </p>
<p><b><u>Intelligent Motion Systems, Inc. IM483 device support</u></b>
</p>
<p>Device driver support for Intelligent Motion Systems (IMS) IM483[I/IE]
is available with this release.&nbsp; Two different device/drivers are available
for the same motor&nbsp; controller.&nbsp; The two device/drivers, IM483PL
and IM483SM, correspond to the two available IM483 communication modes, <i>
party line </i>and <i>single mode</i>, respectively (see the IMS Software
Reference Manual for details). <br>
&nbsp; </p>
<center>
<h1> <u>Motor Record Version 4.1 Release Notice</u></h1>
</center>
Although the motor record software in this release is compatible with EPICS
baseR3.13.1.1 and above, the directory structure, the "make" files and the
configuration files are intended for the "unbundled" architecture of EPICS
R3.13.2 and above.
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<h4> <b><u>OMS VME58 retry problem</u></b></h4>
Several errors in the OMS VME58 driver were found.&nbsp; All the errors caused
the same problem.&nbsp; Namely, erroneous retries occurred intermittently
when multiple axes were commanded to move on the same controller.&nbsp; This
error occurred because old position data was being passed back from the driver
after Done was detected.&nbsp; The erroneous intermittent retries occurred
more often when the Oms setup parameters called for a high frequency (e.g.,
60 Hz) "polling" rate and OMS board interrupts were enabled.
<h4> <b><u>OMS Stop problem</u></b></h4>
A problem with issuing a stop command (via either the STOP or SPMG field)
was found with <b>all</b> OMS boards and <b>all </b>versions of the OMS device
drivers.&nbsp; The root cause of this problem is a statement in the OMS manual
<i>that is not entirely correct</i>; the AC and VL commands are not
completely queued. <br>
&nbsp; <br>
&nbsp;
<center>
<h1> <u>Motor Record Version 4.0 Release Notice</u></h1>
</center>
Release 4.0 of the motor record is <u>only</u> compatible with EPICS baseR3.13.1.1
and above.&nbsp; This document describes changes made to the motor record
and its' associated device driver support between versions 3.5 and 4.0.
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<h4> <b><u>GAIN Field Removed</u></b></h4>
Since the GAIN field is redundant (i.e., PID parameters can be set individually)
it has been removed. <br>
&nbsp;
<h4> <b><u>HOM[F/R] Bug Fix</u></b></h4>
Previous releases of the motor record had a potential problem associated
with the homing function.&nbsp; The motorx_all.adl V1.9 MEDM display sets
the HOM[F/R] fields on and off, corresponding to the user pressing and releasing
the respective home button.&nbsp; Depending on the <i>pollRate</i> defined
in the st.cmd <i>Setup</i> command and the speed at which the user toggled
the HOM[F/R] buttons; the record level software would turn off the DMOV field
when the HOM[F/R] button was turned off and a motor status update had not
yet been received.&nbsp; As a result, when the motor completed it's homing
function the command positions (i.e., VAL, DVAL, RVAL) were not updated.
<p>All previous motor record releases contained the DMOV problem; the
commanded position update problem was limited to the previous release (V3.5).&nbsp;
With this release, a dbPutField to either HOMF or HOMR is valid on a FALSE
to TRUE transition (i.e., 0 to 1), but a TRUE to FALSE transition (i.e., 1
to 0) will result in an error.&nbsp;&nbsp; <i>motorx_all.adl_V2.2</i> (which
is included with this distribution) sets the HOM[F/R] fields on when the
user presses the homing button, but is does <b>not</b> set it off when the
button is released.&nbsp; The motor record clears the HOM[F/R] field when
the homing operation is done (i.e., completed or terminated). <br>
&nbsp; </p>
<h4> <u>Initial Position</u></h4>
If both the auto restore and controller target position values are non-zero
at boot-up, then DVAL will be initialized from the controller's value.&nbsp;
In other words, the controller's target position takes precedence over the
autorestore value when both systems have non-zero DVAL values.&nbsp; As before,
it is assumed that a zero target position from autorestore or the controller
at boot-up are default values, and hence, they are ignored in favor of a
non-zero value.
<p>Previous releases of the motor record allowed the auto restore to
take precedence over the controller when initializing the target position
(i.e., DVAL). <br>
&nbsp; </p>
<h4> <u>Access Security Level</u></h4>
In order to support the new VMAX/SMAX fields, the Access Security Level for
the following fields have been changed from one to zero:
<blockquote>
<ul>
<li> MRES</li>
<li> UREV</li>
<li> VBAS</li>
<li> SBAS</li>
</ul>
</blockquote>
<h4> <u>MM4000/5 Device Driver</u></h4>
Although the previous motor record release (V3.5) had device driver support
for the MM4000, it is <b>not</b> recommended for use with either the MM4000
or the MM4005 controllers.&nbsp; The following changes were made to the previous
release to create, what is now, the MM4000/5 device driver support:
<ol>
<li> The MM4000 device driver software supports both the MM4000 and MM4005
controllers.&nbsp; Driver level software detects and saves which controller
it is communicating with at boot-up.&nbsp; Currently, there are two functional
differences&nbsp; between the two models.</li>
<ol>
<li> The MM4005's position cannot be set by a host.&nbsp; This mean that,
for the MM4005 only, setting the motor record RVAL or DVAL fields has no
effect.</li>
<li> Since the MM4005's position cannot be set by EPICS, the initial position
of its' motors (see <i>Initial Position </i>above) will always be initialized
from the controller's value.</li>
</ol>
<li> The MM4005 supports up to eight axes.&nbsp; User access to the controller's
front panel is required to scroll the front panel display through all eight
axes.&nbsp; Since <i>remote mode</i> locks out the user from using the controller's
front panel, the motor record no longer puts the MM4000/5 in <i>remote mode</i>
.&nbsp; EPICS is unable to communicate with the MM4000/5 controller if it
is in <i>local</i> <i>mode</i> and the front panel is not at the top menu.&nbsp;&nbsp;
A <i>Controller communication error</i> bit was allocated in the MSTA field
to help aid user's in diagnosing a controller communication error.&nbsp;
Currently, only the MM4000/5 device driver sets this error indicator.&nbsp;
When the communication error bit is set True in the MSTA, the motor record
SEVR field is set to INVALID_ALARM and the STAT field is set to COMM_ALARM.&nbsp;
User's who want their MM4000/5 in remote mode at boot-up can add the remote
mode command ("MR") to&nbsp; their INIT field.</li>
</ol>
<h4> <u>Bug Fix for OMS VME58 running on PowerPC</u></h4>
Through an odd set of circumstances the Oms58 driver was not performing status
updates on PowerPC (PPC) platforms.&nbsp; All users of the OMS VME58 controller
on a PPC platform must upgrade to Motor Record version 4.0 for full functionality.
<center>
<h4> <u>New Features</u></h4>
</center>
<b><u>Newport MM3000 Device Support</u></b>
<p>Device driver support for the MM3000 exist for this release of
the motor record.&nbsp; Note the following differences between the MM4000
and MM3000 device drivers: </p>
<ul>
<li> The MM3000 does not support a generic <i>Load Position </i>commands.&nbsp;
In other words, the user can only define the current controller position as
being the zero position.&nbsp; This limitation is reflected in the motor record
device support.&nbsp; When the SET field is true, the only valid entry to
either the DVAL or RVAL fields is zero.</li>
<li> The only position units the MM3000 will communicate with the host
in, are either encoder ticks or stepper motor steps.</li>
</ul>
<h4> <u>Uninitialized Oms/Oms58 Driver Error Check</u></h4>
With previous release, if the Oms or Oms58 driver was some how omitted from
the database, a "... card does not exist" error message would result.&nbsp;
With this release, an explicit error check and corresponding error message
(i.e., "Oms[58] driver uninitialized.") is issued at record initialization
if a required driver is not initialized. (Because of the particulars of MM[3000/4000]
initialization, this is not an issue with Newport controllers.)
<h4> <u>Maximum Velocity Fields (VMAX/SMAX)</u></h4>
Maximum velocity fields have been added; VMAX in EGU/s units and SMAX in
RPS units.
<p>In order to support BURT, range checking is done in such a way
that any minimum (i.e., VBAS/SBAS) or maximum (i.e., VMAX/SMAX) value entered
is valid.&nbsp; For example, if the minimum is entered and it exceeds the
maximum, then the maximum is set to the new minimum value.&nbsp; Slew (VELO/S)
and backup velocity (BVEL/SBAK) fields are forced by the motor record to be
within the range set by VMAX/SMAX and VBAS/SBAS, inclusively.&nbsp; For example,
if VELO is entered and it is less than the minimum, then VELO is set to VBAS.
</p>
<p>To facilitate software upgrades, a zero VMAX disables maximum
velocity error checking.&nbsp; Those who use both BURT and VMAX (i.e., nonzero
VMAX) should insure that VMAX and VBAS are placed before VELO and BVEL in
their BURT <i>request files.&nbsp; </i>VMAX/SMAX have Access Security Level
zero. </p>
<p><i>motorx_setup_1.7.adl</i> (which is included with this distribution)
includes support for the maximum velocity fields. <br>
&nbsp; </p>
<center>
<h1> <u>Motor Record Version 3.5 Release Notice</u></h1>
</center>
Release 3.5 of the motor record is only compatible with EPICS baseR3.13.1.1
and above.&nbsp; This document describes changes made to the motor record
and its' associated device driver support between versions 3.4 and 3.5.&nbsp;
Those changes are as follows:
<center>
<h4> <u>Modifications to Existing Features</u></h4>
</center>
<h4> <u>Command Primitives</u></h4>
<b>This feature is available only with OMS VME8/44/58 or Newport MM4000 device
support (i.e., devOms, devOms58, devMM4000)</b>. Three motor record fields
are available to the user to send ASCII command primitives to the servo control
board at fixed, predefined, times.&nbsp; Each of the following fields is
defined as a character string:
<blockquote>&nbsp; 1. INIT - Sent at record initialization. <br>
&nbsp; 2. PREM - Sent before every command string that causes motion. <br>
&nbsp; 3. POST - Sent after a complete motion is finished <b>or when an overtravel
limit switch is detected</b>.</blockquote>
No error checking is done by the motor record or the device driver to insure
that the command strings are valid.&nbsp; Command primitives that result in
a response from the motion control board are valid, but the response is not
processed.
<h4> <u>Servo related Fields</u></h4>
<ul>
<li> The GAIN field "prompt" has been changed from "Response Gain" to "Combined
Gain".&nbsp; In addition, valid values for the GAIN field have been changed
to [0.0, for MM4000 - 0.00005, for OMS] &lt;= GAIN &lt;= 1.&nbsp; For more
on PID, see "PID Gain Parameters" below.</li>
<li> The <i>status enable </i>field (i.e., STEN) has been eliminated; the
<i>control enable </i>field (i.e., CNEN) is used to both control
the torque enable and show its' status.</li>
</ul>
<h4> <u>Unused Fields Removed</u></h4>
The following unused motor record fields were deleted: MODE, TRAK, MDEL,
ADEL, CVEL, POSM, ALST, MLST <br>
&nbsp; <br>
&nbsp;
<center>
<h4> <u>New Features</u></h4>
</center>
<h4> <u>Device Directives</u></h4>
Device directive definition and processing:
<ul>
<li> Valid only in the INIT field.</li>
<li> Must be identified by the following;</li>
<blockquote> <li> First character of INIT string must be a '@'.</li>
<li> One or more characters followed by a terminating '@'; i.e., device
directives must have nonzero length.</li>
<li> A valid device directive; currently, only "DPM_ON".</li>
</blockquote>
<li> INIT strings are stripped of valid device directives (including @'s)
and tested for nonzero length before being sent to the controller.&nbsp;
For example, given the INIT string, "@DPM_ON@HE", the device directive @DPM_ON@
is stripped out before HE is sent to the controller.</li>
</ul>
<h4> <u>Driver Power Monitoring</u></h4>
<ul>
<li> This feature is only available with the OMS VME58 device support.</li>
<li> The 8 User I/O signals are assigned to the 8 possible VME58 axes as
follows:</li>
</ul>
<ul>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
User I/O #0 &lt;&gt; X axis <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " 1 &lt;&gt; Y&nbsp; " <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
..................... <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " 7 &lt;&gt; S&nbsp; " <li> Drive-power
monitoring defaults to disabled at boot-up.&nbsp; Request enabling drive-power
monitoring by entering the device directive "@DPM_ON@" command into the motor
record initialization field (i.e., INIT).&nbsp; The INIT field is processed
at record initialization (i.e., bootup), hence if there are no errors, drive-power
monitoring will be enabled after the next bootup.</li>
<li> Whenever a request is made to enable drive-power status monitoring,
an error check is made (using the VME58 "RB" command) to verify that the
User I/O has been configured as an input.&nbsp; The following message will
appear in the error log if a configuration error is detected; "Invalid VME58
configuration; RB = 0x####", where "####" is the VME58's response to the
RB command.</li>
<li> When drive-power status monitoring is enabled and a power failure
is detected, the device driver will respond by activating the the RA_OVERTRAVEL
bit in the MSTA.&nbsp; This results in either HLS or LLS being activated
depending on the DIR field. In addition, the following message will appear
in the error log; "Drive power failure at VME58 card#?? motor#??".</li>
</ul>
<h4> <u>Soft Channel Device Support</u></h4>
The immediate goals for soft channel motor record device support were twofold.&nbsp;
First, to solve the problem of nonlinear position conversion in the data base,
rather than in the record.&nbsp; Second, to provide a more flexible motor
record interface for Table Records and SPEC.
<p>New fields have been added to the motor record to support
the Soft Channel device driver.&nbsp;&nbsp; The new fields are all database
links associated with existing motor record fields.&nbsp; The new links and
their associated fields are listed in the table below: <br>
&nbsp; <br>
&nbsp; </p>
<center>
<table border="1" nosave="">
<tbody>
<tr align="center" nosave="">
<td nosave=""><u>Link</u></td>
<td><u>Link Type</u></td>
<td>&nbsp;<u>Associated Field</u></td>
</tr>
<tr>
<td>OUT*</td>
<td>DBOUTPUT</td>
<td>
<center>DVAL</center>
</td>
</tr>
<tr align="center" nosave="">
<td nosave="">STOO</td>
<td>DBOUTPUT</td>
<td align="center" nosave="">STOP</td>
</tr>
<tr align="center" nosave="">
<td nosave="">DINP</td>
<td>DBINPUT</td>
<td>DMOV</td>
</tr>
<tr>
<td>RDBL*</td>
<td>DBINPUT</td>
<td>
<center>DRBV</center>
</td>
</tr>
<tr>
<td>RINP</td>
<td>DBINPUT</td>
<td>
<center>RMP</center>
</td>
</tr>
</tbody>
</table>
</center>
<center>
<p>* - Not a new field, but a new function provided only by soft
channel device support.</p>
</center>
<p>The Soft Channel database links are only processed when the
Soft Channel device driver is selected.&nbsp; These links are ignored when
using any other Motor Record device driver.&nbsp; At this time, the above
links are <b>not</b> dynamically retargetable. </p>
<p>The OUT, DINP and RDBL are monitored for value changes via
a CA event task.&nbsp; Users must choose either a dial input link (RDBL)
or a raw input link (RINP), but not both. <br>
&nbsp; <br>
&nbsp; </p>
<h4> <u>Newport MM4000 Device Support</u></h4>
This is <a href="http://cars1.uchicago.edu/software/dev_mm4000.html">Mark
Rivers MM4000</a>
device support ported to the latest motor record release.&nbsp; The following
are the functional differences between Mark's version 1.01 and <br>
this release:
<blockquote>
<ol>
<li> When either user or dial travel limit values are entered, a validity
check is made using the travel limit values from the MM4000 control.&nbsp;
User and dial travel limit values are valid if they are within the travel
limits set on the front panel of the MM4000 controller.&nbsp; Attempting
to enter a travel limit outside the MM4000 controller's range results in
the travel limit being reset to the MM4000's value.</li>
<li> Servo support has been extended to the MM4000 controller.</li>
</ol>
</blockquote>
<h4> <u>PID Gain Parameters</u></h4>
With this release there are two ways to set the motor controllers' PID parameters;
either through the <i>Combined Gain </i>field (i.e., GAIN) or through the
individual PID gain parameter fields (i.e., PCOF, ICOF, DCOF).&nbsp; Let
the motor controller PID parameters be represented by CKP, CKI and CKD; then
the relationship between these two methods is as follows:
<blockquote><u>For the MM4000</u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<u>For all OMS controllers</u></blockquote>
<ul>
<li> CKP&nbsp; = GAIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CKP =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1999.9 * GAIN</li>
<li> CKI&nbsp;&nbsp; = 2 * GAIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CKI =&nbsp; 2 * 1999.9 * GAIN</li>
<li> CKD = 3 * GAIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CKD = 3 * 1999.9 * GAIN</li>
</ul>
Note that setting any of the individual PID record fields is <b>not</b> reflected
in the value of the GAIN field.
<h4> <u>Highland V544 Device Support</u></h4>
Device support for the Highland V544 is available with this release.&nbsp;
This version (i.e., version 1.3) is functionally the same as the earlier release
(i.e., version 1.2).&nbsp; No new features have been added. <br>
&nbsp;
<center>
<h1> <u>Motor Record Version 3.4 Release Notice</u></h1>
</center>
This document describes changes made to the motor record and its' associated
device driver support between versions 3.3 and 3.4.&nbsp; Those changes are
as follows:
<h3> <u><font size="+0">Device driver design error fix</font></u></h3>
A design error was discovered in the OMS device drivers (drvOms and drvOms58).&nbsp;
The EPICS device driver support task (i.e., tmotor) would query the OMS motion
controller for status information immediately after a motion command.&nbsp;
Since the state of the controller board was in the midst of changing, this
sometimes resulted in inconsistent or conflicting status information being
returned to the motor record.&nbsp; This problem was remedied by enforcing
a minimum time delay (16.67 ms) between a motion command and a status query.
<p>It is difficult to enumerate the symptoms associated with
this problem.&nbsp; Sometimes they exhibited themselves intermittently, other
times bad data stayed in the record.&nbsp;&nbsp; Several symptoms are as
follows: </p>
<blockquote>
<ul>
<li> Erroneous motor stops being issued by the device support when changing
motor direction.</li>
<li> Backlash occurring when the motor is moving in the same direction
as the sign of BDST.</li>
<li> DVAL and RBV becoming out-of-synch.&nbsp; RBV would always be an old
value from the previous move.</li>
</ul>
</blockquote>
<h3> <u><font size="+0">PID Parameter Support for VME58</font></u></h3>
The motor record classifies a motor as a servo if it has two features; an
adjustable closed loop position response gain and the ability to enable/disable
closed loop position control (i.e., motor torque).&nbsp; A motor lacking either
of the above two features is classified as a stepper and is supported by
the standard motor record features.&nbsp; The following three motor record
fields support servo motors:
<p>&nbsp; 1. GAIN - Closed loop position response gain
of the motor. <br>
&nbsp; 2. CNEN - Enable/disable closed loop position control request. <br>
&nbsp; 3. STEN - Closed loop position control status (i.e., <br>
&nbsp;&nbsp;&nbsp;&nbsp; enabled/disabled). </p>
<p>Currently, servo support is only available with OMS's
VME58 device support (i.e., VME58-[4S/8S/2S2/2S6/4S4/6S2] model boards).&nbsp;
At driver initialization, the driver automatically detects whether or not
the underlying device supports the use of the GAIN field and thereby classifies
the motor as a stepper or a servo.&nbsp;&nbsp; Bit#11 of the MSTA field is
set on/off based on the results of this test.&nbsp; If the device supports
the GAIN field, then bit#11 of the MSTA is set on and all of the above servo
fields are enabled.&nbsp;&nbsp; Otherwise, they are disabled and bit#11 of
the MSTA is set off.&nbsp; When the servo fields are disabled, they can still
be read or written to without an error response. </p>
<p>The VME58 device support allows the closed loop position
gain of the motor to be set directly through the GAIN field.&nbsp; For the
VME58, setting the GAIN field value results in the Combined Coefficient command
(i.e., KK#) being executed with the GAIN field value as the argument to the
command.&nbsp; This command, in turn, sets the PID loop parameter values
(with the OMS VME58, gain changes do not take effect until the command velocity
is zero). </p>
<p>The user can request that the closed loop position control
be enabled or disabled by setting the CNEN field nonzero or zero, respectively.
<br>
Likewise, the user can monitor the state of closed loop position control (i.e.,
enabled/disabled) by reading the STEN field.&nbsp; See the OMS "VME58 Family
User's Manual" for further details. </p>
<h3> <u><font size="+0">Command primitives feature</font></u></h3>
Three motor record fields are available to the user that can be used to send
ASCII command primitives to the servo control board at fixed, predefined,
times.&nbsp; Each field is defined as a character string.
<p>&nbsp; 1. INIT - Sent at record initialization. <br>
&nbsp; 2. PREM - Sent before every command string that causes motion. <br>
&nbsp; 3. POST - Sent after a complete motion is finished. </p>
<p>No error checking is done by the motor record or the
device driver to insure that the command strings are valid.&nbsp; Command
primitives that result in a response from the motion control board are valid,
but the response is not processed. <br>
&nbsp; <br>
&nbsp; </p>
</body>
</html>