====== Command:BUILD (BU) ======
--> MS2000 syntax ^
^Shortcut |BU|
^Format |BUILD [X] [Y] [Z]|
^Units |None|
<--
--> Tiger syntax ^
^Shortcut |BU|
^Format |[Addr#]BUILD [X] [Y]|
^Units |None|
^Type |Card-Addressed (defaults to COMM)|
<--
===Build Information===
**BU**: (No Arguments) This command returns the firmware build name. An example of a build name is ''STD_XYZ''.
**BU X**: This command returns various build configuration options, the firmware modules in the build, and the build name.
===User String===
The ''BU Y'' command is used to store a user defined string which can be saved using the [[commands:saveset|SAVESET Z]] command. The maximum length of the user string is 20 characters. Remember to use the card address if you are storing a string on Tiger.
**BU Y=#**: writes a character to the user string at the write position. The write position starts at 0 on system power up and increase by 1 every time ''BU Y=#'' is sent to the controller. You specify the characters in their decimal ASCII form, for example lower-case 'a' is 97, so you would send ''BU Y=97''. The valid range of ASCII values is 32-126 inclusive.
**BU Y-**: clears the user string and resets the write position to 0.
**BU Y?**: reads the user string.
BU Y is available on MS2000 v9.2m+ and Tiger v3.39+ firmware, you will also need Tiger Comm v3.39+ firmware.
To make things easier on the user, here is script that takes a Python string and enters the serial commands for you:
{{section>:python_code#user_string&noheader&nofooter}}
===Volatile Value===
**BU Z** is used to edit and access an internal integer that is specifically volatile, i.e. the integer is always set to 0 when the controller is powered on or reset. The value ranges between 0 and 65535.
**BU Z=** sets the value.
**BU Z+** and **BU Z-** increment and decrement the value respectively, with wrap-around.
**BU Z?** queries the value.
Available in MS-2000 as of firmware v9.53.
Example:
$ bu z?
:A 0
$ BU Z-
:A
$ BU Z?
:A 65535
$ BU Z+
:A
$ BU Z+
:A
$ BU Z?
:A 1
$ BU Z=123
:A
$ BU Z+
:A
$ BU Z?
:A 124
===== Example Output =====
This is the response from a Tiger controller, the MS2000 response has less information but the meaning is the same between the two controllers. The MS2000 response does not include ''Axis Addr'', ''Hex Addr'', or ''Axis Props''. Tiger also has an additional ''POSITIONS SAVED'' or ''POSITIONS NOT SAVED'' right before the firmware modules. The meaning of each line of the ''BU X'' command response is as follows:
STD_XY The build name of the firmware.\\
Motor Axes: X Y The name of each axis. \\
Axis Types: x x z The type of each axis (see table below).\\
Axis Addr: 2 2 The card address of each axis. **[//Tiger//]** \\
Hex Addr: 32 32 The hex address of each axis. **[//Tiger//]** \\
Axis Props: 10 10 The axis properties for each axis (see table below). **[//Tiger//]** \\
CMDS: XY The argument names for pseudo-axis commands.\\
BootLdr V:0 The version of the bootloader.\\
Hdwr REV.F The hardware revision of the PCB.\\
POSITIONS NOT SAVED Were the positions saved on power off? **[//Tiger//]** \\
RING BUFFER 50 The following entries are firmware modules. \\
SEARCH INDEX \\
ARRAY MODULE \\
IN0_INT \\
SRVLK_TTL \\
ZF_KNOB \\
CLUTCH XYKNOB FASTSLOW \\
SHUTDOWN_TASK \\
MOVETASK \\
--> Tiger Example Response#
$ 1BU
STD_XY
$ 1BU X
STD_XY
Motor Axes: X Y
Axis Types: x x
Axis Addr: 2 2
Hex Addr: 32 32
Axis Props: 10 10
CMDS: XY
BootLdr V:0
Hdwr REV.F
POSITIONS NOT SAVED
RING BUFFER 50
SEARCH INDEX
ARRAY MODULE
IN0_INT
SRVLK_TTL
ZF_KNOB
CLUTCH XYKNOB FASTSLOW
SHUTDOWN_TASK
MOVETASK
With an address of 1 given, the specified card #1 replies. This reply just contains axis name and types present on the card. However it goes into more detail, printing all the firmware modules present on the card.
The values listed for axis properties are decimal integer representations of a binary code which represents any special properties of the axis. Usually these could also be identified by doing a ''BU X'' query of each card and interpreting the response, but they are listed separately on the axis property line for convenience.
<--
--> MS2000 Example Response#
$ BU
STD_XYZ
$ BU X
STD_XYZ
Motor Axes: X Y Z
Axis Types: x x z
CMDS: XYZFRTM
BootLdr V:1
Hdwr REV.E
LL COMMANDS
RING BUFFER 50
SEARCH INDEX
IN0_INT
DAC OUT
FS_LED
SHUTDOWN_TASK
No card address needed on ''MS2000''.
<--
\\
====Tiger Comm Card Response====
Adding the card address is optional. If no address is given, then Tiger Comm replies. If an address is present, then the specified card replies.
$ BU
TIGER_COMM
$ BU X
TIGER_COMM
Motor Axes: X Y A B C C 0 1
Axis Types: x x u u u u w w
Axis Addr: 1 1 2 2 2 2 3 3
Hex Addr: 31 31 32 32 32 32 33 33
Axis Props: 0 0 0 0 0 0 0 0
As no address was given, Tiger Comm replies. It replies with its build name, all axis names present in the system (axes will always be A-Z, filterwheels 0-9). For each axis the type is given (see table in section [[:tiger_ms2k_difference#identifying_controller_configuration|Identifying Controller Configuration]]) and the card address in both character and hex formats. Finally, an integer is given to indicate the presence of special properties or capabilities of the axis, such as ''CRISP'' auto-focus or ''RING BUFFER'' module for TTL positioning; these can be interpreted using the axis properties table below. This command is useful to quickly identify all the axes names and types present in the system.
===== Tables =====
{{page>:tiger_ms2k_difference#Axis Properties}}
{{page>:tiger_ms2k_difference#Axis Type List}}
{{tag>commands tiger ms2000}}