Binary Commands =============== The following two commands with Binary data are for reading and controlling the servo controller in a very efficient manner. Read ==== Short for "send data" XXS The controller responds with 20 bytes Four long ints of position, then other bytes for keypad status, X and Y Bits, and other bits as follows: Byte 0-3 Current Altitude/Dec Motor Position (least to most significant) Byte 4-7 Current Azimuth/RA Motor Position. Byte 8-11 Current Altitude/Dec Scope Encoder Position Byte 12-15 Current Azimuth/RA Scope Encoder Position. Byte 16 is Keypad Status (see the top of this section for a description of bits) Byte 17 is XBits Byte 18 is YBits Byte 19 is Extra bits Bit 0 - Set if Altitude/Dec motor is stopped Bit 1 - Set if Altitude/Dec motor is in manual Bit 2 - future Bit 3 - future Bit 4 - Set if Azimuth/RA motor is stopped Bit 5 - Set if Azimuth/RA motor is in manual Bit 6 - future Bit 7 - future Byte 20 is a 1 byte checksum of the previous 19 bytes (simple addition). Write ===== Short for "read data" XXR The controller now waits for an additional 20 bytes from a host as follows: Byte 0-3 New Altitude/Dec Motor Position Goal (least significant byte first) Byte 4-7 New Azimuth/RA Motor Position Goal. Byte 8-11 New Altitude/Dec Motor Speed Byte 12-15 New Azimuth/RA Motor Speed Byte 16 Various bits: Bit 0 If '0', the following new XBit and YBit values are ignored. If '1', the new XBit and YBit values are used. Bit 1 -7 future Byte 17 New XBits value (must have previous bit 0 set) Byte 18 New YBits value (must have previous bit 0 set) Byte 19 Checksum of all above data bits (simple 8 bit addition) If you use the above binary command to control the servo controller, restart communication if the command gets out of sync by a communication fault. If you receive a bad checksum, resync communication by sending a few XXS commands. The flash RAM values are loaded from the flash ROM to RAM on reset. Both the X and Y parameters are stored to the flash ROM. Use X and Y for module address 1. If the module address is 3, use 'T' and 'U', for address 5, it's 'V' and 'W'. Description of the bits for the XBits and YBits: 0 if 1, the motor encoder is incremented the other direction 1 if 1, the motor polarity is reversed 2 if 1, the azimuth (or altitude) encoder is reversed 3 if 1, (x only) we're in the computerless drag and track mode 3 if 1, (y only) we're in the computerless slew and track mode (no clutches, must use handpad to slew) (must be in drag and track too) 4 if 1, (x only) we're in the tracking platform mode 5 if 1, (x only) we enable the hand paddle 6 if 1, (x only) hand paddle is compatible with New Hand Paddle (allows slewing in two directions, and guiding) 7 if 1, (x only) we're in the guide mode. The pan rate is added or subtracted from the current tracking rate. Note about the Guide Mode: If PC software puts the controller in the guide mode, and you are controlling an Equatorial mount, you must give the declination motor a destination, even if you want it to be stopped. If you want the declination axis to be normally stopped, give the declination a far far away goal, and set the speed to zero. This is because the controller adds or subtracts from the current speed and direction, and the controller gets confused if the axis is at its destination. This is changed inf servo version 1.6, and this is automatically done for you in the controller. The Y_Bits bits 4-7 are the digital input status for the 4 digital inputs from the radio handpad reciever. This is only available if you're using servo version 1.6 and also if you have a handpad reciever connected.