Files
motorBase/docs/motor_release.html
T
2018-12-12 10:52:25 -06:00

2554 lines
99 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="Kevin Peterson" name="Author" />
<meta content="Synopsis of modifications, fixes and new features for each motor record release."
name="Description" />
<title>EPICS Motor Record Release R6-10 Notice</title>
<meta content="Notification of bug fixes, functional changes and new features." name="description" />
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
</head>
<body>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-11 Release Notice</b></h1>
</div>
<div style="text-align: left">
<p>
See release notes on github: <a href="https://github.com/epics-modules/motor/releases/tag/R6-11">https://github.com/epics-modules/motor/releases/tag/R6-11</a>
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-10-1 Release Notice</b></h1>
</div>
<div style="text-align: left">
<p>
See release notes on github: <a href="https://github.com/epics-modules/motor/releases/tag/R6-10-1">https://github.com/epics-modules/motor/releases/tag/R6-10-1</a>
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-10 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>OMS support</b>
</p>
<p>
<a href="https://github.com/rsluiter">Ron Sluiter</a> added a check for an invalid MAXv interrupt level (IRQ=1)
(<a href="https://github.com/epics-modules/motor/commit/1196bbe4df5968ae4ac05c142a9f4be93827d06e">1196bbe4df5968ae4ac05c142a9f4be93827d06e</a>)
</p>
<p>
<a href="https://github.com/rsluiter">Ron Sluiter</a> added a check for a new MAXv failure mode where the board reboots after the 1st command with response
(<a href="https://github.com/epics-modules/motor/commit/e604c9588a087228dc6c0333818e00113df841ea">e604c9588a087228dc6c0333818e00113df841ea</a>)
</p>
<p>
<a href="https://github.com/rsluiter">Ron Sluiter</a> added an optional test for VME58 failure mode where the board reboots after the 1st motion related command
(<a href="https://github.com/epics-modules/motor/commit/4f54eb502bb1e4157db9a0587cfdbabd66de0c95">4f54eb502bb1e4157db9a0587cfdbabd66de0c95</a>)
</p>
</div>
<div style="text-align: left">
<p>
<b>Aerotech A3200 support</b>
</p>
<p>
<a href="https://github.com/rsluiter">Ron Sluiter</a> Removed the "Task number" argument from A3200AsynConfig and switched to using Task #2 for the ASCII Interface
(<a href="https://github.com/epics-modules/motor/commit/a52ec2f62ff34b30597bccc7de9d70b4d2ed7f86">a52ec2f62ff34b30597bccc7de9d70b4d2ed7f86</a>)
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport support</b>
</p>
<p>
<a href="https://github.com/MarkRivers">Mark Rivers</a> modified the ESP300 driver so that it correctly determines the resolution when open-loop steppers are used
(<a href="https://github.com/epics-modules/motor/commit/5245991323fb8c73cd6383e064da7b02c2629fea">5245991323fb8c73cd6383e064da7b02c2629fea</a>)
</p>
<p>
<a href="https://github.com/MarkRivers">Mark Rivers</a> changed the XPS PositionCompare API
(<a href="https://github.com/epics-modules/motor/commit/44351c99d92837cbb283b21877a87ecc821875e0">44351c99d92837cbb283b21877a87ecc821875e0</a>) and made numerous improvements to the PositionCompare functionality.
</p>
</div>
<div style="text-align: left">
<p>
<b>Motor Record improvments</b>
</p>
<p>
<a href="https://github.com/jmdewart">jmdewart</a> &amp <a href="https://github.com/klauer">Ken Lauer</a> changed the acceleration calculation so that VBAS is ignored when VELO==VBAS
(<a href="https://github.com/epics-modules/motor/commit/4b89359e1cc1b411f974c0733bdf0b70df303aa8">4b89359e1cc1b411f974c0733bdf0b70df303aa8</a>)
</p>
<p>
<a href="https://github.com/rsluiter">Ron Sluiter</a> changed the motor record logic so that the motor is stopped if URIP=Yes and RDBL read returns an error
(<a href="https://github.com/epics-modules/motor/commit/220d18fcff89507a236152bd17aa48e5f13ca471">220d18fcff89507a236152bd17aa48e5f13ca471</a>)
</p>
<p>
<a href="https://github.com/timmmooney">Tim Mooney</a> added a field, IGSET, to allow the SET field to be ignored.
More info on why this was desirable can be found in <a href="https://github.com/epics-modules/motor/pull/53">pull request #53</a>.
(<a href="https://github.com/epics-modules/motor/commit/5cad105357739d603218502eb38be20ee736b4ee">5cad105357739d603218502eb38be20ee736b4ee</a>)
</p>
<p>
<a href="https://github.com/timmmooney">Tim Mooney</a> modified the motor record's SYNC functionality so that it works when URIP=True
(<a href="https://github.com/epics-modules/motor/commit/ac900b90615ef650f13a9f21a5f1c145c0402408">ac900b90615ef650f13a9f21a5f1c145c0402408</a>)
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>AMCI ANG1 support</b>
</p>
<p>
<a href="https://github.com/kurtgoetze">Kurt Goetze</a> added support for the AMCI ANG1 controller/driver
(<a href="https://github.com/epics-modules/motor/commit/8966aeabf292874de8c78754e95e14cde1f1c776">8966aeabf292874de8c78754e95e14cde1f1c776</a>) and made numerous improvements to the PositionCompare functionality.
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport CONEX-PP support</b>
</p>
<p>
<a href="https://github.com/MarkRivers">Mark Rivers</a> added support for the CONEX-PP series to the AG_CONEX driver
(<a href="https://github.com/epics-modules/motor/commit/2b853366f48230356c869a46691acbd8c7391810">2b853366f48230356c869a46691acbd8c7391810</a>) and made numerous improvements to the PositionCompare functionality.
</p>
</div>
<div style="text-align: left">
<p>
<b>iocsh scripts</b>
</p>
<p>
<a href="https://github.com/keenanlang">Keenan Lang</a> add iocsh setup scripts for many motor controllers
(<a href="https://github.com/epics-modules/motor/commit/17d10a8158ba5ca23bfc97133901d8d6e859f1ac">17d10a8158ba5ca23bfc97133901d8d6e859f1ac</a>
&amp
<a href="https://github.com/epics-modules/motor/commit/a87835c14a20a8e11745e16591d031fb674f0e14">a87835c14a20a8e11745e16591d031fb674f0e14</a>)
</p>
</div>
<div style="text-align: left">
<p>
<b>PI E-517 support</b>
</p>
<p>
<a href="https://github.com/Brudhu">Bruno Luvizotto</a> added files for supporting PIE517 piezo controller
(<a href="https://github.com/epics-modules/motor/commit/f31ed90b255a554a1930ac721d595ade0c8095a2">f31ed90b255a554a1930ac721d595ade0c8095a2</a>)
</p>
</div>
<div style="text-align: left">
<p>
<b>New Focus 874x support</b>
</p>
<p>
<a href="https://github.com/waynelewis">Wayne Lewis</a> added support for the NewFocus 874x series of controllers
(<a href="https://github.com/epics-modules/motor/commit/634e49d5076d87fefbd875cd0700e7feb6d062e3">634e49d5076d87fefbd875cd0700e7feb6d062e3</a>)
</p>
</div>
<div style="text-align: left">
<p>
<b>asynMotor support</b>
</p>
<p>
<a href="https://github.com/mp49">Matthew Pearson</a> added parameters to asynMotorController to deal with automatic amplifier control via setClosedLoop.
(<a href="https://github.com/epics-modules/motor/commit/36dfab4a78725866fab5bd212c4c128a86e9f044">36dfab4a78725866fab5bd212c4c128a86e9f044</a>)
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-9 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b></b>
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Micronix Asyn Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added asyn motor support for the Micronix MMC-200 & MMC-100 Controllers.
</p>
</div>
<div style="text-align: left">
<p>
<b>MicroMo MVP2001 Asyn Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added asyn motor support for the MicroMo MVP2001 Controller.
</p>
</div>
<div style="text-align: left">
<p>
<b>Trajectory support</b>
</p>
<p>
Tim Mooney (APS) added trajectory support for a single-motor Aerotech Ensemble
</p>
<p>
Tim Mooney (APS) added trajectory support for the Pro-Dex OMS MAXv
</p>
</div>
<div style="text-align: left">
<p>
<b>ProfileMove support</b>
</p>
<p>
Mark Rivers (GSECARS) added ProfileMoveMode to support absolute and relative moves.
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport AG_CONEX and AG_UC controllers</b>
</p>
<p>
Mark Rivers (GSECARS) made changes to support CONEX-CC servo controller; it has
KD; supports limits, velocity, acceleration; fixed homing problems
</p>
<p>
Mark Rivers (GSECARS) made changes to support AG-UC8 model that requires CC command
to select a channel pair; add delay between writes for all commands on all ARCHs.
</p>
</div>
<div style="text-align: left">
<p>
<b>SmarAct MCS Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added support for rotary stages.
</p>
</div>
<div style="text-align: left">
<p>
<b>motorUtil improvements</b>
</p>
<p>
Kevin Peterson (APS) made the following improvments to motorUtil:
<ul>
<li>The listMovingMotors function can now be called on non-VxWorks iocs</li>
<li>The name of the motor is written to a waveform record when its DMOV field changes,
enabling smart clients to maintain a list of moving motors.</li>
</ul> </p>
</div>
<div style="text-align: left">
<p>
<b>Phytron I1AM01 Stepper Motor Controller Support</b>
</p>
<p>
Tom Slejko and Bor Marolt (Cosylab d.d.) added asyn motor support for the Phytron I1AM01 Stepper Motor Controller.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-8 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>!WARNING!</b><br />
motorRecord.dbd has been modified.&nbsp; This requires rebuilding any and all user
trees (i.e., &lt;ioctop&gt;) that load the motor record.
</p>
<p>
<b>Newport XPS Asyn Motor (Phase-2) Support</b>
</p>
<p>
The stepsPerUnit argument of XPSConfigAxis has changed from an integer to a string
to make phase-2 consistent with phase-3 support. Failing to change the stepsPerUnit
argument to a string results in parameter-out-of-range errors when attempting to
move XPS motors.
</p>
<p>
<b>Newport ESP300</b>
</p>
<p>
Prior to this release, the ESP300 driver used the controller's resolution to scale
the EGUtoRAWbacktoEGU conversion that is done between motor record and device driver
support. With R6.8 the driver uses the motor record's MRES to scale this conversion.
Users should now set the MRES like any other motor; i.e., to the precision of the
stage.
</p>
</div>
<div style="text-align: left">
<p>
<b>Soft-travel limits</b>
</p>
<p>
Several changes have been made with regard to the motor record's soft-travel limits
(LVIO field).</p>
<ul>
<li>Since the soft-travel limits (HLM/LLM, DHLM/DLLM) are not defined until after
a successful home search is performed, error checks have been removed from the home
search request (HOMF/HOMR). </li>
<li>All moves out of the invalid soft-limit travel range, toward the valid range,
are allowed. </li>
</ul>
</div>
<div style="text-align: left">
<p>
<b>Retry Deadband </b>
</p>
<p>
The retry deadband (RDBD) field no longer limits the smallest allowed move. The
size of a move is now only limited by the motor resolution (MRES).
</p>
</div>
<div style="text-align: left">
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Physik Instrumente (PI) Asyn Motor Support</b>
</p>
<p>
Steffen Rau (Physik Instrumente GmbH & Co.) has added asyn motor support for PI
motion controllers that use the GCS2 (General Command Set) command language. This
support resides in the &ltmotor&gt/motorApp/PIGCS2Src/ directory of the motor module.
</p>
</div>
<div style="text-align: left">
<p>
<b>PI micos SMC hydra Asyn Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added support for asyn motor support for the PI micos SMC hydra
controller.
</p>
</div>
<div style="text-align: left">
<p>
<b>Schneider Electric (IMS) MDrive/MForce Asyn Motor Support</b>
</p>
<p>
Nia Fong (SLAC) added asyn motor support for the Schneider Electric (IMS) MDrive/MForce
controller that uses the MCode command language.
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport XPS Support</b>
</p>
<p>
Kevin Peterson (APS) added a sequence program, xpsSlave.st, that allows master/slave
mode to be used with any version of the XPS motor support.
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport Hexapod Asyn Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added asyn motor support for the Newport Hexapod controller.
</p>
</div>
<div style="text-align: left">
<p>
<b>nPoint C300 Asyn Motor Support</b>
</p>
<p>
Kevin Peterson (APS) added asyn motor support for the nPoint C300 piezo controller.
</p>
</div>
<div style="text-align: left">
<p>
<b>OMS MAXv and MAXnet Asyn Motor Support</b>
</p>
<p>
Jens Eden (PTB) added asyn motor support for both the OMS MAXv and the OMS MAXnet
controllers.
</p>
</div>
<div style="text-align: left">
<p>
<b>Newport Agilis UC series Asyn Motor Support</b>
</p>
<p>
Mark Rivers (APS) added asyn motor support for the Newport Agilis UC series of controllers.
</p>
</div>
<p>
</p>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-6 and 6-7 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Aerotech Ensemble</b>
</p>
<ul>
<li>Since the Ensemble network connection requires period communication from the host
to prevent the Ensemble from closing the network socket, the Ensemble support based
on the old device driver architecture (phase 1) was removed with this release. The
asyn motor architecture supports continuous, periodic updates; the old architecture
does not. </li>
<li>With this release, the Aerotech Ensemble driver only supports 4.01.00 Ensemble
version firmware and above. </li>
<li>In order to support SCURVE trajectories, the move commands have been changed from
MOVE[ABS/INC] to LINEAR. Currently, the SCURVE command can only be set from an asyn
record (e.g., SCURVE 75). </li>
<li>There is a problem with initiating a home search with the Aerotech Ensemble motor
controller with EPICS. The problem is that the EPICS Ensemble driver uses Aerotech's
ASCII communication protocol and that protocol blocks all communication on ASCII
communication ports during a home search. Consequently, once a home search is started
from EPICS, it is unable to stop it. With release R6-6, the home search function
was commented out of the Ensemble driver. Users that need to perform a home search
should do it from Aerotech's IDE software, which can abort a home search. The Home
Search ability will be restored in a future release. </li>
</ul>
<p>
<b>OMS</b>
</p>
<ul>
<li>
<p>
Watchdog and reboot error checks have been added to both the VME58 and MAXv (with
firmware ver:1.33 and above) device drivers. The EPICS drivers check for a reboot
error or Watchdog timeout (MAXv) with every motor status update.
</p>
<p>
If an error occurs, an error message is sent to both the errlog task and the console.
Since a reboot or watchdog timer trip indicates that the controller has rebooted
and no longer has valid motor positions, the controller is disabled and is no longer
available to EPICS until after the VME crate has been rebooted. Other OMS 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 IOC errlog is definitive;
</p>
<p>
"***MAXv card #&lt;card&gt;Disabled*** Watchdog Timeout CTR =&lt;ctr&gt;"
</p>
<p>
"***VME58 card #&lt;card&gt;Disabled*** Reboot Detected."
</p>
</li>
<li>A third argument was added to the MAXvConfig() call; the SSI based absolute encoder
bit flag.
<p>
MAXvConfig(0, config0, 0x00)
</p>
Bit #0 for Axis X, bit #1 for Axis Y, etc.. Set a bit flag to '1' for absolute encoder
values; '0' for the standard incremental encoder values. </li>
</ul>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Hytec 8601</b>
</p>
<p>
Asyn motor driver support was added by Hytec for the 8601 stepper motor driver.
</p>
<p>
<b></b>
</p>
<p>
</p>
</div>
<p>
</p>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-5 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>64-bit compatability</b>
</p>
<p>
64-bit compile problems with the PI E816 and Aerotech Ensemble device drivers were
fixed. Mark Rivers made numerous changes to eliminate all 64-bit compiler warning
messages.
</p>
<b>OMS MAXv</b>
<p>
Dirk Zimoch (PSI) fixed a bug in the OMS MAXv driver that caused the set_status()
function to overwrite the home switch status in the response string
</p>
<p>
<b>asyn motor</b>
</p>
<ul>
<li>Matthew Pearson (Diamond) fixed a bug on Newport XPS and MM4000 asyn motor port
drives that was causing idle polling to interfere with setting positions and prevented
auto save/restore from working. </li>
<li>The asynMotor device support would leave a motor-in-motion indicator on if the
motor record issued a LOAD_POS command before the 2nd pass of device support initialization.
</li>
</ul>
<p>
<b>Highland Technologies</b>
</p>
<p>
Support for the Highland Technologies V540 motor controller has been removed.
</p>
<p>
<b>Aerotech Ensemble</b>
</p>
<ul>
<li>Aerotech Ensemble device driver fixes for incorrect Jog speeds, support for a
negative PosScaleFactor parameter and detecting maximum travel limit switch faults.
</li>
<li>This is the last release to include the old Ensemble device driver architecture
version. See below. </li>
</ul>
<p>
<b>RES field deleted</b>
</p>
<p>
The RES field was removed from the motor record database definition with this release
(R6-5). The RES field has been depreciated by the MRES field since R4-5.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Aerotech Soloist and Ensemble motor controller support</b>
</p>
<p>
Two new drivers from Aerotech were add; an asyn motor version of the Ensemble and
the Soloist under the old driver architecture. Since the Ensemble network connection
requires period communication from the host to prevent the Ensemble from closing
the network socket, the Ensemble support based on the old device driver architecture
will be removed after R5-6. The asyn motor architecture supports continuous, periodic
updates; the old architecture does not.
</p>
<p>
<b>ADEL and MDEL fields added</b>
</p>
<p>
Matthew Pearson (Diamond) added support for the ADEL and MDEL motor record fields.
Unlike most records, the ADEL/MDEL fields in the motor record apply to the User
Readback Value (RBV). See the motorRecord.html document for details.
</p>
<p>
<b>Synchronize field (SYNC)</b>
</p>
<p>
When the SYNC field is set to Yes(1) the record sets the Drive fields (VAL/DVAL/RVAL)
to their readback values (RBV/DRBV/RRBV) and sets SYNC field back to No(0).
</p>
</div>
<p>
</p>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6-4 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Stale SET position data from OMS VME58 controllers.</b>
</p>
<p>
A problem with certain OMS VME58 firmware versions (2.24-8S and all 2.35 versions)
has arisen since modifications made under R6-3. When the user sets the motor record's
position, the previous target and readback positions are read from the controller
on the next update. This occurs with the previous release (R6-3) because the "stale
data delay" was changed from 10ms to zero for the drvOms58 driver.
</p>
<p>
With this release the driver searches all VME58 board ID's for either 2.24-8S or
any 2.35 version. If any board is found with these versions, the "stale data delay"
is set to a non-zero value for all VME58 boards in the system.
</p>
<p>
<b>"tdir=" error messages</b>
</p>
<p>
A problem was reported by Emma Shepherd (Diamond) with the previous release 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 changes to the NTM logic in R6-3.
</p>
<p>
With this release, the NTM logic is restored to using feedback rather than reference
positions. In addition, an "NTM deadband factor" field (NTMF) is added to allow
the user to set the NTM deadband as follows;
</p>
<p>
NTM deadband = NTMF * (|BDST| + RDBD)
</p>
<p>
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.
</p>
<p>
<b>Access Security Level changes</b>
</p>
<p>
Major changes have been made to the Access Security Level (ASL) attribute of the
motor record fields. With previous releases, the following fields were set to ASL=0;
FOF, VOF, SSET, SUSE, VBAS, VMAX, SBAS, SMAX, UREV and MRES. All other fields were
set to ASL=1 by default.
</p>
<p>
With this release, the policy is to set all the fields that the user requires to
do the following to ASL = 0;</p>
<ul>
<li>move a motor; (VAL, DVAL, RVAL, TWF, TWR, TWV, RLV, JOGF, JOGR) </li>
<li>stop a motor; (STOP, SPMG) </li>
<li>enable/disable motor torque; (CNEN) </li>
<li>set the position of a motor; (SSET, SUSE, SET) </li>
<li>set the "user" offset of a motor; (FOF, VOF, FOFF,OFF) </li>
<li>update the status of a motor; (STUP) </li>
<li>adjust or turn off backlash; (BDST) </li>
</ul>
<p>
All other fields are set to ASL = 1.
</p>
<p>
This means that out of the list of fields that were previously set to ASL=0; VBAS,
VMAX, SBAS, SMAX, UREV and MRES are now set to ASL=1.
</p>
<p>
<b>OMS MAXv A24/A32 VMEbus addressing bug fix</b>
</p>
<p>
Previous releases had a problem with the OMS MAXv device driver when it was configured
for more than one board, and, either A24 or A32 addressing was specified. The driver
was not sizing the address space occupied by each MAXv correctly.
</p>
<p>
<b>asyn motor archtecture updates</b>
</p>
<ul>
<li>Motor record GET_INFO commands were not supported by the asyn motor archtecture
in previous releases. </li>
<li>A motor record bug was fixed that caused unscheduled retries to occur with asyn
motor. </li>
</ul>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Deferred moves for asyn motors</b>
</p>
<p>
The asyn motor framework now supports a flag to indicate that moves should be deferred.
When at zero, moves proceed as normal. When set to one, moves should be deferred
and remembered by the controller driver, but not executed immediately. When set
back to zero, the controller driver should then start all the moves (or at least
moves to the last requested demand positions) that have been deferred, as near to
simultaneously as is possible for the particular model of controller. The flag is
implemented per-controller, so all axes on a particular controller instance are
affected, but axes on other controllers via the same driver are unaffected.
</p>
<p>
It is the responsibility of the motor controller driver to actually provide such
functionality, or to give an error if the parameter is not recognised. Currently
the Newport XPS controller driver and the Delta Tau PMAC driver (in the tpmac module
available from Diamond) support this.
</p>
<p>
To use the flag, connect to any asyn port/addr combination on the controller, using
the parameter "DEFER". e.g. for a bo record, use DTYP=asynUInt32Digital, OUT=@asynMask(port,1,1)DEFER,
ZNAM="Go", ONAM="Defer"
</p>
<p>
<b>64-bit compatiablity</b>
</p>
<p>
Previous releases of the motor record distribution would not compile for 64-bit
platforms. Numerous minor modifications were made for this release to attain 64-bit
compatibility. Note that at the time of writing (03/14/08), this release was successfully
compiled on a Linux Fedora Core 6 x86_64 host using gcc version 4.1.2, but there
are bugs. Since EPICS base (R3.14.9) has not had all the bugs wrung out (Mantis
ID's #309, #310), there are no immediate plans to debug 64-bit related problems.
</p>
<p>
<b>attocube systems AG ANC150</b>
</p>
<p>
Ron Sluiter added support for the attocube systems AG ANC150 Piezo Step Controller.
</p>
<p>
<b>Aerotech's Ensemble</b>
</p>
<p>
Chad Weimer (Aerotech) added support for Aerotech's Ensemble family of digital servo
controllers.
</p>
<p>
<b>Physik Instrumente GmbH &amp; Co. Model E-816</b>
</p>
<p>
John Hammonds added support of the Physik Instrumente (PI) GmbH &amp; Co. E-816
motor controller.
</p>
</div>
<p>
</p>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6.3 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>save/restore of motor positions</b>
</p>
<p>
Mark Rivers found and fixed a bug in the motor record that resulted in motor positions
not being initialized from save/restore at boot-up if the retry deadband field (RDBD)
was not included in a save set.
</p>
<p>
<b>motorUtil error message</b>
</p>
<p>
A bug was introduced into the shell command "motorUtilInit()" 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"
</p>
<p>
<b>DC motor support</b>
</p>
<p>
Two changes were made to the motor record to better support DC motors.</p>
<ul>
<li>With this release, if retries are disabled (RTRY=0), then all moves are done in
absolute mode. This allows a DC motor user to have the readback values calculated
based on either the local encoder (UEIP) or the readback link (URIP), but still
have all moves commanded in absolute mode. Previous releases the of the motor record
would use relative moves if either the local or external readbacks were enabled,
regardless of the state (enable/disable) of the retries. </li>
<li>The New Target Monitoring (NTM field) logic is changed to use reference rather
than feedback positions. This eliminates unwanted motor record STOP commands at
the end of DC motor moves. </li>
</ul>
<p>
<b>Examples renamed</b>
</p>
<p>
The examples iocNoMPF and iocWithMPF were renamed iocNoAsyn and iocWithAsyn, respectively.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Animatics Corporation SmartMotor</b>
</p>
<p>
Shifu Xu's support for the Animatics Corporation SmartMotor was added.
</p>
<p>
<b>piezosystem jena, Inc. EDS</b>
</p>
<p>
Joe Sullivan added support for the piezosystem jena GmbH EDS data interface module.
</p>
<p>
<b>Kohzu SC-800</b>
</p>
<p>
Ron Sluiter added support for the Kohzu SC-800 stepper motor controller.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6.2 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Newport PM500 Initialization Problem</b>
</p>
<p>
The 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.
</p>
<p>
<b>Overwritten PID Parameters</b>
</p>
<p>
A bug was introduced with R6-0; the OMS device support was overwriting PID parameter
fields during its' normalization calculation.
</p>
<p>
<b>Motor Position Initialization</b>
</p>
<p>
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.
</p>
<p>
<b>Newport Build Problem</b>
</p>
<p>
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.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Thorlabs model MDT695</b>
</p>
<p>
Joe Sullivan added support for Thorlabs Piezo Control Module, model MDT695.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6.1 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.8.2 or greater.&nbsp; See the "Required Modules" section of the
Motor Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>PI C-862 communiation errors</b>
</p>
<p>
A 17ms "status update delay" was added to the driver to prevent the controller from
dropping communication characters. This problem resulted in erroneous error responses
from the controller.
</p>
<p>
<b>motorStatus[xx].adl displays</b>
</p>
<p>
All motorStatus[xx].adl displays were modified to show motor position with text
rather than with bar graphs.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Physik Instrumente GmbH &amp; Co. Model E-710</b>
</p>
<p>
Joe Sullivan added support for the Physik Instrumente (PI) GmbH &amp; Co. Model
E-710 motor controller.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 6.0 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.8.2 or greater.&nbsp; See the "Required Modules" section of the
Motor Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>OMS MAXv Polling Rate</b>
</p>
<p>
The OMS MAXv polling rate, which is set from the MAXvSetup() st.cmd command, is
allowed to be as high as the OS clock rate; i.e., (1/epicsThreadSleepQuantum()).
</p>
<p>
<b>Changes to New Focus Device Support</b>
</p>
<p>
The New Focus Model 8750 Network Controller device support ("PMNC8750") has been
changed to "PMNC87xx". It now supports both the 8750 and 8752 models.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Physik Instrumente GmbH &amp; Co. Model C-862</b>
</p>
<p>
Mohan Ramanathan and Ron Sluiter added support for the Physik Instrumente (PI) GmbH
&amp; Co. Model C-862 motor controller.
</p>
<p>
<b>ACS Tech80 SPiiPlus</b>
</p>
<p>
Joe Sullivan added support for the ACS Tech80 SPiiPlus motor controller.
</p>
<p>
<b>Spectra-Physics Encoder Mike</b>
</p>
<p>
Joe Sullivan added support for the Spectra-Physics Encoder Mike Controller (Model:
18011).
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.9 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.8.2 or greater.&nbsp; See the "Required Modules" section of the
Motor Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Soft Motor allocation limit</b>
</p>
<p>
Peter Denison (Diamond Light Source) enhanced the Soft Channel device support by
eliminating the 50 soft motor limit and replacing it with an unlimited linked list.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>All motors done/stop/moving utility</b>
</p>
<p>
Kevin Peterson's (UNI-CAT) motorUtil task was added to the motor record distribution.
The motorUtil task monitors and maintains 3 PV's; $(P)alldone, $(P)allstop, $(P)moving.
motorUtil is a replacement for the all_com_##.db distributed with the STD support
module. See the motorUtil.db file for details.
</p>
<p>
<b>Asyn Motor</b>
</p>
<p>
Peter Denison (Diamond), Nick Rees (Diamond) and Mark Rivers (APS) have added a
new motor record device support architecture based on ASYN; called "asyn motor"
support. The asyn motor support <i>is an attempt to define a clean, extensible API
for motor controller drivers to support</i>. This is a preliminary release of
work in progress. Do not use <i>asynMotor</i> device support at this time, except
for development and testing purposes only.
</p>
<p>
<b>New Focus 8750 Network Controller</b>
</p>
<p>
Joe Sullivan added support for the New Focus Model 8750 Network Controller.
</p>
<p>
<b>Physik Instrumente (PI) E-662 piezo controller</b>
</p>
<p>
Joe Sullivan added support for the Physik Instrumente (PI) GmbH &amp; Co. Model
E-662 piezo controller.
</p>
<p>
<b>Newport XPS-C8 asyn motor support</b>
</p>
<p>
Mark Rivers added asyn motor support for the Newport XPS-C8 motor controller. This
is a preliminary release of work in progress. However, it has fewer problems than
the previous XPS support, so we recommend using the new asyn support for the XPS,
with the understanding that it is still under development.
</p>
<p>
<b>Trajectory Scanning</b>
</p>
<p>
Mark Rivers added the Trajectory Scanning software for both the Newport MM4005 and
XPS-C8 motor controllers to the motor record distribution.
</p>
<p>
<b>OMS PC68 and PC78 support</b>
</p>
<p>
Brian Tieman and Ron Sluiter added support for the standalone, RS-232 versions of
the OMS PC68 and PC78 model controllers. The same device driver (OMS PC68/78) supports
both models.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.8 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.7 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Faulhaber MCDC2805</b>
</p>
<p>
Mark Rivers added support for the Faulhaber MCDC2805 servo controller.
</p>
<p>
<b>Parker Hannifin, Compumotor Division, 6K Series</b>
</p>
<p>
Joe Sullivan added support for Parker Hannifin, Compumotor Division, 6K Series controllers.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.7 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.7 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>Initial Position</b>
<p>
With this release, if the absolute values of both the save/restore's target position
and the controller's commanded position are greater than the re-try deadband (RDBD)
at boot-up, then DVAL will be initialized from the controller's value. In other
words, if the absolute value of the controller's commanded position is greater than
the re-try deadband at boot-up, than the controller's position takes precedence
over the save/restore value.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Physik Instrumente (PI) C-630</b>
</p>
<p>
Kurt Goetze added support for the Physik Instrumente (PI) model C-630 motion controller.
</p>
<p>
<b>Physik Instrumente (PI) C-848</b>
</p>
<p>
Support added for the Physik Instrumente (PI) C-848 motor controller.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.6 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.7 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>IMS MDrive Configuration</b>
<p>
IMS MDrive users must make the following configuration changes to their MDrive's
as described in the distribution document "motorR5-6/motorApp/ImsSrc/README".
</p>
<ul>
<li>Configure the limit and home switches. </li>
<li>Change the MDrives' Echo Mode Flag to two (EM=2). </li>
</ul>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.5 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.7 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>Conversion to ASYN</b>
<p>
The motor record distribution has been converted from MPF to ASYN R4.1. All support
for MPF has been removed.
</p>
</div>
<div style="text-align: left">
<b>Acceleration Correction</b>
<p>
Slew acceleration calculations were incorrect. Instead of the correct calculation;
A = (Vf - Vo) / t, the record was using A = Vf / t, which is correct only if Vo
(VBAS) is zero. Thanks to Harvey Rarback for pointing out this long standing error.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.4 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.6 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>Status Updates</b>
<p>
If the motor record is processed and there are no functions to perform (i.e., no
current or outstanding move request), then the motor record will perform a status
update using the STUP field.
</p>
</div>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>OMS MAXv device support</b>
</p>
Device support for Oregon Micro Systems, Inc. MAXv controller was added.
<p>
</p>
<p>
<b>Delta Tau PMAC</b>
</p>
<p>
Device support for Delta Tau's PMAC2-VME controller was added.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.3 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.5 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<p>
<b>OMS VME58 Servo Limit Switch Problem</b></p>
<p>
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). Although
this problem has been resolved there is a design problem with the OMS VME58 servo
controller that prevents it, in most cases, from moving off an activated limit switch.
Users are advised to avoid this situation
</p>
<p>
<b>Encoder Resolution (ERES) Polarity</b></p>
<p>
Previous releases of the motor record forced the sign of ERES to match the sign
of MRES. With this release, ERES and MRES may have different signs. This allows
the user to change the sign of ERES rather than reverse encoder wires when the motor
and encoder direction are reversed. <b>Warning!</b> This does not work with controllers
that are doing closed-loop control; e.g., DC motors. Reference (D/A) and feedback
(encoder) signals must have the same polarity for DC motors or the motor will literally
run away.
</p>
<p>
<b>PID parameter initialization</b>
</p>
<p>
PID parameters (i.e., PCOF, ICOF and DCOF fields) were not initialized at boot-up.
With this release, 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.
</p>
<p>
<b>IMS MDrive Device Driver</b>
</p>
<p>
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.
A README file has been added to the ImsSrc directory that documents how the MDrive
must be initialized before using it with this device driver.
</p>
<p>
<b>Three Device Drivers New To R3.14.x</b>
</p>
<p>
The following three device drivers have been ported from the R3.13.x compatible
version of the motor record:</p>
<ul>
<li>the Physik Instrumente (PI) GmbH &amp; Co. C-844 motor controller. </li>
<li>Kevin Peterson's support for the MicroMo MVP 2001 B02 controller. </li>
<li>Kurt Goetze's support for the Micos MoCo dc controller. </li>
</ul>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Status Update (STUP)</b>
</p>
<p>
The STUP field (Status Update) has been modified due to bug fixes. The STUP field
functions as follows;</p>
<ul>
<li>Valid values for STUP are OFF(0), ON(1) and BUSY(2). </li>
<li>A Channel Access (CA) client writes ON(1) to the STUP field which causes the motor
record to set STUP to BUSY(2) and request a single controller status update. After
the status is updated the record sets STUP to OFF(0). </li>
<li>CA clients are restricted to writing ON(1) to STUP only when STUP is OFF(0).
</li>
<li>It is the responsibility of the user to restrict the frequency (and thus the incurred
overhead) at which the CA client writes ON(1) to STUP. </li>
</ul>
<p>
With the STUP field it is possible to have another EPICS record periodically write
ON(1) to the motor record's STUP field. This would result in continuous, periodic
status updates.
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.2 Release Notice</b></h1>
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.4 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<p>
<b>Newport MM3000 Communication</b>
</p>
<p>
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.
</p>
<p>
<b>OMS VX2-006 Spurious Interrupts</b>
</p>
<p>
Spurious interrupts were occurring with OMS VX2-006 ver 1.04 controller boards.
For the sake of throughput, the OMS VME8/44 device driver enables the done (DON_E)
and input buffer full (IBF_E) interrupts, but disables the transmit buffer empty
(TBE_E).
</p>
<p>
The OMS boards are RORA VME type interrupters. The "release" register is the status
register. It contains information on the status of the transmit/receive buffer interrupts
and the done interrupt. Since the device driver was not using the transmit buffer
empty interrupt, it was polling the status register when sending a command to the
controller. With the VX2, if the IRQ became active during a status register read
cycle, the IRQ was negated at the end of the cycle and the CPU board generated a
spurious interrupt.
</p>
<p>
The VME8/44 models somehow prevented the spurious interrupts from occurring by latching
the IRQ, if and when, the IRQ became active during a status register read.
</p>
<p>
This problem has been fixed by using all of the OMS board interrupts (i.e., enable
transmit buffer empty). The OMS VME8/44/VX2/VS4 design is limited with regard to
interrupts by an all or none choice.
</p>
<p>
<b>Backlash Correction Bug Fix</b>
</p>
<p>
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.
</p>
<p>
Unfortunately, there was a bug in the logic that appeared only when MRES&lt; 0.
When MRES &lt; 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.
</p>
<p>
<b>Newport ESP300 Device Driver Crash</b>
</p>
<p>
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.
</p>
<p>
In addition, the user is required to set MRES to the resolution of the controller
as explained in the distribution document <i>motor</i>/motorApp/NewportSrc/README.
</p>
<p>
<b>Update Rate Bug Fix</b>
</p>
<p>
There were two timing related bugs with the previous release (R5.1). First, the
update rate was not working properly. The end result was that the motor task was
polling controllers as fast as possible. Second, there was an error in the motor_task
function process_messages() that enforces a time delay between UNDEFINED or IMMEDIATE
type commands (e.g., LOAD_POS, SET_ENC_RATIO, etc.) and an INFO type command. One
result of this error was that on OMS VME58 controllersan INFO update after a LOAD_POS
command would, intermittently, yield the previous position.
</p>
<p>
<b>Backlash Correction after Jogging Bug Fix</b>
</p>
<p>
Backlash correction after jogging was not working for controllers that do not support
multiple position commands on the same command line (e.g., Newport ESP300). This
has been corrected with this release with one caveat; in contrast to the feature
described in <i>Backlash Correction Bug Fix</i> above, backlash correction is always
done after jogging, regardless of the jog acceleration and speed parameters
</p>
<p>
<b>DLY field</b>
</p>
<p>
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.
</p>
<p>
Since a functioning DLY field performs the same function as the drvReadbackDelay
variables, with the added advantage that the delay can be motor specific, the drvReadbackDelay
variables have been deleted (except for the MM4000).
</p>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 5.1 Release Notice</b></h1>
</div>
<p>
<b>!WARNING!</b><br />
</p>
<div style="text-align: left;">
This release of the motor record contains major modifications.&nbsp; It has not,
yet, undergone rigorous testing.&nbsp; I highly recommend that user's test this
release in a safe, non-critical environment before committing themselves to using
it with their critical applications.<br />
<br />
This is the first R3.14 compatible release of the motor record.&nbsp; All of the
device drivers, with the exception of OMS, are operating system independent (OSI).&nbsp;
Thanks to Joe Sullivan for his work with the initial port to R3.14.<br />
</div>
<p>
<br />
<b>Requirements</b><br />
<br />
EPICS base R3.14.2 or greater.&nbsp; See the "Required Modules" section of the Motor
Record web page for details.<br />
</p>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<div style="text-align: left">
<b>MX Device Driver</b><br />
<br />
This release includes a device driver for MX.&nbsp; The MX device driver gives EPICS
user's access to motor controllers that are not currently supported by the motor
record.&nbsp; An MX example is included with the motor distribution. This device
driver requires MX release 0.62.0 or greater.<br />
<br />
<b>Mclennan PM600</b><br />
<br />
Mark Rivers added support for the Mclennan PM600 controller.<br />
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.7 Release Notice</b></h1>
</div>
<p>
<b>!WARNING!</b><br />
motorRecord.dbd has been modified.&nbsp; This requires rebuilding any and all user
trees (i.e., &lt;ioctop&gt;) that load the motor record (see README items #3 and
#4 for details).
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>Redundant DMOV Monitor Postings</b><br />
<br />
Eliminated redundant DMOV monitor postings.&nbsp; Under certain conditions the motor
record would post the state of the DMOV field twice. &nbsp;For example, with previous
releases the motor record would post DMOV=0 twice if backlash correction was enabled
and the user jogged the motor.<br />
<br />
<b>OMS VME58 Intermittent Limit Switch Status Error<br />
<br />
</b>There is a problem with OMS VME58 ver 2.35-8 firmware when used with MVME2700
CPU boards.&nbsp; The problem is that the controller board intermittently, reports
that there is no limit switch error when there is an error.&nbsp; This error can
occur if the user repeatedly, tries to move in the direction of the limit switch
when the limit error condition exits.&nbsp; A delay has been added to work around
the problem.<br />
<div style="text-align: center">
<p>
<b>New Features</b>
</p>
<div style="text-align: left">
<b>Motor Synchronized DB Puts</b><br />
<br />
<i>device directive </i>support has been extended to the PREM and POST fields for
OMS devices only.&nbsp; The new device directive supports changing the value of
a database variable.&nbsp; The syntax is as follows:<br />
&nbsp; &nbsp; &nbsp; &nbsp; PREM - @PUT(<i>pvname</i>, <i>pv-value</i>, <i>delay in
seconds</i>)@
<br />
&nbsp; &nbsp; &nbsp; &nbsp; POST &nbsp;- @PUT(<i>pvname</i>, <i>pv-value</i>)@
<br />
Note that the PREM supports a delay argument, but that POST does not. &nbsp;The
<i>Readback settle time field</i> (DLY) should be used to create a time delay after
the PV specified in the POST field is written.&nbsp; See the <i>Miscellaneous fields</i>
section of motorRecord.html for further information on the INIT, PREM and POST fields.<br />
<br />
<b>IMS MDrive17 device support</b>
</div>
</div>
<br />
Device driver support for the Intelligent Motion Systems (IMS) MDrive17 model motor
controller is available with this release.<br />
<b>
<br />
Home Velocity<br />
</b>
<br />
A home velocity field (HVEL) was added with this release. &nbsp;Like all speed related
fields, the HVEL is limited by the maximum (VMAX) and base (VBAS) velocity fields.<b></b>
&nbsp;In addition, if HVEL is not initialized by the user, the motor record sets
HVEL to VBAS.<br />
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.6 Release Notice</b></h1>
</div>
<p>
<b>!WARNING!</b><br />
motorRecord.dbd has been modified.&nbsp; This requires rebuilding any and all user
trees (i.e., &lt;ioctop&gt;) that load the motor record (see README items #3 and
#4 for details).
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<div style="text-align: left">
<b>Soft Channel Device Support<br />
<br />
</b>
</div>
<div style="text-align: left">
A conflict between the requirements specified under <i>Requirements Clarification
</i>below and the goal of having the same record level functionality for all device
drivers, including Soft Channel device support, was found by Tim Graber.<br />
</div>
<div style="text-align: left">
<br />
</div>
<div style="text-align: left">
A problem occurred with, for example, the SoftMotorEx.db that is distributed with
the motor record, when backlash was enabled in the <i>hard motor</i>(a motor configured
without Soft Channel device support).&nbsp; The result was that the <i>soft motor</i>
(a motor configured with Soft Channel device support) would interpret the hard motor's
backlash correction as the motor going in the wrong direction, and stop the "hard"
motor from completing the backlash correction.<br />
</div>
<div style="text-align: left">
<br />
</div>
<div style="text-align: left">
With this release, the requirements on how the motor record processes a new target
position while the motor is in motion have been modified based on a new field; New
Target Monitor (NTM).<br />
</div>
<div style="text-align: left">
<blockquote>
<p>
Case #1: The motor record is given a new position, which is in the opposite direction
from the current motor motion. &nbsp;If NTM is yes, the motor is immediately stopped
and given a motion command to the new position. &nbsp;If NTM is no, the motor completes
the previous move before it is given a motion command to the new position.
</p>
</blockquote>
</div>
<div style="text-align: left">
<blockquote>
<p>
Case #2: 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;If NTM is yes, the motor is stopped
after it has gone past the new position; then a command is given to return to the
new position. &nbsp;If NTM is no, the motor completes the previous move before it
is given a motion command to the new position.
</p>
</blockquote>
</div>
<div style="text-align: left">
<blockquote>
<p>
Case #3: 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.&nbsp;
This case is independent of NTM.
</p>
</blockquote>
</div>
<div style="text-align: left">
<br />
</div>
<div style="text-align: left">
A Soft Channel device support design limitation was discovered by Tim Mooney.&nbsp;
The problem is a result of the modifications made with R4-5 below, where the soft
motor synchronizes it's target position (i.e., VAL/DVAL/RVAL) with it's readback
position (RBV/DRBV/RRBV). &nbsp;Given an application where there are two or more
soft motors driving the system (e.g., slit), when one soft motor is moved, the other
soft motor <i>sees</i> it's readback changing and synchronizes it's target position
with it's readback position at the end of the move, thereby losing it's target position.<br />
</div>
<p>
</p>
<div style="text-align: left">
With this release, the LOCK field has been added to allow the user to enable/disable
synchronization due to the readback changing.
</div>
<div style="text-align: left">
<h4>
Backlash Correction Bug Fixes</h4>
The following scenario would put the motor record into an invalid state. &nbsp;A
new target position (i.e., VAL/DVAL/RVAL) is written to the motor record under the
following conditions;<br />
<ol>
<li>motion is in progress (i.e., DMOV is false). </li>
<li>the new target position is different from the actual position by less than the
retry deadband (|DIFF| &lt; RDBD). </li>
<li>backlash correction is enabled (i.e., BDST is non-zero) and the new move is <b>
not</b> in the "preferred direction" (preferred direction is the direction in which
the motor moves during the backlash-takeout part of a motor move). </li>
</ol>
A bug was introduced in R4.5 when backlash correction was changed.&nbsp; The error
occurred when a new target position was issued while the motor was moving.&nbsp;
The motor would move to the new target position at the backlash velocity rather
than the slew velocity.<br />
<br />
Thanks to Kevin M. Peterson, James B. Stevens and John Maclean for their help in
finding and fixing these bugs.
<br />
<div style="text-align: center">
<p>
<b>New Features</b>
</p>
</div>
<h4>
Newport ESP300 device support</h4>
Device support for the Newport ESP300 motor controller is available with this release.<br />
<h1>
</h1>
</div>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.5 Release Notice</b></h1>
</div>
<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
#2 for details).
</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<p>
<b>Communication Retries</b></p>
<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>
Requirements Clarification</h4>
<p>
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:</p>
<blockquote>
<p>
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.
</p>
</blockquote>
<blockquote>
<p>
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.
</p>
</blockquote>
<blockquote>
<p>
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.)
</p>
</blockquote>
<h4>
Bug Fix for Driver Power Monitoring error</h4>
<p>
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>
<p>
<b>Soft Channel device support modifications</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>
<p>
<b>Bug Fix for Array Holes in VMEbus based controllers</b></p>
<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>RES Field</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>
Backlash Correction</h4>
<p>
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.</p>
<p>
With this release, backlash correction commands are not issued to the controller
until after the slew move is completed.</p>
<h4>
Separa<b>te +/- Limit Switch status bits</b></h4>
<p>
The MSTA field has been modified by providing separate +/- limit switch status bits.
&nbsp;The MSTA bits are defined as follows:</p>
<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>
<p>
</p>
<div style="text-align: center">
<p>
<b>New Features</b>
</p>
</div>
<p>
<b>Advanced Control Systems and Mclennan device driver support</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>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.4 Release Notice</b></h1>
</div>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<p>
<b>Disable Travel Limits</b></p>
<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>RVAL ignored error</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>
<div style="text-align: center">
<b>New Features</b>
</div>
<p>
<b>Jog velocity and acceleration parameters</b></p>
<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>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.3 Release Notice</b></h1>
</div>
<p>
This release of the motor record is strictly a bug fix release; no new features
have been added.</p>
<p>
<b>STOP field hangs record</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>HIDEOS support removed</b>
</p>
<p>
HIDEOS is no longer supported.&nbsp; MPF is the only supported alternative to HIDEOS.
<br />
&nbsp;
</p>
<div style="text-align: center">
<h1>
<b>Motor Record Version 4.2 Release Notice</b></h1>
</div>
<p>
This release of the motor record is compatible with EPICS R3.13.2 and above.</p>
<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>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<p>
<b>Precedence between field pairs</b></p>
<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>Moving Off a Limit Switch with a Oms58 device</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>Separate motion commands for target and backlash moves</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>Errors introduced in V4.0</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>
<div style="text-align: center">
<h4>
<b>New Features</b></h4>
</div>
<p>
<b>Newport PM500 device support</b></p>
<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>Intelligent Motion Systems, Inc. IM483 device support</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>
<div style="text-align: center">
<h1>
Motor Record Version 4.1 Release Notice</h1>
</div>
<p>
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.</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<h4>
<b>OMS VME58 retry problem</b></h4>
<p>
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.</p>
<h4>
<b>OMS Stop problem</b></h4>
<p>
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;
</p>
<div style="text-align: center">
<h1>
Motor Record Version 4.0 Release Notice</h1>
</div>
<p>
Release 4.0 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.5 and 4.0.</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<h4>
<b>GAIN Field Removed</b></h4>
<p>
Since the GAIN field is redundant (i.e., PID parameters can be set individually)
it has been removed.</p>
<h4>
<b>HOM[F/R] Bug Fix</b></h4>
<p>
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>
<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>
Initial Position</h4>
<p>
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>
<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>
Access Security Level</h4>
<p>
In order to support the new VMAX/SMAX fields, the Access Security Level for the
following fields have been changed from one to zero:</p>
<blockquote>
<ul>
<li>MRES </li>
<li>UREV </li>
<li>VBAS </li>
<li>SBAS </li>
</ul>
</blockquote>
<h4>
MM4000/5 Device Driver</h4>
<p>
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:</p>
<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.
<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>
<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>
Bug Fix for OMS VME58 running on PowerPC</h4>
<p>
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.</p>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<p>
<b>Newport MM3000 Device Support</b></p>
<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>
Uninitialized Oms/Oms58 Driver Error Check</h4>
<p>
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.)</p>
<h4>
Maximum Velocity Fields (VMAX/SMAX)</h4>
<p>
Maximum velocity fields have been added; VMAX in EGU/s units and SMAX in RPS units.</p>
<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>
<div style="text-align: center">
<h1>
Motor Record Version 3.5 Release Notice</h1>
</div>
<p>
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:</p>
<div style="text-align: center">
<h4>
Modifications to Existing Features</h4>
</div>
<h4>
Command Primitives</h4>
<p>
<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:</p>
<blockquote>
<p>
1. INIT - Sent at record initialization.
</p>
</blockquote>
<blockquote>
<p>
2. PREM - Sent before every command string that causes motion.
</p>
</blockquote>
<blockquote>
<p>
3. POST - Sent after a complete motion is finished or when an overtravel limit switch
is detected.
</p>
</blockquote>
<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.</p>
<h4>
Servo related Fields</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>
Unused Fields Removed</h4>
<p>
The following unused motor record fields were deleted: MODE, TRAK, MDEL, ADEL, CVEL,
POSM, ALST, MLST</p>
<div style="text-align: center">
<h4>
New Features</h4>
</div>
<h4>
Device Directives</h4>
<p>
Device directive definition and processing:</p>
<ul>
<li>Valid only in the INIT field. </li>
<li>Must be identified by the following;
<ul>
<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>
</ul>
</li>
<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>
Driver Power Monitoring</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>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
User I/O #0 &lt;&gt; X axis
</p>
<p>
&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; "
</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.....................
</p>
<p>
&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; "</p>
<ul>
<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>
Soft Channel Device Support</h4>
<p>
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>
<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>
<div style="text-align: center">
<table border="1">
<tbody>
<tr align="center">
<td>
Link</td>
<td>
Link Type</td>
<td>
&nbsp;Associated Field</td>
</tr>
<tr>
<td>
OUT*</td>
<td>
DBOUTPUT</td>
<td>
<div style="text-align: center">
DVAL
</div>
</td>
</tr>
<tr align="center">
<td>
STOO</td>
<td>
DBOUTPUT</td>
<td align="center">
STOP</td>
</tr>
<tr align="center">
<td>
DINP</td>
<td>
DBINPUT</td>
<td>
DMOV</td>
</tr>
<tr>
<td>
RDBL*</td>
<td>
DBINPUT</td>
<td>
<div style="text-align: center">
DRBV
</div>
</td>
</tr>
<tr>
<td>
RINP</td>
<td>
DBINPUT</td>
<td>
<div style="text-align: center">
RMP
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div style="text-align: center">
<p>
* - Not a new field, but a new function provided only by soft channel device support.
</p>
</div>
<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>
Newport MM4000 Device Support</h4>
<p>
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:</p>
<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>
PID Gain Parameters</h4>
<p>
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:</p>
<blockquote>
<p>
For the MM4000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For all OMS controllers
</p>
</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>
<p>
Note that setting any of the individual PID record fields is <b>not</b>reflected
in the value of the GAIN field.</p>
<h4>
Highland V544 Device Support</h4>
<p>
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.
</p>
<div style="text-align: center">
<h1>
Motor Record Version 3.4 Release Notice</h1>
</div>
<p>
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:</p>
<h3>
Device driver design error fix
</h3>
<p>
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>
<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>
PID Parameter Support for VME58
</h3>
<p>
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>
<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>
Command primitives feature
</h3>
<p>
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>
<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.
</p>
</body>
</html>