Last modified by Eric Nantel on 2024/09/06 14:52

From version < 60.1 >
edited by Coleman Benson
on 2023/07/27 14:47
To version < 75.1 >
edited by Eric Nantel
on 2024/07/22 11:15
< >
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -LSS-P - Communication Protocol
1 +LSS-PRO Communication Protocol
Parent
... ... @@ -1,1 +1,1 @@
1 -lynxmotion-smart-servo-pro.WebHome
1 +ses-pro.lss-pro.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.CBenson
1 +xwiki:XWiki.ENantel
Hidden
... ... @@ -1,1 +1,1 @@
1 -true
1 +false
Content
... ... @@ -1,7 +5,3 @@
1 -{{warningBox warningText="More information coming soon"/}}
2 -
3 -
4 -
5 5  (% class="wikigeneratedid" id="HTableofContents" %)
6 6  **Page Contents**
7 7  
... ... @@ -95,7 +95,7 @@
95 95  
96 96  The ability to store a "virtual angular position" is a feature which allows for rotation beyond 360 degrees, permitting multiple rotations of the output horn, moving the center position and more. The "absolute position" would be the angle of the output shaft with respect to a 360.00 degree circle and can be obtained by taking the modulus (with respect to 360 degrees) of the value. For example if the virtual position is reported as 153350 (or 1533.50 degrees), taking the modulus would give 93.5 degrees (36000 * 4 + 9350 = 153350) as the absolute position (assuming no origin offset).
97 97  
98 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-positions.jpg||alt="LSS-servo-positions.jpg"]]
94 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-positions.jpg||alt="LSS-servo-positions.jpg"]]
99 99  
100 100  In this example, the gyre direction (explained below, a.k.a. "rotation direction") is positive (clockwise), and origin offset has not been modified. Each square represents 30 degrees. The following command is sent:
101 101  
... ... @@ -235,9 +235,11 @@
235 235  )))
236 236  
237 237  |(% colspan="2" %)(((
238 -====== (% style="color:inherit; font-family:inherit" %)__ID Number (**ID**)__(%%) ======
234 +====== (% style="color:inherit; font-family:inherit" %)__ID Number__(%%) ======
239 239  )))
240 240  |(% style="width:30px" %) |(((
237 +This assigns ID #5 to the servo previously assigned to ID 0
238 +
241 241  (% style="color:inherit; font-family:inherit" %)Configure ID Number (**CID**)
242 242  
243 243  (% style="color:inherit; font-family:inherit" %)Ex: #0CID5<cr>
... ... @@ -252,7 +252,7 @@
252 252  )))
253 253  
254 254  |(% colspan="2" %)(((
255 -====== (% style="color:inherit; font-family:inherit" %)__Enable CAN Terminal Resistor (**ET**)__(%%) ======
253 +====== (% style="color:inherit; font-family:inherit" %)__Enable CAN Terminal Resistor__(%%) ======
256 256  )))
257 257  |(% style="width:30px" %) |(((
258 258  Query Enable CAN Terminal Resistor (**QET**)
... ... @@ -269,7 +269,7 @@
269 269  )))
270 270  
271 271  |(% colspan="2" %)(((
272 -====== __USB Connection Status (**UC**)__ ======
270 +====== __USB Connection Status__ ======
273 273  )))
274 274  |(% style="width:30px" %) |(((
275 275  Query USB Connection Status (**QUC**)
... ... @@ -278,7 +278,7 @@
278 278  )))
279 279  
280 280  |(% colspan="2" %)(((
281 -====== __Firmware Release (**FR**)__ ======
279 +====== __Firmware Release__ ======
282 282  )))
283 283  |(% style="width:30px" %) |(((
284 284  Query Firmware Release (**QFR**)
... ... @@ -290,7 +290,11 @@
290 290  
291 291  == Motion ==
292 292  
293 -====== __Position in Degrees (**D**)__ ======
291 +|(% colspan="2" %)(((
292 +====== __Position in Degrees__ ======
293 +)))
294 +|(% style="width:30px" %) |(((
295 +Position in Degrees (**D**)
294 294  
295 295  Example: #5D1456<cr>
296 296  
... ... @@ -309,15 +309,24 @@
309 309  Ex: #5QDT<cr> might return *5QDT6783<cr>
310 310  
311 311  The query target position command returns the target virtual position during and after an action which results in a rotation of the servo horn. In the example above, the servo is rotating to a virtual position of 678.3 degrees. Should the servo not have a target position or be in wheel mode, it will respond with the last target position used.
314 +)))
312 312  
313 -====== __(Relative) Move in Degrees (**MD**)__ ======
316 +|(% colspan="2" %)(((
317 +====== __(Relative) Move in Degrees__ ======
318 +)))
319 +|(% style="width:30px" %) |(((
320 +Move in Degrees (**MD**)
314 314  
315 -
316 316  Example: #5MD123<cr>
317 317  
318 318  The relative move command causes the servo to read its current position and move the specified number of tenths of degrees in the corresponding position. For example if the servo is set to rotate CW (default) and an MD command of 123 is sent to the servo, it will cause the servo to rotate clockwise by 12.3 degrees. Negative commands would cause the servo to rotate in the opposite configured direction.
325 +)))
319 319  
320 -====== __Wheel Mode in Degrees (**WD**)__ ======
327 +|(% colspan="2" %)(((
328 +====== __Wheel Mode in Degrees__ ======
329 +)))
330 +|(% style="width:30px" %) |(((
331 +Wheel mode in Degrees (**WD**)
321 321  
322 322  Ex: #5WD90<cr>
323 323  
... ... @@ -328,8 +328,13 @@
328 328  Ex: #5QWD<cr> might return *5QWD90<cr>
329 329  
330 330  The servo replies with the angular speed in degrees per second. A negative sign would indicate the opposite direction (for factory default a negative value would be counter clockwise).
342 +)))
331 331  
332 -====== __Wheel Mode in RPM (**WR**)__ ======
344 +|(% colspan="2" %)(((
345 +====== __Wheel Mode in RPM__ ======
346 +)))
347 +|(% style="width:30px" %) |(((
348 +Wheel moed in RPM (**WR**)
333 333  
334 334  Ex: #5WR40<cr>
335 335  
... ... @@ -340,8 +340,14 @@
340 340  Ex: #5QWR<cr> might return *5QWR40<cr>
341 341  
342 342  The servo replies with the angular speed in rpm. A negative sign would indicate the opposite direction (for factory default a negative value would be counter clockwise).
359 +)))
343 343  
344 -====== __(Relative) Move in Degrees (**MD**)__ ======
361 +|(% colspan="2" %)(((
362 +====== __(Relative) Move in Degrees__ ======
363 +)))
364 +|(% style="width:30px" %) |(((
365 +(% class="wikigeneratedid" %)
366 +Move in Degrees (**MD**)
345 345  
346 346  (% class="wikigeneratedid" id="HExample:235M15003Ccr3E" %)
347 347  Example: #5M1500<cr>
... ... @@ -348,8 +348,13 @@
348 348  
349 349  (% class="wikigeneratedid" id="HTherelativemoveinPWMcommandcausestheservotoreaditscurrentpositionandmovebythespecifiednumberofPWMsignal.ForexampleiftheservoissettorotateCW28default29andanMcommandof1500issenttotheservo2Citwillcausetheservotorotateclockwiseby90degrees.NegativePWMvaluewouldcausetheservotorotateintheoppositeconfigureddirection." %)
350 350  The relative move in PWM command causes the servo to read its current position and move by the specified number of PWM signal. For example if the servo is set to rotate CW (default) and an M command of 1500 is sent to the servo, it will cause the servo to rotate clockwise by 90 degrees. Negative PWM value would cause the servo to rotate in the opposite configured direction.
373 +)))
351 351  
352 -====== __Query Status (**Q**)__ ======
375 +|(% colspan="2" %)(((
376 +====== __Query Status__ ======
377 +)))
378 +|(% style="width:30px" %) |(((
379 +Query Status (**Q**)
353 353  
354 354  The status query describes what the servo is currently doing. The query returns an integer which must be looked up in the table below.
355 355  
... ... @@ -362,7 +362,7 @@
362 362  | |ex: *5Q3<cr>|3: Accelerating|Increasing speed from rest (or previous speed) towards travel speed
363 363  | |ex: *5Q4<cr>|4: Traveling|Moving at a stable speed
364 364  | |ex: *5Q5<cr>|5: Decelerating|Decreasing from travel speed towards final position.
365 -| |ex: *5Q6<cr>|6: Holding|Keeping current position (in EM0 mode, return will nornally be holding)
392 +| |ex: *5Q6<cr>|6: Holding|Keeping current position (in EM0 mode, return will normally be holding)
366 366  | |ex: *5Q7<cr>|7: Outside limits|{More details coming soon}
367 367  | |ex: *5Q8<cr>|8: Stuck|Motor cannot perform request movement at current speed setting
368 368  | |ex: *5Q9<cr>|9: Blocked|Similar to stuck, but the motor is at maximum duty and still cannot move (i.e.: stalled)
... ... @@ -379,18 +379,29 @@
379 379  | |ex: *5Q1<cr>|Current limit has been passed|Something cause the current to either spike, or remain too high for too long
380 380  | |ex: *5Q2<cr>|Input voltage detected is below or above acceptable range|Check the voltage of your batteries or power source
381 381  | |ex: *5Q3<cr>|Temperature limit has been reached|The servo is too hot to continue operating safely.
409 +)))
382 382  
383 -====== __Limp (**L**)__ ======
411 +|(% colspan="2" %)(((
412 +====== __Limp__ ======
413 +)))
414 +|(% style="width:30px" %) |(((
415 +Limp (**L**)
384 384  
385 385  Example: #5L<cr>
386 386  
387 387  This action causes the servo to go "limp". The microcontroller will still be powered, but the motor will not. As an emergency safety feature, should the robot not be doing what it is supposed to or risks damage, use the broadcast ID to set all servos limp #254L<cr>.
420 +)))
388 388  
389 -====== __Halt & Hold (**H**)__ ======
422 +|(% colspan="2" %)(((
423 +====== __Halt & Hold__ ======
424 +)))
425 +|(% style="width:30px" %) |(((
426 +Halt & Hold (**H**)
390 390  
391 391  Example: #5H<cr>
392 392  
393 393  This command causes the servo to stop immediately and hold that angular position. It overrides whatever the servo might be doing at the time the command is received (accelerating, travelling, deccelerating, etc.)
431 +)))
394 394  
395 395  == Motion Setup ==
396 396  
... ... @@ -398,12 +398,12 @@
398 398  
399 399  Example: #5O2400<cr>This command allows you to change the origin of the servo in relation to the factory zero position for that session. As with all action commands, the setting will be lost upon servo reset / power cycle. Origin offset commands are not cumulative and always relate to factory zero. In the first image, the origin at factory offset '0' (centered).
400 400  
401 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-default.jpg||alt="LSS-servo-default.jpg"]]
439 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-default.jpg||alt="LSS-servo-default.jpg"]]
402 402  
403 403  
404 404  In the second image, the origin, and the corresponding angular range (explained below) have been shifted by +240.0 degrees:
405 405  
406 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-origin.jpg||alt="LSS-servo-origin.jpg"]]
444 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-origin.jpg||alt="LSS-servo-origin.jpg"]]
407 407  
408 408  
409 409  Origin Offset Query (**QO**)
... ... @@ -424,16 +424,16 @@
424 424  
425 425  This command allows you to temporarily change the total angular range of the servo in tenths of degrees. This applies to the Position in Pulse (P) command and RC mode. The default for (P) and RC mode is 1800 (180.0 degrees total, or ±90.0 degrees). The image below shows a standard -180.0 to +180.0 range, with no offset:
426 426  
427 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-default.jpg||alt="LSS-servo-default.jpg"]]
465 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-default.jpg||alt="LSS-servo-default.jpg"]]
428 428  
429 429  Below, the angular range is restricted to 180.0 degrees, or -90.0 to +90.0. The center has remained unchanged.
430 430  
431 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-ar.jpg||alt="LSS-servo-ar.jpg"]]
469 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-ar.jpg||alt="LSS-servo-ar.jpg"]]
432 432  
433 433  
434 434  Finally, the angular range action command (ex. #5AR1800<cr>) and origin offset action command (ex. #5O-1200<cr>) are used to move both the center and limit the angular range:
435 435  
436 -[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/lynxmotion-smart-servo-pro/lss-p-communication-protocol/WebHome/LSS-servo-ar-o-1.jpg||alt="LSS-servo-ar-o-1.jpg"]]
474 +[[image:https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/lss-pro/lss-p-communication-protocol/WebHome/LSS-servo-ar-o-1.jpg||alt="LSS-servo-ar-o-1.jpg"]]
437 437  
438 438  
439 439  Query Angular Range (**QAR**)
Copyright RobotShop 2018