Changes for page LSS Communication Protocol
Last modified by Eric Nantel on 2025/06/06 07:47
Change comment: There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 1 removed)
Details
- Page properties
-
- Content
-
... ... @@ -3,7 +3,7 @@ 3 3 4 4 {{toc depth="3"/}} 5 5 6 -= Serial Protocol = 6 += Serial Protocol Concept = 7 7 8 8 The custom 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 compact and robust yet highly versatile. The protocol was based on Lynxmotion's SSC-32 RC servo controller and almost everything one might expect to be able to configure for a smart servo motor is available. 9 9 ... ... @@ -133,8 +133,8 @@ 133 133 |= #|=Description|= Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 134 134 | 1|[[**L**imp>>||anchor="H1.Limp28L29"]]| L| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 135 135 | 2|[[**H**alt & **H**old>>||anchor="H2.Halt26Hold28H29"]]| H| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 136 -| 3|[[**T**imed move>>||anchor="H3.Timedmove28T29modifier"]]| | | | | | ✓|milliseconds|(% style="width:510px" %) Modifier only for {P, D, MD} . Time is estimated and can change based on load|(% style="text-align:center; width:113px" %)137 -| 4|[[**S**peed>>||anchor="H4.Speed28S29modifier"]]| |QS| | | | ✓|microseconds per second|(% style="width:510px" %) Modifier only {P}|(% style="text-align:center; width:113px" %) 136 +| 3|[[**T**imed move>>||anchor="H3.Timedmove28T29modifier"]]| T| | | | | ✓|milliseconds|(% style="width:510px" %) Modifier only for {P, D, MD}|(% style="text-align:center; width:113px" %) 137 +| 4|[[**S**peed>>||anchor="H4.Speed28S29modifier"]]| S|QS| | | | ✓|microseconds per second|(% style="width:510px" %) Modifier only {P}|(% style="text-align:center; width:113px" %) 138 138 | 5|[[**M**ove in **D**egrees (relative)>>||anchor="H5.28Relative29MoveinDegrees28MD29"]]| MD| | | | | ✓|tenths of degrees (ex 325 = 32.5 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 139 139 | 6|[[**O**rigin Offset>>||anchor="H6.OriginOffsetAction28O29"]]| O| QO|CO|✓| ✓| ✓|tenths of degrees (ex 91 = 9.1 degrees)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 140 140 0 ... ... @@ -158,7 +158,7 @@ 158 158 159 159 SR overwrites SD / CSR overwrites CSD and vice-versa. 160 160 )))|(% style="text-align:center; width:113px" %)Max per servo 161 -| 14|[[**LED** Color>>||anchor="H14.LEDColor28LED29"]]| LED| QLED| CLED|✓| ✓| ✓|none (integer from 0 to 8)|(% style="width:510px" %)0=Off (black); 1=Red 2=Green; 3=Blue; 4=Yellow; 5=Cyan; 6=Magenta; 7=White;|(% style="text-align:center; width:113px" %) 0 (OFF)161 +| 14|[[**LED** Color>>||anchor="H14.LEDColor28LED29"]]| LED| QLED| CLED|✓| ✓| ✓|none (integer from 0 to 8)|(% style="width:510px" %)0=Off (black); 1=Red 2=Green; 3=Blue; 4=Yellow; 5=Cyan; 6=Magenta; 7=White;|(% style="text-align:center; width:113px" %)7 162 162 | 15|[[**G**yre direction (**G**)>>||anchor="H15.GyreRotationDirection28G29"]]| G| QG| CG|✓| ✓| ✓|none |(% style="width:510px" %)Gyre / rotation direction: 1= CW (clockwise) -1 = CCW (counter-clockwise)|(% style="text-align:center; width:113px" %)1 163 163 | 16|[[**ID** #>>||anchor="H16.IdentificationNumber28ID29"]]| | QID| CID| | | ✓|none (integer from 0 to 250)|(% style="width:510px" %)Note: ID 254 is a "broadcast" which all servos respond to. |(% style="text-align:center; width:113px" %)0 164 164 | 17|[[**B**aud rate>>||anchor="H17.BaudRate"]]| | QB| CB| | | ✓|none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)115200 ... ... @@ -165,7 +165,7 @@ 165 165 | 18|//{coming soon}//| | | | | | | |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 166 166 167 167 ))) 168 -| 19|[[**F**irst Position (**D**eg)>>||anchor="H19.First A0Position28Degrees29"]]| | QFD|CFD|X| ✓| ✓|none |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)No Value168 +| 19|[[**F**irst Position (**D**eg)>>||anchor="H19.FirstPosition28Degrees2928FD29"]]| | QFD|CFD|X| ✓| ✓|none |(% style="width:510px" %)CFD overwrites CFP and vice-versa|(% style="text-align:center; width:113px" %)Limp 169 169 | 20|[[**M**odel **S**tring>>||anchor="H20.QueryModelString28QMS29"]]| | QMS| | | | |none (string)|(% style="width:510px" %) Returns the type of servo (ST, HS, HT)|(% style="text-align:center; width:113px" %) 170 170 | 21|[[Serial **N**umber>>||anchor="H21.QuerySerialNumber28QN29"]]| | QN| | | | |none (integer)|(% style="width:510px" %) Returns the unique serial number for that servo|(% style="text-align:center; width:113px" %) 171 171 | 22|[[**F**irmware version>>||anchor="H22.QueryFirmware28QF29"]]| | QF| | | | |none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) ... ... @@ -182,21 +182,19 @@ 182 182 183 183 == Advanced == 184 184 185 -|= #|= (% style="width: 182px;" %)Description|=(%style="width: 56px;" %)Mod|=(% style="width: 70px;" %)Action|=(%style="width: 71px;" %)Query|=(%style="width: 77px;" %)Config|=(% style="width: 77px;" %)Session|=(%style="width: 56px;" %)RC|=(%style="width: 151px;" %)Serial|= Units|=(% style="width: 510px;" %) Notes186 -| A1| (% style="width:182px" %)[[**A**ngular **S**tiffness>>||anchor="HA1.AngularStiffness28AS29"]]|(% style="width:56px" %) |(% style="width:70px" %)AS|(% style="width:71px" %)QAS|(% style="width:77px" %)CAS|(% style="width:77px" %)✓|(%style="width:56px" %)✓|(%style="width:151px" %)✓|none (integer -4 to +4)|(% style="width:510px" %)Suggested values are between 0 to +4187 -| A2| (% style="width:182px" %)[[**A**ngular **H**olding Stiffness>>||anchor="HA2.AngularHoldingStiffness28AH29"]]|(% style="width:56px" %) |(% style="width:70px" %)AH|(% style="width:71px" %)QAH|(% style="width:77px" %)CAH|(% style="width:77px" %)✓|(%style="width:56px" %)|(%style="width:151px" %)✓|none (integer -10 to +10)|(% style="width:510px" %)Effect is different between serial and RC188 -| A3| (% style="width:182px" %)[[**A**ngular **A**cceleration>>||anchor="HA3:AngularAcceleration28AA29"]]|(% style="width:56px" %) |(% style="width:70px" %)AA|(% style="width:71px" %)QAA|(% style="width:77px" %)CAA|(% style="width:77px" %)✓|(%style="width:56px" %)|(%style="width:151px" %)✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared189 -| A4| (% style="width:182px" %)[[**A**ngular **D**eceleration>>||anchor="HA4:AngularDeceleration28AD29"]]|(% style="width:56px" %) |(% style="width:70px" %)AD|(% style="width:71px" %)QAD|(% style="width:77px" %)CAD|(% style="width:77px" %)✓|(%style="width:56px" %)|(%style="width:151px" %)✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared190 -| A5| (% style="width:182px" %)[[**E**nable **M**otion Control>>||anchor="HA5:MotionControl28EM29"]]|(% style="width:56px" %) |(% style="width:70px" %)EM|(% style="width:71px" %)QEM|(%style="width:77px" %)|(%style="width:77px" %)|(%style="width:56px" %)|(%style="width:151px" %)✓|none|(% style="width:510px" %)EM0 to disable motion control, EM1 to enable191 -| A6| (% style="width:182px" %)[[**C**onfigure **L**ED **B**linking>>||anchor="HA6.ConfigureLEDBlinking28CLB29"]]|(%style="width:56px" %)|(% style="width:70px" %) |(% style="width:71px" %)QLB|(%style="width:77px" %)CLB|(%style="width:77px" %)|(%style="width:56px" %)✓|(%style="width:151px" %)✓|none (integer from 0 to 63)|(% style="width:510px" %)(((185 +|= #|=Description|= Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes 186 +| A1|[[**A**ngular **S**tiffness>>||anchor="HA1.AngularStiffness28AS29"]]|AS|QAS|CAS|✓| ✓| ✓|none (integer -4 to +4)|(% style="width:510px" %)Suggested values are between 0 to +4 187 +| A2|[[**A**ngular **H**olding Stiffness>>||anchor="HA2.AngularHoldingStiffness28AH29"]]|AH|QAH|CAH|✓| | ✓|none (integer -10 to +10)|(% style="width:510px" %)Effect is different between serial and RC 188 +| A3|[[**A**ngular **A**cceleration>>||anchor="HA3:AngularAcceleration28AA29"]]|AA|QAA|CAA|✓| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared 189 +| A4|[[**A**ngular **D**eceleration>>||anchor="HA4:AngularDeceleration28AD29"]]|AD|QAD|CAD|✓| | ✓|degrees per second squared|(% style="width:510px" %)Increments of 10 degrees per second squared 190 +| A5|[[**E**nable **M**otion Control>>||anchor="HA5:MotionControl28EM29"]]|EM|QEM| | | | ✓|none|(% style="width:510px" %)EM0 to disable motion control, EM1 to enable 191 +| A6|[[**C**onfigure **L**ED **B**linking>>||anchor="HA6.ConfigureLEDBlinking28CLB29"]]| |QLB| CLB| | ✓| ✓|none (integer from 0 to 63)|(% style="width:510px" %)((( 192 192 0=No blinking, 63=Always blink; 193 193 194 194 Blink while: 1=Limp; 2=Holding; 4=Accel; 8=Decel; 16=Free 32=Travel; 195 195 ))) 196 -| A7|(% style="width:182px" %)Current Halt & Hold|(% style="width:56px" %) |(% style="width:70px" %) |(% style="width:71px" %) |(% style="width:77px" %) |(% style="width:77px" %) |(% style="width:56px" %) |(% style="width:151px" %) | |(% style="width:510px" %) 197 -| A8|(% style="width:182px" %)Current Limp|(% style="width:56px" %) |(% style="width:70px" %) |(% style="width:71px" %) |(% style="width:77px" %) |(% style="width:77px" %) |(% style="width:56px" %) |(% style="width:151px" %) | |(% style="width:510px" %) 198 198 199 -== Details - Basic==197 +== Details == 200 200 201 201 ====== __1. Limp (**L**)__ ====== 202 202 ... ... @@ -468,21 +468,21 @@ 468 468 469 469 Command coming soon.... 470 470 471 -====== __19. First Position (Degrees)__ ====== 469 +====== __19. First Position (Degrees) (**FD**)__ ====== 472 472 473 -In certain cases, a user might want to have the servo move to a specific angle upon power up; we refer to this as "first position" (a.k.a. "initial position"). The factory default has no first position value stored in EEPROM and therefore upon power up, the servo remains limp until a position (or hold command) is assigned. Notethatthenumbershouldbestrictedto-1790 (-179.0 degrees)to+1790 (179.0degrees)and valuesbeyondthiswill bechanged to1800.471 +In certain cases, a user might want to have the servo move to a specific angle upon power up; we refer to this as "first position" (a.k.a. "initial position"). The factory default has no first position value stored in EEPROM and therefore upon power up, the servo remains limp until a position (or hold command) is assigned. FP and FD are different in that FP is used for RC mode only, whereas FD is used for smart mode only. 474 474 475 475 Query First Position in Degrees (**QFD**) 476 476 477 477 Ex: #5QFD<cr> might return *5QFD64<cr> 478 478 479 -The reply above indicates that servo with ID 5 has a first position pulse of 1550 microseconds. If there is no first position value stored, the reply will be DIS477 +The reply above indicates that servo with ID 5 has a first position pulse of 1550 microseconds. 480 480 481 481 Configure First Position in Degrees (**CFD**) 482 482 483 483 Ex: #5CD64<cr> 484 484 485 -This configuration command means the servo, when set to smart mode, will immediately move to 6.4 degrees upon power up. Sending a CFD command without a number (Ex. #5CFD<cr>) results in the servo remaining limp upon power up. In order to remove the first position, send no value, ex: #5CFD<cr>483 +This configuration command means the servo, when set to smart mode, will immediately move to 6.4 degrees upon power up. Sending a CFD command without a number (Ex. #5CFD<cr>) results in the servo remaining limp upon power up. 486 486 487 487 ====== __20. Query Model String (**QMS**)__ ====== 488 488 ... ... @@ -597,7 +597,7 @@ 597 597 598 598 Note that after the CONFIRM command is sent, the servo will automatically perform a RESET. 599 599 600 -= =Details -Advanced ==598 += Advanced = 601 601 602 602 The motion controller used in serial mode is not the same as the motion controller use in RC mode. RC mode is intended to add functionality to what would be considered "normal" RC behavior based on PWM input. 603 603 ... ... @@ -708,9 +708,3 @@ 708 708 Ex: #5CLB63<cr> blink in all status (1 + 2 + 4 + 8 + 16 + 32) 709 709 710 710 RESETTING the servo is needed. 711 - 712 -= RGB LED Patterns = 713 - 714 -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]] 715 - 716 -[[image:LSS - LED Patterns.png]]
- LSS - LED Patterns.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -xwiki:XWiki.RB1 - Size
-
... ... @@ -1,1 +1,0 @@ 1 -116.3 KB - Content