User Tools

Site Tools


low_level_command

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
low_level_command [2021/09/23 17:15] – external edit 127.0.0.1low_level_command [2025/05/22 15:45] (current) – update link brandon
Line 6: Line 6:
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-Currently, the only way to access the low level format is through the Setup Control Commands +Currently, the only way to access the low level format is through the Setup Control Commands.
 </WRAP> </WRAP>
  
-The following are special commands used to setup different properties of the MS 2000 and MFC-2000.  The MS 2000 and the MFC-2000 recognizes these two byte commands by their prefix byte 255.  These commands mimic the Ludl Interface Control Commands and expand upon them.   +The following are special commands used to setup different properties of the MS-2000 and MFC-2000.  The MS-2000 and the MFC-2000 recognizes these two byte commands by their prefix byte 255.  These commands mimic the Ludl Interface Control Commands and expand upon them.    
 + 
 +Almost every firmware build comes with the ''LL_COMMANDS'' firmware module, you can use [[:commands:build|BUILD X]] to check which modules you have. 
 + 
 +The Tiger controller has it's own set of commands, see the [[:tiger_w_commands | Tiger Low Level Commands]] documentation.
  
 ==== For HyperTerminal ==== ==== For HyperTerminal ====
  
 ^Command ^Description ^ ^Command ^Description ^
-|255 65 \\ Alt[255] 'A' |Switch to High Level Command Format \\ (note: the post byte “A” must be in caps) |+|255 65 \\ Alt[255] 'A' |Switch to High Level Command Format \\ (Note: the post byte “A” must be in caps) |
 |255 66 \\ Alt[255] 'B'|Switch to Low Level Command Format | |255 66 \\ Alt[255] 'B'|Switch to Low Level Command Format |
 |255 82 \\ Alt[255] 'R'|Reset Controller| |255 82 \\ Alt[255] 'R'|Reset Controller|
Line 38: Line 41:
  
  
-This serial RS-232 interface is used to hook up the MS 2000 and MFC 2000 to a PC with a protocol that imitates the Ludl Low Level command set.  The purpose of the low level protocol is to provide a simple interface between a PC program and the MS 2000 and the MFC-2000, without ASCII conversion.  The high level protocol is designed to allow direct human interface capability by displaying all numbers and commands in ASCII characters.  The high level format is slow due to the extended transmission of ASCII characters as well as the time consumed converting back and forth from 3 byte memory stored numbers and multiple byte ASCII character numbers stored in strings.  The low level format deals strictly with numbers that identify modules, commands, data_size, and data represented in 1 to 6 bytes in 2's compliment form.+This serial RS-232 interface is used to hook up the MS-2000 and MFC-2000 to a PC with a protocol that imitates the Ludl Low Level command set.  The purpose of the low level protocol is to provide a simple interface between a PC program and the MS-2000 and the MFC-2000, without ASCII conversion.  The high level protocol is designed to allow direct human interface capability by displaying all numbers and commands in ASCII characters.  The high level format is slow due to the extended transmission of ASCII characters as well as the time consumed converting back and forth from 3 byte memory stored numbers and multiple byte ASCII character numbers stored in strings.  The low level format deals strictly with numbers that identify modules, commands, data_size, and data represented in 1 to 6 bytes in 2's compliment form.
  
-**NOTE:**  These commands apply to MS 2000 Controller firmware version 3.2 and forward.+**NOTE:**  These commands apply to MS-2000 Controller firmware version 3.2 and forward.
  
 The low level format is formed by the following 8 bit bytes: The low level format is formed by the following 8 bit bytes:
Line 47: Line 50:
 **BYTE2:**  Command \\ **BYTE2:**  Command \\
 **BYTE3:**  Number of data bytes to be exchanged for this command \\ **BYTE3:**  Number of data bytes to be exchanged for this command \\
