RSRC LVARLBVW! ">>"@  J B&*0<ψȈfofofo+++++++++++++++ Servo VIs Servo CtrlsSerial Control.viCmdsTranslator.viPIC-Command.vi++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++99ݽwp1 p1p0@Wڿ؅*ꪩj꿫꿫꟢*ꯨ*ﯨ**ꨳ/ ??? 1?q|8Й Йؙٙٙٙف?>?>?>>xxx?<{<ϟ>By{xŸ?<{<ϟ>By{xŸ?<{<ϟ>By{xŸqO?<{yy|8|)) N|D@ <>K1@Pf - ُ B~i $¢~B>V{ LVINCmdsTranslator.vi PY c$ c cRP"@P@flg@oRt@eofudf PTaskxdfdPtxdPoldPext P P P P@@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster chP"@P@flg@oRt@eofudfP0String p0dfd P0txd P0old P0extTP"@P@flg@oRt@eofudflP@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArray0p@"P00dfd0P@"P00txd0P@"P00old0P@"P00ext PP"@P@flg@oRt@eofudf6PP @!status @code@0source error outxP!0dfdPP!0txdPP!0oldPP!0ext P" P@@`0regular expression`0regular expression`0regular expression`0regular expressionvh@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArray Constant P@@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster\hP@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster`0regular expression`0regular expression`0regular expression`0regular expression`0regular expression c c$zv@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArray ConstantD@@P @!status @code@0sourceerror in (no error)@@0String@?String!@?String c c\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster c@0Name @Command@ # data bytes@Cmd Byte c@0 Description@offset past match???00?00?00@?String@?String@0String @Task cD 0@0String 0 c  c 0 c  c 0 c  c 0 0 c c c c c c c c@ c c i$Zor 4 Reset Position Command value: 0x0 Number of data bytes: 0 Command byte: 0x00 Description: Resets the 32 bit encoder counter to 0. Also resets the internal command position to 0 to prevent the motor from jumping abruptly if the position servo is enabled. Do not issue this command while executing a trapezoidal profile motion Set Address Command value: 0x1 Number of data bytes: 2 Command byte: 0x21 Data bytes: 1. Individual address: 0-0xFF (initial value 0x00) 2. Group Address: (initial value 0xFF) Description: Sets the individual address and group address. Group addresses are always interpreted as being between 0x80 and 0xFF. If a PIC-SERVO is to be a group leader, clear bit 7 of the desired group address in the second data byte; the PIC-SERVO will automatically set bit 7 internally after flagging the PIC-SERVO as a group leader. (If bit 7 of the second data byte is set, the module will default to being a group member.) The first time this command is issued after power-up or reset, it will also enable communications for the next module in the network chain by lowering the its ADDR_OUT signal. Define Status Command value: 0x2 Number of data bytes: 1 Command byte: 0x12 Data bytes: 1. Status items: (default: 0x00) Bit 0: send position (4 bytes) 1: send A/D value (1 byte) 2: send actual velocity (2 bytes - no fractional component) The signed 16 bit integer returned is the negative of the velocity in units of counts per servo tick 3: send auxiliary status byte (1 byte) 4: send home position (4 bytes) 5: send device ID, version number (2 bytes) (PIC-SERVO device ID = 0) 6, 7: not used - clear to zero Description: Defines what additional data will be sent in the status packet along with the status byte. Setting bits in the first data byte will cause the corresponding additional data bytes to be sent after the status byte. The status data will always be sent in the order listed. For example if bits 0 and 3 are set, the status packet will consist of the status byte followed by four bytes of position data, followed by the aux. status byte, followed by the checksum. The status packet returned in response to this command will include the additional data bytes specified. On power-up or reset, the default status packet will include only the status byte. (See section 5.3 for a definition of the status byte and the auxiliary status byte.) Read Status Command value: 0x3 Number of data bytes: 1 Command byte: 0x13 Data bytes: 1. Status items: Bit 0: send position (4 bytes) 1: send A/D value (1 byte) 2: send actual velocity (2 bytes - no fractional component) The signed 16 bit integer returned is the negative of the velocity in units of counts per servo tick 3: send auxiliary status byte (1 byte) 4: send home position (4 bytes) 5: send device ID, version number (2 bytes) (PIC-SERVO device ID = 0) 6, 7: not used - clear to zero Description: This is a non-permanent version of the "define status" command. The status packet returned in response to this command will incorporate the data bytes specified, but subsequent status packets will include only the data bytes previously specified with the define status command. Load Trajectory Command value: 0x4 Number of data bytes: n = 1-14 Command byte: 0xn4 Data bytes: 1. Control byte: Bit 0: load position data ( n += 4 bytes) 1: load velocity data ( n += 4 bytes) 2: load acceleration data ( n += 4 bytes) 3: load PWM value ( n += 1 bytes) 4: servo mode - 0 = PWM mode, 1 = position servo 5: profile mode - 0 = trapezoidal profile, 1 = velocity profile 6: in velocity & PWM modes: 0 = FWD direction, 1 = REV direction 7: start motion now Description: All motion parameters are set with this command. Setting one of the first four bits in the control byte will require additional data bytes to be sent (as indicated) in the order listed. The position data (range* +/- 0x7FFFFFFF) is only used as the goal position in trapezoidal profile mode. The velocity data (range 0x00000000 to 0x7FFFFFFF) is used as the goal velocity in velocity profile mode or as the maximum velocity in trapezoidal profile mode. The acceleration data (range 0x00000000 to 0x7FFFFFFF) is used in both trapezoidal and velocity profile mode. The PWM value (range 0-0xFF), used only when the position servo is not operating, sends a raw PWM values directly to the amplifier. The PWM value is reset to 0 internally on any condition which automatically disables the position servo. Bit 4 of the control byte specifies whether the position servo should be used or if the PWM mode should be entered. Bit 5 specifies whether a trapezoidal profile motion should be initiated or if the velocity profiler is used. Trapezoidal profile motions should only be initialized when the motor velocity is 0. (Bit 0 of the status byte indicates when a trapezoidal profile motion is complete, or in velocity mode, when the command velocity has been reached.) Bit 6 indicates the velocity or PWM direction when velocity or PWM modes are selected. If bit 7 is set, the command will be executed immediately. If bit 7 is clear, the command data will be buffered and it will be executed when the "start motion" command is issued. Example: To load only new position data and acceleration data but not start the motion yet, the command byte would be 0x94, the control byte would be 0x15, followed by 4 bytes of position data (least significant byte first), followed by 4 bytes of acceleration data. Start Motion Command value: 0x5 Number of data bytes: 0 Command byte: 0x05 Description: Causes the trajectory information loaded with the most recent Load Trajectory command to execute. This is useful for loading several PIC-SERVO chips with trajectory information and then starting them simultaneously with a group command. Set Gain Command value: 0x6 Number of data bytes: 14 (for version 4 and higher - only 13 bytes for versions 1,2 & 3) Command byte: 0xE6 (for version 4 and higher - use 0xD6 for versions 1,2 & 3) Data bytes: 1,2. Position gain Kp (0 - 0x7FFF) 3,4. Velocity gain Kd (0 - 0x7FFF) 5,6. Position gain Ki (0 - 0x7FFF) 7,8. Integration limit IL (0 - 0x7FFF) 9. Output limit OL(0 - 0xFF) 10. Current limit CL(0 - 0xFF) odd values: CUR_SENSE proportional to motor current even values: CUR_SENSE negatively proportional to motor current 11,12. Position error limit EL (0 - 0x3FFF) 13. Servo rate divisor SR (1 - 0xFF) 14. Amplifier deadband compensation (0 - 0xFF) (version 4 and higher only) Description: Sets all parameters and limits governing the behavior of the position servo. The use of the PID gain parameters (Kp, Kd, Ki, IL, OL) are described in section 4.3. The 16 bit value used to specify IL is multiplied by 256 internally to get the actual IL value used by the PID algorithm. The current limit, CL (used if the CUR_SENSE input is connected to a current sense output of the amplifier) is actually a seven bit value with bit 0 used to indicate if CL is to be used as an upper bound or a lower bound on the CUR_SENSE value. Odd values of CL are used if CUR_SENSE is directly proportional to motor current (0v = 0 amp); even values assume CUR_SENSE is negatively proportional to motor current (5v = 0 amp). Setting CL to 0 effectively disables current limiting. The position error limit will cause the position servo to be disabled should the position error grow beyond the limit. The servo rate divisor sets the servo tick time to be a multiple of 0.51 msec (1.953 KHz). For example SR=3 gives a servo rate of 651 Hz. The servo tick rate is also used as the profiling timebase, although command processing and current limiting are always performed at the maximum tick rate. Version 4 of the PIC-SERVO has a 14th data byte which is used to compensate for the deadband region around zero PWM output exhibited by some amplifier/motor combinations. The deadband compensation value will be added to the magnitude of the PWM output to force the amplifier into its active region. If the command 0xD6 is used (and only 13 data bytes are sent, version 4 will use a default value of zero for the deadband compensation. (Also note that versions 1,2 & 3 will simply ignore the 14th data byte if it is sent.) Stop Motor Command value: 0x7 Number of data bytes: 1 or 5 Command byte: 0x17 or 0x57 Data bytes: 1. Stop control byte Bit 0: Amplifier enable 1: Turn motor off 2: Stop abruptly 3: Stop smoothly 4: Stop here (not available on version 1) 5,6,7: Clear to zero 2-5 Stopping position (only required if bit 4 above is set) Description: Stops the motor in the specified manner. If bit 0 of the Stop Control Byte is set, AMP_EN will be set; if bit 0 is cleared, AMP_EN will be cleared, regardless of the state of the other bits. If bit 1 is set, the position servo will be disabled, the PWM output value will be set to 0, and bits 2, 3 and 4 are ignored. If bit 2 is set, the current command velocity and the goal velocity will be set to zero, the position servo will be enabled, and velocity mode will be entered. If the velocity servo was previously disabled, the motor will simply start servoing to its current position. If the motor was previously moving in one of the profiling modes, it will stop moving abruptly and servo to its current position. This stopping mode should only be used as an emergency stop where the motor position needs to be maintained. A more graceful stop mode is entered by setting bit 3 - this sets the goal velocity to 0 and enters velocity mode, causing the motor to decelerate to a stop at the current acceleration rate. If bit 4 is set, the motor will move to the specified stopping position abruptly with no profiling. This mode can be used to cause the motor to track a continuous string of command positions. Note that if the stopping position is too far from the current position, a position error will be generated. Only one of the bits 1, 2, 3 or 4 should be set at the same time. Note: the Stop Motor command must be issued initially to set AMP_EN (if used) before other motion commands are issued. I/O Control Command value: 0x8 Number of data bytes: 1 Command byte: 0x18 Data bytes: 1. I/O control byte Bit 0: Output value of Limit1 1: Output value of Limit2 2: Direction of Limit1 (0 = output, 1 = input) 3: Direction of Limit2 (0 = output, 1 = input) 4,5,6,7: Clear to zero Description: Controls whether the limit1 and 2 signals are inputs (default) or outputs and sets the output values. Set Homing Mode Command value: 0x9 Number of data bytes: 1 Command byte: 0x19 Data bytes: 1. Homing control byte Bit 0: Capture home position on change of Limit1 1: Capture home position on change of Limit2 2: don't care (versions1 & 2) Turn motor off on home (version 3 or higher) 3: Capture home on change of Index 4: don't care (versions 1 & 2) Stop abruptly on home (version 3 or higher) 5: don't care (versions1 & 2) Stop smoothly on home (version 3 or higher) 6: Capture home position when an excess position error occurs 7: Capture home position when current limiting occurs Description: Causes the controller to monitor the specified conditions and capture the home position when any of the flagged conditions occur. The home_in_progress bit in the status byte is set when this command is issued and it is then lowered the home position has been found. With firmware versions 1 & 2, the user must stop the motor explicitly, if necessary, after the home position has been found. In firmware version 3 (or higher) setting one (and only one) of bits 2, 4 or 5 will cause the motor to stop automatically in the specified manner once the home condition has been triggered. This feature can also be used as a safety shutoff. Set Baud Rate Command value: 0xA Number of data bytes: 1 Command byte: 0x1A Data bytes: 1. Baud rate divisor, BRD sample values: 9600 BRD = 129 19200 BRD = 63 57600 BRD = 20 115200 BRD = 10 Description: Sets the communications baud rate. All PIC-SERVO chips on the network must have their baud rates changed at the same time, therefore this command should only be issued to a group including all of the controllers on the network. A status packet returned from this command would be at the new baud rate, so typically (unless the host's baud rate can be accurately synchronized), there should be no group leader when this command is issued. The baud rate divisor is programmed directly into the PIC16C73's SPBRG register with the bit BRGH = 1. Please refer to the PIC16C7x data sheet for details in obtaining other baud rates. Clear Sticky Bits Command value: 0xB Number of data bytes: 0 Command byte: 0x0B Description: The overcurrent and position error bits in the status byte and the position wrap and servo timer overrun bits in the aux. status byte will stay set unless cleared explicitly with this command. Save Current Position as Home Command value: 0xC Number of data bytes: 0 Command byte: 0x0C Description: Causes the current position to be saved as the home position. This command is typically issued to a group of controllers to cause their current positions to be stored synchronously. The stored positions can then be read individually by reading the home position No Operation Command value: 0xE Number of data bytes: 0 Command byte: 0x0E Description: Does nothing except cause a status packet with the currently defined status data to be returned. Hard Reset Command value: 0xF Number of data bytes: 0 Command byte: 0x0F Description: Resets the control module to its power-up state. No status will be returned. Typically, this command is issued to all the modules on the network. Reset PositionDescription: Resets the 32 bit encoder counter to 0. Also resets the internal command position to 0 to prevent the motor from jumping abruptly if the position servo is enabled. Do not issue this command while executing a trapezoidal profile motion Set Address!Data bytes: 1. Individual address: 0-0xFF (initial value 0x00) 2. Group Address: (initial value 0xFF) Description: Sets the individual address and group address. Group addresses are always interpreted as being between 0x80 and 0xFF. If a PIC-SERVO is to be a group leader, clear bit 7 of the desired group address in the second data byte; the PIC-SERVO will automatically set bit 7 internally after flagging the PIC-SERVO as a group leader. (If bit 7 of the second data byte is set, the module will default to being a group member.) The first time this command is issued after power-up or reset, it will also enable communications for the next module in the network chain by lowering the its ADDR_OUT signal. Define StatusData bytes: 1. Status items: (default: 0x00) Bit 0: send position (4 bytes) 1: send A/D value (1 byte) 2: send actual velocity (2 bytes - no fractional component) The signed 16 bit integer returned is the negative of the velocity in units of counts per servo tick 3: send auxiliary status byte (1 byte) 4: send home position (4 bytes) 5: send device ID, version number (2 bytes) (PIC-SERVO device ID = 0) 6, 7: not used - clear to zero Description: Defines what additional data will be sent in the status packet along with the status byte. Setting bits in the first data byte will cause the corresponding additional data bytes to be sent after the status byte. The status data will always be sent in the order listed. For example if bits 0 and 3 are set, the status packet will consist of the status byte followed by four bytes of position data, followed by the aux. status byte, followed by the checksum. The status packet returned in response to this command will include the additional data bytes specified. On power-up or reset, the default status packet will include only the status byte. (See section 5.3 for a definition of the status byte and the auxiliary status byte.) Read StatusData bytes: 1. Status items: Bit 0: send position (4 bytes) 1: send A/D value (1 byte) 2: send actual velocity (2 bytes - no fractional component) The signed 16 bit integer returned is the negative of the velocity in units of counts per servo tick 3: send auxiliary status byte (1 byte) 4: send home position (4 bytes) 5: send device ID, version number (2 bytes) (PIC-SERVO device ID = 0) 6, 7: not used - clear to zero Description: This is a non-permanent version of the "define status" command. The status packet returned in response to this command will incorporate the data bytes specified, but subsequent status packets will include only the data bytes previously specified with the define status command.Load TrajectoryData bytes: 1. Control byte: Bit 0: load position data ( n += 4 bytes) 1: load velocity data ( n += 4 bytes) 2: load acceleration data ( n += 4 bytes) 3: load PWM value ( n += 1 bytes) 4: servo mode - 0 = PWM mode, 1 = position servo 5: profile mode - 0 = trapezoidal profile, 1 = velocity profile 6: in velocity & PWM modes: 0 = FWD direction, 1 = REV direction 7: start motion now Description: All motion parameters are set with this command. Setting one of the first four bits in the control byte will require additional data bytes to be sent (as indicated) in the order listed. The position data (range* +/- 0x7FFFFFFF) is only used as the goal position in trapezoidal profile mode. The velocity data (range 0x00000000 to 0x7FFFFFFF) is used as the goal velocity in velocity profile mode or as the maximum velocity in trapezoidal profile mode. The acceleration data (range 0x00000000 to 0x7FFFFFFF) is used in both trapezoidal and velocity profile mode. The PWM value (range 0-0xFF), used only when the position servo is not operating, sends a raw PWM values directly to the amplifier. The PWM value is reset to 0 internally on any condition which automatically disables the position servo. Bit 4 of the control byte specifies whether the position servo should be used or if the PWM mode should be entered. Bit 5 specifies whether a trapezoidal profile motion should be initiated or if the velocity profiler is used. Trapezoidal profile motions should only be initialized when the motor velocity is 0. (Bit 0 of the status byte indicates when a trapezoidal profile motion is complete, or in velocity mode, when the command velocity has been reached.) Bit 6 indicates the velocity or PWM direction when velocity or PWM modes are selected. If bit 7 is set, the command will be executed immediately. If bit 7 is clear, the command data will be buffered and it will be executed when the "start motion" command is issued. Example: To load only new position data and acceleration data but not start the motion yet, the command byte would be 0x94, the control byte would be 0x15, followed by 4 bytes of position data (least significant byte first), followed by 4 bytes of acceleration data. Start MotionDescription: Causes the trajectory information loaded with the most recent Load Trajectory command to execute. This is useful for loading several PIC-SERVO chips with trajectory information and then starting them simultaneously with a group command.Set GainData bytes: 1,2. Position gain Kp (0 - 0x7FFF) 3,4. Velocity gain Kd (0 - 0x7FFF) 5,6. Position gain Ki (0 - 0x7FFF) 7,8. Integration limit IL (0 - 0x7FFF) 9. Output limit OL(0 - 0xFF) 10. Current limit CL(0 - 0xFF) odd values: CUR_SENSE proportional to motor current even values: CUR_SENSE negatively proportional to motor current 11,12. Position error limit EL (0 - 0x3FFF) 13. Servo rate divisor SR (1 - 0xFF) 14. Amplifier deadband compensation (0 - 0xFF) (version 4 and higher only) Description: Sets all parameters and limits governing the behavior of the position servo. The use of the PID gain parameters (Kp, Kd, Ki, IL, OL) are described in section 4.3. The 16 bit value used to specify IL is multiplied by 256 internally to get the actual IL value used by the PID algorithm. The current limit, CL (used if the CUR_SENSE input is connected to a current sense output of the amplifier) is actually a seven bit value with bit 0 used to indicate if CL is to be used as an upper bound or a lower bound on the CUR_SENSE value. Odd values of CL are used if CUR_SENSE is directly proportional to motor current (0v = 0 amp); even values assume CUR_SENSE is negatively proportional to motor current (5v = 0 amp). Setting CL to 0 effectively disables current limiting. The position error limit will cause the position servo to be disabled should the position error grow beyond the limit. The servo rate divisor sets the servo tick time to be a multiple of 0.51 msec (1.953 KHz). For example SR=3 gives a servo rate of 651 Hz. The servo tick rate is also used as the profiling timebase, although command processing and current limiting are always performed at the maximum tick rate. Version 4 of the PIC-SERVO has a 14th data byte which is used to compensate for the deadband region around zero PWM output exhibited by some amplifier/motor combinations. The deadband compensation value will be added to the magnitude of the PWM output to force the amplifier into its active region. If the command 0xD6 is used (and only 13 data bytes are sent, version 4 will use a default value of zero for the deadband compensation. (Also note that versions 1,2 & 3 will simply ignore the 14th data byte if it is sent.) Stop MotorData bytes: 1. Stop control byte Bit 0: Amplifier enable 1: Turn motor off 2: Stop abruptly 3: Stop smoothly 4: Stop here (not available on version 1) 5,6,7: Clear to zero 2-5 Stopping position (only required if bit 4 above is set) Description: Stops the motor in the specified manner. If bit 0 of the Stop Control Byte is set, AMP_EN will be set; if bit 0 is cleared, AMP_EN will be cleared, regardless of the state of the other bits. If bit 1 is set, the position servo will be disabled, the PWM output value will be set to 0, and bits 2, 3 and 4 are ignored. If bit 2 is set, the current command velocity and the goal velocity will be set to zero, the position servo will be enabled, and velocity mode will be entered. If the velocity servo was previously disabled, the motor will simply start servoing to its current position. If the motor was previously moving in one of the profiling modes, it will stop moving abruptly and servo to its current position. This stopping mode should only be used as an emergency stop where the motor position needs to be maintained. A more graceful stop mode is entered by setting bit 3 - this sets the goal velocity to 0 and enters velocity mode, causing the motor to decelerate to a stop at the current acceleration rate. If bit 4 is set, the motor will move to the specified stopping position abruptly with no profiling. This mode can be used to cause the motor to track a continuous string of command positions. Note that if the stopping position is too far from the current position, a position error will be generated. Only one of the bits 1, 2, 3 or 4 should be set at the same time. Note: the Stop Motor command must be issued initially to set AMP_EN (if used) before other motion commands are issued. I/O Control?Data bytes: 1. I/O control byte Bit 0: Output value of Limit1 1: Output value of Limit2 2: Direction of Limit1 (0 = output, 1 = input) 3: Direction of Limit2 (0 = output, 1 = input) 4,5,6,7: Clear to zero Description: Controls whether the limit1 and 2 signals are inputs (default) or outputs and sets the output values.Set Homing Mode |Data bytes: 1. Homing control byte Bit 0: Capture home position on change of Limit1 1: Capture home position on change of Limit2 2: don't care (versions1 & 2) Turn motor off on home (version 3 or higher) 3: Capture home on change of Index 4: don't care (versions 1 & 2) Stop abruptly on home (version 3 or higher) 5: don't care (versions1 & 2) Stop smoothly on home (version 3 or higher) 6: Capture home position when an excess position error occurs 7: Capture home position when current limiting occurs Description: Causes the controller to monitor the specified conditions and capture the home position when any of the flagged conditions occur. The home_in_progress bit in the status byte is set when this command is issued and it is then lowered the home position has been found. With firmware versions 1 & 2, the user must stop the motor explicitly, if necessary, after the home position has been found. In firmware version 3 (or higher) setting one (and only one) of bits 2, 4 or 5 will cause the motor to stop automatically in the specified manner once the home condition has been triggered. This feature can also be used as a safety shutoff. Set Baud Rate Data bytes: 1. Baud rate divisor, BRD sample values: 9600 BRD = 129 19200 BRD = 63 57600 BRD = 20 115200 BRD = 10 Description: Sets the communications baud rate. All PIC-SERVO chips on the network must have their baud rates changed at the same time, therefore this command should only be issued to a group including all of the controllers on the network. A status packet returned from this command would be at the new baud rate, so typically (unless the host's baud rate can be accurately synchronized), there should be no group leader when this command is issued. The baud rate divisor is programmed directly into the PIC16C73's SPBRG register with the bit BRGH = 1. Please refer to the PIC16C7x data sheet for details in obtaining other baud rates.Clear Sticky Bits Description: The overcurrent and position error bits in the status byte and the position wrap and servo timer overrun bits in the aux. status byte will stay set unless cleared explicitly with this command.Save Current Position as Home Description: Causes the current position to be saved as the home position. This command is typically issued to a group of controllers to cause their current positions to be stored synchronously. The stored positions can then be read individually by reading the home position No OperationmDescription: Does nothing except cause a status packet with the currently defined status data to be returned. Hard ResetDescription: Resets the control module to its power-up state. No status will be returned. Typically, this command is issued to all the modules on the network.     Command value: 0x%x%dCommand byte: 0xNumber of data bytes:%x` ` ` +`N`u`m`b`e`r` `o`f` `d`a`t`a` `b`y`t`e`s`:!`C`o`m`m`a`n`d` `b`y`t`e`:` `0`x` ` ` $B &0 <N @^z@|6@Pw B@||,H{&dtxh\t`|Pl8\Dd4F`@| VIDSCmdsTranslator.viXi386@code 62E{@E`ETPUEd$=t1=#ÐӀ}#t} uE(E!E"ɍHHƅt hhUEPt?ʃ9t'QRRVhh@u8 d$ZY=6t 6ɍHHH HHHHH H$H(ƅƅSQRVWPEEXPE EXQRuhPED$X" d$ZY=t鞸EEPERUQ YZXEEPERUQ YZXEEPERUQ YZXEEQRuhPED$X d$ZY=t_^ZY[ÐuP$P$d$ =k fxƅW?ƀQRhPhVQWRdt:d$ ZY= ƅQRP($P$ d$ZY= QRP$P$ d$ZY= fxƅDžEQRP $P$hhhP$uC/:d$$ZY=y =m ƅVW,_^fxƅt?QRhPhhQWRr:d$ ZY= ƅQRP|$P$5 d$ZY= fx"%ƅDž,E$x(QRP $P,$hhhPt$|u-:d$$ZY=y =[ ƅVW-x_^fx&ƅtt?hQRhPhhQWR0xq:d$ ZY= ƅQRPd$Ph$ d$ZY= fx*9ƅDž@E|8`<QRP4$P@$hhhP\$du,:d$$ZY=y =I ƅVW.`_^fx. ƅ\t?PQRhPhhQWRDp:d$ ZY= ƅfx2y ƅPW?8ƀDQRP4$PhVQWRHo:d$ ZY=s ƅQRP0$P8$ d$ZY=Z fx6 ƅ4}ƅfx: ƅQRP$(s d$ZY=P, XP-!XP."XQRP#$0! d$ZY=ƅfx> ƅDžL=t LL=tQRPh d$ZYk PLTEQRPT$WhP$ d$ZY=?t9?PǍuP$P$d$ = ƅfxB Elxr>?;LӸ9~Ӊ)QRSVhh@u% d$ZY=6>QRP$ d$ZY=xQRP$PD$L d$ZY=_t6PGXG7GGt"=-1>?;t-QRRVhh@u d$ZY>?=ƅ}(u ƅ hhUEP8d$ =fxe tTEl@9tJO@E`ETQRPRd$ZYÐ@E`ETQRPu<d$ZYÐ}ztƅQRhhPf5$hhV4/d$ZYt@E`QRhhPx$ULd$ZY=2}zuQR|Fd$ZYÐQR|Fd$ZYQRxFd$ZYÐQR|HFd$ZY=tQRP=ud$ZYDžÐQRFZYxETPQRQx*Fd$ ZY|DžOAtrDžPEXDžDž"DždDžl3DžhDždDžÐ}z􋕰=u=u)=tQRURhPQV/d$ZYƅ}(u ƅ0 hhUEP8d$ ="fxEP@PtTEl@9tJ@E`ETQRPR#d$ZYÐ@E`ETQRPu<d$ZYÐ}zt׀}#t}"uH}!v}/uvQRPED$)#d$ZY==t p h搐ÐE{ [@E`ETPUEd$=t=t=t=tE{ E{‰ppVLFX@'PUEd$=uÐTcx@Tc0@Tc8@Tc(@iTck2@OTcL@5Tc8f@Tcp,@Tc8@Tcl8@Tc`3@TcA@TclA@TcM@eTcPI6@KTcTGP@1Tcdj@TcT@TcW@TcP @TcP @Tc@@Tc@@{Tck @aTck:@GTcT@-Tckn@Tc@Tc\@@Ðx&}1p@p @'PUEd$=uÐTc@Tc:@^Tbc t@$T-c@Tc@Tc "@vTMc \@d$ZY_^ZY[]ÐTdT*9B9+,j99+4+g+Y  +l +  9k 9 m*   P  {;;B\o );L;+dE<"@<;I?ya'fnv~%lD[r %?Ys)C]w:CODE 62(6.0rc5Oldest compatible LabVIEW.2Sd2Xl2T2YpPPP @Task@0Stringl@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArray6@P @!status @code@0source error out99ݽwp1 p1p0@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DTHPDT288~ @Taskxl@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArrayh\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster @Command @0 Description@Cmd Byte"@ # data bytes@0Name@0String!(@0regular expression@?String&@offset past match?v@@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionClusterArray Constantvf@\@P@0Name @Command@ # data bytes@Cmd Byte@0 DescriptionCluster0F6@P @!status @code@0sourceerror IO&@p" referenceL@@P @!status @code@0sourceerror in (no error)F6@P @!status @code@0source error out.@@0 Strings []*@@0String @!status @code@0sourceLl (HdddlH( llHH( ll$$$88$$$88($$$$$88 $||0\ WD?L?L DescriptionH W2TT~XD # data bytesHX2SDuuClusterSDCommandH X2TDCmd BytePDԐNameHPZ2#0#0HZ2RDO&kP&kStringH`Y2.SFdT)6((Qq~q~ArrayHW2UDGoHo error outRD$JgKgstatusH$xT2SZTZPD$ӆӇcodeHxZ2xy򺳳RDJkKksourceHZ2 P0 QPD@YAYTaskHW2'5(5HY2H I HDX2YrZrHDZ2[r\rHDpY2?[@[^D - -regular expression^Dssregular expression^D  regular expressionSD(5(5ClusterHD|T2HDZ20=0=HD|V2L YL YHDX2ijPD+ 8(+ 8(NameHDDX2;H;HSD^k^kClusterPDananNameHDS2q~q~SDrrCommandHDV2HDxY2XDۃ # data bytesTD͔Cmd ByteHDV2WDե DescriptionHDdT2©©SD< I;< I;CommandXDM ZGM ZG # data bytesHDY2] j] jZDYfYfArray ConstantHDY2lylyTD^ k9^ k9Cmd ByteHDU2n {n {WDo |Ao |A DescriptionHDY2^D)K)Kregular expressionHDW2,9J,9J^Ddqdqregular expressionHDY2tt^D*j*jregular expressionHDU2-Z:i-[:i^Dduqdvqregular expression^D''regular expressionHDW2&&HDZ2tdte^D#L0#M0regular expressionHDY23@3@PD7~D7DTaskHDhZ23@3@ Reset Position Set Address Define Status Read StatusLoad Trajectory Start MotionSet Gain Stop Motor I/O ControlSet Homing Mode Set Baud RateClear Sticky BitsSave Current Position as Home No Operation Hard Reset|PNG  IHDR(-SPLTE岲LLLf3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333̙f3̙̙f3̙̙f3̙̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3̙̙f3ffffff3f3333f333̙f3 """)))UUUMMMBBB999|PP֭֓𠠤.9?IDATxc`f($!lTTH@@Mr~ 0-p l4K9M/dIENDB`33qzPNG  IHDR(-SPLTE岲LLLf3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333̙f3̙̙f3̙̙f3̙̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3̙̙f3ffffff3f3333f333̙f3 """)))UUUMMMBBB999|PP֭֓𠠤.9AIDATxc`f(`O -?B( ȶ0@T  Y9N` A?KIENDB`q FPHPCmdsTranslator.vitFPHPD228lls~ 62LT2pS2(S2+5Eň2`XL ͳ@47,   ||0t$  , ( TX(PX0 X Odo4Q<>(@PC<Av4 FX >M8t34 2X St34 F s34 2 |v30  dop > 0cpcpcpp : bqbqbqL 2 0zu0z/{.|-}( t  D<S 0x 84 N< tv30 7< ,¦0 < 0do@PC<hBň(( 4 F( v30 ( do4 2( |t3p >( 0cpcpcpp :( bqbqbqL 2( /{u0z/{.|-}@PC<5BȚ4 F T t3 |4 Q< 4 F  u30  T 5do4 2 T "1t3p > T 0)cp)cp)cpp : T )5bq)5bq)5bqL 2 T "1/{u0z/{.|-}4 2 Pu30  do,  X T(4 Q NK 8 H R4pt4 E<ˬ P$ dd |\  T 4 F d N'ltv30  $ dB4 2 d -RGt30  d )NKdo4 F  pt34  r (v3@P r B4~v CA0 w dop 2 vbqvbqvbq0 W  ~tp 2 0~vcp~vcp~vcp0 U 4do0  0 s  0¦|g8hB<S`D88DP9The error in cluster can accept error information wired from VIs previously called. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed. 0  D84 F Fps30 7 I3³T4 GIhw3D4OIh8@< jR[w3X2,0dThe status boolean is either TRUE (X) for an error, or FALSE (checkmark) for no error or a warning. The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.4 FD ҅w34 2D wݳw3|n O_ O_ O_ O_ O_ @Po@$@ :D @hopcpclg@ :D hoododkhThe code input identifies the error or warning. The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.4QI3Ԏ, Tt4 F Ilw34 2  O1ݳw3L 2D qw0z0z/{.|-}0 D oܳp 4+  K1M K1M K1M0  I3ܳ00The source string describes the origin of the error or warning. The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed., 4,4 PW?$L@io4 F?ZHw30  2/L4 J &6$x3< 2 G s3pT20  E$.,H| " BDHPCmdsTranslator.vipl BDHPDl>28pdpdpk~ 62VDY2lS2l>2+82,o\jpo0n0@|Xxh4 B|Xsw34604 2D0430 x, TL w  p @ T44/{,d , 8 \ 8h x4P[\  h , T;R<{&4QWt`4  2 Zsv3 @ P0-0 "t"",  T$ B  08 (@L\P , (4 '0 @ \>^N4 B\>\Pt3!!x !@x!!:,0!l !8 Hd0!  Wt!8,! *+0+1 !@l lT!!l0i\oVk  4!P]P 4!!^P#!,!VfXk(0!$ @ ! 0!l! !@ TL 0 !@ T  0!% l?|OtG4!/^~;Z!0D!cXW!X4!Q.?4! J  .lw3""-"d"04"08{4"08l{냀 "8 4"08 4꓀" 4"08 |{"d4"08 " "8d " "8 "8 L ,4"08 " , " P 4"08 "\"0"0 " L04"0 #d!y+n&4"0  <"d+y6n0" 8"(4-L\P " T4"^L0""1D1x14" J tu3 #@h,#1++0* ,#^,#*d!!L)4#470## #@ T$l4# J   hw34$Ql %$4$ J 0 '6v34% H\P 0% 3 0 9 4%  2  tw3&&& &0&   &,&**+p+,&pl &8l<\9 ;&, &8l 8l&!0&@+4hx"4& ,XP&*D & T$x &8l98 &@ P lX &@d(x &@ Ph & T(4&b P 64&EI00&;lA2B:4&  2 />pw3'40'  .?,'4(l 'Tf$_ 'T4'/1#4'0T&!  'T4'0T&1+ '4'0T  '( 'Tl4'0T!#'l 'T$4'0T !)#% 'TX`H(4'0TX#4'0T!)1#-' 4'_0 ' 'T| '@ Th04,4'P`!!'p'0';lPD"2*'83 '@ TEp?d4'P0'0 8':"Bd@',0 '@l@''d'A49Xc4P 98l:x,0 98l9,049b P,7Hʸ 9, 9@ P2,p,,9-|8-z49b P dQH  98l9-8$9-.L/0//9- 9@,-49 F- XgTv3H:R,Xx-X9"8 :../`/@:P v-B4kzz.,:A@: 6.L @kzrhkhkhk4:  v.L kzhv30; _.L kz0; W- ix{@; 6.L rzzglglgl0; w- lǮ³0; U- iʱ4;4b,; T@ 0|4; J+ ] l:v34< 2+ m |0w3L= :+ nz 0z0z/{.|-}0= 3+ l }4= J1 n }Bv34> 21 ~ v30? 1 } 4?Q 0} t?4?g YT0?NN4?l\l0?-8:, ?M>M\AL4?/6q/O ?3`5 8?d?$4?03`5dq/|?v7?<\2 F99 ?3?=\?,?3=\==FxF$F4?TV800?GTEqCOI?3@4?03`7e/?7?=?=Ь?h et tl,C T>S@<C>C> C@ TDt>>lC@@@CAL CAlDtBx>l CAl?0A>4CTU04CEH0,C To@ C@ PKO?C?CR?CB<CB4C J@< +kv34DQ>+V<k>TDB0D @< +V<kDCH4D  2@< ,Y;jv34EQ?dr`nE<<[ EAl>B AL>ALBXVHCPOZIU0EAl>WCfOpIk EAlC|B<ECC0EAl>DUCZOfI` EAlBB0EAl?YO`WpSh EAlCB0EAl@pZWP_`[X EAlDBEC0EAl?XOPW`SX EAlCC0EAlB\\_Pg`cX EAlE(CC,EBxAB C|BCD,E3@G4IMN`NO4EDM0E>l>0EAl@[W`_p[h4E03`7fq?yOuG4EHa0EG4EGd0EGElEF$>4E03`=gy?O}G E3`?0FDF$4E03`Fh?OG E3`EFxEF$ E3`FF4E03`Gi?OGEF E@ PE(HHG EMEpMIkNI}N}K6]I]IlK<l;8ll, P8 T K(WKW K@ PX`WW4Kb PWl{H ,K,p-HHOW,KX,0G?W4KA0Z04KWPa0KZKf WWK2HIIHK[KX,zSzK[<K\ Kd2dL| KdX,e<<K\ Kdd`[Ep?0KE(Dt0<\  lh$$L4Mlxm0Mk4M"` h8irmnP,MxkMp,jMkj$\M ,;>lJR< N|es o 4 ,RSIDb2?$(b2@pLb2Ab2B b2Cb2Db2E4b2Fb2Gb2HHb2Ib2Jb2KDb2Mb2Nb20a2<`2`2\`2`a2`2L8b2Dc2hc2Mc2N c2CmdsTranslator.viTranslateStatusBit.vi  Globals.vi Stat Info.ctlStatusByte.ctl Demo.viPIC-Init Servo.viPIC-SetStatusByte.viPIC-Close Servo.viPIC-Reset Position.vi  gains.ctlPIC-Set Gains.viPIC-Stop Motor.viPIC-Clear Sticky Bits.viPIC-Set Home.viPIC-No Operation.viPIC-Hard Reset.viPIC-Go Home.viPIC-Define Trajectory.viTrajectory.ctlStatus Items.ctlK Stat Info.ctlStatusByte.ctl gains.ctlTrajectory.ctlStatus Items.ctlTDDOUse DDOUseDDOUseDDOUseDDOUsePIC-Set Baud Rate.vi Strike Key.vi Simple Hit.vin}؁?k}'⾪ZT=* j着*ᆰᆰ*ꫪꫪꪯ窯*'⾪'+'+****:111111100?0CA"$888@E@t"`fgg |&pfBgf&8`fgfgfgffffffggfffgfffffffff#3!33?~>yq?{O8|?x|x?y?Ϗ<8|x>>ϟy<><<~3O<<??ffffbfffffffffffffffff?O8 E}(??ZT?ǀL H ?İ@H Ŀ DH @ ?   į  įࠊį?HࠊࠊH@?@ Hࠎ ࠊ䯊  ÀȠ 0 ,ˆ̌Ḧ,΢<(,̌.̢ ,, Ȍ̢̢̂ ,b,. (̈,H (̈,b..̢,,H8,Ȉ, (̈̌b,,̃b...Ȉ( 8̈Ā ̢.,,΢,..̃̌b,f,,,,̈,:,쯏bB,,B,,h,̢̃ #3!33Ȭ ̎ȈȈ ̄ȏČ̈̀̌ Ḧ,̈HČHLȈȈH ̈H ̈HȈČH ̈ȈḦ̌,Ȁ Ȁ   ,΢,,̂Ȉ,舨̈ȞȈ@ ̀  ̀Ȉ̬̀B̪ȏ ȏČ ̀ ꂠ̈̌LH ̌ ̈H (LȞĄb̢.̄̌ꏎ̌΢,興̌̌Č`ȏBH ̈HȈḦȞČaHȈH ̈ȈḦȈH ̈ Č( (  * ̈,ȈḦHĄČČ̌̄ČČ̈̌Ȁ  ,Ȉ,Ꮟ̂ ̢̀.b̈ ̀̌  (̈, ,Ꮘ̌ ̬̀B⪏.,,Č̈ ̈̀Ȟ̬ Ȭ*,Ȟ ȈH B ̄̌ ̈̌ČČ̀̈,Ȉ̌ ČH ̈Ḧ ̈H ̈Ȉ̀Ȉ̌Lʈ(̈ . (̈Č̈̀̌ ,b̀Ȁ Ȍb,,,΢,H ̌̌b,,Ȟ ,H B* Ḧ̈̌ČHČḦH Ȉ̀ *( Ȉ̠.쌈 ̈̎ ̀̌H (̈̈̀ ( ̈̈̀ H (̈̀ ̀ ̌̈̌̈( ̈.ȈȌ̌ ƌ`*ਂ(̌ * . H  ਂ*HČ*̌b ,Ȁ ΢,,* *@̌ ƌ̀ *.⨂  ̀ȈĀȈ̀((̈Ȉ 03(̈Ḧ ̬*̈,̌̌* ̌ḦH ȈH ̈H ̌Č̌Č̀Č̈̌Ȁ ̈,̢.b,Ꮟ  ,,  *.* *̀ ̀* ό ȏ?RSRC LVINLBVW* tD@ <r@Pf - ُ B~]| X{ LVIN Simple Hit.viLVIN Strike Key.vi @InitHitCloseTaskL@@2@P@ cts/tick@ Vel/PWM dir Velocity SpecVelocity array@@P @!status @code@0sourceerror in (no error)D@@0P@@@ Position dataHit Data6@P @!status @code@0source error outPTH0 Strike Key.viMLVINSetup Board.virP 6@P @!status @code@0source error out"@@ Waveform Graph@@P @!status @code@0sourceerror in (no error)@ scan rate(@ Init BoardStartReadClearTaskPTH0DAQ.llbSetup Board.vi Pj c$ cb P@@@2@P@cts/tick@ Vel/PWM dir Velocity Spec P P" P@@ cP"@P@flg@oRt@eofudfLP@2@P@cts/tick@ Vel/PWM dir Velocity SpecVelocity arrayp@PdfdP@PtxdP@PoldP@Pext P cTP"@P@flg@oRt@eofudf P# HitsxdfdPtxdPoldPext P    P @vP0@PP@P!!!!l@bP0   !!!    $@P0!!!B@8PP cVP"@P@flg@oRt@eofudfP scan ratep dfdP txdP oldP extb P         @P b P         @P P"@P@flg@oRt@eofudf"P@ Waveform Graphx@ dfdP@ txdP@ oldP@ ext`InitHitCloseTask" P@@" P@@hInitHitCloseTask(` Init BoardStartReadClearTask`InitHitCloseTask" P@@" P@@`milliseconds to wait(` Init BoardStartReadClearTask" P@@(h Init BoardStartReadClearTask" P@@(` Init BoardStartReadClearTask" P@@ c c$ c, cPL@@2@P@cts/tick@ Vel/PWM dir Velocity SpecVelocity array@InitHitCloseTask cL@@2@P@ cts/tick@ Vel/PWM dir Velocity SpecVelocity arrayD@@0P@@@ Position dataHit Data(@ Init BoardStartReadClearTask c@ scan rate"@@ Waveform Graph@ scan rate c@milliseconds to wait cD@@0P@@@ Position dataHit Data6@P @!status @code@0source error out c"@@ Waveform Graph@ scan rate@InitHitCloseTask6@P @!status @code@0source error out cL@@2@P@ cts/tick@ Vel/PWM dir Velocity SpecVelocity array&"@@ Waveform Graph(@ Init BoardStartReadClearTask6@P @!status @code@0source error out c(@ Init BoardStartReadClearTask@InitHitCloseTask@ scan rate"@@ Waveform Graph6@P @!status @code@0source error out cL@@2@P@ cts/tick@ Vel/PWM dir Velocity SpecVelocity array@@P @!status @code@0sourceerror in (no error) c(@ Init BoardStartReadClearTaskD@@0P@@@ Position dataHit Data@ scan rate @# Hits c cL c cT c cL c cT c cL c cL c cT c< c  c c\Z6 r@Plot 0 BTime Amplitudef3u`af37zbG@@È@@@o@?dP333334?333334333334?ə??r\ $08  \@* @, @ X     \@@ 6  \@    8 6 @ VIDS Simple Hit.viVIDS Strike Key.viTL@PTH0VIDSSetup Board.viXPHDPTH0i386 [code ^2E{D[E`ETPUEd$=t1= ÐӀ}#t} uE(E!E"ɍdHHH Hƅ`t hhUEPɍ|ƅxƅxVW_^fx ƅ|ɍHƅƅVW`f_^SQRVWE=tEMEE =t9Et3EEQRPE$u hh d$ZY=t雋E =tEPEEXpPEEXPEEX}uP$XEEPERUQff YZXEE m}_^ZY[ÐuPd$\d$ =VWlf_^VWp_^fx&) ƅHts$hEX[E`ETH.UR@␐}zt}z&ƅfx*ƅLtsDTEX[E`ETL.UR@␐}zt}zƅfx.ElxɍHƅƅPXVWf_^fx2EtDž4Y[ QRhhhP$md$ZY:nƅx3Vu+[ QRPod$ZYÐQR&-ZYQRPQ,{Ed$ ZY=͸[ QRPQh菄d$ZY:uQRCG+d$ZYÐQR;+ZYPQRP$QJ=+d$ ZYÐQR@+d$ZYQR,<+d$ZYÐQRF+d$ZYÐ뀽:tƅfx69QRP$hhPET$ld$ZY=tÐ}zƅx7EXc[E`ETP.UR@␐}zt}ztGƅ}(u ƅ hhUEP8d$ =fx:[E`QRPET$hhPET$3kd$ZY=tÐ}zMx;ƅ|fx"Elx]SQRVWPEEXPE EXPERUQ YZXEEPERUQ YZXEEQRuhPED$Xd$ZY=t_^ZY[ÐuP$P$Ud$ =~9} ƅlfxƅpTts$tsDhEX[E`ETT.UR@␐}zt}zƅpfxƅtXts$4ts$<ts<TEX&[E`ETX.UR@␐}zt}ztƅtfxY}#t}"uH}!v}/uvQRPED$L`d$ZY==t p h搐ÐE{ [E`ETPUEd$=t=t=t=tE{ E{‰ppVLFX@'PUEd$=uÐT* [T* H1[TR0%@P rtB4-V A0 wh :Vdt8p 4h -;bv-;bv-;bv0 Wt +Y p 4h 0-;cu-;cu-;cu0 Ut Vdt<S`t"ZD 0 st ZǦ0 7P &^@Ǧ0 P "ZDdt 4 NP Z 34 F  +^;0%4 2 -<,3L :  -<0u0/.-@PP(^@`A|(ld0  )@dtPWP&>@(0 P D 4 N (1%p 4  0(4cu(4cu(4cup 4  4@bv4@bv4@bv< 2 +:P3`I2p 4 0&2cu&2Լcu&2Ԗcu0  '>dt0  t4 J +:)$3 | p 4 2>bv2>Լbv2>Ԗbv@ P A3gt \+@ |(  L , 4 F  A>P]l1%0   P>gtdt4  2  TBcpl30  H* $p 6  0O3[?cuO3[?cuO3[?cup 2  [3g?bv[3g?bv[3g?bvL :  TBcH0u0/.- | |$@ P+t ND , Lhp ^qĮ"i|SP2<@ : L!wvbvboi (SGL) scan rate: the number of scans per second to acquire. This is equivalent to the sampling rate per channel. The default input is 1000 scans/sec.0  2tᳳ4 F  1`(0%4  2 4rⳳx3L :  4:00/.-@ 6  A+2phphll@ 2  +2oioikm0 xO  04d4 F  *~`F%0 C i>@ : J!frfr]{0 k ! i>@ : K!njnjgq0 2(u!z" 0@O`4 0u`a u`a4 6y/lF%@O@4 7zb`$Hzb 0 2-ux 4 3^hF%0 2-_b 4 3^78FpF%4 6K]tF%0 2(]b 0  "i>4 $ o@%0 T 0   ctRⳳ, ,  < P|` BDHP Simple Hit.viLVIN Strike Key.vi xPTH0LVINSetup Board.vi, &D$PTH0Pt BDHPDT28PlPlPs~ ^2Cx]2[2T2EOl2,N|B C,0N@8( PK[Ot$  H t!@18բ@2,0LP,(4 @0P!  <4 KsՂ,1%,<\,43(Ւݎ43`Պ݆43՚ݖ\< d< \43ݢ, 43բݞ ,43 &L\ |434 JP Yh 0%PWPhy |APW~X A &0h4 1;<Q \,4h4 J o~1%<  2 0%M2@ 2O XXY4 j Ϗp1%0 3 ~0 3   @ <, 4 #4 12pP #4 2T7P4/ D8P@'8/L 0@` 0@8 4 B !00%@@1/""\HKhn2 @1hzT&h243 x 04 47P PT ?E[FV/   " H , P t0>@0$ P 4 0 ,  H x @ PL  x @ H  0& P EUM4' PXtth  H p$!,0L' @ P t!4 jP j"y+3 @ 2PO ixXXY @ P$! @00 3P  mt  @ P` <  2P ix1%HR20" 3P hy ,"(l, "4"3"(@"1/d8 L24" Kt>0% #l4#3#l # @4#3 #2H(4#34#3 # #4#3 # #CL@4#3 # #|4#/9|##,4#" P H)ENI@#P0y  2A## ج#&,#0P 4# K xkz<1%$ $ x4$3 x dz~ $ x 0 $ x p!4$3 x"$P $ x4$3 x!$ $ x@ 4$3 xt$z$ $ x"&'80'8-$40 B$6dF%41 J' _nE%2$P2Wn$DMA42+/LA^%2+2-$42 j' pE%@3 2'O o~XXY03 3'  sz43 J R a&T1%<4  2' o~E%g2@6 2O bq%XXY463 $G’Ҍ 6 1(+0463 Fœҗ6-46 j c(r1d1%07 3 ar&07 3  fm,7 (;47 %<07 3' n473 $0H¡47 K&n}$z38`I8 8&:,,8 xt ; 8 &X-- 8&>;-$80 483&$pW}Έނ483&$XΗ483 *lI— 8 .-483 .PJŒ8-8;>p81(H8LMkM8CL8) <483&UΝޗ08*/L3, 801(0h 8@/L p0h8;648/%.P08*/L3-<E@ 801\C 8@/L 1\C8 /8t008*/L3.Xa\ 802281H8 p824(48/2:(Q,8/LOGOd 8/3 8B3p0h083N 8B3pJ,1\C8131803P08244/ 8B3p248/34q38484844 84454 8445848CE480444h/q#3+480444|0q#8K~nKn 8@@/L> 9L68483&DVΒލ8 O@O8 O08 3<  ip8 08* /L"@P8p p82\483&&DY΍483&(|Z}΂8\IRR 8" H> ?`48 J< UdA%,901/6,901\29L49 j< fuA%P:W&du' ]A<:  2< et@%Q2@< 2l ,<>  pH<> 4<'XA < @ P??`,< h>,<#0LR?`4<"  P.dQ?4<>4<?? p<?qqJ<"<>lww<BC<Dd<!h<F ,<, P x&<vv <B0C(H@<E<(HL< ">?+@&L`  <<<%]0_ <@3pIH(H@ <D$J,EpC4</|MP<C3@<13DDP>n2 <D$O0DDd4< KD$uE%(=CDdF EFF`4=3D$AC˙۔\=4=3D$/8Dˤ۞ =D$IHE@4=3D$CA˞=F =D$F,F 4=3D$ABˏۉ =D$IFF`4=3D$F?ˉ=F` =D$IF64=3D$E@˔=GxF`,=3pGd=G8=Gx =@3pIG8GxP=WG8pH 2GO qـXXY4> jG rp34`2>\2>@~2?8^2 ?]2 ?[2 @,d2 @TN2 @e2A,hd2Axe2AP2B$N2Bxd\2BԘS2C n2Ctg2CZ2D((T2D|\ 2DT2EZ2 E`Hf2"EO2#Ehq2$FX0P2%FW2'G e2(GXTh2*GM2+GXW2,H<~2-HLh2.HL2/ILx20I21Ig22JDf23J[24J\26K8~27K28Kl29L02:L$2M|2?M|2ANx2Nh2NxU2!Nd2&Na2)Nd25Oi2;O02@O\`n2O@f2OX2O8f2Og2O f2O{2e2fDM24]2p2 Simple Hit.vi++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++99ݽwp1 1`p     PIC STEP-SetStatusByte.viPICSTEP-Define Trajectory.viPIC-Init STEP.vi Setup STEP.vi RS232VIEW.viPIC STEP tester.vi AllThings.viY.Z=?k/#?^k""'?*?ȯAϫ*ꪪꪪꫪꫪꪪꪪꪪꪪjꪪꫪ꿫着꿫ꪪ 0H*?0" ?:z F`#  ࡁxhïpp00<  (""#0#33#0@ 331#2@#332#0@03"3??<^?񘘙z?몪_ P>|?0~ À?? ZEπWA߇辪*€A"?ꫪ* ŽD 8H H ĠĠĠĠ   D HĠ ?H D H ?HĠ HĠ ?İ İ D H @  @ @  @ @ @ @ @ @    Hİ H ?H İ Ŀ H İĿH DH ?H    H nH@  HĿH H   ??*(>#?*(># ?>x ?>x?2<Ȭ ̌ r, ̈,,L̀ĀbH , ,fjfjf,NNN,NNN,fjfjf,fjfjfH b, $b浪NNb$NN ,fjfjf,̂o&fjfjȈ$fjfjf$NNN,NNN ,b<Ȍ̂̢ b, Œ.b.̂ Œ.,b.b, (̈,..,,̂΢,,΢, (̈, (̈,΢,,,̂ Œb,b..., (̈,΢,,,,̂ Œb,b..̂. (̈,΢,,,̂̃.  ,΢h<̈,<(,,, Ȍ̢.̂ ,,⏈΀ Œ΂/΀ Œ΂/ (̀̂ƀ O(̈,h 8̈,̂΀ Ì̢, 8̈,̂΀ Œ΂/,΂ (̈,菈΀ Œ΂/ (̈ (̈,⏈΀ Œ΂,菈΀ ŒN (̈,菈Ā ,fof (̈, ̂ Ā ,Ȭ<Ȍ̢̪̂ ΀ , ̂.΀ ,, ̂.c ,ŒΣ΢,,Ȉ,,,, Ȍ̢̂ ̢,,, bofồ ,,,,,,H bbB,쯃̌bbB,̢̂,,:̈̀̀Ľ̢ ̂b,̈ b,΢, (̈,Ȉ., .b,̂̂À̀̈,̢̂̈̌̀,b (̌, b..., b,b,̂̂,̂b,.. < (̈b,,̢h,,  ,, ,,̈,@ ,̌ ,̈̌̈,,,̌̈̌̈̌L̈,̌ , ,,̌̈,̀̈,̀ ,̀ ̌,  ,̀ ̀̈,̌̈,̌ ,̀ ,̀ ,̀ $̀ , ,,̈,L ,̌ , ,,̌ ,̀#<!2! Ϗ̌(B̀Č̈̌b,,΢ (̈,興 ̌ Έ,Έ (̈(̈ B̻ˈ̈,  ̚ʈ̀ Ȟ ,̎ ΢( ̈( ̈̈̌ H ̈ . .  .⨂  / ̌̌ ̌  .  *̀ 3 Ȁ  Έ,  ̎  ̌Č̌ ̌̌   .興̈̀*.興̀ ̈̌ Ȉ̈ ̈̈̀Ȍh€΢,.,Ȟ̌̈̀  < ̌ ̈̌̌Ą̌ČȈBȞ ̈̀,̌Ȟ ̈Č̌ČČ̌ , ,̌HȈ̈HȈ ̈HȈ ̈HȈ̈HȈ ̈HȈ ̈Ȉ̈HȈ ̈HȈ ̈Ȉ̈̀̌ ̈̀Ȉ̀,̌̌HČČ̌ČČ ̀ ȈB̌̀Ȉ̌HȈ ČȈHȈ ̀Č퀈Ȁ *hhhXXXȏȏRSRC LVINLBVW# V #D@ < 톂Hc|X ُ B~Nbs~ LVIN Strike Key.viLVCCStatus Items.ctl@7<Status Items.ctlh@P@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status ItemsPTH03 JRKerrDriversV1.llbStatus Items.ctlLVCC gains.ctlL gains.ctl@P @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband CompGainsPTH0, JRKerrDriversV1.llb gains.ctlLVINPIC-Init Servo.vi^X @ @ @6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)$@ PIC-ServoPIC-Step Interface@ port number@7<Status Items.ctlZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status ItemsPTH04 JRKerrDriversV1.llbPIC-Init Servo.viLVINPIC-Set Baud Rate.vi P 6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)@ Baud RatePTH07 JRKerrDriversV1.llbPIC-Set Baud Rate.viCLVINPIC-Set Gains.viP  6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)@L gains.ctlP @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband CompGainsPTH03 JRKerrDriversV1.llbPIC-Set Gains.viLVINPIC-Close Servo.viLP 6@P @!status @code@0source error out@@P @!status @code@0sourceerror in (no error)PTH05 JRKerrDriversV1.llbPIC-Close Servo.viLVIN The Hit.vi r @Hit type@@P @!status @code@0sourceerror in (no error)N@@:P&@@millisecond timer value@XY Graph6@P @!status @code@0source error outPTH0 Piano.llb The Hit.vid   @InitHitCloseTask@@P @!status @code@0sourceerror in (no error)@Hit typeN@@:P&@@millisecond timer value@Hit Data6@P @!status @code@0source error outP; c8 P+ cP"@P@flg@oRt@eofudfP7<Status Items.ctlZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status Items?@BCEFHIKLMOPRSUVXY[\]_`bcefgijlmoprstvwyz|}vsqŏƏȏzˏ̏ΏϋяҏԏՇ֏؏zی܏ޏ{vy    pr "#$|&')*,-.0 B Positionȓ 6XTJSRPQQ Q!Q#Q$Q&Q'Q)Q*Q,Q-Q/Q0Q2Q3Q5Q6Q8Q9Q;Q<Q>Q?Q@QBQCQEQFQHQIQKQLQMQOQPQRQSQUQVQXQYQ[Q\Q]Q_Q`QbQcQeQfQgQiQjQlQmQoQpQrQsQtQvQwQyQzQ|Q}QQQQQQQQQQQQQQQQQQQQQQO/‘ÑőƑȑɑˑ̑ΑϑёґԑՑّ֑ؑۑܑޑߑ     "#$&')*,-.0 B Test@^{|78` @o@@|@yTimecounts per tick (x2^16)e>Lj @y@i@I?bS-9FR_kw(4BN[ht !-9EQ^jw ,9EQ]iu+7CP\ht &3?KXdo{ %2?KWdp|'4@LXdp|&2>JWco{    % 2 > J V b o {  2[ɋ8>5"o \H~ R-9FR_kw(4BN[ht !-9EQ^jw ,9EQ]iu+7CP\ht &3?KXdo{ %2?KWdp|'4@LXdp|&2>JWco{    % 2 > J V b o { (v4 @@@@Y?0\ mj(\h (; P ~ \n  `   nVIDS Strike Key.vipi386`%~code0\QRhUud$ZY_^ZY[]ÐUl$SQRVWt$$|$(aSQRVWE=tEMEE =t9Et8EEEQRPE$u PZ $+od$ ZY=tڋE =tEPEEX騐PEEXPEEXQRhhuhPE苉D$Xhnd$ZY=tcEEQRhhuhPE苉D$Xh_nd$ZY=tEEm}Z_^ZY[ÐuP$P$d$ _^ZY[]ÐUl$SQRVWu%~F@3'~FDQRhUcjd$ZY_^ZY[]ÐF@FDQRhUL)5}`%~CODE0D@\%6.1Oldest compatible LabVIEW.0HBDDpPPvP@7<Status Items.ctlZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status Items@L gains.ctlP @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband CompGainsN@@:P&@@millisecond timer value@Hit Data@InitHitCloseTask6@P @!status @code@0source error out@@P @!status @code@0sourceerror in (no error)@Hit type99ݽwp1 10pPpDTHPDh88ho~x@7<Status Items.ctlZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status ItemsjZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID @L gains.ctlP @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband CompGainsP @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband Comp$@Position Gain (Kp)$@Velocity Gain (Kd)$@Position Gain (Ki)(@Integration Limit (IL)&@Output Limit (OL)$@Current Limit (CL).@Position Error Limit (EL)(@Servo rate divisor (SR)&@Amp Deadband CompF6@P @!status @code@0source error out^N@@:P&@@millisecond timer value@XY Graph@ Baud RateL@@P @!status @code@0sourceerror in (no error)@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info$P 6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)@ Baud Rate P  6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)@L gains.ctlP @Position Gain (Kp)@Velocity Gain (Kd)@Position Gain (Ki)@Integration Limit (IL)@Output Limit (OL)@Current Limit (CL)@Position Error Limit (EL)@Servo rate divisor (SR)@Amp Deadband CompGainsP 6@P @!status @code@0source error out@@P @!status @code@0sourceerror in (no error)@Hit type @0source @code @!status(@InitHitCloseTask@ port number0$@ PIC-ServoPIC-Step Interface^N@@:P&@@millisecond timer value@Hit Data!0*P0!!!0$@P0!!!&P!!!! r @Hit type@@P @!status @code@0sourceerror in (no error)N@@:P&@@millisecond timer value@XY Graph6@P @!status @code@0source error outpd@ZP0   !!!jZP0   !!!(@millisecond timer value*@milliseconds to wait΃X @ @ @6@P @!status @code@0source error out@  Stat Info.ctlP@ Position data@ A/D Value@Velocityf@P @!index@!Pos wrap@!Servo On@! Accel Done@! Slew Done@! Servo OverrunAux Byte @Home@@ Device ID Status Info@)-StatusByte.ctlzP@! Move Done@! cksum err@! Overcurrent@!Power On@! Pos Error@! limit 1 hit@! limit 2 hit @!Homing Status Byte@@P @!status @code@0sourceerror in (no error)$@ PIC-ServoPIC-Step Interface@ port number@7<Status Items.ctlZP@!Position@! A/D Value@!Velocity@!Aux byte@!Home pos@! Device ID Status Items{p,Hd8\(  hh(DtLhpt\ XDY{fY|f Status ItemsN TDrrPositionUD A/D ValueTDVelocityTDAux byteTDӯƀӯHome posUDۀہ Device IDQDP]P]GainsLDP]P]^DivOivOPosition Gain (Kp)H`-j`wjawH,`a^DOOVelocity Gain (Kd)^DOOPosition Gain (Ki)H+`abDOOIntegration Limit (IL)H+`a]DOOOutput Limit (OL)H*`a^DOOCurrent Limit (CL)H]`aeDOOPosition Error Limit (EL)H`^`acD)O)OServo rate divisor (SR)Hp^`*a*]D6CO6COAmp Deadband CompH^7`D7aDTD9F9F Hit DataH^H^H^H^H^%Q&QH^H_H _9V:VHD^[\H__|`|H_H$_H,_H4_H<_::HD_C`D`HL_ijH^HD^PD$yyTimeHD$^jwjwc D$counts per tick (x2^16)HD^kxkxUGTGT Pos ErrorUD error outRD$  statusH$_  PD33codeH_%\&\RD'4'4sourceH_;c\;HK_D$z%zerror in (no error)RD$(G)GstatusH$_/606PDVnWncodeH_ ` aRD#)0J#*0JsourceH_7-_7.DPDdq1dq1TaskHd_vvvwH`_wpwpTD@@Hit typeH_H$_ttHDT.RS HD^UD Baud RateHD<`HDD`HDT_}~HDt_ HDl_TIa`TJa`HD_/0UETpaTqa Default HD_;b<bHD`_l`l`Dmmmilliseconds to wait`D?>PIC-Set Baud Rate.vi\DPIC-Set Gains.viVDce The Hit.vi^D%'PIC-Close Servo.vi]DxzPIC-Init Servo.vi ei e&g& qq InitHitCloseLightMediumHard96001920057600115200ZPNG  IHDRZmIDATx F̞2F(NuB[4y4 D^R1s3tx aD۵P!\ec?6X/2p4vn}Ka+jIENDB`TPNG  IHDRZsIDATx @MN:@T)-="T!}oED_Θy"P-5\Kj@, Oi߬XQ#^i+}`4`1۸! IENDB`ZPNG  IHDRZmIDATx F̞2F(NuB[4y4 D^R1s3tx aD۵P!\ec?6X/2p4vn}Ka+jIENDB`TPNG  IHDRZsIDATx @MN:@T)-="T!}oED_Θy"P-5\Kj@, Oi߬XQ#^i+}`4`1۸! IENDB`FPHP Strike Key.viLVCCStatus Items.ctlPTH0LVCC gains.ctl 4 FL P4 2L _p 4L 0P\cuP\cuP\cup 4 P\bvP\bvP\bvL : _e0u0/.-0 L [dt@PB ]@AA4 FP P4 2P _p 4P 0P\cuP\cuP\cup 4L P\bvP\bvP\bvL :L _e0u0/.-0 P [dt@P ]AD4 FT P4 2T _p 4T 0P \cuP \cuP \cup 4T  P\bv P\bv P\bvp 4P P\bvP\bvP\bvL :P _e0u0/.-0 T [dt@P /^AJ4 F *P4 2 _+p 4 0P#\cuP#\cuP#\cup 4 #P/\b