The table record controls six (or fewer) motors that drive an optical table, a platform that generally can move in three orthogonal directions (X, Y, and Z), and rotate about the X, Y, and Z axes by angles AX, AY, and AZ. The record allows users to specify the point about which rotations are to occur--this is called the "fixed point" in the figures below.
The record assumes the platform rests on three pivot points named M0,
M1, and M2. (See Figs. 1-4, below). The locations of these pivot points,
and the manner in which they move, is specified by the field GEOM (loosely,
the table geometry). Four geometries, named SRI, PNC, GEOCARS, and NEWPORT,
are supported by this version of the table record.
Figure 1 (SRI geometry)
Figure 2 (PNC geometry)
Figure 3 (GEOCARS geometry)
Figure 4 (NEWPORT geometry)
In the SRI, PNC, and GEOCARS geometries, three motors (M0Y, M1Y, M2Y) move M0, M1, and M2 in the Y direction (vertically); one motor (M0X) moves M0 in the X direction; one motor (M2X) moves M2 in the X direction; and one motor (M2Z) moves M2 in the Z direction. M1 is unconstrained in the X-Z plane; M0 is unconstrained along the Z axis.
In the NEWPORT geometry, the three motors (M0Y, M1Y, M2Y) vary the lengths of the table legs (i.e., the distances between the table top and pivot points M0, M1, and M2). Thus, in this geometry the pivot points do not move vertically.
You are (or the instrument specialist is) expected to customize the table software by specifying the motors it is to control, and to set up the table by describing the locations of the pivot points, and by specifying the table geometry, the orientation angle of the table with respect to the laboratory coordinate system, the location of the point about which the table is to rotate (also called the "fixed" point in this documentation), and any absolute user limits on virtual motors.
In this version, the location is specified by two vectors: a reference-point vector R, which locates an arbitrary point from which measurements are practical (e.g., a corner of the table surface); and the vector, S, which locates the fixed point relative to R. These vectors are specified with the fields RX, RY, RZ, SX, SY, SZ. They are defined relative to the origin of the table's local coordinate system. (See Figs. 1-4.)
If R=0, the new system is nearly identical to the old, except for the value SX, whose definition has changed such that SX_new = LX - SX_old. (In most cases, SX_old was equal to LX/2, so no change is required.)
Alphabetical listing of all fields | with terse descriptions |
Calibration fields | allow you to redefine the table position |
Setup fields | specify the table dimensions and the location of the "fixed point" |
Link fields | connect the table record to motor records |
Limit fields | values read from or calculated from motor limits |
Speed fields | attempt to keep the "fixed" point fixed even while moving |
Table drive fields | by which you move the table |
Motor drive fields | by which the table record moves motors |
Readback fields | current and desired positions of table and motors |
Miscellaneous fields | engineering units, command "buttons", etc. |
Private fields | in which you are not expected to be interested |
Name | Access | Prompt | Data type | Comment | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | R | x to m matrix | DOUBLE* | 3x3 rotation matrix | |||||||||||||
AEGU | R/W | Angular Units Name | STRING | Engineering units for angles (16-chars) | |||||||||||||
AX0 | R/W | x-angle offset | DOUBLE | True table position - reported table position | |||||||||||||
AX | R/W* | x angle | DOUBLE | x-angle drive field | |||||||||||||
AXL | R | x angle true value | DOUBLE | True x angle | |||||||||||||
AXRB | R | x angle readback | DOUBLE | x angle calculated from motor drive values | |||||||||||||
AY0 | R/W | y-angle offset | DOUBLE | True table position - reported table position | |||||||||||||
AY | R/W* | y angle | DOUBLE | y-angle drive field | |||||||||||||
AYL | R | y angle true value | DOUBLE | True y angle | |||||||||||||
AYRB | R | y angle readback | DOUBLE | y angle calculated from motor drive values | |||||||||||||
AZ0 | R/W | z-angle offset | DOUBLE | True table position - reported table position | |||||||||||||
AZ | R/W* | z angle | DOUBLE | z-angle drive field | |||||||||||||
AZL | R | z angle true value | DOUBLE | True z angle | |||||||||||||
AZRB | R | z angle readback | DOUBLE | z angle calculated from motor drive values | |||||||||||||
B | R | m to x matrix | DOUBLE* | 3x3 utility matrix | |||||||||||||
E0X | R | encoder 0X val | DOUBLE | Current position of M0X motor | |||||||||||||
E0XI | R/W | encoder 0X inlink | INLINK | Link from M0X motor's readback | |||||||||||||
E0Y | R | encoder 0Y val | DOUBLE | Current position of M0Y motor | |||||||||||||
E0YI | R/W | encoder 0Y inlink | INLINK | Link from M0Y motor's readback | |||||||||||||
E1Y | R | encoder 1Y val | DOUBLE | Current position of M1Y motor | |||||||||||||
E1YI | R/W | encoder 1Y inlink | INLINK | Link from M1Y motor's readback | |||||||||||||
E2X | R | encoder 2X val | DOUBLE | Current position of M2X motor | |||||||||||||
E2XI | R/W | encoder 2X inlink | INLINK | Link from M2X motor's readback | |||||||||||||
E2Y | R | encoder 2Y val | DOUBLE | Current position of M2Y motor | |||||||||||||
E2YI | R/W | encoder 2Y inlink | INLINK | Link from M2Y motor's readback | |||||||||||||
E2Z | R | encoder 2Z val | DOUBLE | Current position of M2Z motor | |||||||||||||
E2ZI | R/W | encoder 2Z inlink | INLINK | Link from M2Z motor's readback | |||||||||||||
EAX | R | encoder x angle | DOUBLE | Current table position (x angle) | |||||||||||||
EAY | R | encoder y angle | DOUBLE | Current table position (y angle) | |||||||||||||
EAZ | R | encoder z angle | DOUBLE | Current table position (z angle) | |||||||||||||
EX | R | encoder x | DOUBLE | Current table position (x translation) | |||||||||||||
EY | R | encoder y | DOUBLE | Current table position (y translation) | |||||||||||||
EZ | R | encoder z | DOUBLE | Current table position (z translation) | |||||||||||||
H0X | R | motor 0X hi limit | DOUBLE | ||||||||||||||
H0XL | R/W | motor 0X HLM link | INLINK | Link from motor's limit field | |||||||||||||
H0Y | R | motor 0Y hi limit | DOUBLE | ||||||||||||||
H0YL | R/W | motor 0Y HLM link | INLINK | Link from motor's limit field | |||||||||||||
H1Y | R | motor 1Y hi limit | DOUBLE | ||||||||||||||
H1YL | R/W | motor 1Y HLM link | INLINK | Link from motor's limit field | |||||||||||||
H2X | R | motor 2X hi limit | DOUBLE | ||||||||||||||
H2XL | R/W | motor 2X HLM link | INLINK | Link from motor's limit field | |||||||||||||
H2Y | R | motor 2Y hi limit | DOUBLE | ||||||||||||||
H2YL | R/W | motor 2Y HLM link | INLINK | Link from motor's limit field | |||||||||||||
H2Z | R | motor 2Z hi limit | DOUBLE | ||||||||||||||
H2ZL | R/W | motor 2Z HLM link | INLINK | Link from motor's limit field | |||||||||||||
HLAX | R | x angle hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
HLAY | R | y angle hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
HLAZ | R | z angle hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
HLX | R | x hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
HLY | R | y hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
HLZ | R | z hi limit | DOUBLE | Calculated from motor limits | |||||||||||||
INIT | R/W* | init table | SHORT | Command: Abandon calibration and sync drive fields to motor positions | |||||||||||||
GEOM | R/W* | table geometry | DOUBLE | (0:"SRI", 1:"GEOCARS", 2:"NEWPORT", 3:"PNC") Specify the arrangement of table legs and motors. | |||||||||||||
L0X | R | motor 0X lo limit | DOUBLE | ||||||||||||||
L0XL | R/W | motor 0X LLM link | INLINK | Link from motor's limit field | |||||||||||||
L0Y | R | motor 0Y lo limit | DOUBLE | ||||||||||||||
L0YL | R/W | motor 0Y LLM link | INLINK | Link from motor's limit field | |||||||||||||
L1Y | R | motor 1Y lo limit | DOUBLE | ||||||||||||||
L1YL | R/W | motor 1Y LLM link | INLINK | Link from motor's limit field | |||||||||||||
L2X | R | motor 2X lo limit | DOUBLE | ||||||||||||||
L2XL | R/W | motor 2X LLM link | INLINK | Link from motor's limit field | |||||||||||||
L2Y | R | motor 2Y lo limit | DOUBLE | ||||||||||||||
L2YL | R/W | motor 2Y LLM link | INLINK | Link from motor's limit field | |||||||||||||
L2Z | R | motor 2Z lo limit | DOUBLE | ||||||||||||||
L2ZL | R/W | motor 2Z LLM link | INLINK | Link from motor's limit field | |||||||||||||
LEGU | R/W | Linear Units Name | STRING | Engineering units for translations (16-chars) | |||||||||||||
LLAX | R | x angle lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LLAY | R | y angle lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LLAZ | R | z angle lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LLX | R | x lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LLY | R | y lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LLZ | R | z lo limit | DOUBLE | Calculated from motor limits | |||||||||||||
LVIO | R | limit violation | SHORT | If nonzero, requested motion would violate limits | |||||||||||||
LX | R/W | wheelbase x | DOUBLE | x distance between table legs M0 and M1 | |||||||||||||
LZ | R/W | wheelbase z | DOUBLE | z distance between table legs M0 and M2 | |||||||||||||
M0X | R | motor 0X val | DOUBLE | Desired motor position | |||||||||||||
M0XL | R/W | motor 0X outlink | OUTLINK | Link to motor's drive field | |||||||||||||
M0Y | R | motor 0Y val | DOUBLE | Desired motor position | |||||||||||||
M0YL | R/W | motor 0Y outlink | OUTLINK | Link to motor's drive field | |||||||||||||
M1Y | R | motor 1Y val | DOUBLE | Desired motor position | |||||||||||||
M1YL | R/W | motor 1Y outlink | OUTLINK | Link to motor's drive field | |||||||||||||
M2X | R | motor 2X val | DOUBLE | Desired motor position | |||||||||||||
M2XL | R/W | motor 2X outlink | OUTLINK | Link to motor's drive field | |||||||||||||
M2Y | R | motor 2Y val | DOUBLE | Desired motor position | |||||||||||||
M2YL | R/W | motor 2Y outlink | OUTLINK | Link to motor's drive field | |||||||||||||
M2Z | R | motor 2Z val | DOUBLE | Desired motor position | |||||||||||||
M2ZL | R/W | motor 2Z outlink | OUTLINK | Link to motor's drive field | |||||||||||||
MMAP | R | Monitor Mask | ULONG | ||||||||||||||
PP0 | R | pivot pt 0 | DOUBLE | Desired loc of pivot point 0 (3 vector) | |||||||||||||
PP1 | R | pivot pt 1 | DOUBLE | Desired loc of pivot point 1 (3 vector) | |||||||||||||
PP2 | R | pivot pt 2 | DOUBLE | Desired loc of pivot point 2 (3 vector) | |||||||||||||
PPO0 | R | pivot pt 0 orig | DOUBLE | Current loc of pivot point 0 (3 vector) | |||||||||||||
PPO1 | R | pivot pt 1 orig | DOUBLE | Current loc of pivot point 1 (3 vector) | |||||||||||||
PPO2 | R | pivot pt 2 orig | DOUBLE | Current loc of pivot point 2 (3 vector) | |||||||||||||
PREC | R/W | Display Precision | SHORT | Number of digits to right of decimal point | |||||||||||||
R0X | R | motor 0X readback | DOUBLE | Motor's desired value | |||||||||||||
R0XI | R/W | motor 0X RBV link | INLINK | Link from motor's drive field | |||||||||||||
R0Y | R | motor 0Y readback | DOUBLE | Motor's desired value | |||||||||||||
R0YI | R/W | motor 0Y RBV link | INLINK | Link from motor's drive field | |||||||||||||
R1Y | R | motor 1Y readback | DOUBLE | Motor's desired value | |||||||||||||
R1YI | R/W | motor 1Y RBV link | INLINK | Link from motor's drive field | |||||||||||||
R2X | R | motor 2X readback | DOUBLE | Motor's desired value | |||||||||||||
R2XI | R/W | motor 2X RBV link | INLINK | Link from motor's drive field | |||||||||||||
R2Y | R | motor 2Y readback | DOUBLE | Motor's desired value | |||||||||||||
R2YI | R/W | motor 2Y RBV link | INLINK | Link from motor's drive field | |||||||||||||
R2Z | R | motor 2Z readback | DOUBLE | Motor's desired value | |||||||||||||
R2ZI | R/W | motor 2Z RBV link | INLINK | Link from motor's drive field | |||||||||||||
READ | R/W* | readback motors | SHORT | Command: read current motor positions, translate to table positions | |||||||||||||
RX | R/W* | x of ref point | DOUBLE | X position of reference point | |||||||||||||
RY | R/W* | y of ref point | DOUBLE | Y position of reference point | |||||||||||||
RZ | R/W* | z of ref point | DOUBLE | Z position of reference point | |||||||||||||
SET | R/W | set table | MENU | (0:"Use", 1:"Set") | |||||||||||||
SSET | R/W | Set SET Mode | SHORT | asl(ASL0) | |||||||||||||
SUSE | R/W | Set USE Mode | SHORT | asl(ASL0) | |||||||||||||
SX | R/W* | x of fixed point | DOUBLE | X position of fixed point | |||||||||||||
SY | R/W* | y of fixed point | DOUBLE | Y position of fixed point | |||||||||||||
SYNC | R/W* | sync with motors | SHORT | Command: read motor positions, reconcile table positions to them | |||||||||||||
SZ | R/W* | z of fixed point | DOUBLE | Z position of fixed point | |||||||||||||
UHAX | R/W* | user's x angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
UHAY | R/W* | user's y angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
UHAZ | R/W* | user's z angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
UHX | R/W* | user's x hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
UHY | R/W* | user's y hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
UHZ | R/W* | user's z hi limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULAX | R/W* | user's x angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULAY | R/W* | user's y angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULAZ | R/W* | user's z angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULX | R/W* | user's x lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULY | R/W* | user's y lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
ULZ | R/W* | user's z lo limit | DOUBLE | Absolute user limit (independent of table calibration) | |||||||||||||
V0X | R | speed 0X val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V0XI | R/W | speed 0X inlink | INLINK | Link from motor's speed field | |||||||||||||
V0XL | R/W | speed 0X outlink | OUTLINK | Link to motor's speed field | |||||||||||||
V0Y | R | speed 0Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V0YI | R/W | speed 0Y inlink | INLINK | Link from motor's speed field | |||||||||||||
V0YL | R/W | speed 0Y outlink | OUTLINK | Link to motor's speed field | |||||||||||||
V1Y | R | speed 1Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V1YI | R/W | speed 1Y inlink | INLINK | Link from motor's speed field | |||||||||||||
V1YL | R/W | speed 1Y outlink | OUTLINK | Link to motor's speed field | |||||||||||||
V2X | R | speed 2X val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V2XI | R/W | speed 2X inlink | INLINK | Link from motor's speed field | |||||||||||||
V2XL | R/W | speed 2X outlink | OUTLINK | Link to motor's speed field | |||||||||||||
V2Y | R | speed 2Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V2YI | R/W | speed 2Y inlink | INLINK | Link from motor's speed field | |||||||||||||
V2YL | R/W | speed 2Y outlink | OUTLINK | Link to motor's speed field | |||||||||||||
V2Z | R | speed 2Z val | DOUBLE | Speed to be written to motor (for duration of commanded move) | |||||||||||||
V2ZI | R/W | speed 2Z inlink | INLINK | Link from motor's speed field | |||||||||||||
V2ZL | R/W | speed 2Z outlink | OUTLINK | Link to motor's speed field | |||||||||||||
VAL | R/W | Result | DOUBLE | Not used | |||||||||||||
VERS | R | Code Version | FLOAT | e.g., 5.0 | |||||||||||||
X0 | R/W | x offset | DOUBLE | True table position - reported table position | |||||||||||||
X | R/W* | x translation | DOUBLE | x translation drive field | |||||||||||||
XL | R | x true value | DOUBLE | True x translation | |||||||||||||
XRB | R | x readback value | DOUBLE | x translation calc'd from motor drive values | |||||||||||||
Y0 | R/W | y offset | DOUBLE | True table position - reported table position | |||||||||||||
Y | R/W* | y translation | DOUBLE | y translation drive field | |||||||||||||
YANG | R/W* | Orientation angle | DOUBLE | Rotation of table base about Y axis | |||||||||||||
YL | R | y true value | DOUBLE | True y translation | |||||||||||||
YRB | R | y readback value | DOUBLE | y translation calc'd from motor drive values | |||||||||||||
Z0 | R/W | z offset | DOUBLE | True table position - reported table position | |||||||||||||
Z | R/W* | z translation | DOUBLE | z translation drive field | |||||||||||||
ZERO | R/W* | zero table | SHORT | Command: call current table position and angle 'zero' | |||||||||||||
ZL | R | z true value | DOUBLE | True z translation | |||||||||||||
ZRB | R | z readback value | DOUBLE | z translation calc'd from motor drive values | |||||||||||||
|
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
AX0 | R/W | x-angle offset | DOUBLE | True table position - reported table position |
AXL | R | x angle true value | DOUBLE | True x angle |
AY0 | R/W | y-angle offset | DOUBLE | True table position - reported table position |
AYL | R | y angle true value | DOUBLE | True y angle |
AZ0 | R/W | z-angle offset | DOUBLE | True table position - reported table position |
AZL | R | z angle true value | DOUBLE | True z angle |
SET | R/W | set table | MENU | (0:"Use", 1:"Set") |
SSET | R/W | Set SET Mode | SHORT | asl(ASL0) |
SUSE | R/W | Set USE Mode | SHORT | asl(ASL0) |
X0 | R/W | x offset | DOUBLE | True table position - reported table position |
XL | R | x true value | DOUBLE | True x translation |
Y0 | R/W | y offset | DOUBLE | True table position - reported table position |
YL | R | y true value | DOUBLE | True y translation |
Z0 | R/W | z offset | DOUBLE | True table position - reported table position |
ZERO | R/W* | zero table | SHORT | Command: call current table position and angle 'zero' |
ZL | R | z true value | DOUBLE | True z translation |
Specify the locations of the pivot points (legs).
Select a table geometry by setting the field GEOM to "SRI", "GEOCARS", "NEWPORT", or "PNC".
SRI geometry
GEOCARS geometry
NEWPORT geometry
PNC geometry
Specify the orientation of the table with respect to the laboratory coordinate system.
The table orientation is specified with YANG, the angle through which the table must be rotated from an arbitrarily chosen "standard" position to the position in which you are going to use it. For the SRI and PNC geometries, when YANG=0, M2 is downstream. For the GEOCARS geometry, when YANG=0, M1 is directly downstream from M2. For the NEWPORT geometry, when YANG=0, M2 is directly downstream from M0. As the table rotates clockwise (as seen from above) YANG increases. (These standard positions are illustrated in Figs. 1-4.)
Specify the point about which the table is to rotate.
This point is specified by (RZ, RY, RZ) and (SX, SY, SZ), as shown in Figs. 1-3, above.
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
GEOM | R/W* | table geometry | DOUBLE | (0:"SRI", 1:"GEOCARS", 2:"NEWPORT", 3:"PNC") Specify the arrangement of table legs and motors. |
LX | R/W | wheelbase x | DOUBLE | x distance between table legs |
LZ | R/W | wheelbase z | DOUBLE | z distance between table legs |
RX | R/W* | x of ref point | DOUBLE | X position of reference point |
RY | R/W* | y of ref point | DOUBLE | Y position of reference point |
RZ | R/W* | z of ref point | DOUBLE | Z position of reference point |
SX | R/W* | x loc fixed point | DOUBLE | X position of fixed point |
SY | R/W* | y loc fixed point | DOUBLE | Y position of fixed point |
SZ | R/W* | z loc fixed point | DOUBLE | Z position of fixed point |
YANG | R/W* | Orientation angle | DOUBLE | Rotation of table base about Y axis |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
E0XI | R/W | encoder 0X inlink | INLINK | Link from M0X motor's readback |
E0YI | R/W | encoder 0Y inlink | INLINK | Link from M0Y motor's readback |
E1YI | R/W | encoder 1Y inlink | INLINK | Link from M1Y motor's readback |
E2XI | R/W | encoder 2X inlink | INLINK | Link from M2X motor's readback |
E2YI | R/W | encoder 2Y inlink | INLINK | Link from M2Y motor's readback |
E2ZI | R/W | encoder 2Z inlink | INLINK | Link from M2Z motor's readback |
H0XL | R/W | motor 0X HLM link | INLINK | Link from motor's limit field |
H0YL | R/W | motor 0Y HLM link | INLINK | Link from motor's limit field |
H1YL | R/W | motor 1Y HLM link | INLINK | Link from motor's limit field |
H2XL | R/W | motor 2X HLM link | INLINK | Link from motor's limit field |
H2YL | R/W | motor 2Y HLM link | INLINK | Link from motor's limit field |
H2ZL | R/W | motor 2Z HLM link | INLINK | Link from motor's limit field |
L0XL | R/W | motor 0X LLM link | INLINK | Link from motor's limit field |
L0YL | R/W | motor 0Y LLM link | INLINK | Link from motor's limit field |
L1YL | R/W | motor 1Y LLM link | INLINK | Link from motor's limit field |
L2XL | R/W | motor 2X LLM link | INLINK | Link from motor's limit field |
L2YL | R/W | motor 2Y LLM link | INLINK | Link from motor's limit field |
L2ZL | R/W | motor 2Z LLM link | INLINK | Link from motor's limit field |
M0XL | R/W | motor 0X outlink | OUTLINK | Link to motor's drive field |
M0YL | R/W | motor 0Y outlink | OUTLINK | Link to motor's drive field |
M1YL | R/W | motor 1Y outlink | OUTLINK | Link to motor's drive field |
M2XL | R/W | motor 2X outlink | OUTLINK | Link to motor's drive field |
M2YL | R/W | motor 2Y outlink | OUTLINK | Link to motor's drive field |
M2ZL | R/W | motor 2Z outlink | OUTLINK | Link to motor's drive field |
R0XI | R/W | motor 0X RBV link | INLINK | Link from motor's drive field |
R0YI | R/W | motor 0Y RBV link | INLINK | Link from motor's drive field |
R1YI | R/W | motor 1Y RBV link | INLINK | Link from motor's drive field |
R2XI | R/W | motor 2X RBV link | INLINK | Link from motor's drive field |
R2YI | R/W | motor 2Y RBV link | INLINK | Link from motor's drive field |
R2ZI | R/W | motor 2Z RBV link | INLINK | Link from motor's drive field |
V0XI | R/W | speed 0X inlink | INLINK | Link from motor's speed field |
V0XL | R/W | speed 0X outlink | OUTLINK | Link to motor's speed field |
V0YI | R/W | speed 0Y inlink | INLINK | Link from motor's speed field |
V0YL | R/W | speed 0Y outlink | OUTLINK | Link to motor's speed field |
V1YI | R/W | speed 1Y inlink | INLINK | Link from motor's speed field |
V1YL | R/W | speed 1Y outlink | OUTLINK | Link to motor's speed field |
V2XI | R/W | speed 2X inlink | INLINK | Link from motor's speed field |
V2XL | R/W | speed 2X outlink | OUTLINK | Link to motor's speed field |
V2YI | R/W | speed 2Y inlink | INLINK | Link from motor's speed field |
V2YL | R/W | speed 2Y outlink | OUTLINK | Link to motor's speed field |
V2ZI | R/W | speed 2Z inlink | INLINK | Link from motor's speed field |
V2ZL | R/W | speed 2Z outlink | OUTLINK | Link to motor's speed field |
User limits UH* and UL* are applied to virtual-motor limits after those limits have been calculated from motor limits. If both the high and low limits associated with a motion are exactly zero, those limits are ignored. To keep a table's X angle at zero, then, you might set UHAX=1.e-9, ULAX=-1.e-9.
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
H0X | R | motor 0X hi limit | DOUBLE | |
H0Y | R | motor 0Y hi limit | DOUBLE | |
H1Y | R | motor 1Y hi limit | DOUBLE | |
H2X | R | motor 2X hi limit | DOUBLE | |
H2Y | R | motor 2Y hi limit | DOUBLE | |
H2Z | R | motor 2Z hi limit | DOUBLE | |
HLAX | R | x angle hi limit | DOUBLE | Calculated from motor limits |
HLAY | R | y angle hi limit | DOUBLE | Calculated from motor limits |
HLAZ | R | z angle hi limit | DOUBLE | Calculated from motor limits |
HLX | R | x hi limit | DOUBLE | Calculated from motor limits |
HLY | R | y hi limit | DOUBLE | Calculated from motor limits |
HLZ | R | z hi limit | DOUBLE | Calculated from motor limits |
L0X | R | motor 0X lo limit | DOUBLE | |
L0Y | R | motor 0Y lo limit | DOUBLE | |
L1Y | R | motor 1Y lo limit | DOUBLE | |
L2X | R | motor 2X lo limit | DOUBLE | |
L2Y | R | motor 2Y lo limit | DOUBLE | |
L2Z | R | motor 2Z lo limit | DOUBLE | |
LLAX | R | x angle lo limit | DOUBLE | Calculated from motor limits |
LLAY | R | y angle lo limit | DOUBLE | Calculated from motor limits |
LLAZ | R | z angle lo limit | DOUBLE | Calculated from motor limits |
LLX | R | x lo limit | DOUBLE | Calculated from motor limits |
LLY | R | y lo limit | DOUBLE | Calculated from motor limits |
LLZ | R | z lo limit | DOUBLE | Calculated from motor limits |
LVIO | R | limit violation | SHORT | Requested motion would violate limits |
UHAX | R/W* | user's x angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
UHAY | R/W* | user's y angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
UHAZ | R/W* | user's z angle hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
UHX | R/W* | user's x hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
UHY | R/W* | user's y hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
UHZ | R/W* | user's z hi limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULAX | R/W* | user's x angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULAY | R/W* | user's y angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULAZ | R/W* | user's z angle lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULX | R/W* | user's x lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULY | R/W* | user's y lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
ULZ | R/W* | user's z lo limit | DOUBLE | Absolute user limit (independent of table calibration) |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
V0X | R | speed 0X val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
V0Y | R | speed 0Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
V1Y | R | speed 1Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
V2X | R | speed 2X val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
V2Y | R | speed 2Y val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
V2Z | R | speed 2Z val | DOUBLE | Speed to be written to motor (for duration of commanded move) |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
AX | R/W* | x angle | DOUBLE | x-angle drive field |
AY | R/W* | y angle | DOUBLE | y-angle drive field |
AZ | R/W* | z angle | DOUBLE | z-angle drive field |
X | R/W* | x translation | DOUBLE | x translation drive field |
Y | R/W* | y translation | DOUBLE | y translation drive field |
Z | R/W* | z translation | DOUBLE | z translation drive field |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
M0X | R | motor 0X val | DOUBLE | Desired motor position |
M0Y | R | motor 0Y val | DOUBLE | Desired motor position |
M1Y | R | motor 1Y val | DOUBLE | Desired motor position |
M2X | R | motor 2X val | DOUBLE | Desired motor position |
M2Y | R | motor 2Y val | DOUBLE | Desired motor position |
M2Z | R | motor 2Z val | DOUBLE | Desired motor position |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
AXRB | R | x angle readback | DOUBLE | x angle calc'd from motor drive values |
AYRB | R | y angle readback | DOUBLE | y angle calc'd from motor drive values |
AZRB | R | z angle readback | DOUBLE | z angle calc'd from motor drive values |
E0X | R | encoder 0X val | DOUBLE | Current position of M0X motor |
E0Y | R | encoder 0Y val | DOUBLE | Current position of M0Y motor |
E1Y | R | encoder 1Y val | DOUBLE | Current position of M1Y motor |
E2X | R | encoder 2X val | DOUBLE | Current position of M2X motor |
E2Y | R | encoder 2Y val | DOUBLE | Current position of M2Y motor |
E2Z | R | encoder 2Z val | DOUBLE | Current position of M2Z motor |
EAX | R | encoder x angle | DOUBLE | Current table position (x angle) |
EAY | R | encoder y angle | DOUBLE | Current table position (y angle) |
EAZ | R | encoder z angle | DOUBLE | Current table position (z angle) |
EX | R | encoder x | DOUBLE | Current table position (x translation) |
EY | R | encoder y | DOUBLE | Current table position (y translation) |
EZ | R | encoder z | DOUBLE | Current table position (z translation) |
R0X | R | motor 0X readback | DOUBLE | Motor's desired value |
R0Y | R | motor 0Y readback | DOUBLE | Motor's desired value |
R1Y | R | motor 1Y readback | DOUBLE | Motor's desired value |
R2X | R | motor 2X readback | DOUBLE | Motor's desired value |
R2Y | R | motor 2Y readback | DOUBLE | Motor's desired value |
R2Z | R | motor 2Z readback | DOUBLE | Motor's desired value |
XRB | R | x readback value | DOUBLE | x translation calc'd from motor drive values |
YRB | R | y readback value | DOUBLE | y translation calc'd from motor drive values |
ZRB | R | z readback value | DOUBLE | z translation calc'd from motor drive values |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
AEGU | R/W | Angular Units Name | STRING | Engineering units for angles (16-chars) |
INIT | R/W* | init table | SHORT | Command: Abandon calibration and sync drive fields to motor positions |
LEGU | R/W | Linear Units Name | STRING | Engineering units for translations (16-chars) |
PREC | R/W | Display Precision | SHORT | Number of digits to right of decimal point |
READ | R/W* | readback motors | SHORT | Command: Read current motor positions, translate to table positions |
SYNC | R/W* | sync with motors | SHORT | Command: Read motor positions, reconcile table positions to them |
VAL | R/W | Result | DOUBLE | Not used |
VERS | R | Code Version | FLOAT | e.g., 5.0 |
Name | Access | Prompt | Data type | Comments |
---|---|---|---|---|
A | R | x to m matrix | DOUBLE* | 3x3 rotation matrix |
B | R | m to x matrix | DOUBLE* | 3x3 utility matrix |
MMAP | R | Monitor Mask | ULONG | |
PP0 | R | pivot pt 0 | DOUBLE | Desired loc of pivot point 0 (3 vector) |
PP1 | R | pivot pt 1 | DOUBLE | Desired loc of pivot point 1 (3 vector) |
PP2 | R | pivot pt 2 | DOUBLE | Desired loc of pivot point 2 (3 vector) |
PPO0 | R | pivot pt 0 orig | DOUBLE | Loc of pivot point 0 when all user coordinates are zero (3 vector) |
PPO1 | R | pivot pt 1 orig | DOUBLE | Loc of pivot point 1 when all user coordinates are zero (3 vector) |
PPO2 | R | pivot pt 2 orig | DOUBLE | Loc of pivot point 2 when all user coordinates are zero (3 vector) |
SOURCE CODE
files to be placed in <top>/<app>App/src/ |
|
---|---|
tableRecord.c | Record support code |
tableRecord.dbd | Database definition file |
Makefile | Make sure the following lines occur in the file:
DBDINC += tableRecord SRCS += tableRecord.c |
<app>Include.dbd | Make sure the following line occurs in the file:
include "tableRecord.dbd" |
DATABASES
files to be placed in <top>/<app>App/Db/ |
|
---|---|
table.db | Table database |
The database file contains one table record linked with
up to six motor records defined in some other database. The motor records
are referred to as $(P)$(M0X), $(P)$(M0Y), $(P)$(M1Y), $(P)$(M2X), $(P)$(M2Y),
and $(P)$(M2Z).
This database allows you to give names of motors that don't actually exist, to support tables that have fewer than six motors. This database works with fewer than six motors only if you have version 3.6 or later of the transform record. Earlier versions of the transform record refuse to operate unless all of their non-blank link fields contain valid links. |
|
table_settings.req | Autosave request file, which names the PV's in table.db that should be preserved across a reboot of the computer on which this software runs. |
MEDM DISPLAY FILES
files to be placed in <top>/<app>App/op/adl/ |
|
---|---|
table.adl | Small control display |
table_setup_SRI.adl | Setup display for SRI geometry |
table_setup_GEOCARS.adl | Setup display for GEOCARS geometry |
table_setup_NEWPORT.adl | Setup display for NEWPORT geometry |
table_setup_PNC.adl | Setup display for PNC geometry |
table_full.adl | Full control display |
These files build medm screens to access the table
record. To use one of them from the command line, type, for example
medm -x -macro "P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6" table.adlwhere xxx:table1 is the name of the table record, and xxx:Table1: is the prefix attached to all other records in the table database. |
EPICS STARTUP FILES
files to be placed in <top>/iocBoot/ioc<name>/ |
|
---|---|
st.cmd | Startup script |
This file is not included in the distribution. The following
line added to st.cmd loads a single table. Note that the NEWPORT geometry
normally does not have a motor associated with M2Z. Indicate this by setting
M2Z to some string (e.g., "junk") that will not resolve to the name of
an existing record.
dbLoadRecords("xxxApp/Db/table.db","P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6,GEOM=SRI") |
BACKUP/RESTORE (BURT) REQUEST FILES
files to be placed in <top>/<app>App/op/burt/ |
|
---|---|
yyTableSettings.req | save settings of a specified table. This file is normally #include'd (once for each table) by other request files. |