-**BYTES 4 thru 9:**  Data Bytes, mostly in 2's compliment form in the order of:  Least Significant Byte, Middle Byte, Most Significant Byte \\+**BYTES 4-9:**  Data Bytes, mostly in 2's compliment form in the order of:  Least Significant Byte, Middle Byte, Most Significant Byte \\
 **LAST BYTE:**  The ASCII colon character (:) flags the end of the serial command \\ **LAST BYTE:**  The ASCII colon character (:) flags the end of the serial command \\
  
Line 58: Line 61:
 |'A'| ASCII character typed in| |'A'| ASCII character typed in|
  
-**RS 232 Timeout:**  The normal Ludl 2-second timeout is not implemented.  The MS 2000 clears its buffers whenever a colon (:) is received, thereby eliminating any error prone characters received serially.+**RS-232 Timeout:**  The normal Ludl 2-second timeout is not implemented.  The MS-2000 clears its buffers whenever a colon (:) is received, thereby eliminating any error prone characters received serially.
  
-**SERIAL DELAY:**  Due to the use of higher speed computers, there is no longer any need to delay serial communication replies; therefore, serial delays are not supported by the MS 2000.+**SERIAL DELAY:**  Due to the use of higher speed computers, there is no longer any need to delay serial communication replies; therefore, serial delays are not supported by the MS-2000.
  
-**WARNING:**  When using the RS 232 OUT port to daisy chain RS 232 devices, it must be taken into consideration that the MS 2000 monitors all serial traffic on the line.  Although the Low level command set will not respond with an error to a foreign command like the high level command set, it is possible for the correct sequence of numbers to be entered which would match an actual command.  This would result in the MS 2000 executing an unwanted command.  +**WARNING:**  When using the RS-232 OUT port to daisy chain RS 232 devices, it must be taken into consideration that the MS-2000 monitors all serial traffic on the line.  Although the Low level command set will not respond with an error to a foreign command like the high level command set, it is possible for the correct sequence of numbers to be entered which would match an actual command.  This would result in the MS-2000 executing an unwanted command.  
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Line 75: Line 78:
 The ASCII colon (:) character is defined as the end of command code, and used to terminate the command loading sequence at which time the controller clears the serial buffer and attempts to process the command.  If the command has errors and cannot be processed and executed, it is ignored. The ASCII colon (:) character is defined as the end of command code, and used to terminate the command loading sequence at which time the controller clears the serial buffer and attempts to process the command.  If the command has errors and cannot be processed and executed, it is ignored.
  
-**Note:** The MS 2000 does not support parity check.+**Note:** The MS-2000 does not support parity check.
  
 **Group 1 /Byte 1:**  Axis Identifier **Group 1 /Byte 1:**  Axis Identifier
Line 95: Line 98:
  
 **Group 3 / Byte 3:**  Data Size **Group 3 / Byte 3:**  Data Size
-This is a single byte that gives the number of data bytes for this instruction.  This value can also be found in command listing for different commands.  Although the range of this variable is from 0 to 255, the MS 2000 only supports 0 to 6 up to firmware version 3.3.+This is a single byte that gives the number of data bytes for this instruction.  This value can also be found in command listing for different commands.  Although the range of this variable is from 0 to 255, the MS-2000 only supports 0 to 6 up to firmware version 3.3.
  
 Exceptions:  There are 3 commands that do not use this data group:  '?'-request status,  'G'-start motor / function,  'B'-stop motor / function. Exceptions:  There are 3 commands that do not use this data group:  '?'-request status,  'G'-start motor / function,  'B'-stop motor / function.
Line 104: Line 107:
  
 **Group 5:**  Last Byte **Group 5:**  Last Byte
