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 (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -xwiki:XWiki. RB11 +xwiki:XWiki.CBenson - Content
-
... ... @@ -13,9 +13,7 @@ 13 13 14 14 A "session" is defined as the time between when the servo is powered ON to when it is powered OFF or reset. 15 15 16 -Note #1: For a given session, the action related to a specific commands overrides the stored value in EEPROM. 17 -Note #2: During the power-on / reset process the LSS cannot accept commands for a small amount of time (1.25 s). 18 -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. 16 +Note that for a given session, the action related to a specific commands overrides the stored value in EEPROM. 19 19 20 20 == Action Commands == 21 21 ... ... @@ -132,55 +132,55 @@ 132 132 133 133 == Regular == 134 134 135 -|= #|=Description|= Mod|=Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value136 -| 1|[[**L**imp>>||anchor="H1.Limp28L29"]]| |L| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)137 -| 2|[[**H**alt & **H**old>>||anchor="H2.Halt26Hold28H29"]]| |H| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)138 -| 3|[[**T**imed move>>||anchor="H3.Timedmove28T29modifier"]]| T|| | | | | ✓|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" %)139 -| 4|[[**S**peed>>||anchor="H4.Speed28S29modifier"]]| S||QS| | | | ✓|microseconds per second|(% style="width:510px" %) Modifier only {P}|(% style="text-align:center; width:113px" %)140 -| 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" %)141 -| 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" %)(((133 +|= #|=Description|= Action|= Query|= Config|=Session|= RC|= Serial|= Units|=(% style="width: 510px;" %) Notes|=(% style="width: 113px;" %)Default Value 134 +| 1|[[**L**imp>>||anchor="H1.Limp28L29"]]| L| | | | | ✓|none|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 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" %) 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 +| 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" %)((( 142 142 0 143 143 ))) 144 -| 7|[[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]| |AR| QAR| CAR|✓| ✓| ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)(((142 +| 7|[[**A**ngular **R**ange>>||anchor="H7.AngularRange28AR29"]]| AR| QAR| CAR|✓| ✓| ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 145 145 1800 146 146 ))) 147 -| 8|[[Position in **P**ulse>>||anchor="H8.PositioninPulse28P29"]]| |P| QP| | | | ✓|microseconds|(% style="width:510px" %)(((145 +| 8|[[Position in **P**ulse>>||anchor="H8.PositioninPulse28P29"]]| P| QP| | | | ✓|microseconds|(% style="width:510px" %)((( 148 148 Inherited from SSC-32 serial protocol 149 149 )))|(% style="text-align:center; width:113px" %) 150 -| 9|[[Position in **D**egrees>>||anchor="H9.PositioninDegrees28D29"]]| |D| QD / QDT| | | | ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)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)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %)152 -| 11|[[**W**heel mode in **R**PM>>||anchor="H11.WheelModeinRPM28WR29"]]| |WR| QWR| | | | ✓|revolutions per minute (rpm)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %)153 -| 12|[[Max **S**peed in **D**egrees>>||anchor="H12.MaxSpeedinDegrees28SD29"]]| |SD| QSD|CSD|✓| ✓| ✓|degrees per second (°/s)|(% style="width:510px" %)(((148 +| 9|[[Position in **D**egrees>>||anchor="H9.PositioninDegrees28D29"]]| D| QD / QDT| | | | ✓|tenths of degrees |(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 149 +| 10|[[**W**heel mode in **D**egrees>>||anchor="H10.WheelModeinDegrees28WD29"]]| WD| QWD| | | | ✓|tenths of degrees per second (ex 248 = 24.8 degrees per second)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %) 150 +| 11|[[**W**heel mode in **R**PM>>||anchor="H11.WheelModeinRPM28WR29"]]| WR| QWR| | | | ✓|revolutions per minute (rpm)|(% style="width:510px" %)A.K.A. "Speed mode" or "Continuous rotation"|(% style="text-align:center; width:113px" %) 151 +| 12|[[Max **S**peed in **D**egrees>>||anchor="H12.MaxSpeedinDegrees28SD29"]]| SD| QSD|CSD|✓| ✓| ✓|degrees per second (°/s)|(% style="width:510px" %)((( 154 154 QSD: Add modifier "2" for instantaneous speed. 155 155 156 156 SD overwrites SR / CSD overwrites CSR and vice-versa. 157 157 )))|(% style="text-align:center; width:113px" %)Max per servo 158 -| 13|[[Max **S**peed in **R**PM>>||anchor="H13.MaxSpeedinRPM28SR29"]]| |SR| QSR|CSR|✓| ✓| ✓|revolutions per minute (rpm)|(% style="width:510px" %)(((156 +| 13|[[Max **S**peed in **R**PM>>||anchor="H13.MaxSpeedinRPM28SR29"]]| SR| QSR|CSR|✓| ✓| ✓|revolutions per minute (rpm)|(% style="width:510px" %)((( 159 159 QSR: Add modifier "2" for instantaneous speed 160 160 161 161 SR overwrites SD / CSR overwrites CSD and vice-versa. 162 162 )))|(% style="text-align:center; width:113px" %)Max per servo 163 -| 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)164 -| 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" %)1165 -| 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" %)0166 -| 17|[[**B**aud rate>>||anchor="H17.BaudRate"]]| | |QB| CB| | | ✓|none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)115200167 -| 18|//{coming soon}//| | | | | | | | |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)(((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) 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 +| 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 +| 17|[[**B**aud rate>>||anchor="H17.BaudRate"]]| | QB| CB| | | ✓|none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)115200 165 +| 18|//{coming soon}//| | | | | | | |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)((( 168 168 169 169 ))) 170 -| 19|[[**F**irst Position (**D**eg)>>||anchor="H19.FirstA0Position28Degrees29"]]| | |QFD|CFD|X| ✓| ✓|none |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)No Value171 -| 20|[[**M**odel **S**tring>>||anchor="H20.QueryModelString28QMS29"]]| | |QMS| | | | |none (string)|(% style="width:510px" %) Returns the type of servo (ex: LSS-ST1,LSS-HS1,LSS-HT1)|(% style="text-align:center; width:113px" %)172 -| 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" %)173 -| 22|[[**F**irmware version>>||anchor="H22.QueryFirmware28QF29"]]| | |QF| | | | |none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)174 -| 23|[[**Q**uery (gen. status)>>||anchor="H23.QueryStatus28Q29"]]| | |Q| | | | ✓|none (integer from 1 to 8)|(% style="width:510px" %) See command description for details|(% style="text-align:center; width:113px" %)175 -| 24|[[**V**oltage>>||anchor="H24.QueryVoltage28QV29"]]| | |QV| | | | ✓|millivolts (ex 5936 = 5936mV = 5.936V)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)176 -| 25|[[**T**emperature>>||anchor="H25.QueryTemperature28QT29"]]| | |QT| | | | ✓|tenths of degrees Celsius|(% style="width:510px" %)Max temp before error: 85°C (servo goes limp)|(% style="text-align:center; width:113px" %)177 -| 26|[[**C**urrent>>||anchor="H26.QueryCurrent28QC29"]]| | |QC| | | | ✓|milliamps (ex 200 = 0.2A)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %)178 -| 27|[[**C**hange to** RC**>>||anchor="H27.ConfigureRCMode28CRC29"]]| | | |CRC|✓| | ✓|none|(% style="width:510px" %)(((168 +| 19|[[**F**irst Position (**D**eg)>>||anchor="H19.FirstA0Position28Degrees29"]]| | QFD|CFD|X| ✓| ✓|none |(% style="width:510px" %) |(% style="text-align:center; width:113px" %)No Value 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 +| 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 +| 22|[[**F**irmware version>>||anchor="H22.QueryFirmware28QF29"]]| | QF| | | | |none (integer)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 172 +| 23|[[**Q**uery (gen. status)>>||anchor="H23.QueryStatus28Q29"]]| | Q| | | | ✓|none (integer from 1 to 8)|(% style="width:510px" %) See command description for details|(% style="text-align:center; width:113px" %) 173 +| 24|[[**V**oltage>>||anchor="H24.QueryVoltage28QV29"]]| | QV| | | | ✓|millivolts (ex 5936 = 5936mV = 5.936V)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 174 +| 25|[[**T**emperature>>||anchor="H25.QueryTemperature28QT29"]]| | QT| | | | ✓|tenths of degrees Celsius|(% style="width:510px" %)Max temp before error: 85°C (servo goes limp)|(% style="text-align:center; width:113px" %) 175 +| 26|[[**C**urrent>>||anchor="H26.QueryCurrent28QC29"]]| | QC| | | | ✓|milliamps (ex 200 = 0.2A)|(% style="width:510px" %) |(% style="text-align:center; width:113px" %) 176 +| 27|[[**C**hange to** RC**>>||anchor="H27.ConfigureRCMode28CRC29"]]| | |CRC|✓| | ✓|none|(% style="width:510px" %)((( 179 179 Change to RC mode 1 (position) or 2 (wheel). 180 180 )))|(% style="text-align:center; width:113px" %)Serial 181 -| 28|[[**RESET**>>||anchor="H28.RESET"]]| | | | | | |✓|none|(% style="width:510px" %)Soft reset. See command for details.|(% style="text-align:center; width:113px" %)182 -| 29|[[**DEFAULT**>>||anchor="H29.DEFAULTA026CONFIRM"]]| | | | | | |✓|none|(% style="width:510px" %)Revert to firmware default values. See command for details|(% style="text-align:center; width:113px" %)183 -| 30|[[**UPDATE**>>||anchor="H30.UPDATEA026CONFIRM"]]| | | | | | |✓|none|(% style="width:510px" %)Update firmware. See command for details.|(% style="text-align:center; width:113px" %)179 +| 28|[[**RESET**>>||anchor="H28.RESET"]]| | | | | | ✓|none|(% style="width:510px" %)Soft reset. See command for details.|(% style="text-align:center; width:113px" %) 180 +| 29|[[**DEFAULT**>>||anchor="H29.DEFAULTA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Revert to firmware default values. See command for details|(% style="text-align:center; width:113px" %) 181 +| 30|[[**UPDATE**>>||anchor="H30.UPDATEA026CONFIRM"]]| | | | | |✓|none|(% style="width:510px" %)Update firmware. See command for details.|(% style="text-align:center; width:113px" %) 184 184 185 185 == Advanced == 186 186 ... ... @@ -195,8 +195,8 @@ 195 195 196 196 Blink while: 1=Limp; 2=Holding; 4=Accel; 8=Decel; 16=Free 32=Travel; 197 197 ))) 198 -| A7|(% style="width:182px" %) [[**C**urrent**H**alt &**H**old>>||anchor="HA7.CurrentHalt26Hold28CH29"]]|(% style="width:56px" %)CH|(% style="width:70px" %) |(% style="width:71px" %) |(% style="width:77px" %) |(% style="width:77px" %)✓|(% style="width:56px" %) |(% style="width:151px" %)✓|milliamps(ex 400 = 0.4A)|(% style="width:510px" %)Modifierfor D, MD, WD, WR199 -| A8|(% style="width:182px" %) [[**C**urrent**L**imp>>||anchor="HA8.CurrentLimp28CL29"]]|(% style="width:56px" %)CL|(% style="width:70px" %) |(% style="width:71px" %) |(% style="width:77px" %) |(% style="width:77px" %)✓|(% style="width:56px" %) |(% style="width:151px" %)✓|milliamps(ex 400 = 0.4A)|(% style="width:510px" %)Modifierfor D, MD, WD, WR196 +| 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" %) 200 200 201 201 == Details - Basic == 202 202 ... ... @@ -450,11 +450,11 @@ 450 450 451 451 ====== __17. Baud Rate__ ====== 452 452 453 -A servo's baud rate cannot be set "on the fly" and must be configured via the CB command described below. The factory default baud rate for all servos is 115200. Since smart servos are intended to be daisy chained, in order to respond to the same serial bus, all servos in a project should ideally be set to the same baud rate. Setting different baud rates will have the servos respond differently and may create issues. Available baud rates are: 9600 bps, 19200 bps, 38400 bps, 57600 bps, 115.2 kbps, 230.4 kbps, 250.0 kbps, 460.8 kbps, 500.0 kbps. Servos are shipped with a baud rate set to 115200. The baud rates are currently restricted to those above.451 +A servo's baud rate cannot be set "on the fly" and must be configured via the CB command described below. The factory default baud rate for all servos is 115200. Since smart servos are intended to be daisy chained, in order to respond to the same serial bus, all servos in a project should ideally be set to the same baud rate. Setting different baud rates will have the servos respond differently and may create issues. Available baud rates are: 9600 bps, 19200 bps, 38400 bps, 57600 bps, 115.2 kbps, 230.4 kbps, 250.0 kbps, 460.8 kbps, 500.0 kbps. Servos are shipped with a baud rate set to 9600. The baud rates are currently restricted to those above. 454 454 455 455 Query Baud Rate (**QB**) 456 456 457 -Ex: #5QB<cr> might return *5QB 115200<cr>455 +Ex: #5QB<cr> might return *5QB9600<cr> 458 458 459 459 Since the command to query the baud rate must be done at the servo's existing baud rate, it can simply be used to confirm the CB configuration command was correctly received before the servo is power cycled and the new baud rate takes effect. 460 460 ... ... @@ -574,7 +574,6 @@ 574 574 Ex: #5RESET<cr> or #5RS<cr> 575 575 576 576 This command does a "soft reset" (no power cycle required) and reverts all commands to those stored in EEPROM (i.e. configuration commands). 577 -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. 578 578 579 579 ====== __29. **DEFAULT** & CONFIRM__ ====== 580 580 ... ... @@ -712,22 +712,6 @@ 712 712 713 713 RESETTING the servo is needed. 714 714 715 -====== __A7. Current Halt & Hold (**CH**)__ ====== 716 - 717 -This modifier, released in firmware v367, can be added to the following actions: D; MD; WD; WR. 718 - 719 -Ex: #5D1423CH400<cr> 720 - 721 -This has servo with ID 5 move to 142.3 degrees but, should it detect a current of 400mA or higher before it reaches the desired position, will immediately halt and hold position. 722 - 723 -====== __A8. Current Limp (**CL**)__ ====== 724 - 725 -This modifier, released in firmware v367, can be added to the following actions: D; MD; WD; WR. 726 - 727 -Ex: #5D1423CH400<cr> 728 - 729 -This has servo with ID 5 move to 142.3 degrees but, should it detect a current of 400mA or higher before it reaches the desired position, will immediately go limp. 730 - 731 731 = RGB LED Patterns = 732 732 733 733 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]]