TRIO MPC-165 SERIES MICROMANIPULATOR SYSTEM OPERATION MANUAL – REV. 2.67K2 (20201130) (FW V2.62)
38
specified. All positions are absolute as measured from the physical beginning of travel of a
device’s axis. In application programming, it is important that positional values be
checked (>= 0 and <= max.) to ensure that a negative absolute position is never sent to
the controller and that end of travel is not exceeded. All computational relative
positioning must always resolve to accurate absolute positions.
Declaring minimum and maximum absolute position variables in C/C++:
/* minimum and maximum positions for X, Y, & Z */
double min_x_um, min_y_um, min_z_um; /* minimum microns */
double max_x_um, max_y_um, max_z_um; /* maximum microns */
Set minimum and maximum absolute positions for each axis – see Ranges & Bounds table.
/* initialize all minimum positions in microns*/
min_x_um = 0;
min_y_um = 0;
min_z_um = 0;
/* initialize all maximum positions in microns*/
/* MP-865/M */
max_x_um = 50000;
max_y_um = 12500;
max_z_um = 25000;
/* MP-845[S]/M, MP-245[S]/M, MP-285/M, etc. */
max_x_um = 25000;
max_y_um = 25000;
max_z_um = 25000;
6.
Absolute Positioning System Origin: The Origin is set to a physical position of travel to
define absolute position 0. The physical Origin position is fixed at beginning of travel
(BOT). This means that all higher positions (towards end of travel (EOT)) are positive
values; there are no lower positions and therefore no negative values are allowed.
7.
Absolute vs. Relative Positioning: Current position (‘c’) and move commands always use
absolute positions. All positions can be considered “relative” to the Origin (Position 0), but
all are in fact absolute positions. Any position that is considered to be “relative” to the
current position, whatever that might be, can be handled synthetically by external
programming. However, care should be taken to ensure that all relative position
calculations always result in correct positive absolute positions before initiating a move
command.
Declaring relative position variables in C/C++:
/* relative positions for X, Y, & Z */
double rp_x_um, rp_y_um, rp_z_um; /* microns */
/* initialize all relative positions to 0 after declaring them */
rp_x_um = rp_y_um = rp_z_um = 0;
Enter any positive or negative value for each relative position (e.g., rp_x_um = 1000; rp_y_um = 500;
rp_z_um = -200 … etc.
For each axis, check to make sure that the new resultant absolute position (to which to move) is within
bounds. Reset the relative position to 0 if not. If relative value is negative, its positivized value must not
be greater than the current position. Otherwise, if positive, adding current position with relative position
must not exceed the maximum position allowed. If out of bounds, resetting relative position to 0 allow
the remaining conversions and movement to resolve without error.
/* check to make sure that relative X is within bounds */