Changes for page LSS Communication Protocol
Last modified by Eric Nantel on 2025/06/06 07:47
Summary
-
Page properties (4 modified, 0 added, 0 removed)
Details
- Page properties
-
- Parent
-
... ... @@ -1,1 +1,1 @@ 1 - LynxmotionmartServo(LSS).WebHome1 +lynxmotion:LSS - Overview (DEV).WebHome - Hidden
-
... ... @@ -1,1 +1,1 @@ 1 - true1 +false - Tags
-
... ... @@ -1,1 +1,1 @@ 1 -LSS|communication|protocol|programming|firmware|control |LSS-Ref1 +LSS|communication|protocol|programming|firmware|control - Content
-
... ... @@ -1,9 +4,6 @@ 1 -(% class="wikigeneratedid" id="HTableofContents" %) 2 -**Table of Contents** 3 - 4 4 {{toc depth="3"/}} 5 5 6 -= Protocol Concepts =3 += Protocol concepts = 7 7 8 8 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. 9 9 ... ... @@ -30,7 +30,7 @@ 30 30 31 31 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). 32 32 33 -== Action Modifiers == 30 +=== Action Modifiers === 34 34 35 35 Two commands can be used as action modifiers only: Timed Move and Speed. The format is: 36 36 ... ... @@ -51,7 +51,7 @@ 51 51 52 52 == Configuration Commands == 53 53 54 -Configuration commands affect the servo's current session* but unlike action commands, configuration commands are written to EEPROM and are retained even if the servo loses power (therefore NOT session specific). Not all action commands have a corresponding configuration and vice versa. Certain configurations are retained for when the servo is used in RC model. More information can be found on the [[LSS - RC PWM page>>doc:L ynxmotionSmartServo(LSS).LSS - RC PWM.WebHome]].51 +Configuration commands affect the servo's current session* but unlike action commands, configuration commands are written to EEPROM and are retained even if the servo loses power (therefore NOT session specific). Not all action commands have a corresponding configuration and vice versa. Certain configurations are retained for when the servo is used in RC model. More information can be found on the [[LSS - RC PWM page>>doc:LSS - Overview (DEV).LSS - RC PWM.WebHome]]. 55 55 56 56 1. Start with a number sign # (U+0023) 57 57 1. Servo ID number as an integer ... ... @@ -109,7 +109,7 @@ 109 109 110 110 #5QSR1<cr> would return *5QSR20<cr> which represents the value in EEPROM 111 111 112 -== Virtual Angular Position == 109 +=== Virtual Angular Position === 113 113 114 114 {In progress} 115 115 ... ... @@ -137,50 +137,50 @@ 137 137 = Command List = 138 138 139 139 |= #|=Description|= Action|= Query|= Config|= RC|= Serial|= Units|= Notes 140 -| 1|[[**L**imp>>||anchor="H 1.Limp28L29"]]| L| | | | ✓|none|141 -| 2| [[**H**alt & Hold>>||anchor="H2.Halt26Hold28H29"]]|H| | | | ✓|none|142 -| 3| [[**T**imed move>>||anchor="H3.Timedmove28T29"]]|T| | | | ✓|milliseconds| Modifier only(P, D, MD)143 -| 4| [[**S**peed>>||anchor="H4.Speed28S29"]]|S| | | | ✓|microseconds / second| Modifier only(P)144 -| 5| [[**M**ove in **D**egrees (relative)>>||anchor="H5.28Relative29MoveinDegrees28MD29"]]|MD| | | | ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|145 -| 6| [[**O**rigin Offset>>||anchor="H6.OriginOffsetAction28O29"]]|O| QO| CO| ✓| ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|146 -| 7| [[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]|AR| QAR| CAR| ✓| ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|147 -| 8| [[Position in **P**ulse>>||anchor="H8.PositioninPulse28P29"]]|P| QP| | | ✓|microseconds|(((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|((( 148 148 See details below 149 149 ))) 150 -| 9| [[Position in **D**egrees>>||anchor="H9.PositioninDegrees28D29"]]|D| QD| | | ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|151 -| 10| [[**W**heel mode in **D**egrees>>||anchor="H10.WheelModeinDegrees28WD29"]]|WD| QWD| | | ✓|tenths of degrees per second (ex 248 = 24.8 degrees per second)|A.K.A."Speed mode" or "Continuous rotation"152 -| 11| [[**W**heel mode in **R**PM>>||anchor="H11.WheelModeinRPM28WR29"]]|WR| QWR| | | ✓| rpm|A.K.A."Speed mode" or "Continuous rotation"153 -| 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 speed154 -| 13| [[Max **S**peed in **R**PM>>||anchor="H13.SpeedinRPM28SR29"]]|SR| QSR| CSR| ✓| ✓|rpm|QSR: Add modifier "2" for instantaneous speed155 -| 14| [[**A**ngular **S**tiffness>>||anchor="H14.AngularStiffness28AS29"]]|AS| QAS| CAS| ✓| ✓|none|-4 to +4, but suggested values are between 0 to +4156 -| 15| [[**A**ngular **H**olding Stiffness>>||anchor="H15.AngularHoldStiffness28AH29"]]|AH|QAH|CAH| | ✓|none|-10 to +10, with default as 0.157 -|15b| [[**A**ngular **A**cceleration>>||anchor="H15b:AngularAcceleration28AA29"]]|AA|QAA|CAA| | ✓|degrees per second squared|Increments of 10 degrees per second squared158 -|15c| [[**A**ngular **D**eceleration>>||anchor="H15c:AngularDeceleration28AD29"]]|AD|QAD|CAD| | ✓|degrees per second squared|Increments of 10 degrees per second squared159 -|15d| [[**E**nable **M**otioncontrol>>||anchor="H15d:MotionControl28MC29"]]|EM|QEM| | | ✓|none|EM0 to disable motion control,EM1 to enable. Session specific/ does not survive power cycles160 -| 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=WHITE161 -| 17| [[**ID** #>>||anchor="H17.IdentificationNumber"]]|| QID| CID| | ✓|none (integer from 0 to 250)|Note: ID 254 is a "broadcast" which all servos respond to162 -| 18| [[**B**aud rate>>||anchor="H18.BaudRate"]]|B| QB| CB| | ✓|none (integer)|163 -| 19| [[**G**yre direction (**G**)>>||anchor="H19.GyreRotationDirection"]]|G| QG| CG| ✓| ✓|none | Gyre / rotation direction where 1= CW (clockwise) -1 = CCW (counter-clockwise)164 -| 20| [[**F**irst Position (**P**ulse)>>||anchor="H20.First2InitialPosition28pulse29"]]|| QFP|CFP | ✓| ✓|none |165 -| 21| [[**F**irst Position (**D**egrees)>>||anchor="H21.First2InitialPosition28Degrees29"]]|| QFD|CFD| ✓| ✓|none |166 -| 22| [[**T**arget (**D**egree) **P**osition>>||anchor="H22.QueryTargetPositioninDegrees28QDT29"]]|| QDT| | | ✓|tenths of degrees (ex 325 = 32.5 degrees; 91 = 9.1 degrees)|167 -| 23| [[**M**odel **S**tring>>||anchor="H23.QueryModelString28QMS29"]]|| QMS| | | |none (string)| Recommended to determine the model|168 -| 23b| [[**M**odel>>||anchor="H23b.QueryModel28QM29"]]|| QM| | | |none (integer)| Returns a raw value representing the three model inputs (36 bit)|169 -| 24| [[Serial **N**umber>>||anchor="H24.QuerySerialNumber28QN29"]]|| QN| | | |none (integer)|170 -| 25| [[**F**irmware version>>||anchor="H25.QueryFirmware28QF29"]]|| QF| | | |none (integer)|171 -| 26| [[**Q**uery (general status)>>||anchor="H26.QueryStatus28Q29"]]|| Q| | | ✓|none (integer from 1 to 8)| See command description for details172 -| 27| [[**V**oltage>>||anchor="H27.QueryVoltage28QV29"]]|| QV| | | ✓|millivolts (ex 5936 = 5936mV = 5.936V)|173 -| 28| [[**T**emperature>>||anchor="H28.QueryTemperature28QT29"]]|| QT| | | ✓|tenths of degrees Celsius|Max temp before error: 85°C (servo goes limp)174 -| 29| [[**C**urrent>>||anchor="H29.QueryCurrent28QC29"]]|| QC| | | ✓|milliamps (ex 200 = 0.2A)|175 -| 30| [[**RC** Mode>>||anchor="H30.RCMode28CRC29"]]|| |CRC| |✓|none|(((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 specific 157 +| 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|((( 176 176 CRC: Add modifier "1" for RC-position mode. 177 177 CRC: Add modifier "2" for RC-wheel mode. 178 178 Any other value for the modifier results in staying in smart mode. 179 179 Puts the servo into RC mode. To revert to smart mode, use the button menu. 180 180 ))) 181 -|31| [[**RESET**>>||anchor="H31.RESET"]]|| | | | ✓|none|Soft reset. See command for details.182 -|32| [[**DEFAULT**>>||anchor="H32.DEFAULTA026CONFIRM"]]|| | | |✓|none|Revert to firmware default values. See command for details183 -|33| [[**UPDATE**>>||anchor="H33.UPDATEA026CONFIRM"]]|| | | |✓|none|Update firmware. See command for details.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. 184 184 185 185 == Details == 186 186 ... ... @@ -202,10 +202,8 @@ 202 202 203 203 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. 204 204 205 - Note:Ifthe calculated speedatwhich a servo must rotate for a timed move is greater than its maximum speed(which depends on voltage and load), then it will move at its maximum speed, and the time of the move may be longer than requested.202 +====== __4. Speed ====== (**S**)__ 206 206 207 -====== __4. Speed (**S**)__ ====== 208 - 209 209 Example: #5P1500S750<cr> 210 210 211 211 This command is a modifier only for a position (P) action and determines the speed of the move in microseconds per second. A speed of 750 microseconds would cause the servo to rotate from its current position to the desired position at a speed of 750 microseconds per second. This command is in place to ensure backwards compatibility with the SSC-32 / 32U protocol. ... ... @@ -421,7 +421,7 @@ 421 421 422 422 {More details to come} 423 423 424 -====== __15d: Motion Control (** EM**)__ ======419 +====== __15d: Motion Control (**MC**)__ ====== 425 425 426 426 {More details to come} 427 427 ... ... @@ -566,12 +566,12 @@ 566 566 |ex: *5Q2<cr>|Free moving|Motor driving circuit is not powered and horn can be moved freely 567 567 |ex: *5Q3<cr>|Accelerating|Increasing speed from rest (or previous speeD) towards travel speed 568 568 |ex: *5Q4<cr>|Traveling|Moving at a stable speed 569 -|ex: *5Q5<cr>|Decelerating|Decreasing fromtravel speed towardsfinal position.564 +|ex: *5Q5<cr>|Deccelerating|Decreasing speed towards travel speed towards rest 570 570 |ex: *5Q6<cr>|Holding|Keeping current position 571 571 |ex: *5Q7<cr>|Stepping|Special low speed mode to maintain torque 572 -|ex: *5Q8<cr>|Outside limits| {More details coming soon}567 +|ex: *5Q8<cr>|Outside limits|More details coming soon 573 573 |ex: *5Q9<cr>|Stuck|Motor cannot perform request movement at current speed setting 574 -|ex: *5Q10<cr>|Blocked|Similar to stuck, but the motor is at maximum duty and still cannot move (i.e.: stalled) 569 +|ex: *5Q10<cr>|Blocked|Similar to stuck, but the motor is at maxiumum duty and still cannot move (i.e.: stalled) 575 575 576 576 ====== __27. Query Voltage (**QV**)__ ====== 577 577