Sutter MPC-200 Quick Start Manual

Page 1
MPC-200 USB commands, version 1.10
General Information
The controller is ready to accept remote input about one second after power-on. Command requests are single bytes. The data stream consists of full bytes (all 8 bits not ASCII). The lowest order byte (for example, of the four bytes encoding the X coordinate) is the first into the controller and is the first out. There are no delimiters within command strings. The controller will reply with carriage return (CR, 0Dh) at the completion of normal command processing. Wait for the CR before sending a new stream. Full travel on each axis is 25000 m, so 0 to 25000 m are valid values for the move command (note: position info is sent in microsteps, see Data Format).
The MPC200 firmware is field updatable. If your firmware is newer than the version listed above, check with Sutter to see if new USB commands have been added.
Remote (USB) Commands
Change drive (manipulator) command ‘I’D (D is 01-04h) returns value of D if manipulator connected or E if not. Followed by CR Get current position command ‘C’
returns DxxxxyyyyzzzzCR (D designating the currently active drive +
three signed long integers + 0Dh) Get number N of connected manipulators and drive status n for all 4 drives command ‘U’ returns NnnnnCR n=1 if connected, n=0 if not connected Get currently active drive command ‘K’
returns D Vl Vh then CR (D designates the currently active drive, Vl and
Vh designate firmware version)
There are two generic move commands. Before using either, the manipulator to be moved must be selected either manually or via the USB port using the I command. Only the active manipulator can make USB moves.
The first move command, S, is for straight-line moves and should be used when you need to move point-to-point at a fixed, user-defined, velocity. The second move command, M, is for rapid moves that accelerate to the fastest velocity following a stereotypic, multiple-axis path. The path taken in M moves is similar to that in the Home and Work Pos moves evoked from the ROE.
Straight-line movement with user defined velocity command ‘S’X xxxxyyyyzzzz 053h + three signed long integers returns streams position info until the move is finished
Page 2
Fast, stereotypic movement with firmware controlled velocity
command ‘M’xxxxyyyyzzzz 04Dh + three signed long integers returns CR 0Dh
Moves related to manual functions of the ROE200
Home
command ‘H’ 048h returns CR 0Dh
Work Position
command ‘Y’ 059h returns CR 0Dh
Center
command ‘N’ 048h returns CR 0Dh
The final command is an interrupt to halt any USB move while in progress. This and the Stop button are the only means to interrupt a move before it is finished.
Interrupt Move command control-C 03h returns CR 0Dh
Specifics on the various commands
1) Straight-line movement: ‘S’+X+coordinates.
Structure of the command is S followed immediately by X followed immediately by
“coordinates” (the desired final location for the manipulator making the move). X passes
the velocity of the move as follows:
The value of X may range from 0x00 to 0x0F. 0x0F is the fastest speed for S moves and is about 1.3 mm/s. Assuming more than one axis is involved in the move, X is the speed for the axis making with the longest travel in the three axis move. We require all axes to finish the move at the same time, thus the speed of movement of the other axes will be slower in order to force the moving axes to finish simultaneously.
A value for X of 0x0F encodes the fastest speed along the longest axis and is about
1.3mm/sec. A value of 0x00 for the low nibble is the slowest speed and is 1/16th of the fastest speed. This means if X is 0x08, the speed of S movement will only be half of the speed when X is set at 0x09.
“Coordinates” is the final position of the manipulator. For each axis, you must specify a
long integer (4 characters). Therefore “coordinates” will consist of 3 long integers. It is up to the programmer to assure that the “coordinates” is the correct length, if it is not, the
controller and/or the USB interface will hang.
Page 3
Other constraints on coordinates: Values cannot exceed the travel of each axis (0-25000 microns. “Coordinates” is actually passed in microsteps. See Data Format, below).
After receiving the S command, the manipulator starts from its current location and moves to the specified final location along a straight line with the speed set in X. The actual speed is determined by the axis with the longest move. The difference in time to start moving between any two axes is less than 0.06 ms
While the move is in progress, the current coordinates of the moving manipulator are sent back to the PC using the following format: Three 0xFF followed by the coordinates of the manipulator making the move. The formatted string of coordinate information repeats itself until movement finishes.
Note also, to make the fastest moves, you should use the M command, however, this move is not straight line. See details under M.
2) Detail on speed of communication:
The baud rate of communication over the USB port 128,000. This has to be set in the PC program.
3) Detail on the ‘U’ command
The U command, when issued, returns the number of currently connected manipulators.
If no manipulators are connected, the ROE will display “No manipulator connected” and no response will be received over the USB. If manipulators are
connected, the controller returns an initial character that gives the number of connected manipulators and then four characters that give the status of each drive. The value of the four characters is 1, if a manipulator is connected and 0 if a manipulator is not connected. After number and status drive info is sent, the controller ends with CR (0x0D).
4) Detail on the ‘K’ command
The K command returns three characters. The first character, D tells which drive is active (the drive currently connected to the knobs on the ROE). The drives are numbered in order, as DriveA, DriveB, Drive2A, Drive2B or Manipulators 1,2,3,4 on the top of the ROE. The second and third returned characters, Vl and Vh, give the version of the controller firmware. For example, if the firmware is version 1.10, Vh will be 1 and Vl will be 10. After D and V are passed the controller terminates with CR (0x0D).
5) Detail on the ‘C’ command (Note, version 1.03 had a simpler C command)
When position is read, the first character returned represents the currently active drive (the one the ROE knobs are connected to). For example, if the user manually switched
the drive from drive A to drive2A, the next ‘C’ command would return ‘3’ followed by
Page 4
the coordinates of drive2A. After the coordinate information is passed, the controller sends a CR (0x0D). It is not necessary to either keep track of the current manually active manipulator or to switch to the active manipulator to poll position via USB.
Thus, one can keep track of position info of all manual movement by constantly polling
with C. Even if the user is making a “continuous” manual move, position information to
the USB C command will be “instantaneously” updated. If the user manually changes to
a different manipulator (drive), the first character of the C command will follow that change and C will begin giving coordinates of the new drive. As only one drive can move at a time, the info passed over the USB port and read with the C command in a tight loop will completely document the positions of all manipulators.
Finally, note that when issuing M or S type move commands, manual movement and further communication over the USB port is locked out (with the exception of “Interrupt
Move” or manual press of Stop on the ROE). Once the M or S move is complete, the C
interrogation can continue. Thus, complete documentation of all manipulator positions is maintained.
6) Detail on the 'I' command (Note, version 1.03 had a different I command)
The I command switches USB AND manual control to the specified drive and echoes
back information about the drives’ status. I returns the manipulator drive number if a
manipulator is connected and returns 'E' if nothing is connected to this drive. If E is returned, the controller does not switch drives. Either return is then terminated by a CR (0x0D).
7) Detail on the move command “M” (Note, version 1.03 had no other move command)
While the S, straight-line move, is the most generic move that can be made over the USB port, the original move command, M, is available for fast, long distance moves. We assume this might be used for fast pipette changes or other moves where speed is paramount and path is not important. The move accelerates, so speed of the movement is not constant and is a function of the length of the move. M may be also very useful for fast single axes moves.
8) Detail stopped moves. It is possible for the user to interrupt moves from the ROE200 by pressing the Stop button. When this is done during a S, M, H, Y or C move, the controller will send an I + CR to the USB port to indicate to the host that a manual interrupt has occurred.
Page 5
Data format
Position information is displayed on the ROE in microns relative to the absolute zero set using the Center routine. However, postion is not communicated in microns either in the microprocessor or over the USB interface. Rather, it is represented in stepper motor microsteps. The resolution of movement used over the USB port is the minimal microstep size of 0.0625 micrometers (2 micron whole steps divided by 32 microsteps per whole step). As most PC GUIs will take information from the user in microns, the USB interface will need to incorporate a conversion factor of 16 to convert microns into microsteps for the MPC200 controller.
For example, if you want to move one of the axes of the MPC200 to the location 100 microns. The actual position you will send is 1600 microsteps (100 times 16). You also need to convert this number into the characters (hexdecimal) which represent this number (not the characters of "1", "6", "0", "0").
One way to understand the data format is to manually move the controller to some integer number e.g. x=100, y=200, z=300, and then use the C command to get the current position and make sense out of the numbers you get back from the controller. In this example, C should return 0x40, 0x06, 0x00,0x00 for X. The other axes follow in a similar manner. You would then construct coordinates in the same number format when you want to send a move to the controller using M or S.
Loading...