Holger, re...
> I have an application which applies a coordinated move to four stepper
> motors. A 4X4 cross-coupling matrix multiplies four error terms (error
> vector) to generate drive values. A gain vector is also applied during
> closed-loop operation to avoid overshoot.
> ...
> I'm using a 4X4 cross-coupling matrix to multiply an error term to
> generate motor drive values in a coordinated fashion. The matrix is
> preloaded based on a calibration procedure between a mirror and lens
> assembly. The mirror and lens can both be moved in two axes.
>
> Does anyone have any experience with this approach, or a suggestion for
> what record types might be used to accommodate this approach, or has anyone
> built custom records used for matrix multiplies, etc.
Boy do *you* have fun!
The quickest solution to implement is probably four CALC records (with
matrix elements and gains either embedded in the expressions or
gathered via input links from, say, AI records) and a SEQ record to
poke the results to the motors. The second quickest to implement is
probably an AAI record and an SNL program.
I've written two records that seem relevant:
The TABLE record controls a six-degree-of-freedom optical table, taking
table rotations and translations through a 6x6 matrix to get motor
positions (and calculating motor speeds so motors start and stop at the
same time), and taking motor positions through the inverse matrix to
recover table coordinates. The matrix elements are calculated at run
time from the user-specified location of the point about which the
table is to rotate. You can load your own (6x6) matrix and use it, if
you avoid hitting any of the fields that cause the matrix to be
recalculated. I haven't tried it, though (heh, heh).
I also wrote the TRANSFORM record, which is intended for sets of
coupled equations. This thing is basically 10 CALC records stacked
together: each calc section has an input link, an expression, and an
output link. The result from section i is used in expressions j>i.
Output links are fired as nearly simultaneously as possible.
I have done constant-matrix multiplication with this record, but the
matrix elements have to be embedded in the calculation expressions.
Both of these records are available from the EPICS Software
Distribution pages (http://www.aps.anl.gov/EpicsSoft) in the section
"Custom EPICS related software". The TABLE record is currently
available only as part of the tar file XFDApp_071296.tar.gz, which
contains nearly everything we use to control synchrotron-radiation
beamlines under EPICS 3.12.2. The TRANSFORM record is also available
separately on the same WEB page.
Tim Mooney
Beamline Controls & Data Acquisition Group
Experimental Facilities Division
Advanced Photon Source
- Navigate by Date:
- Prev:
CCMatrix for coordinated move again Holger Jones
- Next:
"Edge sensitive" record processsing. Bill Brown
- Index:
1994
1995
<1996>
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
CCMatrix for coordinated move again Holger Jones
- Next:
"Edge sensitive" record processsing. Bill Brown
- Index:
1994
1995
<1996>
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|