-This is a one-byte end-of-command character  ':' The MS 2000 will not recognize a command until this character is received.  When the ':' is received, the MS 2000 goes to a subroutine which then pulls Groups 1-4 out of the serial port buffer, and then searches the buffer until the ':' is found.  Any information between Group 4 and the ':' is ignored. +This is a one-byte end-of-command character  ':' The MS-2000 will not recognize a command until this character is received.  When the ':' is received, the MS-2000 goes to a subroutine which then pulls Groups 1-4 out of the serial port buffer, and then searches the buffer until the ':' is found.  Any information between Group 4 and the ':' is ignored. 
  
  
Line 110: Line 113:
  
  
-The following are commands formatted by the MS 2000 shown in Decimal, and keyboard / ASCII form.  The first command, Read Status, give examples that explain in depth the formatting which will be used for the rest of the examples.+The following are commands formatted by the MS-2000 shown in Decimal, and keyboard / ASCII form.  The first command, Read Status, give examples that explain in depth the formatting which will be used for the rest of the examples.
  
 ==== Command:  Read Status ==== ==== Command:  Read Status ====
Line 119: Line 122:
 ^Data Size| None| ^Data Size| None|
  
-The MS 2000 will respond to this command in the following manor.  If the motor signal is not zero or there is a command being executed and the axis motor is enabled, the controller will return an upper case B. Otherwise, it will return a lower case b.+The MS-2000 will respond to this command in the following manor.  If the motor signal is not zero or there is a command being executed and the axis motor is enabled, the controller will return an upper case B. Otherwise, it will return a lower case b.
  
 == Example == == Example ==
Line 144: Line 147:
 ^Data Size| 3| ^Data Size| 3|
  
- Requests the MS 2000 to respond with the current stage position in two's compliment form using 3 bytes.  The response is in tenths of microns.+ Requests the MS-2000 to respond with the current stage position in two's compliment form using 3 bytes.  The response is in tenths of microns.
  
 == Example == == Example ==
Line 171: Line 174:
 ^Data Size| 3| ^Data Size| 3|
  
-Requests the MS 2000 to respond with current setting for the distance of increment moves.  The number is a three byte two's compliment number representing a position offset in tenths of a micron.+Requests the MS-2000 to respond with current setting for the distance of increment moves.  The number is a three byte two's compliment number representing a position offset in tenths of a micron.
  
 == Example: == == Example: ==
Line 193: Line 196:
 ^Data Size| 6| ^Data Size| 6|
  
-Requests the MS 2000 to respond with the identification code for the Axis Id.  The response for X, Y, and Z axis' is EMOT :.   The fifth and sixth bytes are spaces (ASCII code 32).+Requests the MS-2000 to respond with the identification code for the Axis Id.  The response for X, Y, and Z axis' is EMOT :.   The fifth and sixth bytes are spaces (ASCII code 32).
  
-**Note:** The MS 2000 does not support consecutive 105 commands to read the version information.+**Note:** The MS-2000 does not support consecutive 105 commands to read the version information.
  
 == Example: == == Example: ==
Line 215: Line 218:
 ^Data Size|4| ^Data Size|4|
  
-Requests the MS 2000 to respond with the current stage position in two's compliment form using 3 bytes followed by the status byte.  The response is in tenths of microns.  See command 126 (Read Status Byte) for more information on the status byte.+Requests the MS-2000 to respond with the current stage position in two's compliment form using 3 bytes followed by the status byte.  The response is in tenths of microns.  See command 126 (Read Status Byte) for more information on the status byte.
  
 == Example == == Example ==
Line 237: Line 240:
 ^Data Size| 2| ^Data Size| 2|
  
-Requests the MS 2000 to respond with current instantaneous value of the servo speed trajectory.  The number returned is a signed two-byte number representing the velocity in m/s.+Requests the MS-2000 to respond with current instantaneous value of the servo speed trajectory.  The number returned is a signed two-byte number representing the velocity in m/s.
  
 == Example: == == Example: ==
Line 257: Line 260:
 ^Data Size| 1| ^Data Size| 1|
  
