forked from epics_driver_modules/motorBase
1061 lines
38 KiB
HTML
1061 lines
38 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]">
|
|
<title>Motor Module Known Problems</title>
|
|
</head>
|
|
<body>
|
|
|
|
<center><h1>Motor Module: Known problems</h1></center>
|
|
|
|
<h2>Known problems with Release 6-10 and later</h2>
|
|
|
|
See issues on github: <a href="https://github.com/epics-modules/motor/issues">https://github.com/epics-modules/motor/issues</a>
|
|
|
|
<h2>Known problems with Release 6-9</h2>
|
|
|
|
|
|
<h2>Known problems with Release 6-8</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
<p>
|
|
<b>Soft-travel Limits</b>
|
|
</p>
|
|
<p>
|
|
<ul>
|
|
<li>
|
|
Although there are a number of improvements with R6-8's support of soft-travel
|
|
limits (LVIO), there are also two problems that will remain "Known Problems".
|
|
These limitation are as follows:
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Tweaking (TWF/TWR) very small increments with UEIP = Yes while in the invalid
|
|
range of the soft-travel limits may put the motor record in a state where the
|
|
user cannot tweak in either direction. The solution is to either jog the motor
|
|
towards the valid range or increase the tweak increment value (TWV field).
|
|
</li>
|
|
<li>
|
|
Tapping the Jog button can cause the motor to move past the soft-travel limit
|
|
when backlash is nonzero.
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
</p>
|
|
</li>
|
|
<li>
|
|
<p>
|
|
<b>Newport ESP100/300/301</b>
|
|
</p>
|
|
<p>
|
|
The R6.8 ESP support changes made to "Use MRES rather than controller resolution
|
|
to do EGUtoRAWbacktoEGU conversion." do not work. (Model 1 drivers do not always
|
|
have access to motor record data.) The most obvious problem with R6.8 ESP
|
|
support is the inability to "set" the controller's position.
|
|
</p>
|
|
<p>
|
|
<a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R6-8/ESPr68.patch">This
|
|
patch file</a> rolls back the R6.8 ESP changes and adds one bug fix to
|
|
the EPS100/300/301 driver; when a controller error occurs, the driver prints the
|
|
error code to the console and sets the RA_PROBLEM bit of the MSTA field. The
|
|
motor record patch unconditionally sends a "stop motor" command whenever a
|
|
driver sets the RA_PROBLEM bit. Finally, the patch file updates ESP info in the
|
|
README file.
|
|
</p>
|
|
<p>
|
|
R6-8-1 includes both the MRES related rollback and the STOP on RA_PROBLEM bug fix.
|
|
</p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 6-7</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
<p>
|
|
<b>Aerotech Ensemble</b>
|
|
</p>
|
|
<p>
|
|
<ul>
|
|
<li>
|
|
Due to network broadcasting upgrades to Aerotech Ensemble Motion Composer,
|
|
starting with motor module R6-7-1, the EPICS Ensemble driver only supports
|
|
4.01.002 Ensemble version firmware 4.01.002 and above.
|
|
</li>
|
|
<li>
|
|
The home search from EPICS command was been restored with R6-7-1. In order for
|
|
an EPICS home search command to work, the Aerotech Ensemble example program, <i>HomeAsync.abx</i>,
|
|
must be compiled and stored in the Ensemble. In addition, the Parameters>System>TaskExecutionSetup
|
|
parameter must be set to enable Auxiliary Task execution.
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
</li>
|
|
|
|
<p>
|
|
<li>
|
|
<p>
|
|
<b>Schneider Electric (formally IMS) MDrive</b>
|
|
</p>
|
|
<p>
|
|
Joe Sullivan fixed several bugs in the Schneider Electric MDrive driver
|
|
associated with input buffer overflows that arose with newer MDrive firmware (e.g.,
|
|
3.003). These bug fixes were 1st released with motor module R6-7-1.
|
|
</p>
|
|
</li>
|
|
</p>
|
|
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 6-5</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
<p>
|
|
<b>Aerotech Ensemble</b>
|
|
</p>
|
|
<p>
|
|
<ul>
|
|
<li>
|
|
With previous releases the Aerotech Ensemble asyn motor driver would crash the
|
|
IOC at boot-up if the Ensemble was not powered up and able to communicate. Fixed
|
|
with R6-5-1.
|
|
</li>
|
|
<li>
|
|
The EOT limit switch status was not available except via an Ensemble fault
|
|
condition. With release R6-5-1 the status of the EOT limit switches are always
|
|
available.
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
</li>
|
|
|
|
<p>
|
|
<li>
|
|
<p>
|
|
<b>OMS MAXv WatchDog Timeout Counter</b>
|
|
</p>
|
|
<p>
|
|
Beginning with R6-5-1 and OMS MAXv firmware ver:1.33, the EPICS MAXv driver reads
|
|
the MAXv's Watchdog Timeout Counter at bootup, and with every motor status
|
|
update. If the Counter is nonzero, an error message is sent to both the errlog
|
|
task and the console. Since a watchdog timer trip indicates that the MAXv has
|
|
rebooted and no longer has valid motor positions, the driver disables the
|
|
controller. That specific controller is no longer available to EPICS until after
|
|
the VME crate has been power cycled. Other MAXv boards in the system are
|
|
unaffected by this scenario.
|
|
</p>
|
|
<p>
|
|
To better communicate this problem to the user, several medm displays have been
|
|
changed. Small displays (motorx_tiny.adl, motorx.adl) will show a yellow border
|
|
around their position readback values. Larger displays (motorx_more.adl,
|
|
motorx_all.adl) will display the message "Controller Error" in yellow. The
|
|
following error message at the console and/or in the errlog is definitive;
|
|
</p>
|
|
<p>
|
|
<center>
|
|
***MAXv card #<i>(card#)</i> Disabled*** Watchdog Timeout CTR =<i>(count)</i>
|
|
</center>
|
|
</p>
|
|
</li>
|
|
</p>
|
|
|
|
<li>
|
|
<p>
|
|
<b>spec upgrade required</b>
|
|
</p>
|
|
<p>
|
|
The RES field was removed from the motor record with R6-5. Since earlier
|
|
versions of Certified Scientific Software's spec used the RES field, an upgrade
|
|
to spec version 5.8.06-6 or above is required for spec to work with motor record
|
|
R6-5 and above. The problem of using earlier versions of spec with motor record
|
|
R6-5 exhibits itself by spec setting the "responsive" parameter to zero and not
|
|
allowing any motor motion.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
<b>VxWorks 6.x compiler error</b>
|
|
</p>
|
|
<p>
|
|
The GNU preprocessor assertions in motor.h are deprecated with the VxWorks 6.x
|
|
compiler. Test for CPU macros that are compatible with VxWorks 6.x have been
|
|
added. This change prevents an "Error: unknown bit order!" compiler error with
|
|
VxWorks 6.x. This problem is fixed with R6-5-2 and above. Alternatively, you can
|
|
replace <motor>/motorApp/MotorSrc/motor.h with the following copy: <a href="/bcda/synApps/motor/R6-5/motor.h">motor.h</a>
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
<b>Aerotech Ensemble Home Search</b>
|
|
</p>
|
|
<p>
|
|
The EPICS Ensemble driver uses Aerotech's ASCII communication protocol. That
|
|
protocol blocks all communication on the ASCII comm. port during a home search.
|
|
Consequently, once a home search is started from EPICS, it is unable to stop it.
|
|
As a result, beginning with R6-5-2, the home search command has been commented
|
|
out of the EPICS driver until an Ensemble firmware update resolves this problem.
|
|
</p>
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 6-4</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
R6-4 had 64-bit compile problems with the PI E816 and Aerotech Ensemble device
|
|
drivers. Fixed with R6-4-1 and above.
|
|
</li>
|
|
<p>
|
|
<li>
|
|
Dirk Zimoch (PSI) discovered and fixed a bug in the orginial OMS MAXv driver (R5-4)
|
|
that caused the home switch status in the response string to be overwritten.
|
|
Fixed with R6-4-2 and above.
|
|
<p>
|
|
</li>
|
|
<p>
|
|
<li>
|
|
A problem was introduced in R6-4 of the old motor record device drive
|
|
architecture. If during the move of one or more motors the motor task did not
|
|
issue an OS delay during status updates, it could potentially not respond to any
|
|
further motor commands. Fixed with R6-4-2 and above.
|
|
</li>
|
|
<p>
|
|
<li>
|
|
There is a bug in these motor record versions (R6-4, R6-4-1, R6-4-2)
|
|
that affects motors that have encoders and are configured to do closed-loop
|
|
control via retries (i.e. UEIP=Yes and RTRY != 0). Retries are not done
|
|
correctly and occasionally motors exceed their maximum retries and are left at
|
|
their backlash position; i.e., command position - backlash distance. See the
|
|
Release Notice for further error conditions. Fixed with R6-4-3 and above.
|
|
</li>
|
|
<p>
|
|
<LI>
|
|
The asynMotor device support in general, and the simulated motor, in particular,
|
|
had save/restore related problems. Fixed with R6-4-4 and above.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
Previous releases of the Aerotech Ensemble device driver had incorrect Jog
|
|
speeds, lacked support for a negative PosScaleFactor parameter and did not
|
|
detect maximum travel limit switch faults correctly. Fixed with R6-4-4 and above.
|
|
</LI>
|
|
<P>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 6-3</h2>
|
|
|
|
<OL>
|
|
<LI>
|
|
The OMS VME58 "stale data" problem is caused by the driver communicating via the
|
|
ASCII commands while the DPRAM was updating. The OMS VME58 driver was modified
|
|
with R6-3 to eliminate this contention and the "stale data delay" was set to
|
|
zero. Since then a problem with OMS VME58 2.24-8S version firmware and all 2.35
|
|
firmware versions has arisen. When the user sets the motor record's position,
|
|
the previous target and readback positions are read from the controller on the
|
|
next update.
|
|
<P>
|
|
With releases after R6-3 (e.g., R6-3-1 and R6-4) the driver searches all VME58
|
|
board ID's for either 2.24-8S or any 2.35 version. If any board is found, the "stale
|
|
data delay" is set to a non-zero value.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
A problem was reported by Emma Shepherd (Diamond) with R6-3 if the "Use RDBL
|
|
Link" field (URIP) was set to "Yes". The NTM logic was sending stop commands
|
|
and issuing the "tdir=.." message to the console if the RDBL link was used. This
|
|
error was the result of changing the NTM logic as described in item #11 under R6-3
|
|
modifications.
|
|
<P>
|
|
With releases after R6-3 (e.g., R6-3-1 and R6-4), the NTM logic is restored to
|
|
using feedback rather than reference positions. In addition, with release R6-4
|
|
and after, an "NTM deadband factor" field (NTMF) is added to allow the user to
|
|
set the NTM deadband; NTM deadband = NTMF * (|BDST| + RDBD) NTMF must be >= 2.
|
|
If properly configured, the NTM deadband prevents NTM logic from issuing a STOP
|
|
command at the end of a DC motor move that overshoots its' target position.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
The asyn motor device driver architecture does not support the motor record
|
|
GET_INFO command. Hence, operations that require a status update (i.e., setting
|
|
the position) were not working. This is fixed in R6-4.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
In the process of fixing the OMS VME58 "stale data" problem described above,
|
|
needless delays were added to the code that updated the VME58's DPRAM. These
|
|
needless delays can be calculated as follows;
|
|
<P>
|
|
delay = (n-1) * (1/sysClkRate)
|
|
<P>
|
|
where, n = # of VME58 boards in the IOC.<BR>
|
|
sysClkRate = 60 Hz, unless changed by a sysClkRateSet() from st.cmd.
|
|
<P>
|
|
These delays are eliminated with R6-4-2 and above.
|
|
</LI>
|
|
<P>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 6-2</h2>
|
|
|
|
|
|
<OL>
|
|
<LI>
|
|
Link errors occurred when building "XPSGatheringMain" for the solaris-sparc-gnu
|
|
target. Newport users should upgrade to R6-2-1.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
Errors occurred in various motorApp's when building for the solaris-sparc (SUNWspro)
|
|
target. SUNWspro users should upgrade to R6-2-1.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
Mark River's found and fixed a bug in the motor record. RDBD was being used in
|
|
motor record initialization before the RDBD validation check. This resulted in
|
|
motor positions not being initialized from save/restore at boot-up if RDBD was
|
|
not included in a save/restore save set. This is fixed in R6-2-2.
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
A bug was introduced into the shell command <B>motorUtilInit</B> affecting these
|
|
versions of the motor distribution; R6-2, R6-2-1 and R6-2-2. This bug resulted
|
|
in the erroneous error message; "motorUtilInit: Prefix %c: has more than 53
|
|
characters. Exiting". Replace <motor>/motorApp/MotorSrc/motorUtil.cc with
|
|
the following copy: <A href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R6-2/motorUtil.cc">motorUtil.cc</A>
|
|
</LI>
|
|
<P>
|
|
<LI>
|
|
The "alldone" PV in motorUtil.db defaulted to the "moving" state between "iocInit
|
|
" and "motorUtilInit", giving the false indication that motors were moving
|
|
during boot-up. The "alldone" PV now defaults to the "done" state. Replace <motor>/motorApp/Db/motorUtil.db
|
|
with the following copy: <A href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R6-2/motorUtil.db">motorUtil.db</A>
|
|
</LI>
|
|
<P>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 6-1</h2>
|
|
|
|
<OL>
|
|
<LI>
|
|
The Newport PM500 driver was not issuing the correct command when it queried for
|
|
the number of axes at boot up. This resulted in a "PM500 system error" message
|
|
on the 1st axis; fixed in R6-2.
|
|
</LI>
|
|
<LI>
|
|
A bug was introduced with R6-0; the OMS device support was overwriting PID
|
|
parameter fields during its' normalization calculation; fixed in R6-2.
|
|
</LI>
|
|
<LI>
|
|
There was a bug in the logic that determines the precedence between using the
|
|
controller's or save/restore's motor position at boot-up. Negative controller
|
|
positions were not handled correctly; fixed in R6-2
|
|
</LI>
|
|
<LI>
|
|
The home request (HOMF/HOMR) were not cleared when a soft-limit violation
|
|
occurred; fixed in R6-2.
|
|
</LI>
|
|
<LI>
|
|
Due to releasing R6-1 during Newport development, R6-1 can result in linker
|
|
errors on the symbol "xpsgathering". Newport users should upgrade to R6-2.
|
|
</LI>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 6-0</h2>
|
|
|
|
<OL>
|
|
<LI>
|
|
The R6-0-bugfix CVS repository branch has become corrupted. Hence, no further
|
|
changes will be made (i.e., bug fixes) to the R6-0 branch.
|
|
</LI>
|
|
<LI>
|
|
A bug was introduced with this release. The OMS device support overwrites PID
|
|
parameter fields during its' normalization calculation. This is fixed in R6-2.
|
|
</LI>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 5-9</h2>
|
|
|
|
<OL>
|
|
<LI>
|
|
An undocumented change was made in R5-4 to two OMS setup functions. Namely, the
|
|
unused 2nd argument ("axes per card") was eliminated from omsSetup() and
|
|
oms58Setup().
|
|
</LI>
|
|
|
|
<LI>
|
|
Since R4-5 the motor record has required that RDBD be >= MRES. The test for
|
|
this condition was done using floating point values. This caused an occasional
|
|
error that resulted in the record not always issuing a motor move command when
|
|
RDBD = MRES and the user issued an incremental move request equal to MRES. This
|
|
is fixed with R5-9-1 and R6-0.
|
|
</LI>
|
|
|
|
<LI>
|
|
A warning message was added with R5-6 when a user attempted to move an OMS motor
|
|
with an invalid velocity (slew <= base). Applications that manipulate the
|
|
velocity values are unaware of this restriction and create a torrent of
|
|
these messages. With release R5-9-1 and R6-0 the OMS device driver will
|
|
only output this warning message once.
|
|
</LI>
|
|
|
|
<LI>
|
|
Added a work around for OMS PC68/78 firmware error. PC68/78 controllers make an
|
|
erroneous response after they are queried with the "?KP" command at boot-up.
|
|
This resulted in 1st axis having same position (RP command) as last the axis.
|
|
This is fixed with R5-9-1 and R6-0.
|
|
</LI>
|
|
|
|
<LI>
|
|
GPIB under ASYN allows only one input EOS character; no output EOS is allowed.
|
|
Adjustments were made to the Newport ESP300 driver to accomodate this
|
|
restriction with R5-9-1 and R6-0.
|
|
</LI>
|
|
|
|
<LI>
|
|
The CVS repository has become out of synch with the R5-9-1 tar file (motorR5-9-1.tar.gz).
|
|
Hence, no further changes will be made (i.e., bug fixes) to the R5-9 branch.
|
|
</LI>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 5-8</h2>
|
|
|
|
<h2>Known problems with Release 5-7</h2>
|
|
|
|
<h2>Known problems with Release 5-6</h2>
|
|
|
|
<h2>Known problems with Release 5-5</h2>
|
|
|
|
<h2>Known problems with Release 5-4</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
An undocumented change was made to two OMS setup functions. Namely, the unused
|
|
2nd argument ("axes per card") was eliminated from omsSetup() and oms58Setup()
|
|
in R5-4.
|
|
</li>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 5-3</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
"sorry, not implemented: `tree_list' not supported by dump_type" error when
|
|
compiling drvOms.cc and drvOms58.cc under Tornado 2.2. The Tornado 2.2 compiler
|
|
(i.e., 2.96) creates errors in devLib.h. The root cause of this "bug" is a
|
|
problem with the gcc-2.96 compiler bundled with Tornado 2.2. Unfortunately, to
|
|
date, Wind River is only helping with workarounds; not fixing the compiler. Hence,
|
|
the following patches are required.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
For R3.14.4-5, replace <base>src/libCom/osi/devLib.h with the following
|
|
copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R5-3/devLib.h">devLib.h</a>
|
|
</li>
|
|
<LI>
|
|
Edit <motor>/motorApp/OmsSrc/drvOms.cc by uncommenting the lines with the <I>Tornado
|
|
2.2</I> comment and commenting out the line with the <I>Tornado 2.0.2</I>
|
|
comment.</A>
|
|
</LI>
|
|
<LI>
|
|
Edit <motor>/motorApp/OmsSrc/drvOms58.cc by uncommenting the lines with
|
|
the <I>Tornado 2.2</I> comment and commenting out the line with the <I>Tornado
|
|
2.0.2</I> comment.</A>
|
|
</LI>
|
|
</ul>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 5-2</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
"sorry, not implemented: `tree_list' not supported by dump_type" error when
|
|
compiling drvOms.cc and drvOms58.cc under Tornado 2.2. The Tornado 2.2 compiler
|
|
(i.e., 2.96) creates errors in devLib.h. The root cause of this "bug" is a
|
|
problem with the gcc-2.96 compiler bundled with Tornado 2.2. Unfortunately, to
|
|
date, Wind River is only helping with workarounds; not fixing the compiler. Hence,
|
|
the following patches are required.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
For R3.14.4-5, replace <base>src/libCom/osi/devLib.h with the following
|
|
copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R5-2/devLib.h">devLib.h</a>
|
|
</li>
|
|
<li>
|
|
Replace <motor>/motorApp/OmsSrc/drvOms.cc with the following
|
|
updated copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R5-2/drvOms.cc">drvOms.cc</a>
|
|
</li>
|
|
<li>
|
|
Replace <motor>/motorApp/OmsSrc/drvOms58.cc with the following
|
|
updated copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R5-2/drvOms58.cc">drvOms58.cc</a>
|
|
</li>
|
|
</ul>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-9</h2>
|
|
|
|
<ol>
|
|
<LI>
|
|
PID parameters (i.e., PCOF, ICOF and DCOF fields) were not initialized at boot-up.
|
|
With R4.9.1, if the GAIN_SUPPORT bit in the MSTA is true, each nonzero,
|
|
PID parameter will be initialized. For backwards compatibility, zero valued PID
|
|
parameters will not be initialized.
|
|
</LI>
|
|
|
|
<LI>
|
|
Previous releases of the IMS MDrive device driver did not work. Thanks to Kevin
|
|
M. Peterson (UNI-CAT) for identifying and fixing the errors in previous releases.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-2.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
Two bugs were found and fixed with the Newport MM3000 device support. First,
|
|
the enable/disable torque control field (CNEN) was not working. Second, an
|
|
error was introduced into the Newport MM3000 device driver with R4-8; the driver
|
|
was confusing valid responses with the "system error" response from the
|
|
controller
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-3.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
A retry on initial communication with the Physik Instrumente (PI) C-844 motor
|
|
controller was added. The controller was intermittently not responding after an
|
|
IOC power-cycle.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-4.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
Modifications were made to the motor record in order to allow a user to
|
|
configure it for periodic status updates using the SCAN field.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Available with R4-9-4.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
The motor record would get into an invalid state when it attempted to perform a
|
|
backlash correction move in the direction of an activated limit switch.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-5.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
Bug fix for home request re-activating after a limit switch error is cleared.
|
|
This release clears the homing and jog request after a LS or travel limit error.
|
|
Updated the motorx_all.adl MEDM screen (V2.5) to show the state of the jog
|
|
request.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-5.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
A bug was reported by David Maden (PSI) that occurred when a motor was jogged
|
|
into a limit switch with the DIR field set to "Neg". Under these conditions, the
|
|
motor record was not processing the limit error condition correctly. This
|
|
resulted in the motor record not setting either of the limit error indicator
|
|
fields (HLS/LLS) and becoming stuck in the "Moving" state.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-6.
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
Kevin Peterson (UNI-CAT) and I diagnosed a bug that is in all R3.13 versions of
|
|
the motor record distribution. The bug is in the interface between motor record
|
|
GPIB capable drivers (i.e., Newport MM4000/5/6, MM3000, PM500, ESP300/100) and
|
|
the EPICS base GPIB driver; drvGpib.<BR>
|
|
Dynamic memory is allocated and shared with drvGpib by the motor task. The
|
|
problem arises here, at the end of ibLinkTask in drvGpib.c;<BR>
|
|
|
|
plink->deviceStatus[pnode->device] = (*(pnode->workStart))(pnode);<BR>
|
|
|
|
pnode->workStart is a pointer to gpibIOCallback() in gpibIO.c. When
|
|
gpibIOCallback() is done processing it "gives" a semaphore that is "taken" by
|
|
either gpibIOSend() and gpibIORecv(). Both gpibIOSend() and gpibIORecv()
|
|
immediately free the shared memory.<BR>
|
|
|
|
This works almost all the time; but occasionally the memory is taken by some
|
|
other task and trashed before the line above is executed resulting in a bus
|
|
error on "pnode->device".<BR>
|
|
|
|
As a quick fix, the task priorities of the all GPIB capable controllers has been
|
|
lowered below ibLinkTasks priority. This allows ibLinkTask to finish processing
|
|
and be waiting for the next GPIB request before the shared memory is de-allocated.
|
|
<BR>
|
|
|
|
All users of the R3.13.x version of the motor record distribution that use GPIB
|
|
to communicate to Newport controllers (i.e., Newport MM4000/5/6, MM3000, PM500,
|
|
ESP300/100), should upgrade to the R4-9-6 release.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-6.
|
|
</li>
|
|
</ul>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-8</h2>
|
|
|
|
<OL>
|
|
<LI>
|
|
Previous releases of the IMS MDrive device driver did not work. Thanks to Kevin
|
|
M. Peterson (UNI-CAT) for identifying and fixing the errors in previous releases.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9-1.
|
|
</li>
|
|
</ul>
|
|
<LI>
|
|
Users of the status update field (STUP) should use a later release.
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-9 and above.
|
|
</li>
|
|
</ul>
|
|
<LI>
|
|
Two bugs were found and fixed with the Newport MM3000 device support. First,
|
|
the enable/disable torque control field (CNEN) was not working. Second, an
|
|
error was introduced into the Newport MM3000 device driver with R4-8; the driver
|
|
was confusing valid responses with the "system error" response from the
|
|
controller
|
|
</LI>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-8-1 and above.
|
|
</li>
|
|
</ul>
|
|
</OL>
|
|
|
|
<h2>Known problems with Release 4-7</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
With release R4-5, DBE_LOG was omitted from the event select mask of all
|
|
db_post_events() calls. This prevented archival clients from being
|
|
notified of process variable changes.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-7-1.
|
|
</li>
|
|
</ul>
|
|
<LI>
|
|
Communication with the Newport MM3000 motor controller was getting out of
|
|
synchronization whenever the MM3000 responded with an error message. This
|
|
problem was resolved by having recv_mess() in drvMM3000.c detect an error
|
|
message response, print the error message and then, recursively, call itself.
|
|
This restored communication transmit/receive synchronization.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-2.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
With release R4-7, there was a slight (undocumented) modification made to the
|
|
way that backlash correction functioned. If a move is in the preferred direction
|
|
and the backlash speed and acceleration are the same as the slew speed and
|
|
acceleration, then the backlash move is skipped and the motor moves directly to
|
|
the target position. Unfortunately, there was a bug in the logic that appeared
|
|
only when MRES< 0. When MRES < 0, and the backlash speed and acceleration were
|
|
the same as the slew speed and acceleration, the motor record did the opposite
|
|
of the requirements; i.e., it did backlash correction when the move was in the
|
|
preferred direction and did not do backlash correction when the move was not in
|
|
the preferred direction.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-2.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
The Newport ESP300 would randomly crash at boot-up because an internal parameter
|
|
("drive_resolution") was not always, under all configurations, initialized. With
|
|
this release, the "drive_resolution" is set based on the response to the ESP300
|
|
"SU?" command. In addition, the user is required to set MRES to the resolution
|
|
of the controller as explained in the new document /motorApp/NewportSrc/README.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-2.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
A bug was introduced in R4-6 while fixing another bug; see item#2 under
|
|
Modification Log from R4-5 to R4-6 in the distribution README file. This error
|
|
exhibited itself only under the following conditions; BDST != 0, DLY != 0 and a
|
|
new target position is issued before the backlash correction move. Under these
|
|
conditions the motor record became unresponsive; i.e., it locked up.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
Although there is no explicit statement in the motor record documentation, most
|
|
user's would expect the "Readback settle time" field (DLY) to update the
|
|
readback after the delay timeout. It did not do this. With this release, the
|
|
readback is updated one time after the timeout.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
There were problems with the tweak function (TWF/TWR) when the TWV was set to
|
|
less than MRES. Under this condition, the following scenario would result. First,
|
|
tweak forward (TWF). Since DIFF < MRES, the motor is not moved. Next, tweak
|
|
reverse (TWR). Next TWF again. The motor record does not respond; i.e., DVAL
|
|
and RVAL are not updated; VAL is not posted. A single tweak, back and forth,
|
|
confirms that the motor record is not responding.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-4.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
The motor record would lock-up when a user tried to move off an activated limit
|
|
switch with the OMS VME58 servo motor controller board (i.e., model -8S). See "Known
|
|
Problems" item #4 in the motor record's distribution README file.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-7-4.
|
|
</li>
|
|
</UL>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-6</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
An uninitialized pointer error check was omitted from ESP300_init_record() in
|
|
the devESP300.c file. This resulted in a bus error at boot-up if there was
|
|
a failure to connect to the controller. Choose one of the following
|
|
methods to applying the bug fix:
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Replace <motor>/motorApp/NewportSrc/devESP300.c with the following
|
|
updated copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-6/devESP300.c">devESP300.c</a>
|
|
</li>
|
|
<li>
|
|
Install motor record version R4-6-1 or above, which includes this bug fix.
|
|
</li>
|
|
|
|
</ul>
|
|
<li>
|
|
With release 4-5, DBE_LOG was omitted from the event select mask of all
|
|
db_post_events() calls. This prevented archival clients from being
|
|
notified of process variable changes.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-6-2.
|
|
</li>
|
|
</ul>
|
|
<LI>
|
|
Communication with the Newport MM3000 motor controller was getting out of
|
|
synchronization whenever the MM3000 responded with an error message. This
|
|
problem was resolved by having recv_mess() in drvMM3000.c detect an error
|
|
message response, print the error message and then, recursively, call itself.
|
|
This restored communication transmit/receive synchronization.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-6-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
The Newport ESP300 would randomly crash at boot-up because an internal parameter
|
|
("drive_resolution") was not always, under all configurations, initialized. With
|
|
this release, the "drive_resolution" is set based on the response to the ESP300
|
|
"SU?" command. In addition, the user is required to set MRES to the resolution
|
|
of the controller as explained in the new document /motorApp/NewportSrc/README.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-6-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
A bug was introduced in R4-5-1 while fixing another bug; see item#2 under
|
|
Modification Log from R4-5 to R4-5-1 in the distribution README file. This error
|
|
exhibited itself only under the following conditions; BDST != 0, DLY != 0 and a
|
|
new target position is issued before the backlash correction move. Under these
|
|
conditions the motor record became unresponsive; i.e., it locked up.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-6-4.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
Although there is no explicit statement in the motor record documentation, most
|
|
user's would expect the "Readback settle time" field (DLY) to update the
|
|
readback after the delay timeout. It did not do this. With this release, the
|
|
readback is updated one time after the timeout.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-6-4.
|
|
</li>
|
|
</UL>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-5</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
Soft Channel Device Support - see <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-5/motor_release.html">Release
|
|
Notice.</a>
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-5-1.<br>
|
|
</li>
|
|
</ul>
|
|
<li>
|
|
Backlash Correction Bug Fixes - see <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-5/motor_release.html">Release
|
|
Notice.</a>
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-5-1<br>
|
|
</li>
|
|
</ul>
|
|
<li>
|
|
With release 4-5, DBE_LOG was omitted from the event select mask of all
|
|
db_post_events() calls. This prevented archival clients from being
|
|
notified of process variable changes.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
Fixed with R4-5-2<br>
|
|
</li>
|
|
</ul>
|
|
|
|
<LI>
|
|
Communication with the Newport MM3000 motor controller was getting out of
|
|
synchronization whenever the MM3000 responded with an error message. This
|
|
problem was resolved by having recv_mess() in drvMM3000.c detect an error
|
|
message response, print the error message and then, recursively, call itself.
|
|
This restored communication transmit/receive synchronization.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-5-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
The Newport ESP300 would randomly crash at boot-up because an internal parameter
|
|
("drive_resolution") was not always, under all configurations, initialized. With
|
|
this release, the "drive_resolution" is set based on the response to the ESP300
|
|
"SU?" command. In addition, the user is required to set MRES to the resolution
|
|
of the controller as explained in the new document /motorApp/NewportSrc/README.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-5-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
A bug was introduced in R4-5-1 while fixing another bug; see item#2 under
|
|
Modification Log from R4-5 to R4-5-1 in the distribution README file. This error
|
|
exhibited itself only under the following conditions; BDST != 0, DLY != 0 and a
|
|
new target position is issued before the backlash correction move. Under these
|
|
conditions the motor record became unresponsive; i.e., it locked up.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-5-3.
|
|
</li>
|
|
</UL>
|
|
<LI>
|
|
Although there is no explicit statement in the motor record documentation, most
|
|
user's would expect the "Readback settle time" field (DLY) to update the
|
|
readback after the delay timeout. It did not do this. With this release, the
|
|
readback is updated one time after the timeout.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-5-3.
|
|
</li>
|
|
</UL>
|
|
|
|
<LI>
|
|
An error occurred when the SET/USE field was in the SET mode and the FOFF field
|
|
was in the FROZEN mode. Under these conditions, if the user entered a new RVAL,
|
|
the record ignored every other new RVAL; with every other new DVAL that the user
|
|
entered, RVAL was not updated. VAL always worked.
|
|
</LI>
|
|
<UL>
|
|
<li>
|
|
Fixed with R4-5-4.
|
|
</li>
|
|
<li>
|
|
Replace <motor>/motorApp/MotorSrc/motorRecord.c with the following updated
|
|
copy: <A href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-5/motorRecord.c_R4-5-4">motorRecord.c</A>
|
|
</li>
|
|
</UL>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-4</h2>
|
|
|
|
<ol>
|
|
<li> The "Driver Power Monitoring" feature (available only for OMS VME58
|
|
controllers) was erroneously and randomly being enabled. Choose
|
|
one of the following methods to applying the bug fix:</li>
|
|
|
|
<ul>
|
|
<li> Make the following modification to <motor>/motorApp/MotorSrc/motordevCom.c:</li>
|
|
|
|
<ul>
|
|
202a203 <br>
|
|
> ptrans->dpm = OFF;
|
|
|
|
</ul>
|
|
<li> Replace <motor>/motorApp/MotorSrc/motordevCom.c with the
|
|
following updated copy: <a
|
|
href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-4/motordevCom.c">
|
|
motordevCom.c</a> </li>
|
|
<li> Install motor record version R4-4-1 or above, which includes this
|
|
bug fix.</li>
|
|
|
|
</ul>
|
|
<li> Code around "safeDoubleToFloat conversion bug" in EPICS R3.13.5.
|
|
A bug was introduced into R3.13.5 with the "dbConvert and dbFastLinkConv"
|
|
fix (see EPICS base Release Notes for R3.13.5) that resulted in the inability
|
|
to set PV fields defined as DBF_FLOAT's to zero. One of the scenarios
|
|
where this has caused a problem is when a user tries to disable software
|
|
travel limits by setting DHLM = DLLM = 0. Choose the following methods
|
|
to applying the bug fix:</li>
|
|
|
|
<ul>
|
|
<li> Replace <motor>/motorApp/MotorSrc/motordevCom.c with the following
|
|
updated copy: <a
|
|
href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-4/motorRecord.c">
|
|
motorRecord.c</a> </li>
|
|
|
|
</ul>
|
|
<li>The makeConfigAppInclude.pl perl script distibuted with R4-4 and
|
|
R4-4-1 does not support spaces between the macro and the "=" sign in the
|
|
config/RELEASE file.</li>
|
|
|
|
<ul>
|
|
<li>Replace <motor>/config/makeConfigAppInclude.pl with the following
|
|
updated copy: <a
|
|
href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-4/makeConfigAppInclude.pl">
|
|
makeConfigAppInclude.pl</a> </li>
|
|
<li>Replace <motor>/config/makeIocCdCommands.pl with the following
|
|
updated copy: <a
|
|
href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-4/makeIocCdCommands.pl">
|
|
makeIocCdCommands.pl</a> </li>
|
|
|
|
</ul>
|
|
<li>The following scenario would put the motor record into an invalid state.
|
|
A new target position (i.e., VAL/DVAL/RVAL) is written to the motor
|
|
record under the following conditions,<br>
|
|
<ul>
|
|
<li>motion is in progress (i.e., DMOV is false).</li>
|
|
</ul>
|
|
<ul>
|
|
<li>the new target position is different from the actual position by
|
|
less than the retry deadband (|DIFF| < RDBD).</li>
|
|
</ul>
|
|
<ul>
|
|
<li>backlash correction is enabled (i.e., BDST is non-zero) and the
|
|
new move is NOT in the "preferred direction" (preferred direction is the
|
|
direction in which the motor moves during the backlash-takeout part of a
|
|
motor move).</li>
|
|
</ul>
|
|
Install motor record version 4-4-2 or above to fix this problem.<br>
|
|
</li>
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 4-3</h2>
|
|
|
|
<ol>
|
|
<li>
|
|
The "Driver Power Monitoring" feature (available only for OMS VME58 controllers)
|
|
was erroneously and randomly being enabled. Choose one of the following
|
|
methods to applying the bug fix:</li>
|
|
|
|
<ul>
|
|
<li>
|
|
Make the following modification to <motor>/motorApp/MotorSrc/motordevCom.c:</li>
|
|
|
|
<ul>202a203
|
|
<br>> ptrans->dpm = OFF;</ul>
|
|
|
|
<li>
|
|
Replace <motor>/motorApp/MotorSrc/motordevCom.c with the following updated
|
|
copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R4-3/motordevCom.c">motordevCom.c</a></li>
|
|
|
|
<li>
|
|
Install motor record version R4-3-1, which includes this bug fix.</li>
|
|
</ul>
|
|
|
|
<li>
|
|
Under certain conditions target positions entered through RVAL were ignored.
|
|
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.
|
|
Motor record version R4-3-2 includes the fix for this bug.</li>
|
|
|
|
</ol>
|
|
|
|
<h2>Known problems with Release 3-5</h2>
|
|
|
|
<ol>
|
|
<li> Under certain conditions target positions entered through RVAL were
|
|
ignored. 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.</li>
|
|
</ol>
|
|
<ul>
|
|
<ul>
|
|
<li> Replace motorRecord.c with the following updated copy: <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/motor/R3-5/motorRecord.c">
|
|
motorRecord.c</a>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<br>
|
|
|
|
</body>
|
|
</html>
|