Changes for page LSS-PRO Communication Protocol
Last modified by Eric Nantel on 2024/09/06 14:52
Change comment: There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,8 +1,6 @@ 1 1 {{warningBox warningText="More information coming soon"/}} 2 2 3 3 4 - 5 - 6 6 (% class="wikigeneratedid" id="HTableofContents" %) 7 7 **Page Contents** 8 8 ... ... @@ -10,13 +10,13 @@ 10 10 11 11 = Serial Protocol = 12 12 13 -The Lynxmotion Smart Servo (LSS) serial protocol was created in order to be as simple and straightforward as possible from a user perspective ("human readable format"), while at the same time staying compact and robust yet highly versatile. The protocol was based on Lynxmotion's SSC-32 & SSC-32U RC servo controllers and almost e verything onemight expecttobebletoconfigure forasmartservomotor isavailable.11 +The Lynxmotion Smart Servo (LSS) PRO serial protocol was created in order to be as simple and straightforward as possible from a user perspective ("human readable format"), while at the same time staying compact and robust yet highly versatile. The protocol was based on Lynxmotion's Smart Servo (LSS) protocol, which itself was based on the SSC-32 & SSC-32U RC servo controllers. The LSS PRO series and normal LSS share many of the same commands, but because of higher angular precision, slightly different operation and different features, the two protocols do not fully overlap. 14 14 15 15 In order to be able to control each servo individually with commands, the first step should be to assign a different ID number to each servo (see details on the Configure ID, or "CID" command [[here>>doc:||anchor="HIdentificationNumber28ID29"]]). Only the servo(s) which have been configured to a specific ID will act on a command sent to that ID. There is currently no CRC or checksum implemented as part of the protocol. 16 16 17 17 = Action Commands = 18 18 19 -Action commands tell the servo, within that session, to do something (i.e. "take an action"). The types of action commands which can be sent are described below, and they cannot be combined with other commands such as queries or configurations. Only one action command can be sent at a time. Action commands are session-specific, therefore once a servo is power cycled, it will not have any "memory" of previous actions or [[virtual positions>>||anchor="HVirtualAngularPosition"]] (described below). Action commands are sent serially to the servo 'sRx pinand must be sent in the following format:17 +Action commands tell the servo, within that session, to do something (i.e. "take an action"). The types of action commands which can be sent are described below, and they cannot be combined with other commands such as queries or configurations. Only one action command can be sent at a time. Action commands are session-specific, therefore once a servo is power cycled, it will not have any "memory" of previous actions or [[virtual positions>>||anchor="HVirtualAngularPosition"]] (described below). Action commands are sent serially to the servo and must be sent in the following format: 20 20 21 21 1. Start with a number sign **#** (Unicode Character: U+0023) 22 22 1. Servo ID number as an integer (assigning an ID described below) ... ... @@ -25,9 +25,9 @@ 25 25 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D) 26 26 27 27 ((( 28 -Ex: #5D1 8000<cr>26 +Ex: #5D130000<cr> 29 29 30 -This sends a serial command to all servo's RX pins which are connected to the bus and only servo(s) with ID #5 will move to a position (1 800 intenths of degrees) of 180.0 degrees. Any servo on the bus which does not have ID 5 will take no action when receiving this command.28 +This sends a serial command to all servo's RX pins which are connected to the bus and only servo(s) with ID #5 will move to a position (13000 in hundredths of degrees) of 130.00 degrees. Any servo on the bus which does not have ID 5 will take no action when receiving this command. 31 31 32 32 == Modifiers == 33 33 ... ... @@ -43,13 +43,14 @@ 43 43 1. Modifier value in the correct units with no decimal 44 44 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D) 45 45 46 -Ex: #5D1 800T1500<cr><div class="wikimodel-emptyline"></div>44 +Ex: #5D13000T1500<cr><div class="wikimodel-emptyline"></div> 47 47 48 -This results in the servo with ID #5 rotating to a position (1800 in tenths of degrees) of 1 80.0 degrees in a time ("T") of 1500 milliseconds (1.5 seconds).<div class="wikimodel-emptyline"></div>46 +This results in the servo with ID #5 rotating to a position (1800 in tenths of degrees) of 130.00 degrees in a time ("T") of 1500 milliseconds (1.5 seconds).<div class="wikimodel-emptyline"></div> 49 49 <div class="wikimodel-emptyline"></div></div></div> 50 50 49 +<h2>Queries</h2> 51 51 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 52 -Query commands request information from the servo. They are received via the Rx pin of the servo, and the servo's reply is sent via the servo's Tx pin. Using separate lines for Tx and Rx is called "full duplex".Query commands are also similar to action and configuration commands and must use the following format:<div class="wikimodel-emptyline"></div>51 +Query commands request information from the servo. Query commands are also similar to action and configuration commands and must use the following format:<div class="wikimodel-emptyline"></div> 53 53 54 54 1. Start with a number sign **#** (Unicode Character: U+0023) 55 55 1. Servo ID number as an integer ... ... @@ -56,9 +56,9 @@ 56 56 1. Query command (one to four letters, no spaces, capital or lower case) 57 57 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D)<div class="wikimodel-emptyline"></div> 58 58 59 -Ex: #5QD<cr> Query the position in ( tenth of) degrees for servo with ID #5<div class="wikimodel-emptyline"></div>58 +Ex: #5QD<cr> Query the position in (hundredths of) degrees for servo with ID #5<div class="wikimodel-emptyline"></div> 60 60 61 -The query will return a serial string (almost instantaneously) via the servo's Tx pinwiththe following format:60 +The query will return a serial string (almost instantaneously) via the servo's Tx in the following format: 62 62 63 63 1. Start with an asterisk * (Unicode Character: U+0023) 64 64 1. Servo ID number as an integer ... ... @@ -68,15 +68,17 @@ 68 68 69 69 There is currently no option to control how fast a servo replies after it has received a query command, therefore when sending a query command to the bus, the controller should be prepared to immediately "listen" for and parse the reply. Sending multiple queries to multiple servos on a bus in fast succession may result in replies overlapping and giving incorrect or corrupt data. As such, the controller should receive a reply before sending a new query command. A reply to the query sent above might be:<div class="wikimodel-emptyline"></div> 70 70 71 -Ex: *5QD1 800<cr><div class="wikimodel-emptyline"></div>70 +Ex: *5QD13000<cr><div class="wikimodel-emptyline"></div> 72 72 73 -This indicates that servo #5 is currently at 1 80.0 degrees (1800 tenths of degrees).72 +This indicates that servo #5 is currently at 130.00 degrees (13000 tenths of degrees). 74 74 <div class="wikimodel-emptyline"></div></div></div> 75 75 75 +<h2>Configurations</h2> 76 + 76 76 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 77 77 Configuration commands and corresponding values affect a servo's defaults which are written to and read from the servo's EEPROM.<div class="wikimodel-emptyline"></div> 78 78 79 -These configurations are retained in memory after the servo is reset or power is cut / lost. Some configuration commands affect the session, while others do not. In the Command table below, the column "Session" denotes if the configuration command affects the session. Not all action commands have a corresponding configuration command and vice versa. More information about which configuration commands are retained when in RCmode canbefound on the [[LSS - RC PWM page>>doc:lynxmotion-smart-servo.lss-radio-control-pwm.WebHome]]. Configuration commands are not cumulative.This means that if two of the same configuration commands are sent, one after the next, only the last configuration is used and stored.<div class="wikimodel-emptyline"></div>80 +These configurations are retained in memory after the servo is reset or power is cut / lost. Some configuration commands affect the session, while others do not. In the Command table below, the column "Session" denotes if the configuration command affects the session. Not all action commands have a corresponding configuration command and vice versa. Configuration commands are not cumulative; this means that if two of the same configuration commands are sent, one after the next, only the last configuration is used and stored.<div class="wikimodel-emptyline"></div> 80 80 81 81 The format to send a configuration command is identical to that of an action command:<div class="wikimodel-emptyline"></div> 82 82 ... ... @@ -86,43 +86,43 @@ 86 86 1. Configuration value in the correct units with no decimal 87 87 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D)<div class="wikimodel-emptyline"></div> 88 88 89 -Ex: #5CO-50<cr><div class="wikimodel-emptyline"></div> 90 +Ex: #5CO-500<cr><div class="wikimodel-emptyline"></div> 90 90 91 -This configures an absolute origin offset ("CO") with respect to factory origin of servo with ID #5 and changes the offset for that session to -5.0 degrees (50 tenths of degrees). Once the servo is powered off and on, zeroing the servo will cause it to move to -5.0 degrees with respect to the factory origin and report its position as 0 degrees. Configuration commands can be undone / reset either by sending the servo's default value for that configuration, or by doing a factory reset that clears all configurations (through the button menu or with DEFAULT command described below).<div class="wikimodel-emptyline"></div>92 +This configures an absolute origin offset ("CO") with respect to factory origin of servo with ID #5 and changes the offset for that session to -5.00 degrees (500 hundredths of degrees). Once the servo is powered off and on, zeroing the servo will cause it to move to -5.00 degrees with respect to the factory origin and report its position as 0 degrees. Configuration commands can be undone / reset either by sending the servo's default value for that configuration, or by doing a factory reset that clears all configurations (through the button menu or with DEFAULT command described below).<div class="wikimodel-emptyline"></div> 92 92 93 93 **Session vs Configuration Query**<div class="wikimodel-emptyline"></div> 94 94 95 95 By default, the query command returns the session's value. Should no action commands have been sent to change the session value, it will return the value saved in EEPROM which will either be the servo's default, or modified with a configuration command. In order to query the value stored in EEPROM (configuration), add a '1' to the query command:<div class="wikimodel-emptyline"></div> 96 96 97 -Ex: #5CSR 20<cr> immediately sets the maximum speed for servo #5 to20rpm (explained below) and changes the value in memory.<div class="wikimodel-emptyline"></div>98 +Ex: #5CSR10<cr> immediately sets the maximum speed for servo #5 to 10rpm (explained below) and changes the value in memory.<div class="wikimodel-emptyline"></div> 98 98 99 99 After RESET, a command of #5SR4<cr> sets the session's speed to 4rpm, but does not change the configuration value in memory. Therefore:<div class="wikimodel-emptyline"></div> 100 100 101 101 #5QSR<cr> or #5QSR0<cr> would return *5QSR4<cr> which represents the value for that session, whereas<div class="wikimodel-emptyline"></div> 102 102 103 -#5QSR1<cr> would return *5QSR 20<cr> which represents the value in EEPROM104 +#5QSR1<cr> would return *5QSR10<cr> which represents the value in EEPROM 104 104 <div class="wikimodel-emptyline"></div></div></div> 105 105 106 106 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 107 -The ability to store a "virtual angular position" is a feature which allows for rotation beyond 360 degrees, permitting multiple rotations of the output horn, moving the center position and more. The "absolute position" would be the angle of the output shaft with respect to a 360.0 degree circle and can be obtained by taking the modulus (with respect to 360 degrees) of the value. For example if the virtual position is reported as 15335 (or 1533.5 degrees), taking the modulus would give 93.5 degrees (3600 * 4 + 935 = 15335) as the absolute position (assuming no origin offset).<div class="wikimodel-emptyline"></div> 108 +The ability to store a "virtual angular position" is a feature which allows for rotation beyond 360 degrees, permitting multiple rotations of the output horn, moving the center position and more. The "absolute position" would be the angle of the output shaft with respect to a 360.00 degree circle and can be obtained by taking the modulus (with respect to 360 degrees) of the value. For example if the virtual position is reported as 153350 (or 1533.50 degrees), taking the modulus would give 93.5 degrees (36000 * 4 + 9350 = 153350) as the absolute position (assuming no origin offset).<div class="wikimodel-emptyline"></div> 108 108 109 109 [[image:LSS-servo-positions.jpg]]<div class="wikimodel-emptyline"></div> 110 110 111 111 In this example, the gyre direction (explained below, a.k.a. "rotation direction") is positive (clockwise), and origin offset has not been modified. Each square represents 30 degrees. The following command is sent:<div class="wikimodel-emptyline"></div> 112 112 113 -#1D-300<cr> This causes the servo to move to -30.0 degrees (green arrow)<div class="wikimodel-emptyline"></div> 114 +#1D-3000<cr> This causes the servo to move to -30.00 degrees (green arrow)<div class="wikimodel-emptyline"></div> 114 114 115 -#1D2100<cr> This second position command is sent to the servo, which moves it to 210.0 degrees (orange arrow)<div class="wikimodel-emptyline"></div> 116 +#1D21000<cr> This second position command is sent to the servo, which moves it to 210.00 degrees (orange arrow)<div class="wikimodel-emptyline"></div> 116 116 117 -#1D-4200<cr> This next command rotates the servo counterclockwise to a position of -420 degrees (red arrow), which means one full rotation of 360 degrees plus 60.0 degrees (420.0 - 360.0), with a virtual position of -420.0 degrees.<div class="wikimodel-emptyline"></div> 118 +#1D-42000<cr> This next command rotates the servo counterclockwise to a position of -420.00 degrees (red arrow), which means one full rotation of 360 degrees plus 60.00 degrees (420.00 - 360.00), with a virtual position of -420.0 degrees.<div class="wikimodel-emptyline"></div> 118 118 119 -Although the final physical position would be the same as if the servo were commanded to move to -60.0 degrees, the servo is in fact at -420.0 degrees.<div class="wikimodel-emptyline"></div> 120 +Although the final physical position would be the same as if the servo were commanded to move to -60.00 degrees, the servo is in fact at -420.00 degrees.<div class="wikimodel-emptyline"></div> 120 120 121 -#1D4800<cr> This new command is sent which would then cause the servo to rotate from -420.0 degrees to 480.0 degrees (blue arrow), which would be a total of 900 degrees of clockwise rotation, or 2.5 complete rotations.<div class="wikimodel-emptyline"></div> 122 +#1D48000<cr> This new command is sent which would then cause the servo to rotate from -420.00 degrees to 480.00 degrees (blue arrow), which would be a total of 900 degrees of clockwise rotation, or 2.5 complete rotations.<div class="wikimodel-emptyline"></div> 122 122 123 -#1D3300<cr> would cause the servo to rotate from 480.0 degrees to 330.0 degrees (yellow arrow).<div class="wikimodel-emptyline"></div> 124 +#1D33000<cr> would cause the servo to rotate from 480.0 degrees to 330.00 degrees (yellow arrow).<div class="wikimodel-emptyline"></div> 124 124 125 -If the servo loses power or is power cycled, it also loses the virtual position associated with that session. For example, if the virtual position was 480.0 degrees before power is cycled, upon power up the servo's position will be read as +120.0 degrees from zero (assuming center position has not been modified). The virtual position range at power-up is [-180.0°, 180.0°]. 126 +If the servo loses power or is power cycled, it also loses the virtual position associated with that session. For example, if the virtual position was 480.00 degrees before power is cycled, upon power up the servo's position will be read as +120.00 degrees from zero (assuming center position has not been modified). The virtual position range at power-up is [-180.00°, 180.00°]. 126 126 <div class="wikimodel-emptyline"></div></div></div> 127 127 128 128 {{/html}} ... ... @@ -132,67 +132,74 @@ 132 132 133 133 **Latest firmware version currently : v0.0.780** 134 134 135 -|(% colspan="10" style="color:orange; font-size:18px" %)[[**Communication Setup**>>||anchor="HCommunicationSetup"]] 136 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="text-align:center; width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 137 -| |[[**Reset**>>||anchor="HReset"]]|(% style="text-align:center" %)RESET|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Soft reset. See command for details. 138 -| |[[**Default** Configuration>>||anchor="HDefault26confirm"]]|(% style="text-align:center" %)DEFAULT|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Revert to firmware default values. See command for details 139 -| |[[Firmware **Update** Mode>>||anchor="HUpdate26confirm"]]|(% style="text-align:center" %)UPDATE|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Update firmware. See command for details. 140 -| |[[**Confirm** Changes>>||anchor="HConfirm"]]|(% style="text-align:center" %)CONFIRM|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | | 141 -| |[[**C**hange to **RC**>>||anchor="HConfigureRCMode28CRC29"]]|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)CRC|(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Change to RC mode 1 (position) or 2 (wheel). 142 -| |[[**ID** #>>||anchor="HIdentificationNumber28ID29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QID|(% style="text-align:center" %)CID|(% style="text-align:center" %) |(% style="text-align:center" %)✓|0| |Reset required after change. ID 254 is a "broadcast" which all servos respond to. 143 -| |[[**B**audrate>>||anchor="HBaudRate"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QB|(% style="text-align:center" %)CB|(% style="text-align:center" %) |(% style="text-align:center" %)✓|115200| |Reset required after change. 136 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**Communication Setup**>>||anchor="HCommunicationSetup"]] 137 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 138 +| |[[**Reset**>>||anchor="HReset"]]|(% style="text-align:center" %)RESET|(% style="text-align:center" %) |(% style="text-align:center" %) | | |Soft reset. See command for details. 139 +| |[[**Default** Configuration>>||anchor="HDefault26confirm"]]|(% style="text-align:center" %)DEFAULT|(% style="text-align:center" %) |(% style="text-align:center" %) | | |Revert to firmware default values. See command for details 140 +| |[[Firmware **Update** Mode>>||anchor="HUpdate26confirm"]]|(% style="text-align:center" %)UPDATE|(% style="text-align:center" %) |(% style="text-align:center" %) | | |Update firmware. See command for details. 141 +| |[[**Confirm** Changes>>||anchor="HConfirm"]]|(% style="text-align:center" %)CONFIRM|(% style="text-align:center" %) |(% style="text-align:center" %) | | | 142 +| |[[**E**nable CAN **T**erminal>>||anchor="HConfigureRCMode28CRC29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QET|(% style="text-align:center" %)CET| |0 or 1|0: Disable 1: Enable 143 +| |[[**ID** Number >>||anchor="HIdentificationNumber28ID29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QID|(% style="text-align:center" %)CID|0| |Reset required after change. ID 254 is a "broadcast" which all servos respond to. 144 +| |[[**U**SB **C**onnection State>>||anchor="HBaudRate"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QUC|(% style="text-align:center" %) | |0 or 1|0: Not connected 1: Connected 145 +| |**Q**uery **F**irmware **R**elease|(% style="text-align:center" %) |(% style="text-align:center" %)QFR|(% style="text-align:center" %) | | | 144 144 145 -|(% colspan="10" style="color:orange; font-size:18px" %)[[**Motion**>>||anchor="HMotion"]] 146 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="text-align:center; width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 147 -| |[[Position in **D**egrees>>||anchor="HPositioninDegrees28D29"]]|(% style="text-align:center" %)D|(% style="text-align:center" %)QD/QDT|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1/10°| 148 -| |[[**M**ove in **D**egrees (relative)>>||anchor="H28Relative29MoveinDegrees28MD29"]]|(% style="text-align:center" %)MD|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1/10°| 149 -| |[[**W**heel mode in **D**egrees>>||anchor="HWheelModeinDegrees28WD29"]]|(% style="text-align:center" %)WD|(% style="text-align:center" %)QWD/QVT|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |°/s|A.K.A. "Speed mode" or "Continuous rotation" 150 -| |[[**W**heel mode in **R**PM>>||anchor="HWheelModeinRPM28WR29"]]|(% style="text-align:center" %)WR|(% style="text-align:center" %)QWR|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |RPM|A.K.A. "Speed mode" or "Continuous rotation" 151 -| |[[Position in **P**WM>>||anchor="HPositioninPWM28P29"]]|(% style="text-align:center" %)P|(% style="text-align:center" %)QP|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |us|Inherited from SSC-32 serial protocol 152 -| |[[**M**ove in PWM (relative)>>||anchor="H28Relative29MoveinPWM28M29"]]|(% style="text-align:center" %)M|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |us| 153 -| |[[**R**aw **D**uty-cycle **M**ove>>||anchor="HRawDuty-cycleMove28RDM29"]]|(% style="text-align:center" %)RDM|(% style="text-align:center" %)QMD|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |-1023 to 1023 integer|Positive values : CW / Negative values : CCW 154 -| |[[**Q**uery Status>>||anchor="HQueryStatus28Q29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)Q|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1 to 8 integer|See command description for details 155 -| |[[**L**imp>>||anchor="HLimp28L29"]]|(% style="text-align:center" %)L|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | | 156 -| |[[**H**alt & Hold>>||anchor="HHalt26Hold28H29"]]|(% style="text-align:center" %)H|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | | 147 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**Motion**>>||anchor="HMotion"]] 148 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 149 +| |[[Position in **D**egrees>>||anchor="HPositioninDegrees28D29"]]|(% style="text-align:center" %)D|(% style="text-align:center" %)QD/QDT|(% style="text-align:center" %) | |1/100°| 150 +| |[[**M**ove in **D**egrees (relative)>>||anchor="H28Relative29MoveinDegrees28MD29"]]|(% style="text-align:center" %)MD|(% style="text-align:center" %) |(% style="text-align:center" %) | |1/100°| 151 +| |[[**W**heel mode in **D**egrees>>||anchor="HWheelModeinDegrees28WD29"]]|(% style="text-align:center" %)WD|(% style="text-align:center" %)QWD/QVT|(% style="text-align:center" %) | |°/s|A.K.A. "Speed mode" or "Continuous rotation" 152 +| |[[**W**heel mode in **R**PM>>||anchor="HWheelModeinRPM28WR29"]]|(% style="text-align:center" %)WR|(% style="text-align:center" %)QWR|(% style="text-align:center" %) | |RPM|A.K.A. "Speed mode" or "Continuous rotation" 153 +| |[[**Q**uery Motion Status>>||anchor="HQueryStatus28Q29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)Q|(% style="text-align:center" %) | |1 to 8 integer|See command description for details 154 +| |[[**L**imp>>||anchor="HLimp28L29"]]|(% style="text-align:center" %)L|(% style="text-align:center" %) |(% style="text-align:center" %) | | |Removes power from stepper coils 155 +| |[[**H**alt & Hold>>||anchor="HHalt26Hold28H29"]]|(% style="text-align:center" %)H|(% style="text-align:center" %) |(% style="text-align:center" %) | | |Stops (halts) motion profile and holds last position 157 157 158 -|(% colspan=" 10" style="color:orange; font-size:18px" %)[[**Motion Setup**>>||anchor="HMotionSetup"]]159 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style=" text-align:center;width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes**160 -| |[[**E**nable **M**otion Profile>>||anchor="HEnableMotionProfile28EM29"]]|(% style="text-align:center" %)EM|(% style="text-align:center" %)QEM|(% style="text-align:center" %)CEM| (% style="text-align:center" %) |(% style="text-align:center" %)✓|1| |EM1: trapezoidal motion profile / EM0: no motion profile161 -| |[[**F**ilter **P**osition **C**ount>>||anchor="HFilterPositionCount28FPC29"]]|(% style="text-align:center" %)FPC|(% style="text-align:center" %)QFPC|(% style="text-align:center" %)CFPC| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|5| |Affects motion only when motion profile is disabled (EM0)162 -| |[[**O**rigin Offset>>||anchor="HOriginOffset28O29"]]|(% style="text-align:center" %)O|(% style="text-align:center" %)QO|(% style="text-align:center" %)CO| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|0|1/10°|163 -| |[[**A**ngular **R**ange>>||anchor="HAngularRange28AR29"]]|(% style="text-align:center" %)AR|(% style="text-align:center" %)QAR|(% style="text-align:center" %)CAR| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|1800|1/10°|164 -| |[[**A**ngular **S**tiffness>>||anchor="HAngularStiffness28AS29"]]|(% style="text-align:center" %)AS|(% style="text-align:center" %)QAS|(% style="text-align:center" %)CAS| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|0|-4 to +4 integer|Suggested values are between 0 to +4165 -| |[[**A**ngular **H**olding Stiffness>>||anchor="HAngularHoldingStiffness28AH29"]]|(% style="text-align:center" %)AH|(% style="text-align:center" %)QAH|(% style="text-align:center" %)CAH| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|4|-10 to +10 integer|166 -| |[[**A**ngular **A**cceleration>>||anchor="HAngularAcceleration28AA29"]]|(% style="text-align:center" %)AA|(% style="text-align:center" %)QAA|(% style="text-align:center" %)CAA| (% style="text-align:center" %) |(% style="text-align:center" %)✓|100|°/s^^2^^|Increments of 10°/s^^2^^. Only when motion profile is enabled (EM1).167 -| |[[**A**ngular **D**eceleration>>||anchor="HAngularDeceleration28AD29"]]|(% style="text-align:center" %)AD|(% style="text-align:center" %)QAD|(% style="text-align:center" %)CAD| (% style="text-align:center" %) |(% style="text-align:center" %)✓|100|°/s^^2^^|Increments of 10°/s^^2^^. Only when motion profile is enabled (EM1).168 -| |[[**G**yre Direction>>||anchor="HGyreDirection28G29"]]|(% style="text-align:center" %)G|(% style="text-align:center" %)QG|(% style="text-align:center" %)CG| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|1| |Gyre / rotation direction: 1= CW (clockwise) -1 = CCW (counter-clockwise)169 -| |[[**F**irst Position (**D**eg)>>||anchor="HFirstPosition"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QFD|(% style="text-align:center" %)CFD| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|No value|1/10°|Reset required after change.170 -| |[[**M**aximum **M**otor **D**uty>>||anchor="HMaximumMotorDuty28MMD29"]]|(% style="text-align:center" %)MMD|(% style="text-align:center" %)QMMD|(% style="text-align:center" %) | (% style="text-align:center" %) |(% style="text-align:center" %)✓|1023|255 to 1023 integer|171 -| |[[Maximum **S**peed in **D**egrees>>||anchor="HMaximumSpeedinDegrees28SD29"]]|(% style="text-align:center" %)SD|(% style="text-align:center" %)QSD|(% style="text-align:center" %)CSD| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|Max|0.1°/s|SD overwrites SR / CSD overwrites CSR and vice-versa172 -| |[[Maximum **S**peed in **R**PM>>||anchor="HMaximumSpeedinRPM28SR29"]]|(% style="text-align:center" %)SR|(% style="text-align:center" %)QSR|(% style="text-align:center" %)CSR| (% style="text-align:center" %)✓|(% style="text-align:center" %)✓|Max|RPM|SD overwrites SR / CSD overwrites CSR and vice-versa157 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**Motion Setup**>>||anchor="HMotionSetup"]] 158 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 159 +| |[[**E**nable **M**otion Profile>>||anchor="HEnableMotionProfile28EM29"]]|(% style="text-align:center" %)EM|(% style="text-align:center" %)QEM|(% style="text-align:center" %)CEM|1| |EM1: trapezoidal motion profile / EM0: no motion profile 160 +| |[[**F**ilter **P**osition **C**ount>>||anchor="HFilterPositionCount28FPC29"]]|(% style="text-align:center" %)FPC|(% style="text-align:center" %)QFPC|(% style="text-align:center" %)CFPC|5| |Affects motion only when motion profile is disabled (EM0) 161 +| |[[**O**rigin Offset>>||anchor="HOriginOffset28O29"]]|(% style="text-align:center" %)O|(% style="text-align:center" %)QO|(% style="text-align:center" %)CO|0|1/10°| 162 +| |[[**A**ngular **R**ange>>||anchor="HAngularRange28AR29"]]|(% style="text-align:center" %)AR|(% style="text-align:center" %)QAR|(% style="text-align:center" %)CAR|1800|1/10°| 163 +| |[[**A**ngular **S**tiffness>>||anchor="HAngularStiffness28AS29"]]|(% style="text-align:center" %)AS|(% style="text-align:center" %)QAS|(% style="text-align:center" %)CAS|0|-4 to +4 integer|Suggested values are between 0 to +4 164 +| |[[**A**ngular **H**olding Stiffness>>||anchor="HAngularHoldingStiffness28AH29"]]|(% style="text-align:center" %)AH|(% style="text-align:center" %)QAH|(% style="text-align:center" %)CAH|4|-10 to +10 integer| 165 +| |[[**A**ngular **A**cceleration>>||anchor="HAngularAcceleration28AA29"]]|(% style="text-align:center" %)AA|(% style="text-align:center" %)QAA|(% style="text-align:center" %)CAA|100|°/s^^2^^|Increments of 10°/s^^2^^. Only when motion profile is enabled (EM1). 166 +| |[[**A**ngular **D**eceleration>>||anchor="HAngularDeceleration28AD29"]]|(% style="text-align:center" %)AD|(% style="text-align:center" %)QAD|(% style="text-align:center" %)CAD|100|°/s^^2^^|Increments of 10°/s^^2^^. Only when motion profile is enabled (EM1). 167 +| |[[**G**yre Direction>>||anchor="HGyreDirection28G29"]]|(% style="text-align:center" %)G|(% style="text-align:center" %)QG|(% style="text-align:center" %)CG|1| |Gyre / rotation direction: 1= CW (clockwise) -1 = CCW (counter-clockwise) 168 +| |[[**F**irst Position (**D**eg)>>||anchor="HFirstPosition"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QFD|(% style="text-align:center" %)CFD|No value|1/10°|Reset required after change. 169 +| |[[**M**aximum **M**otor **D**uty>>||anchor="HMaximumMotorDuty28MMD29"]]|(% style="text-align:center" %)MMD|(% style="text-align:center" %)QMMD|(% style="text-align:center" %) |1023|255 to 1023 integer| 170 +| |[[Maximum **S**peed in **D**egrees>>||anchor="HMaximumSpeedinDegrees28SD29"]]|(% style="text-align:center" %)SD|(% style="text-align:center" %)QSD|(% style="text-align:center" %)CSD|Max|0.1°/s|SD overwrites SR / CSD overwrites CSR and vice-versa 171 +| |[[Maximum **S**peed in **R**PM>>||anchor="HMaximumSpeedinRPM28SR29"]]|(% style="text-align:center" %)SR|(% style="text-align:center" %)QSR|(% style="text-align:center" %)CSR|Max|RPM|SD overwrites SR / CSD overwrites CSR and vice-versa 173 173 174 -|(% colspan="10" style="color:orange; font-size:18px" %)[[**Modifiers**>>||anchor="HModifiers"]] 175 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Modifier**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="text-align:center; width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 176 -| |[[**S**peed>>||anchor="HSpeed28S2CSD29modifier"]]|(% style="text-align:center" %)S|(% style="text-align:center" %)QS|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |uS/s |For P action command 177 -| |[[**S**peed in **D**egrees>>||anchor="HSpeed28S2CSD29modifier"]]|(% style="text-align:center" %)SD|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |0.1°/s|For D and MD action commands 178 -| |[[**T**imed move>>||anchor="HTimedmove28T29modifier"]]|(% style="text-align:center" %)T|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |ms|Modifier only for P, D and MD. Time can change based on load 179 -| |[[**C**urrent **H**old>>||anchor="HCurrentHalt26Hold28CH29modifier"]]|(% style="text-align:center" %)CH|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mA|Modifier for D, MD, WD and WR 180 -| |[[**C**urrent **L**imp>>||anchor="HCurrentLimp28CL29modifier"]]|(% style="text-align:center" %)CL|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mA|Modifier for D, MD, WD and WR 173 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**Modifiers**>>||anchor="HModifiers"]] 174 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Modifier**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 175 +| |[[**S**peed in **D**egrees>>||anchor="HSpeed28S2CSD29modifier"]]|(% style="text-align:center" %)SD|(% style="text-align:center" %) |(% style="text-align:center" %) | |1°/s|For D and MD action commands 176 +| |[[**T**imed move>>||anchor="HTimedmove28T29modifier"]]|(% style="text-align:center" %)T|(% style="text-align:center" %) |(% style="text-align:center" %) | |ms|Time associated with D, MD commands 181 181 182 -|(% colspan="10" style="color:orange; font-size:18px" %)[[**Telemetry**>>||anchor="HTelemetry"]] 183 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="text-align:center; width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 184 -| |[[**Q**uery **V**oltage>>||anchor="HQueryVoltage28QV29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QV|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mV| 185 -| |[[**Q**uery **T**emperature>>||anchor="HQueryTemperature28QT29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QT|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1/10°C| 186 -| |[[**Q**uery **C**urrent>>||anchor="HQueryCurrent28QC29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QC|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mA| 187 -| |[[**Q**uery **M**odel **S**tring>>||anchor="HQueryModelString28QMS29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QMS|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Returns the model of servo (ex: LSS-ST1, LSS-HS1, LSS-HT1) 188 -| |[[**Q**uery **F**irmware Version>>||anchor="HQueryFirmware28QF29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QF|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | | 189 -| |[[**Q**uery Serial **N**umber>>||anchor="HQuerySerialNumber28QN29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QN|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |Returns the unique serial number for the servo 178 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**Telemetry**>>||anchor="HTelemetry"]] 179 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 180 +| |[[**Q**uery PCB **T**emperature>>||anchor="HQueryTemperature28QT29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QT|(% style="text-align:center" %) | |°C| 181 +| |[[**Q**uery **C**urrent>>||anchor="HQueryCurrent28QC29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QC|(% style="text-align:center" %) | |mA|Nominal RMS value to stepper motor driver IC. 182 +| |[[**Q**uery **M**odel **S**tring>>||anchor="HQueryModelString28QMS29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QMS|(% style="text-align:center" %) | | |Returns the model of servo (ex: LSS-ST1, LSS-HS1, LSS-HT1) 183 +| |[[**Q**uery **F**irmware Version>>||anchor="HQueryFirmware28QF29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QF|(% style="text-align:center" %) | | | 184 +| |[[**Q**uery Serial **N**umber>>||anchor="HQuerySerialNumber28QN29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QN|(% style="text-align:center" %) | | |Returns the unique serial number for the servo 185 +| |**Q**uery **T**emperature **P**robe|(% style="text-align:center" %) |(% style="text-align:center" %)QTP|(% style="text-align:center" %) | | |Queries temperature probe fixed to stepper motor 186 +| |**Q**uery **T**emp of **C**ontroller|(% style="text-align:center" %) |(% style="text-align:center" %)QTCW, QTCE|(% style="text-align:center" %) | | |((( 187 +QTCW: Queries the temperature status of the motor controller (pre-warning) 190 190 191 -|(% colspan="10" style="color:orange; font-size:18px" %)[[**RGB LED**>>||anchor="HRGBLED"]] 192 -|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="text-align:center; width:75px" %)**RC**|(% style="text-align:center; width:75px" %)**Serial**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 193 -| |[[**LED** Color>>||anchor="HLEDColor28LED29"]]|(% style="text-align:center" %)LED|(% style="text-align:center" %)QLED|(% style="text-align:center" %)CLED|(% style="text-align:center" %)✓|(% style="text-align:center" %)✓| |0 to 7 integer|0=Off; 1=Red; 2=Green; 3=Blue; 4=Yellow; 5=Cyan; 6=Magenta; 7=White 194 -| |[[**C**onfigure **L**ED **B**linking>>||anchor="HConfigureLEDBlinking28CLB29"]]|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)CLB|(% style="text-align:center" %)✓|(% style="text-align:center" %)✓| |0 to 63 integer|Reset required after change. See command for details. 189 +QTCE: Queries the temperature status of the motor controller (over-temp error) 190 +))) 191 +| |**Q**uery **C**urrent **S**peed |(% style="text-align:center" %) |(% style="text-align:center" %)QCS|(% style="text-align:center" %) | | |Queries the motor controller's calculated speed 192 +| |**Q**uery **I**MU Linear **X**|(% style="text-align:center" %) |(% style="text-align:center" %)QIX|(% style="text-align:center" %) | |mm/s^2| 193 +| |**Q**uery **I**MU Linear **Y**|(% style="text-align:center" %) |(% style="text-align:center" %)QIY|(% style="text-align:center" %) | |mm/s^2| 194 +| |**Q**uery **I**MU Linear **Z**|(% style="text-align:center" %) |(% style="text-align:center" %)QIZ|(% style="text-align:center" %) | |mm/s^2| 195 +| |**Q**uery **I**MU Angular Accel **α** |(% style="text-align:center" %) |(% style="text-align:center" %)QIA|(% style="text-align:center" %) | |°/s^2|Query IMU Angular Accel α (Alpha) 196 +| |**Q**uery **I**MU Angular Accel **β**|(% style="text-align:center" %) |(% style="text-align:center" %)QIB|(% style="text-align:center" %) | |°/s^2|Query IMU Angular Accel β (Beta) 197 +| |**Q**uery **I**MU Angular Accel **γ**|(% style="text-align:center" %) |(% style="text-align:center" %)QIC / QIG|(% style="text-align:center" %) | |°/s^2|Query IMU Angular Accel γ (Gamma) 195 195 199 +|(% colspan="8" style="color:orange; font-size:18px" %)[[**RGB LED**>>||anchor="HRGBLED"]] 200 +|(% style="width:25px" %) |(% style="width:200px" %)**Description**|(% style="text-align:center; width:100px" %)**Action**|(% style="text-align:center; width:75px" %)**Query**|(% style="text-align:center; width:75px" %)**Config**|(% style="width:100px" %)**Default**|(% style="width:170px" %)**Unit**|**Notes** 201 +| |[[**LED** Color>>||anchor="HLEDColor28LED29"]]|(% style="text-align:center" %)LED|(% style="text-align:center" %)QLED|(% style="text-align:center" %)CLED| |0 to 7 integer|0=Off; 1=Red; 2=Green; 3=Blue; 4=Yellow; 5=Cyan; 6=Magenta; 7=White 202 +| |[[**C**onfigure **L**ED **B**linking>>||anchor="HConfigureLEDBlinking28CLB29"]]|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)CLB| |0 to 63 integer|Reset required after change. See command for details. 203 + 196 196 = (% style="color:inherit; font-family:inherit" %)Details(%%) = 197 197 198 198 == (% style="color:inherit; font-family:inherit" %)Communication Setup(%%) == ... ... @@ -251,25 +251,8 @@ 251 251 </div></div> 252 252 {{/html}} 253 253 254 -====== __ConfigureRC Mode (**CRC**)__======262 +====== ====== 255 255 256 -{{html wiki="true" clean="false"}} 257 -<div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 258 -This command puts the servo into RC mode (position or continuous), where it will only respond to RC PWM signal on the servo's Rx pin. In this mode, the servo will no longer accept serial commands. The servo can be placed back into smart mode by using the button menu.<div class="wikimodel-emptyline"></div> 259 - 260 -|**Command sent**|**Note** 261 -|ex: #5CRC1<cr>|Change to RC position mode. 262 -|ex: #5CRC2<cr>|Change to RC continuous rotation (wheel) mode. 263 -|ex: #5CRC*<cr>|Where * is any value other than 1 or 2 (or no value): stay in smart mode.<div class="wikimodel-emptyline"></div> 264 - 265 -EX: #5CRC2<cr><div class="wikimodel-emptyline"></div> 266 - 267 -This command would place the servo in RC wheel mode after a RESET or power cycle. Note that after a RESET or power cycle, the servo will be in RC mode and will not reply to serial commands. Using the command #5CRC<cr> or #5CRC3<cr> which requests that the servo remain in serial mode still requires a RESET command.<div class="wikimodel-emptyline"></div> 268 - 269 -**Important note: **To revert from RC mode back to serial mode, the [[LSS - Button Menu>>doc:lynxmotion-smart-servo.lss-button-menu.WebHome]] is required. Should the button be inaccessible (or broken) when the servo is in RC mode and the user needs to change to serial mode, a 5V constant HIGH needs to be sent to the servo's Rx pin (RC PWM pin), **ensuring a common GND** and wait for 30 seconds. Normal RC PWM pulses should not exceed 2500 milliseconds. After 30 seconds, the servo will interpret this as a desired mode change and change to serial mode. This has been implemented as a fail safe.<div class="wikimodel-emptyline"></div> 270 -</div></div> 271 -{{/html}} 272 - 273 273 ====== __Identification Number (**ID**)__ ====== 274 274 275 275 {{html wiki="true" clean="false"}} ... ... @@ -991,5 +991,3 @@ 991 991 == RGB LED == 992 992 993 993 The LED can be 994 - 995 -