-Requests the MS 2000 to respond with current setting for the time to ramp up and down.  This is a one-byte number between 1 and 255.  It represents the number of milliseconds the ramp from start speed to maximum speed at the beginning of a move and from maximum speed to start speed at the end of a move will take.+Requests the MS-2000 to respond with current setting for the time to ramp up and down.  This is a one-byte number between 1 and 255.  It represents the number of milliseconds the ramp from start speed to maximum speed at the beginning of a move and from maximum speed to start speed at the end of a move will take.
    
 == Example: == == Example: ==
Line 285: Line 288:
 ^Data Size| 2| ^Data Size| 2|
  
-Requests the MS 2000 to respond with current setting for the maximum speed the stage is allowed to move.  The number returned is a straight two-byte number representing a speed m/s.+Requests the MS -2000 to respond with current setting for the maximum speed the stage is allowed to move.  The number returned is a straight two-byte number representing a speed m/s.
  
 == Example: == == Example: ==
Line 306: Line 309:
 ^Data Size| 3| ^Data Size| 3|
  
-Requests the MS 2000 to respond with current target position.  The number is a three byte, two's compliment, number representing a position offset in tenths of a micron.+Requests the MS-2000 to respond with current target position.  The number is a three byte, two's compliment, number representing a position offset in tenths of a micron.
  
 == Example: == == Example: ==
Line 327: Line 330:
 ^Data Size| 1| ^Data Size| 1|
  
-Requests the MS 2000 to respond with the Status Byte.  The number is one byte, which can be broken down into 8 bits that represent the following internal flags:+Requests the MS-2000 to respond with the Status Byte.  The number is one byte, which can be broken down into 8 bits that represent the following internal flags:
  
 ^Bit 0|  0 = No Motor Signal, \\ 1 = Motor Signal \\ (i.e., axis is moving)  | ^Bit 0|  0 = No Motor Signal, \\ 1 = Motor Signal \\ (i.e., axis is moving)  |
Line 398: Line 401:
 ^Data Size| 3| ^Data Size| 3|
  
-Requests the MS 2000 to write the given position to the current position count buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.+Requests the MS-2000 to write the given position to the current position count buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.
  
 == Example: == == Example: ==
Line 430: Line 433:
 ^Data Size| 3| ^Data Size| 3|
  
-Requests the MS 2000 to write the given position to the target position buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.+Requests the MS-2000 to write the given position to the target position buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.
  
 == Example: == == Example: ==
Line 459: Line 462:
 ^Data Size| 0| ^Data Size| 0|
  
-Requests the MS 2000 to add the Increment Value to the Current Position Value and place the result in the Target Position Buffer.  There is no data or response.+Requests the MS-2000 to add the Increment Value to the Current Position Value and place the result in the Target Position Buffer.  There is no data or response.
  
 == Example: == == Example: ==
Line 476: Line 479:
 ^Data Size| 0| ^Data Size| 0|
  
-Requests the MS 2000 to subtract the Increment Value to the Current Position Value and place the result in the Target Position Buffer.  There is no data or response.+Requests the MS-2000 to subtract the Increment Value to the Current Position Value and place the result in the Target Position Buffer.  There is no data or response.
  
 == Example: == == Example: ==
Line 493: Line 496:
 ^Data Size| 3| ^Data Size| 3|
  
-Requests the MS 2000 to write the given position to the Increment Value buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.  The Increment Value is used for making successive Relative Moves.+Requests the MS-2000 to write the given position to the Increment Value buffer.  The position is given in two's compliment form using 3 bytes.  The number represents the position in tenths of microns.  The Increment Value is used for making successive Relative Moves.
  
 == Example: == == Example: ==
Line 523: Line 526:
 ^Data Size| 1| ^Data Size| 1|
  
