Changes for page LSS Communication Protocol
Last modified by Eric Nantel on 2025/06/06 07:47
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,6 +1,8 @@ 1 += Table of Contents = 2 + 1 1 {{toc depth="3"/}} 2 2 3 -= Protocol concepts =5 += Protocol Concepts = 4 4 5 5 The Lynxmotion Smart Servo (LSS) protocol was created in order to be as simple and straightforward as possible from a user perspective, while at the same time trying to stay compact and robust yet highly versatile. Almost everything one might expect to be able to configure for a smart servo motor is available. 6 6 ... ... @@ -27,7 +27,7 @@ 27 27 28 28 Action commands are session-specific, therefore once a servo is power cycled, it will not have any "memory" of previous actions or virtual positions (as described at the bottom of this page). 29 29 30 -== =Action Modifiers ===32 +== Action Modifiers == 31 31 32 32 Two commands can be used as action modifiers only: Timed Move and Speed. The format is: 33 33 ... ... @@ -106,7 +106,7 @@ 106 106 107 107 #5QSR1<cr> would return *5QSR20<cr> which represents the value in EEPROM 108 108 109 -== =Virtual Angular Position ===111 +== Virtual Angular Position == 110 110 111 111 {In progress} 112 112 ... ... @@ -134,50 +134,50 @@ 134 134 = Command List = 135 135 136 136 |= #|=Description|= Action|= Query|= Config|= RC|= Serial|= Units|= Notes 137 -| 1|[[**L**imp>>||anchor="HLimpL"]]| L| | | | ✓| none| 138 -| 2|**H**alt & Hold| H| | | | ✓| none| 139 -| 3|**T**imed move| T| | | | ✓| milliseconds| Modifier only 140 -| 4|**S**peed| S| | | | ✓| microseconds / second| Modifier only 141 -| 5|**M**ove in **D**egrees (relative)| MD| | | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 142 -| 6|**O**rigin Offset| O| QO| CO| ✓| ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 143 -| 7|**A**ngular **R**ange| AR| QAR| CAR| ✓| ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 144 -| 8|Position in **P**ulse| P| QP| | | ✓| microseconds|((( 139 +| 1|[[**L**imp>>||anchor="H1.Limp28L29"]]| L| | | | ✓| none| 140 +| 2|[[**H**alt & Hold>>||anchor="H2.Halt26Hold28H29"]]| H| | | | ✓| none| 141 +| 3|[[**T**imed move>>||anchor="H3.Timedmove28T29"]]| T| | | | ✓| milliseconds| Modifier only 142 +| 4|[[**S**peed>>||anchor="H4.Speed28S29"]]| S| | | | ✓| microseconds / second| Modifier only 143 +| 5|[[**M**ove in **D**egrees (relative)>>||anchor="H5.28Relative29MoveinDegrees28MD29"]]| MD| | | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 144 +| 6|[[**O**rigin Offset>>||anchor="H6.OriginOffsetAction28O29"]]| O| QO| CO| ✓| ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 145 +| 7|[[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]| AR| QAR| CAR| ✓| ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 146 +| 8|[[Position in **P**ulse>>||anchor="H8.PositioninPulse28P29"]]| P| QP| | | ✓| microseconds|((( 145 145 See details below 146 146 ))) 147 -| 9|Position in **D**egrees| D| QD| | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 148 -| 10|**W**heel mode in **D**egrees| WD| QWD| | | ✓| tenths of degrees per second (ex 248 = 24.8 degrees per second)| 149 -| 11|**W**heel mode in **R**PM| WR| QWR| | | ✓| rpm| 150 -| 12|Max **S**peed in **D**egrees| SD| QSD| CSD| ✓| ✓| tenths of degrees per second (ex 248 = 24.8 degrees per second)|QSD: Add modifier "2" for instantaneous speed 151 -| 13|Max **S**peed in **R**PM| SR| QSR| CSR| ✓| ✓| rpm|QSR: Add modifier "2" for instantaneous speed 152 -| 14|**A**ngular **S**tiffness| AS| QAS| CAS| ✓| ✓|none|-4 to +4, but suggested values are between 0 to +4 153 -| 15|**A**ngular **H**olding Stiffness|AH|QAH|CAH| | ✓|none|-10 to +10, with default as 0. 154 -|15b|**A**ngular **A**cceleration|AA|QAA|CAA| | ✓|degrees per second squared|Increments of 10 degrees per second squared 155 -|15c|**A**ngular **D**eceleration|AD|QAD|CAD| | ✓|degrees per second squared|Increments of 10 degrees per second squared 156 -|15d|**M**otion **C**ontrol|MC|QMC| | | ✓|none|MC0 to disable motion control, MC1 to enable. Session specific157 -| 16|**LED** Color| LED| QLED| CLED| ✓| ✓| none (integer from 1 to 8)|0=OFF 1=RED 2=GREEN 3= BLUE 4=YELLOW 5=CYAN 6=MAGENTA, 7=WHITE 158 -| 17|**ID** #| | QID| CID| | ✓| none (integer from 0 to 250)|Note: ID 254 is a "broadcast" which all servos respond to 159 -| 18|**B**aud rate| B| QB| CB| | ✓| none (integer)| 160 -| 19|**G**yre direction (**G**)| G| QG| CG| ✓| ✓| none | Gyre / rotation direction where 1= CW (clockwise) -1 = CCW (counter-clockwise) 161 -| 20|**F**irst Position (**P**ulse)| | QFP|CFP | ✓| ✓| none | 162 -| 21|**F**irst Position (**D**egrees)| | QFD|CFD| ✓| ✓| none | 163 -| 22|**T**arget (**D**egree) **P**osition| | QDT| | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 164 -| 23|**M**odel **String **| | QMS| | | | none (string)| Recommended to determine the model|165 -| 23b|**M**odel| | QM| | | | none (integer)| Returns a raw value representing the three model inputs (36 bit)| 166 -| 24|Serial **N**umber| | QN| | | | none (integer)| 167 -| 25|**F**irmware version| | QF| | | | none (integer)| 168 -| 26|**Q**uery (general status)| | Q| | | ✓| none (integer from 1 to 8)| See command description for details 169 -| 27|**V**oltage| | QV| | | ✓| millivolts (ex 5936 = 5936mV = 5.936V)| 170 -| 28|**T**emperature| | QT| | | ✓| tenths of degrees Celsius|Max temp before error: 85°C (servo goes limp) 171 -| 29|**C**urrent| | QC| | | ✓| milliamps (ex 200 = 0.2A)| 172 -| 30|**RC** Mode| | |CRC| |✓|none|((( 149 +| 9|[[Position in **D**egrees>>||anchor="H9.PositioninDegrees28D29"]]| D| QD| | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 150 +| 10|[[**W**heel mode in **D**egrees>>||anchor="H10.WheelModeinDegrees28WD29"]]| WD| QWD| | | ✓| tenths of degrees per second (ex 248 = 24.8 degrees per second)| 151 +| 11|[[**W**heel mode in **R**PM>>||anchor="H11.WheelModeinRPM28WR29"]]| WR| QWR| | | ✓| rpm| 152 +| 12|[[Max **S**peed in **D**egrees>>||anchor="H12.SpeedinDegrees28SD29"]]| SD| QSD| CSD| ✓| ✓| tenths of degrees per second (ex 248 = 24.8 degrees per second)|QSD: Add modifier "2" for instantaneous speed 153 +| 13|[[Max **S**peed in **R**PM>>||anchor="H13.SpeedinRPM28SR29"]]| SR| QSR| CSR| ✓| ✓| rpm|QSR: Add modifier "2" for instantaneous speed 154 +| 14|[[**A**ngular **S**tiffness>>||anchor="H14.AngularStiffness28AS29"]]| AS| QAS| CAS| ✓| ✓|none|-4 to +4, but suggested values are between 0 to +4 155 +| 15|[[**A**ngular **H**olding Stiffness>>||anchor="H15.AngularHoldStiffness28AH29"]]|AH|QAH|CAH| | ✓|none|-10 to +10, with default as 0. 156 +|15b|[[**A**ngular **A**cceleration>>||anchor="H15b:AngularAcceleration28AA29"]]|AA|QAA|CAA| | ✓|degrees per second squared|Increments of 10 degrees per second squared 157 +|15c|[[**A**ngular **D**eceleration>>||anchor="H15c:AngularDeceleration28AD29"]]|AD|QAD|CAD| | ✓|degrees per second squared|Increments of 10 degrees per second squared 158 +|15d|[[**E**nable **M**otion control>>||anchor="H15d:MotionControl28MC29"]]|EM|QEM| | | ✓|none|EM0 to disable motion control, EM1 to enable. Session specific / does not survive power cycles 159 +| 16|[[**LED** Color>>||anchor="H16.RGBLED28LED29"]]| LED| QLED| CLED| ✓| ✓| none (integer from 1 to 8)|0=OFF 1=RED 2=GREEN 3= BLUE 4=YELLOW 5=CYAN 6=MAGENTA, 7=WHITE 160 +| 17|[[**ID** #>>||anchor="H17.IdentificationNumber"]]| | QID| CID| | ✓| none (integer from 0 to 250)|Note: ID 254 is a "broadcast" which all servos respond to 161 +| 18|[[**B**aud rate>>||anchor="H18.BaudRate"]]| B| QB| CB| | ✓| none (integer)| 162 +| 19|[[**G**yre direction (**G**)>>||anchor="H19.GyreRotationDirection"]]| G| QG| CG| ✓| ✓| none | Gyre / rotation direction where 1= CW (clockwise) -1 = CCW (counter-clockwise) 163 +| 20|[[**F**irst Position (**P**ulse)>>||anchor="H20.First2InitialPosition28pulse29"]]| | QFP|CFP | ✓| ✓| none | 164 +| 21|[[**F**irst Position (**D**egrees)>>||anchor="H21.First2InitialPosition28Degrees29"]]| | QFD|CFD| ✓| ✓| none | 165 +| 22|[[**T**arget (**D**egree) **P**osition>>||anchor="H22.QueryTargetPositioninDegrees28QDT29"]]| | QDT| | | ✓| tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)| 166 +| 23|[[**M**odel **S**tring>>||anchor="H23.QueryModelString28QMS29"]]| | QMS| | | | none (string)| Recommended to determine the model| 167 +| 23b|[[**M**odel>>||anchor="H23b.QueryModel28QM29"]]| | QM| | | | none (integer)| Returns a raw value representing the three model inputs (36 bit)| 168 +| 24|[[Serial **N**umber>>||anchor="H24.QuerySerialNumber28QN29"]]| | QN| | | | none (integer)| 169 +| 25|[[**F**irmware version>>||anchor="H25.QueryFirmware28QF29"]]| | QF| | | | none (integer)| 170 +| 26|[[**Q**uery (general status)>>||anchor="H26.QueryStatus28Q29"]]| | Q| | | ✓| none (integer from 1 to 8)| See command description for details 171 +| 27|[[**V**oltage>>||anchor="H27.QueryVoltage28QV29"]]| | QV| | | ✓| millivolts (ex 5936 = 5936mV = 5.936V)| 172 +| 28|[[**T**emperature>>||anchor="H28.QueryTemperature28QT29"]]| | QT| | | ✓| tenths of degrees Celsius|Max temp before error: 85°C (servo goes limp) 173 +| 29|[[**C**urrent>>||anchor="H29.QueryCurrent28QC29"]]| | QC| | | ✓| milliamps (ex 200 = 0.2A)| 174 +| 30|[[**RC** Mode>>||anchor="H30.RCMode28CRC29"]]| | |CRC| |✓|none|((( 173 173 CRC: Add modifier "1" for RC-position mode. 174 174 CRC: Add modifier "2" for RC-wheel mode. 175 175 Any other value for the modifier results in staying in smart mode. 176 176 Puts the servo into RC mode. To revert to smart mode, use the button menu. 177 177 ))) 178 -|31|**RESET**| | | | | ✓|none|Soft reset. See command for details. 179 -|32|**DEFAULT**| | | | |✓|none|Revert to firmware default values. See command for details 180 -|33|**UPDATE**| | | | |✓|none|Update firmware. See command for details. 180 +|31|[[**RESET**>>||anchor="H31.RESET"]]| | | | | ✓|none|Soft reset. See command for details. 181 +|32|[[**DEFAULT**>>||anchor="H32.DEFAULTA026CONFIRM"]]| | | | |✓|none|Revert to firmware default values. See command for details 182 +|33|[[**UPDATE**>>||anchor="H33.UPDATEA026CONFIRM"]]| | | | |✓|none|Update firmware. See command for details. 181 181 182 182 == Details == 183 183 ... ... @@ -199,7 +199,7 @@ 199 199 200 200 Timed move can be used only as a modifier for a position (P) action. The units are in milliseconds, so a timed move of 2500 milliseconds would cause the servo to rotate from its current position to the desired position in 2.5 seconds. This command is in place to ensure backwards compatibility with the SSC-32 / 32U protocol. 201 201 202 - __4.====== Speed======(**S**)__204 +====== __4. Speed (**S**)__ ====== 203 203 204 204 Example: #5P1500S750<cr> 205 205 ... ... @@ -561,12 +561,12 @@ 561 561 |ex: *5Q2<cr>|Free moving|Motor driving circuit is not powered and horn can be moved freely 562 562 |ex: *5Q3<cr>|Accelerating|Increasing speed from rest (or previous speeD) towards travel speed 563 563 |ex: *5Q4<cr>|Traveling|Moving at a stable speed 564 -|ex: *5Q5<cr>|Dec celerating|Decreasingspeed towardstravel speed towardsrest566 +|ex: *5Q5<cr>|Decelerating|Decreasing from travel speed towards final position. 565 565 |ex: *5Q6<cr>|Holding|Keeping current position 566 566 |ex: *5Q7<cr>|Stepping|Special low speed mode to maintain torque 567 -|ex: *5Q8<cr>|Outside limits|More details coming soon 569 +|ex: *5Q8<cr>|Outside limits|{More details coming soon} 568 568 |ex: *5Q9<cr>|Stuck|Motor cannot perform request movement at current speed setting 569 -|ex: *5Q10<cr>|Blocked|Similar to stuck, but the motor is at maxi umum duty and still cannot move (i.e.: stalled)571 +|ex: *5Q10<cr>|Blocked|Similar to stuck, but the motor is at maximum duty and still cannot move (i.e.: stalled) 570 570 571 571 ====== __27. Query Voltage (**QV**)__ ====== 572 572