Last modified by Eric Nantel on 2025/06/06 07:47

From version < 184.1 >
edited by Brahim Daouas
on 2020/05/01 11:35
To version < 198.2 >
edited by Coleman Benson
on 2021/02/26 15:39
< >
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.BDaouas
1 +xwiki:XWiki.CBenson
Content
... ... @@ -7,29 +7,29 @@
7 7  
8 8  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 everything one might expect to be able to configure for a smart servomotor is available.
9 9  
10 -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 CID [[here>>doc:||anchor="HIdentificationNumber28ID29"]]). Once this has been done, only the servo(s) which have been assigned to the ID sent as part of the command will follow that command. There is currently no CRC or checksum implemented as part of the protocol.
10 +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.
11 11  
12 12  == Session ==
13 13  
14 -{{html wiki="true" clean="false"}}
14 +{{html clean="false" wiki="true"}}
15 15  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
16 16  A "session" is defined as the time between when the servo is powered ON to when it is powered OFF or reset.<div class="wikimodel-emptyline"></div>
17 17  
18 -**Note #1:** For a given session, the action related to a specific commands overrides the stored value in EEPROM.<div class="wikimodel-emptyline"></div>
19 -**Note #2:** During the power-on / reset process the LSS cannot accept commands for a small amount of time (1.25 s).<div class="wikimodel-emptyline"></div>
20 -You can ensure the LSS is ready by using a query command to check for response (ex: #[id]Q\r or #[id]QID\r). If the LSS is ready for commands (initialized) it will respond to the query. A timeout between 50-100 ms is recommended to compensate for drivers, OS and buffering delays.
18 +**Note 1:** For a given session, the action related to a specific command overrides the stored value in EEPROM.<div class="wikimodel-emptyline"></div>
19 +**Note 2:** During the power-on / reset process the LSS cannot accept commands for a small amount of time (~1.25 s).<div class="wikimodel-emptyline"></div>
20 +**Note 3:** You can ensure the LSS is ready by using a query command to check for response (ex: #[id]Q\r or #[id]QID\r described below). If the LSS is ready for commands (initialized) it will respond to the query. A timeout between 50-100 ms is recommended to compensate for drivers, OS and buffering delays.
21 21  <div class="wikimodel-emptyline"></div></div></div>
22 22  {{/html}}
23 23  
24 24  == Action Commands ==
25 25  
26 -{{html wiki="true" clean="false"}}
26 +{{html clean="false" wiki="true"}}
27 27  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
28 -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"]]. Action commands are sent serially to the servo's Rx pin and must be sent in the following format:<div class="wikimodel-emptyline"></div>
28 +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's Rx pin and must be sent in the following format:<div class="wikimodel-emptyline"></div>
29 29  
30 30  1. Start with a number sign **#** (Unicode Character: U+0023)
31 -1. Servo ID number as an integer
32 -1. Action command (one or more letters, no whitespace, capital or lower case)
31 +1. Servo ID number as an integer (assigning an ID described below)
32 +1. Action command (one or more letters, no whitespace, capital or lowercase from the list below)
33 33  1. Action value in the correct units with no decimal
34 34  1. End with a carriage return **&#92;r** or **&lt;cr&gt;** Unicode Character (U+000D)
35 35  
... ... @@ -42,15 +42,15 @@
42 42  
43 43  == Modifiers ==
44 44  
45 -{{html wiki="true" clean="false"}}
45 +{{html clean="false" wiki="true"}}
46 46  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
47 47  Modifiers can only be used with certain **action commands**. The format to include a modifier is:<div class="wikimodel-emptyline"></div>
48 48  
49 49  1. Start with a number sign **#** (Unicode Character: U+0023)
50 50  1. Servo ID number as an integer
51 -1. Action command (one to three letters, no spaces, capital or lower case)
51 +1. Action command (one to three letters, no spaces, capital or lowercase from a subset of action commands below)
52 52  1. Action value in the correct units with no decimal
53 -1. Modifier command (one letter to too letters)
53 +1. Modifier command (one or two letters from the list of modifiers below)
54 54  1. Modifier value in the correct units with no decimal
55 55  1. End with a carriage return **&#92;r** or **&lt;cr&gt;** Unicode Character (U+000D)
56 56  
... ... @@ -62,7 +62,7 @@
62 62  
63 63  == Query Commands ==
64 64  
65 -{{html wiki="true" clean="false"}}
65 +{{html clean="false" wiki="true"}}
66 66  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
67 67  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>
68 68  
... ... @@ -71,7 +71,7 @@
71 71  1. Query command (one to four letters, no spaces, capital or lower case)
72 72  1. End with a carriage return **&#92;r** or **&lt;cr&gt;** Unicode Character (U+000D)<div class="wikimodel-emptyline"></div>
73 73  
74 -Ex: #5QD&lt;cr&gt; Query position in (tenth of) degrees for servo #5<div class="wikimodel-emptyline"></div>
74 +Ex: #5QD&lt;cr&gt; Query the position in (tenth of) degrees for servo with ID #5<div class="wikimodel-emptyline"></div>
75 75  
76 76  The query will return a serial string (almost instantaneously) via the servo's Tx pin with the following format:
77 77  
... ... @@ -91,11 +91,11 @@
91 91  
92 92  == Configuration Commands ==
93 93  
94 -{{html wiki="true" clean="false"}}
94 +{{html clean="false" wiki="true"}}
95 95  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
96 96  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>
97 97  
98 -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 RC mode can be found 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 same configuration commands are sent, one after the next, only the last configuration is used and stored.<div class="wikimodel-emptyline"></div>
98 +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 RC mode can be found 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>
99 99  
100 100  The format to send a configuration command is identical to that of an action command:<div class="wikimodel-emptyline"></div>
101 101  
... ... @@ -153,66 +153,66 @@
153 153  
154 154  **Latest firmware version currently : 368.29.14**
155 155  
156 -|(% colspan="10" style="color:orange; font-size:18px" %)**Communication Setup**
156 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**Communication Setup**>>||anchor="HCommunicationSetup"]]
157 157  |(% 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**
158 -| |Soft **Reset**|(% 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.
159 -| |**Default** Configuration|(% 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
160 -| |Firmware **Update** Mode|(% 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.
161 -| |**Confirm** Changes|(% style="text-align:center" %)CONFIRM|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |
162 -| |**C**hange to **RC**|(% 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).
163 -| |**ID** #|(% 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.
164 -| |**B**audrate|(% 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.
158 +| |[[**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.
159 +| |[[**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
160 +| |[[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.
161 +| |[[**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" %)✓| | |
162 +| |[[**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).
163 +| |[[**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.
164 +| |[[**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.
165 165  
166 -|(% colspan="10" style="color:orange; font-size:18px" %)**Motion**
166 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**Motion**>>||anchor="HMotion"]]
167 167  |(% 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**
168 -| |Position in **D**egrees|(% 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°|
169 -| |**M**ove in **D**egrees (relative)|(% style="text-align:center" %)MD|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1/10°|
170 -| |**W**heel mode in **D**egrees|(% 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"
171 -| |**W**heel mode in **R**PM|(% 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"
172 -| |Position in **P**WM|(% 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
173 -| |**M**ove in PWM (relative)|(% style="text-align:center" %)M|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |us|
174 -| |**R**aw **D**uty-cycle **M**ove|(% 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
175 -| |**Q**uery Status|(% 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
176 -| |**L**imp|(% style="text-align:center" %)L|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |
177 -| |**H**alt & Hold|(% style="text-align:center" %)H|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |
168 +| |[[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°|
169 +| |[[**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°|
170 +| |[[**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"
171 +| |[[**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"
172 +| |[[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
173 +| |[[**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|
174 +| |[[**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
175 +| |[[**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
176 +| |[[**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" %)✓| | |
177 +| |[[**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" %)✓| | |
178 178  
179 -|(% colspan="10" style="color:orange; font-size:18px" %)**Motion Setup**
179 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**Motion Setup**>>||anchor="HMotionSetup"]]
180 180  |(% 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**
181 -| |**E**nable **M**otion Profile|(% 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 profile
182 -| |**F**ilter **P**osition **C**ount|(% 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)
183 -| |**O**rigin Offset|(% 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°|
184 -| |**A**ngular **R**ange|(% 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°|
185 -| |**A**ngular **S**tiffness|(% 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 +4
186 -| |**A**ngular **H**olding Stiffness |(% 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|
187 -| |**A**ngular **A**cceleration|(% 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).
188 -| |**A**ngular **D**eceleration|(% 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).
189 -| |**G**yre Direction|(% 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)
190 -| |**F**irst Position (**D**eg)|(% 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.
191 -| |**M**aximum **M**otor **D**uty|(% 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|
192 -| |Maximum **S**peed in **D**egrees|(% style="text-align:center" %)SD|(% style="text-align:center" %)QSD|(% style="text-align:center" %)CSD|(% style="text-align:center" %)✓|(% style="text-align:center" %)✓|Max|°/s|SD overwrites SR / CSD overwrites CSR and vice-versa
193 -| |Maximum **S**peed in **R**PM|(% 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-versa
181 +| |[[**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 profile
182 +| |[[**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)
183 +| |[[**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°|
184 +| |[[**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°|
185 +| |[[**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 +4
186 +| |[[**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|
187 +| |[[**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).
188 +| |[[**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).
189 +| |[[**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)
190 +| |[[**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.
191 +| |[[**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|
192 +| |[[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|°/s|SD overwrites SR / CSD overwrites CSR and vice-versa
193 +| |[[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-versa
194 194  
195 -|(% colspan="10" style="color:orange; font-size:18px" %)**Modifiers**
195 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**Modifiers**>>||anchor="HModifiers"]]
196 196  |(% 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**
197 -| |**S**peed|(% 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
198 -| |**S**peed in **D**egrees|(% style="text-align:center" %)SD|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |°/s|For D and MD action commands
199 -| |**T**imed move|(% 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
200 -| |**C**urrent **H**old|(% 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
201 -| |**C**urrent **L**imp|(% 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
197 +| |[[**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
198 +| |[[**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" %)✓| |°/s|For D and MD action commands
199 +| |[[**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
200 +| |[[**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
201 +| |[[**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
202 202  
203 -|(% colspan="10" style="color:orange; font-size:18px" %)**Telemetry**
203 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**Telemetry**>>||anchor="HTelemetry"]]
204 204  |(% 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**
205 -| |**Q**uery **V**oltage|(% style="text-align:center" %) |(% style="text-align:center" %)QV|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mV|
206 -| |**Q**uery **T**emperature|(% style="text-align:center" %) |(% style="text-align:center" %)QT|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |1/10°C|
207 -| |**Q**uery **C**urrent|(% style="text-align:center" %) |(% style="text-align:center" %)QC|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| |mA|
208 -| |**Q**uery **M**odel **S**tring|(% 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)
209 -| |**Q**uery **F**irmware Version|(% style="text-align:center" %) |(% style="text-align:center" %)QF|(% style="text-align:center" %) |(% style="text-align:center" %) |(% style="text-align:center" %)✓| | |
210 -| |**Q**uery Serial **N**umber|(% 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
205 +| |[[**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|
206 +| |[[**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|
207 +| |[[**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|
208 +| |[[**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)
209 +| |[[**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" %)✓| | |
210 +| |[[**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
211 211  
212 -|(% colspan="10" style="color:orange; font-size:18px" %)**RGB LED**
212 +|(% colspan="10" style="color:orange; font-size:18px" %)[[**RGB LED**>>||anchor="HRGBLED"]]
213 213  |(% 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**
214 -| |**LED** Color|(% 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
215 -| |**C**onfigure **L**ED **B**linking|(% style="text-align:center" %) |(% style="text-align:center" %)QLB|(% 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.
214 +| |[[**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
215 +| |[[**C**onfigure **L**ED **B**linking>>||anchor="HConfigureLEDBlinking28CLB29"]]|(% style="text-align:center" %) |(% style="text-align:center" %)QLB|(% 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.
216 216  
217 217  = (% style="color:inherit; font-family:inherit" %)Details(%%) =
218 218  
... ... @@ -222,7 +222,7 @@
222 222  
223 223  {{html wiki="true" clean="false"}}
224 224  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
225 -Ex: #5RESET<div class="wikimodel-emptyline"></div>
225 +Ex: #5RESET&lt;cr&gt;<div class="wikimodel-emptyline"></div>
226 226  This command does a "soft reset" and reverts all commands to those stored in EEPROM (i.e. configuration commands).
227 227  Note: after a RESET command is received, the LSS will restart and perform initilization again, making it unavailable on the bus for a bit. See [[Session>>||anchor="HSession"]], note #2 for more details.<div class="wikimodel-emptyline"></div>
228 228  </div></div>
... ... @@ -260,6 +260,18 @@
260 260  </div></div>
261 261  {{/html}}
262 262  
263 +====== __Confirm__ ======
264 +
265 +{{html wiki="true" clean="false"}}
266 +<div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
267 +Ex: #5CONFIRM&lt;cr&gt;<div class="wikimodel-emptyline"></div>
268 +
269 +This command is used to confirm changes after a Default or Update command.<div class="wikimodel-emptyline"></div>
270 +
271 +**Note:** After the CONFIRM command is sent, the servo will automatically perform a RESET.<div class="wikimodel-emptyline"></div>
272 +</div></div>
273 +{{/html}}
274 +
263 263  ====== __Configure RC Mode (**CRC**)__ ======
264 264  
265 265  {{html wiki="true" clean="false"}}
... ... @@ -498,16 +498,20 @@
498 498  
499 499  ====== __Enable Motion Profile (**EM**)__ ======
500 500  
501 -{{html wiki="true" clean="false"}}
513 +{{html clean="false" wiki="true"}}
502 502  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
515 +EM1 (Enable Motion Profile #1) is the default mode of the LSS and is an easy way to control the servo's position with a single (serial) position command. This mode uses a trapezoidal motion profile which takes care of acceleration, constant speed travel and deceleration. Once the actual position is within a certain value of the target, it switches to a holding algorithm. The LSS commands for Angular Acceleration and Deceleration (AA/CAA/AD/CAD) Angular Stiffness (AS/CAS) and Angular holding stiffness (AH/CAH) affect this motion profile. Modifiers like SD/S and T can be used in EM1.<div class="wikimodel-emptyline"></div>
516 +
503 503  Ex: #5EM1&lt;cr&gt;<div class="wikimodel-emptyline"></div>
504 504  
505 -This command enables a trapezoidal motion profile. By default, the trapezoidal motion profile is enabled. If the motion profile is enabled, angular acceleration (AA) and angular deceleration(AD) will have an effect on the motion. Also, SD/S and T modifiers can be used.<div class="wikimodel-emptyline"></div>
519 +This command enables a trapezoidal motion profile for servo #5 <div class="wikimodel-emptyline"></div>
506 506  
507 507  Ex: #5EM0&lt;cr&gt;<div class="wikimodel-emptyline"></div>
508 508  
509 -This command will disable the trapezoidal motion profile. As such, the servo will move at full speed for D/MD action commands. Angular acceleration (AA) and angular deceleration(AD) won't have an effect on motion in this mode and modifiers SD/S or T cannot be used.<div class="wikimodel-emptyline"></div>
523 +This command will disable the built-in trapezoidal motion profile. As such, the servo will move at full speed to the target position using the D/MD action commands. Modifiers like SD/S or T cannot be used in EM0 mode. By default the Filter Position Counter, or "FPC" is active in EM0 mode to smooth out its operation. EM0 is suggested for applications where an external controller will be determining all incremental intermediate positions of the servo's motion, effectively replacing a trajectory manager.
510 510  
525 +<div class="wikimodel-emptyline"></div>
526 +
511 511  Query Motion Profile (**QEM**)<div class="wikimodel-emptyline"></div>
512 512  
513 513  Ex: #5QEM&lt;cr&gt; might return *5QEM1&lt;cr&gt;<div class="wikimodel-emptyline"></div>
... ... @@ -524,8 +524,10 @@
524 524  
525 525  ====== __Filter Position Count (**FPC**)__ ======
526 526  
527 -{{html wiki="true" clean="false"}}
543 +{{html clean="false" wiki="true"}}
528 528  <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
545 +The FPC value relates to the depth of a first order filter (exponential weighted average) over the position change. This has the effect of slowing down both acceleration and deceleration while still allowing the LSS to try to reach the desired position at maximum power at all times. A smaller FPC value will reduce the smoothing effect and a larger value will increase it. To prevent having to send position commands continuously to reach the desired position in EM0/FPC active (FPC >= 2), an internal position engine (IPE) has been put in place, which is also active by default.
546 +<div class="wikimodel-emptyline"></div>
529 529  Ex: #5FPC10&lt;cr&gt;<div class="wikimodel-emptyline"></div>
530 530  This command allows the user to change the Filter Position Count value for that session. <div class="wikimodel-emptyline"></div>
531 531  
... ... @@ -741,12 +741,30 @@
741 741  
742 742  Configure First Position in Degrees (**CFD**)<div class="wikimodel-emptyline"></div>
743 743  
744 -Ex: #5CD900&lt;cr&gt;<div class="wikimodel-emptyline"></div>
762 +Ex: #5CFD900&lt;cr&gt;<div class="wikimodel-emptyline"></div>
745 745  
746 746  This configuration command means the servo, when set to smart mode, will immediately move to 90.0 degrees upon power up. Sending a CFD command without a number (Ex. #5CFD&lt;cr&gt;) results in the servo remaining limp upon power up. In order to remove the first position, send no value, ex: #5CFD&lt;cr&gt;
747 747  <div class="wikimodel-emptyline"></div></div></div>
748 748  {{/html}}
749 749  
768 +====== __Maximum Motor Duty (**MMD**)__ ======
769 +
770 +{{html wiki="true" clean="false"}}
771 +<div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt">
772 +This command allows the user to limit the duty cycle value sent from the servo's MCU to the DC Motor driver. The duty cycle limit value can be within the range of 255 to 1023. The default value is 1023. A typical use-case for this command is active compliance.<div class="wikimodel-emptyline"></div>
773 +
774 +Ex: #5MMD512&lt;cr&gt;<div class="wikimodel-emptyline"></div>
775 +
776 +This will set the duty-cycle to 512 for servo with ID 5 for that session.<div class="wikimodel-emptyline"></div>
777 +
778 +Query Maximum Motor Duty (**QMMD**)<div class="wikimodel-emptyline"></div>
779 +
780 +Ex: #5QMMDD&lt;cr&gt; might return *5QMMD512&lt;cr&gt; <div class="wikimodel-emptyline"></div>
781 +
782 +This command returns the configured limit of the duty cycle value sent from the servo's MCU to the Motor Controller. The default value is 1023.
783 +<div class="wikimodel-emptyline"></div></div></div>
784 +{{/html}}
785 +
750 750  ====== __Maximum Speed in Degrees (**SD**)__ ======
751 751  
752 752  {{html wiki="true" clean="false"}}
... ... @@ -951,7 +951,7 @@
951 951  </div></div>
952 952  {{/html}}
953 953  
954 -= RGB LED Patterns =
990 +== RGB LED Patterns ==
955 955  
956 956  The LED patterns below do not include those which are part of the button menu, which can be found here: [[LSS Button Menu>>doc:lynxmotion-smart-servo.lss-button-menu.WebHome]]
957 957  
LSS-Protocol-Backup-2020-05-01.zip
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +47.4 KB
Content
Copyright RobotShop 2018