-Requests the MS 2000 to write the given byte to the Ramping Time buffer.  Value Range is from 0 to 256 in the unit of milliseconds.  The ramp time sets the stage acceleration at Max_Speed / Ramp_Time.  For short moves the acceleration will be at the same rate as for long moves, but the duration of the ramp will be less than the full ramp time.  To minimize damage to the servo motors it is recommended that the ramp time always be greater than 50ms when ramping to full motor speed.+Requests the MS-2000 to write the given byte to the Ramping Time buffer.  Value Range is from 0 to 256 in the unit of milliseconds.  The ramp time sets the stage acceleration at Max_Speed / Ramp_Time.  For short moves the acceleration will be at the same rate as for long moves, but the duration of the ramp will be less than the full ramp time.  To minimize damage to the servo motors it is recommended that the ramp time always be greater than 50ms when ramping to full motor speed.
  
 == Example: == == Example: ==
Line 550: Line 553:
 ^Data Size| 2| ^Data Size| 2|
  
-Requests the MS 2000 to write the given speed to the Top Speed buffer.  The speed is divided down into two 8-bit bytes by dividing the number down by 256.  The number represents the speed in μm/s.  +Requests the MS-2000 to write the given speed to the Top Speed buffer.  The speed is divided down into two 8-bit bytes by dividing the number down by 256.  The number represents the speed in μm/s.  
  
 == Example: == == Example: ==
Line 580: Line 583:
 ^Data Size| 2| ^Data Size| 2|
  
-Instructs the MS 2000 to immediately ramp motors to given velocity value and continue at that speed until instructed otherwise.  The velocity is a two-byte value.  The binary number represents the velocity in m/s.  The acceleration rate is set by the Write-Ramping-Time and Write-Top-Speed settings.  (see Write-Ramping-Time command).+Instructs the MS-2000 to immediately ramp motors to given velocity value and continue at that speed until instructed otherwise.  The velocity is a two-byte value.  The binary number represents the velocity in m/s.  The acceleration rate is set by the Write-Ramping-Time and Write-Top-Speed settings.  (see Write-Ramping-Time command).
  
 == Example: == == Example: ==
Line 606: Line 609:
 Command: <wrap cmd> 24 74 58 </wrap>  OR  <wrap cmd> 24 74 0 58 </wrap> \\ Command: <wrap cmd> 24 74 58 </wrap>  OR  <wrap cmd> 24 74 0 58 </wrap> \\
  
-The above is an example of a stream of bytes that a PC would send serially to the controller.  The 24 represents the X axis, the 74 represents the Enable Joystick command.  The data size is 0 and can either be included or left off on the MS 2000.  The 58 is the colon which signifies the end of the command.+The above is an example of a stream of bytes that a PC would send serially to the controller.  The 24 represents the X axis, the 74 represents the Enable Joystick command.  The data size is 0 and can either be included or left off on the MS-2000.  The 58 is the colon which signifies the end of the command.
  
  
Line 623: Line 626:
 Command: <wrap cmd> 24 75 58 </wrap>  OR <wrap cmd>  24 75 0 58 </wrap> \\ Command: <wrap cmd> 24 75 58 </wrap>  OR <wrap cmd>  24 75 0 58 </wrap> \\
  
-The above is an example of a stream of bytes that a PC would send serially to the controller.  The 24 represents the X axis, the 74 represents the Disable Joystick command.   The data size is 0 and can either be included or left off on the MS 2000. The 58 is the colon which signifies the end of the command.+The above is an example of a stream of bytes that a PC would send serially to the controller.  The 24 represents the X axis, the 74 represents the Disable Joystick command.   The data size is 0 and can either be included or left off on the MS-2000. The 58 is the colon which signifies the end of the command.
  
 {{tag>ms2000 lowlevel manual }} {{tag>ms2000 lowlevel manual }}
Address: 29391 W Enid Rd. Eugene, OR 97402, USA | Phone: +1 (541) 461-8181
low_level_command.1632431745.txt.gz · Last modified: by 127.0.0.1