Difference between revisions of "CanServo/Manual/Summary/en"

From HITEC_HELP
Jump to navigation Jump to search
(Created page with "==Under Construction== ==개요== CAN 서보는 CAN 통신을 통해 제어하는 서보 입니다. CAN 2.0A, 2.0B 을 지원하며, UAVCAN protocol 을 지원합니다. 이...")
 
 
(40 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Under Construction==
== Overview of this page ==
==개요==
CAN 서보는 CAN 통신을 통해 제어하는 서보 입니다. CAN 2.0A, 2.0B 을 지원하며, UAVCAN protocol 을 지원합니다.


이 문서는 CAN 서보 메뉴얼의 내용을 요약하고, 기능적인 관점에서 재배치 한 것입니다.
CAN servo is a servo controlled through CAN communication.
상세 내용은 CAN 서보 메뉴얼을 참조해 주십시오.


==FW Type==
It supports CAN 2.0A, 2.0B, DroneCAN protocol.
지원하는 Protocol 의 종류에 따라 나뉩니다.
*C Type = CAN 2.0A, 2.0B 지원
*U Type = UAVCAN 지원
*A Type = CAN 2.0A, 2.0B, UAVCAN 지원
==서보 간단 테스트==
C Type 혹은 A Type: CAN 서보의 공장 출하 기본 세팅은 CAN 2.0A, 1000kbps, Servo Mode 입니다.
테스트를 위해서 다음과 같은 패킷을 보냅니다.
* CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0xAA, 0x2A, DLC = 5 ---> +60도 위치로 이동
* CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0x00, 0x20, DLC = 5 ---> 0도 위치로 이동


==통신 설정==
This document summarizes the contents of the CAN Servo Manual and rearranges them from a functional point of view. For details, refer to the CAN servo manual.
*통신 설정은 Servo Reset 시점에 적용됩니다.
 
*CAN 통신을 처음 사용하는 경우에는 [[CAN/개요]] 를 참조해 주십시오.
==F/W Types==
===통신 속도===
It is divided according to the type of protocol supported.
사용할 통신 속도를 선택합니다. 단위는 kbps 입니다.
* C Type = support CAN 2.0A, 2.0B
* U Type = support DroneCAN
* A Type = support CAN 2.0A, 2.0B, DroneCAN
 
==Simple Test==
C Type or A Type: The factory default setting of CAN servo is CAN 2.0A, 1000kbps, Servo Mode.
 
For testing purposes, you can send the following packets:
* CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0xAA, 0x2A, DLC = 5 ---> Move to +60 degree position
* CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0x00, 0x20, DLC = 5 ---> Move to 0 degree position
 
==Communication settings==
*Communication settings are applied at the time of Servo Reset.
*If you are using CAN communication for the first time, please refer to [[CAN/Overview]].
 
===CAN baudrate===
Select the communication speed to use. The unit is kbps.
* Register Address: 0x38
* Register Address: 0x38
* 0 - 1000
* 0 - 1000
Line 33: Line 37:
* 8 - 125
* 8 - 125


===통신 Protocol===
===Select Protocol===
[[CanServo/MODE/CAN]] 을 통해, 통신에 사용할 Protocol 종류를 선택합니다.
Select the protocol type to be used for communication through [[CanServo/MODE/CAN/en]].


CAN 2.0A, 2.0B, UAVCAN 중에 선택합니다. Protocol 에 따라서는 FW Type 을 바꾸어야 할 수 있습니다.
Select from CAN 2.0A, 2.0B, or DroneCAN. Depending on the protocol, it may be necessary to change the FW Type.


CAN 2.0A,B 가 나뉘어 있는 것은, CAN ID 의 값도 일치해야 하지만, Type 도 확인하기 때문입니다. , CAN 2.0A CAN ID = 100 CAN 2.0B 인 CAN ID = 100 은 다르게 인식합니다.
The reason CAN 2.0A and B are divided is because the CAN ID value must also match, but the Type is also checked. That is, CAN ID = 100 with CAN 2.0A and CAN ID = 100 with CAN 2.0B are recognized differently.
* 자세한 내용은 [[CanServo/Packet Accept Rule]] 을 참조해 주십시오.
* For details, refer to [[CanServo/Packet Accept Rule/en]].


[[CanServo/MODE/CAN]] 상태에 따라 다음의 protocol 을 따릅니다.
According to the status of [[CanServo/MODE/CAN/en]], the following protocol is followed.
* CAN 2.0A, 2.0B: [[CanServo/Protocol/Control]]
* CAN 2.0A, 2.0B: [[CanServo/Protocol/Control/en]]
* UAVCAN: [[CanServo/Protocol/UAVCAN]]
* DroneCAN: [[CanServo/Protocol/UAVCAN/en]]


===서보의 ID 지정===
===Servo ID designation===
서보를 제어하려면 서보들을 구분해야 합니다.
To control servos, you need to distinguish between servos.
2가지 종류의 ID 로 서보 들을 구분합니다.
Servos are distinguished by two types of IDs.
*CAN 2.0A,2.0B protocol 사용시에는, CAN ID, Servo ID 로 구분합니다.
*When using CAN 2.0A, 2.0B protocol, it is divided into CAN ID and Servo ID.
*UAVCAN 사용시에는, Node ID, Actuator ID 로 구분합니다.
*When using DroneCAN, it is divided into Node ID and Actuator ID.
각 ID 설정:
*CAN ID, Node ID 는 Register [[CanServo/ID2]] 를 통해 설정합니다.
*Servo ID, Actuator ID 는 Register [[CanServo/ID1]] 을 통해 설정합니다.


==동작 모드==
Set each ID:
*CAN 서보는 1회전이내로 동작하는 Servo Mode 와 +/-32760 x 360 deg 동작이 가능한 Turn Mode 를 지원합니다.
*CAN ID and Node ID are set through Register [[CanServo/ID2/en]].
**주의: Turn Mode 선택시, 서보 Reset 시점의 위치가 0 deg, 0 Turn 위치가 됩니다.
*Servo ID and Actuator ID are set through Register [[CanServo/ID1/en]].
*2가지 중에 선택합니다.
*동작 모드는 서보 Reset 시점에 적용됩니다.
*Register [[CanServo/MODE/RUN]] 를 참조해 주십시오.


==서보의 제어 방식==
==Operation Mode==
*CAN 서보는 2 byte 크기의 Register 128개를 가지고 있습니다.
*CAN servo supports Servo Mode that operates within one rotation and Turn Mode that allows +/-32760 x 360 deg operation.
*이 값들에 따라 동작합니다.
**Note: When Turn Mode is selected, the position at the time of servo reset becomes 0 deg, 0 Turn position.
*예를 들어
*Choose from 2 options.
**Servo Mode 에서는, Register POSITION_NEW 에 8192 라는 값을 넣으면, 중앙 위치로 이동합니다.
*Operation mode is applied at the time of servo reset.
**Register [[CanServo/POSITION]] 값을 읽어보면, 서보의 현재 위치값을 알수 있습니다.
*Please refer to Register [[CanServo/MODE/RUN/en]].


*[[CanServo/Protocol/Control]]
==Servo control method==
*[[CanServo/Register]]
* CAN servo has 128 registers of 2 byte size.
*[[CanServo/Register/Write]]
* It operates according to these values.
*[[CanServo/Register/Read]]
* For example
** In Servo Mode, if you set a value of 8192 in Register POSITION_NEW, it moves to the center position.
** If you read the Register [[CanServo/POSITION/en]] value, you can know the current position of the servo.


==설정값 변경시 적용 시점==
*[[CanServo/Protocol/Control/en]]
*대부분의 사용자용 설정값은 변경 즉시 적용됩니다.
*[[CanServo/Register/en]]
*다음 예외 항목들은, Servo Reset 시점에 적용되므로, SAVE, RESET 절차를 수행해야 합니다.
*[[CanServo/Register/Write/en]]
**통신 설정 = 통신 속도, 통신 Protocol, ID2, ID1
*[[CanServo/Register/Read/en]]
**동작 모드 ( [[CanServo/MODE/RUN]] )
**Stream CAN ID 설정값 ( [[CanServo/Stream/CAN ID]] )


==설정값의 저장==
==Applied time when setting value is changed==
*제어값(POSITION_NEW, TURN_NEW 등), 각종 상태값, 예외인 일부 항목등을 제외한 대부분의 Register 는, SAVE 명령시 저장되어 Servo Reset 후에도 유지됩니다.
*Most user-use settings take effect immediately after change.
* !!! 주의 !!!
*But, the following items, as an exception, are applied at the time of Servo Reset, so SAVE and RESET procedures must be performed.
**SAVE 는 모터를 정지 시킨 상태에서 하는 것을 추천합니다.
**Communication settings: communication speed, communication protocol, ID2, ID1
**SAVE 를 너무 자주 해서는 안됩니다.
**Operation mode ( [[CanServo/MODE/RUN/en]] )
**특히 주기적으로 해서는 안됩니다.
**Stream CAN ID set value ( [[CanServo/Stream/CAN ID/en]] )
**가능한 여러가지 값을 변경 한 후 SAVE, Servo Reset 하는 것을 추천합니다.
**단, 통신 설정값, ID, RUN_MODE 등은, 다른 값들과 함께 변경하지 말고 별도로 변경, Reset 하는 것을 추천합니다.


==위치 좌표계==
==Storage of setting value==
*[[CanServo/POSITION]], POSITION_NEW: Resolution: 16384 = 360 deg
* Most of the registers are saved at the time of SAVE command and are maintained even after Servo Reset.
** Exceptions are:
*** Control values ​​(POSITION_NEW, TURN_NEW, etc.)
*** Various status values ​​(ex: POSITION)
*** Other exceptions
* !!! caution !!!
**It is recommended to do SAVE with the motor stopped.
**You should not SAVE too often.
**In particular, this should not be done periodically.
**After changing as many values ​​as possible, it is recommended to SAVE and Servo Reset.
**However, it is recommended to change or reset the communication setting value, ID, RUN_MODE, etc., not together with other values.
 
==Location coordinate system==
*[[CanServo/POSITION/en]], POSITION_NEW: Resolution: 16384 = 360 deg
===Servo Mode===
===Servo Mode===
*1회전 이내에서 동작하는 모드 입니다.
* This mode operates within 1 rotation.


* Register POSITION_NEW 에 원하는 위치를 넣습니다.
* Set the desired position in Register POSITION_NEW.
** Range: 0 ~ 16383
** Range: 0 ~ 16383
** Center: 8192
** Center: 8192
* POSITION_MIN, POSITION_MAX 로 동작 범위를 제한 할 수 있습니다.
* You can limit the range of motion with POSITION_MIN, POSITION_MAX.


===Turn Mode===
===Turn Mode===
*다회전 위치 제어 모드 입니다.
*Multi-rotation position control mode.


*[[CanServo/TURN_NEW]] 에 회전수를 넣고, [[CanServo/POSITION_NEW]] 에 360도 이내 각도를 넣으면 동작합니다.
* It works if you set the number of rotations in [[CanServo/TURN_NEW/en]] and set the angle within 360 degrees in [[CanServo/POSITION_NEW/en]].
*두 값은 int16_t ( 16 bits signed integer ) 방식을 따르므로, 음수 지정이 가능합니다.
*Both values ​​follow the int16_t ( 16 bits signed integer ) method, so negative numbers can be specified.


* !!! 주의 !!!
* !!! caution !!!
**서보 Reset 될 때, 위치값이 0 으로 초기화 됩니다.
**When the servo is reset, the position value is initialized to 0.
**서보 Reset 직후, TURN_NEW = 0, POSITION_NEW = 0 을 전송하면 움직이지 않고 그대로 있습니다.
** Immediately after Servo Reset, if TURN_NEW = 0, POSITION_NEW = 0 is transmitted, it remains motionless.
*** 2개의 Register 를 동시에 전송할수 있는 'W' Write 메시지를 사용하는 것을 권장합니다.
*** It is recommended to use the 'W' Write message that can transmit two registers at the same time.
*** 따로 전송하면, 두 전송중 하나라도 에러가 발생하면 원치 않는 동작을 하게 됩니다.
*** When transmitting separately, an error occurs in either of the two transmissions, resulting in undesirable behavior.


===UAVCAN UNITLESS 좌표계===
===DroneCAN UNITLESS Coordinate System===
*UAVCAN Actuator.ArrayCommand 메시지에서 목표 위치를 지정할때 UNITLESS 모드를 사용하면 -1.0000 부터 +1.0000 까지 정규화된 형태로 지정할수 있습니다.
*If you use UNITLESS mode when designating the target position in DroneCAN Actuator.ArrayCommand message, you can specify from -1.0000 to +1.0000 in normalized form.
*이렇게 지정한 위치값은, -1 ~ 0 ~ +1 ---> POSITION_MIN, POSITION_MID, POSITION_MAX 까지의 실제 위치값으로 환산됩니다.  
*The position values ​​specified in this way are converted to actual position values ​​from -1 to 0 to +1 ---> POSITION_MIN, POSITION_MID, and POSITION_MAX.
*예를 들면, -0.5000 (POSITION_MIN+POSITION_MID)/2 가 됩니다.
*For example, -0.5000 becomes (POSITION_MIN+POSITION_MID)/2 .


==통신 예제==
==Communication example==
예를 들어 다음과 같이 4개의 서보가 있다면
For example, if you have 4 servos as
*S1: PROTOCOL=2.0A, ID2 = 10, ID1 = 101
*S1: PROTOCOL=2.0A, ID2 = 10, ID1 = 101
*S2: PROTOCOL=2.0A, ID2 = 20, ID1 = 102
*S2: PROTOCOL=2.0A, ID2 = 20, ID1 = 102
*S3: PROTOCOL=2.0B, ID2 = 10, ID1 = 103
*S3: PROTOCOL=2.0B, ID2 = 10, ID1 = 103
*S4: PROTOCOL=2.0B, ID2 = 20, ID1 = 104
*S4: PROTOCOL=2.0B, ID2 = 20, ID1 = 104
S2 서보의 Register 0x30 에 0x11 값을 쓴다고 하면
*CAN ID = 0, TYPE=2.0A, DATA = 'w', 102, 0x30, 0x11, 0x00 -> S2 가 수신 및 처리
*CAN ID = 0, TYPE=2.0B, DATA = 'w', 102, 0x30, 0x11, 0x00 -> S2 가 무시, TYPE 틀림
*여기서 DATA 의 첫 바이트 'w' 는 1개의 Register 를 쓰라는 명령을 뜻합니다.
**자세한 내용은 [[CanServo/Protocol/Control]] 를 참조해 주십시오.
*DATA 두번째 102 는 Target Servo ID 를 뜻하며, 102 이므로 S2 를 가리킵니다.


==기본 사용법==
Assuming that the value 0x11 is written to register 0x30 of S2 servo
===목표 위치 바꾸기===
*CAN ID = 0, TYPE=2.0A, DATA = 'w', 102, 0x30, 0x11, 0x00 -> Received and processed by S2
*Register POSITION_NEW 를 통해 목표 위치를 지정할수 있습니다.
*CAN ID = 0, TYPE=2.0B, DATA = 'w', 102, 0x30, 0x11, 0x00 -> S2 ignored, TYPE incorrect
**Turn Mode 에서는 Register TURN_NEW 를 함께 사용합니다.
 
**Servo Mode 에서는 Register TURN_NEW 가 무시됩니다.
To explain the DATA part,
* The first byte 'w' means the command to write 1 Register.
**Refer to [[CanServo/Protocol/Control/en]] for details.
* The second byte 102 means Target Servo ID, and since it is 102, it points to S2.
 
==Basic usage==
===Change target position===
You can specify the target position through *Register POSITION_NEW.
**In Turn Mode, Register TURN_NEW is used together.
**Register TURN_NEW is ignored in Servo Mode.


*POSITION_NEW, TURN_NEW 는 저장되지 않습니다.
*POSITION_NEW and TURN_NEW are not saved.




*Turn Mode 에서, 목표 위치를 지정하는 방식은, POSITION_NEW 의 음수 사용 여부에 따라 2가지 형태로 사용 가능합니다.
*In Turn Mode, there are two ways to specify the target position, depending on whether POSITION_NEW is used as a negative number.
**다음 3개의 예를 들어 보겠습니다.
**Let's take the following three examples.
***-370 deg = -370 x 16384 / 360 = -16839.111 = -16839
***-370 deg = -370 x 16384 / 360 = -16839.111 = -16839
***-10 deg = -10 x 16384 / 360 = -455.111 = -455
***-10 deg = -10 x 16384 / 360 = -455.111 = -455
***10 deg = 10 x 16384 / 360 = 455.111 = 455
***10 deg = 10 x 16384 / 360 = 455.111 = 455
**-370 deg
**-370 deg
***TURN_NEW = -1, POSITION_NEW = -455 -> 음수 사용할때
***TURN_NEW = -1, POSITION_NEW = -455 -> when using negative numbers
***TURN_NEW = -2, POSITION_NEW = 15929 -> 음수 사용하지 않을때
***TURN_NEW = -2, POSITION_NEW = 15929 -> When not to use negative numbers
**-10 deg
**-10 deg
***TURN_NEW = 0, POSITION_NEW = -455 -> 음수 사용할때
***TURN_NEW = 0, POSITION_NEW = -455 -> when using negative numbers
***TURN_NEW = -1, POSITION_NEW = 15929 -> 음수 사용하지 않을때
***TURN_NEW = -1, POSITION_NEW = 15929 -> When not to use negative numbers
**10 deg
**10 deg
***TURN_NEW = 0, POSITION_NEW = 455
***TURN_NEW = 0, POSITION_NEW = 455




*Turn Mode 에서, TURN_NEW, POSITION_NEW 계산하기
*Calculating TURN_NEW, POSITION_NEW in Turn Mode
**목표 각도 deg POSITION 단위로 바꿉니다.
**Change the target angle (deg) in POSITION units.
***pos = (정수 환산) ( deg x 16384 / 360 )
***pos = (integer conversion) ( deg x 16384 / 360 )
**turn 과 나머지를 구합니다.
**turn and the remainder.
***TURN_NEW = (소수점아래 버림 변환) (pos / 16384)
***TURN_NEW = (convert to round off) (pos / 16384)
***POSITION_NEW = pos % 16384 ( C style )
***POSITION_NEW = pos % 16384 ( C style )
**두 값을 전송 (TYPE 1)
**Transmit two values ​​(Type 1)
*** 여기에서는 POSITION_NEW 가 0보다 작을수 있습니다.
*** POSITION_NEW can be less than 0 here.
**만일, POSITION_NEW 를 양수로 바꾸는 경우에는 [[CanServo/TURN]] -1 합니다. (TYPE 2)
**If you change POSITION_NEW to a positive number, set [[CanServo/TURN]] to -1. (Type 2)
<pre>
<pre>
int32_t pos = (int32_t)(deg * 16384 / 360);
int32_t pos = (int32_t)(deg * 16384 / 360);
Line 175: Line 187:
</pre>
</pre>


===목표 위치 제한 하기===
===Limiting the target position===
*Servo Mode 에서는 Register POSITION_MIN, POSITION_MAX 에 동작 범위를 지정할수 있습니다.
*In Servo Mode, you can specify the operating range in Register POSITION_MIN and POSITION_MAX.
*Resolution 16384 = 360 deg 입니다.
*Resolution is 16384 = 360 deg.
*권장 최대 가동 범위: Center(8192) +/- 150도
*Recommended maximum range of motion: Center (8192) +/- 150 degrees


*예를 들어, +/- 60도 를 지정한다면
*For example, if you specify +/- 60 degrees
**60 deg = 60 x 16384 / 360 = 2730
**60 deg = 60 x 16384 / 360 = 2730
**POSITION_MIN = -60 deg = 8192 - 2730 = 5462
**POSITION_MIN = -60 deg = 8192 - 2730 = 5462
**POSITION_MAX = +60 deg = 8192 + 2730 = 10922
**POSITION_MAX = +60 deg = 8192 + 2730 = 10922
===현재 위치 읽기===
 
===Read current location===
The servo's current position value is provided in various formats.
 
Register
Register
* [[CanServo/POSITION]]
* [[CanServo/POSITION/en]] - Position value within 1 rotation
* [[CanServo/POSITION-32/LOW]]
* [[CanServo/TURN/en]] - rotation status
* [[CanServo/POSITION-32]]
* [[CanServo/POSITION-32/en]] - 32-bit position value with rotation state combined
* [[CanServo/TURN]]
* [[CanServo/POSITION-32/LOW/en]] - When reading only Low Word from 32-bit position value


값 읽기
Read value:
*Servo Mode 에서는, Register POSITION 또는 POSITION-32-LOW 를 읽습니다.
*In Servo Mode, read Register POSITION or POSITION-32-LOW.
*Turn Mode 에서는, Register POSITION, TURN 를 읽습니다. 혹은 POSITION-32 를 읽습니다.
*In Turn Mode, read Register POSITION, TURN. Or read POSITION-32.


!!! 주의!!! POSITION POSITION-32-LOW 의 차이
The difference between POSITION and POSITION-32-LOW
*POSITION 0 ~ 16383 까지만 들어가고, TURN 이 바뀌는 것은 TURN 를 읽어봐야 알수 있습니다.
*POSITION is stored only from 0 to 16383, and the change in TURN is known only by reading TURN.
*POSITION-32-LOW 는 2비트 추가로 있으므로, 앞뒤로 총 4 turn 까지 상태를 알수 있습니다.
*POSITION-32-LOW has 2 additional bits, so you can know the status up to 4 turns back and forth.


===속도 바꾸기===
===Change speed===
*동작 최대 속도를 지정할수 있습니다.
* You can specify the maximum operating speed.
*0 으로 변경하면 목표 위치를 바꾸더라도 움직이지 않습니다.
*If it is changed to 0, it will not move even if the target position is changed.


CAN 서보에서 속도의 단위는 pos/100msec 입니다.
The unit of speed in CAN servo is pos/100msec.


pos 의 단위는 16384 = 360 deg 입니다.
The resolution of pos is 16384 = 360 deg .


Vt (sec/60deg) Vp (pos/100msec) 의 변환식은 다음과 같습니다. , PT = Reg PID TIME, PX = PT / 10
The conversion formula for Vt (sec/60deg) and Vp (pos/100msec) is as follows. However, PT = Reg PID TIME, PX = PT / 10
* Vp = 60 x 16384 / 360 / Vt / 10 x PX
* Vp = 60 x 16384 / 360 / Vt / 10 x PX
* Vt = 60 x 16384 / 360 / Vp / 10 x PX
* Vt = 60 x 16384 / 360 / Vp / 10 x PX
Line 215: Line 230:
ex) 1920 pos/100msec = 0.284 sec/60deg, PX=2
ex) 1920 pos/100msec = 0.284 sec/60deg, PX=2


===토크 바꾸기===
===Torque change===
*최대 출력을 조절합니다.
*Adjusts the maximum output.
*최대 속도도 비례적으로 조정됩니다.
*Maximum speed is also adjusted proportionally.
*0 으로 변경하면 힘이 완전히 풀리면서 외력에 의해 움직일수 있습니다.
* If you change it to 0, the force is completely released and you can move by external force.


===OLP===
===OLP===
*Over Load Protection 기능입니다.
*Over Load Protection function.
*지정한 시간 이상 내부 제어기 출력이 Full 이 되면, 발동합니다.
* It is activated when the internal controller output remains Full for more than the specified time.
*OLP 가 발동하면, OLP Ratio 로 지정된 값으로 출력이 조정됩니다.
*When OLP is triggered, the output is adjusted to the value specified by OLP Ratio.
** 90 이면 출력이 90% 가 됩니다.
** If it is 90 then the output will be 90%.
*OLP 발동 시간은 PX = PT / 10, PT = PID TIME 에 의해 달라집니다.
*OLP activation time depends on PX = PT / 10, PT = PID TIME.
*OLP 발동시간 = OLP Time x PX 입니다.
*OLP activation time = OLP Time x PX.
** PX = 2 이고 OLP Time = 3 이면, OLP 발동 시간은 6초가 됩니다.
** If PX = 2 and OLP Time = 3, the OLP activation time will be 6 seconds.


===비상 정지===
===Emergency stop===
*일시적으로 서보 이동을 멈춥니다.
*Temporarily stops servo movement.
*이 상태는 저장되지 않으며, 서보 Reset 후에는 풀립니다.
* This state is not saved and is released after Servo Reset.
*비상 정지 상태에 따라 정지까지의 과정과 상태 유지 방식이 다릅니다.
*Depending on the emergency stop status, the process until the stop and the status maintenance method are different.
**0 = 비상 정지 해제
**0 = emergency stop release
**1 = 즉시 모터 출력을 끕니다. 외력에 의해 움직일수 있습니다.
**1 = Turns off motor output immediately. It can be moved by external force.
**2 = Time Speed ES 값에 맞추어 감속하고, 정지 위치를 고수합니다.
**2 = Decelerate according to the Time Speed ​​ES value, and hold the stop position.
**3 = 즉시 멈추고, 정지 위치를 고수합니다.
**3 = Stop immediately, hold stop position.


===전압, MCU 온도에 따른 비상 정지===
===Emergency stop according to voltage and MCU temperature===
*MCU 온도와 전압의 상태가 지정한 작동 범위를 벗어나면 모터 출력이 꺼집니다.
*When the condition of MCU temperature and voltage is outside the specified operating range, the motor output is turned off.
*실시간은 아니고 어느정도 평균처리가 됩니다.
* It is not real-time, it is averaged to some extent.
===가감속 시간 지정 하기===
*가속 시간(Time Speed Up), 감속 시간(Time Speed Down)을 설정합니다.
** 추가로 비상 정지 시간(Time Speed ES: Emergency Stop)을 설정합니다.
*이 기능은 사다리꼴 속도 프로파일을 구현합니다.
*지정한 최대 속도까지 가속하는 시간, 최대 속도에서 속도 0까지 감속하는 시간을 지정할수 있습니다.
*부드러운 가감속이 필요한 경우에 사용합니다.
*일반적인 서보로서 사용할때는 0 으로 설정합니다.


*Time Speed Up/Down/ES 의 단위는 PX = PT / 10, PT = PID TIME 에 따라 달라집니다.
===Specifying the acceleration/deceleration time===
*예를 들어
*Acceleration time (Time Speed ​​Up) and deceleration time (Time Speed ​​Down) can be set separately.
**PX = 1 이면: Time Speed Up = 100 = 100 msec 입니다.
** In addition, set the emergency stop time (Time Speed ​​ES: Emergency Stop).
**PX = 2 이면: Time Speed Up = 100 = 200 msec 입니다.
*This setup implements a trapezoidal velocity profile.
* You can specify the time to accelerate to the specified maximum speed and the time to decelerate from the maximum speed to 0 speed.
*Used when smooth acceleration/deceleration is required.
* When used as a general servo, set to 0.


===현재 속도 읽기===
*The unit of these setting values ​​depends on PX = PT / 10 ( PT = PID TIME ).
Register VELOCITY 를 읽으면 서보의 현재 속도를 알수 있습니다.
*For example
**If PX = 1: Time Speed ​​Up = 100 = 100 msec.
**If PX = 2: Time Speed ​​Up = 100 = 200 msec.


속도의 단위는 pos/100msec 입니다.
===Read movement speed===
You can find out the current speed of the servo by reading Register VELOCITY.


pos 의 단위는 16384 = 360 deg 입니다.
The unit of speed is pos/100msec.


Vt (sec/60deg) Vp (pos/100msec) 의 변환식은 다음과 같습니다.
The resolution of pos is 16384 = 360 deg .
 
The conversion formula for Vt (sec/60deg) and Vp (pos/100msec) is as follows.
* Vp = 60 x 16384 / 360 / Vt / 10
* Vp = 60 x 16384 / 360 / Vt / 10
* Vt = 60 x 16384 / 360 / Vp / 10
* Vt = 60 x 16384 / 360 / Vp / 10
Line 267: Line 283:
ex) 1920 pos/100msec = 0.142 sec/60deg
ex) 1920 pos/100msec = 0.142 sec/60deg


===현재 가속도 읽기===
===Read acceleration of movement===
*Register ACC 를 읽으면 서보의 현재 가속도를 알수 있습니다.
* If you read Register ACC, you can know the current acceleration of the servo.
===서보 내부 온도 센서 종류===
*CAN 서보는 제품에 따라 다양한 온도 센서를 가지고 있습니다.
**MCU 온도
***제어 보드의 MCU 에 내장된 온도 센서의 데이터 입니다.
**모터 온도
***모터에 부착된 온도 센서의 데이터 입니다.
**습도 센서의 온도
***습도 센서에 포함된 온도 센서의 데이터 입니다.


*온도에 의한 모터 출력 끄기
===Servo internal temperature sensors===
**MCU 온도의 최소, 최대 값을 각각 지정하여, 모터 출력을 끌 수 있습니다.


*모터 온도, 습도 센서의 온도 데이터는 별도의 감시 코드가 없으므로, Host 에서 주기적으로 읽어서 판단하여 서보 출력을 끄거나 제어해야 합니다.
CAN servos have various temperature sensors depending on the product.
*MCU temperature
**Data from the temperature sensor built into the MCU of the control board.
*Motor temperature
**Data from the temperature sensor attached to the motor.
*Temperature of humidity sensor
**Data from the temperature sensor included in the humidity sensor.


==추가 기능==
If you specify the minimum and maximum values ​​of MCU temperature, the motor output is automatically turned on or off according to the temperature condition.
 
Since there is no separate monitoring code for the temperature data of the motor temperature and humidity sensor, the servo output must be turned off or controlled by periodically reading and judging from the host.
 
==Additional Features==
===User Data===
===User Data===
*Register 2개에 사용자가 원하는 정보를 넣어 둘수 있습니다.
*You can put the information you want in 2 registers.
*값을 변경하고 SAVE 절차를 수행하면, Reset 되어도 유지됩니다.
*If the value is changed and the SAVE procedure is performed, it is maintained even if it is reset.
===Stream===
===Stream===
*Register POSITION, [[CanServo/TURN]] 등의 정보를 지정한 간격으로 전송합니다.
Transmits information such as *Register POSITION, [[CanServo/TURN/en]] at specified intervals.
*UAVCAN 에서는 Actuator Status 메시지를 발신합니다.
*UAVCAN sends an Actuator Status message.
*[[CanServo/Stream]] 을 참조해 주십시오.
*Refer to [[CanServo/Stream/en]].


===Stream Address===
===Stream Address===
*총 4개의 Register 를 통해, 원하는 주소 2개씩 최대 8개까지 지정 할수 있습니다.
* Through 4 registers, you can designate up to 8 addresses, 2 each.
*[[CanServo/Stream/Address]] 를 참조해 주십시오.
*Please refer to [[CanServo/Stream/Address/en]].


===Stream CAN ID===
===Stream CAN ID===
*Stream CAN Packet 발신 때 사용할 CAN ID 를 별도 지정하는 기능입니다.
*This is a function to separately designate CAN ID to be used when sending Stream CAN Packet.


*[[CanServo/Stream/CAN ID]] 를 참조해 주십시오.
*Refer to [[CanServo/Stream/CAN ID/en]].


===Start Position===
===Start Position===
*CAN 서보는 기동시 Reset 시점의 위치를 유지합니다.
*CAN servo maintains the reset position when starting.
*Reset 시점에 특정 위치로 이동시키고 싶을 때 사용하는 기능입니다.
*This function is used when you want to move to a specific location at the time of reset.


*[[CanServo/Start Position]] 를 참조해 주십시오.
*Refer to [[CanServo/Start Position/en]].


===Fail Safe===
===Fail Safe===
*POSITION_NEW 가 일정 시간 동안 오지 않으면 특정 위치로 이동시키고 싶을 때 사용하는 기능입니다.
* This function moves to the designated location when the Reg POSITION_NEW write message does not come for a certain period of time.
*시간과 위치를 각각 설정합니다.
* POSITION_NEW Write message must be received once to be activated.
*[[CanServo/Fail Safe]] 를 참조해 주십시오.
* Set the time and location respectively.
* Refer to [[CanServo/Fail Safe/en]].
===Pause Stream===
===Pause Stream===
*Stream 발신을 일시적으로 정지시키는 기능입니다. 이 상태는 저장되지 않으며, 서보 Reset 이 되면 정지는 풀립니다.
* This is a function to temporarily stop sending the stream.
* This state is not saved, and the stop is released when the servo is reset.
 
*Refer to [[CanServo/Stream/Pause/en]].


*[[CanServo/Stream/Pause]] 를 참조해 주십시오.
===Switch to Bootloader===
===Switch to Bootloader===
*FW 실행 중에 Bootloader 로 전환하는 기능입니다.
*This is a function to switch to Bootloader during FW execution.
*Bootloader 에서 사용할 통신 속도, CAN ID 등을 지정할수 있습니다.
*You can specify the communication speed, CAN ID, etc. to be used in the bootloader.
*이를 통해 각 서보가 모두 켜져 있는 상태에서 1대의 서보만 FW 를 업데이트 할수 있습니다.
* With this, only one servo can update FW while all servos are turned on.


*[[CanServo/Switch to Bootloader]] 를 참조해 주십시오.
*Please refer to [[CanServo/Switch to Bootloader/en]].


==기능별 구분==
==Classification by function==
===전류 측정 회로가 있는 경우===
===With Motor Current Measuring Circuit===
*MD 시리즈 일부 (예: MD89), SG 시리즈, RB 시리즈, DB 시리즈는 전류 측정 회로가 있습니다.
*Some MD series (eg MD89), SG series, RB series, DB series have motor current measuring circuit.


*실시간 측정한 전압과 전류를 이용하여 출력을 조절합니다.
*The output is adjusted using the real-time measured voltage and current.
===모터 온도 센서가 있는 경우===
===With motor temperature sensor===
*일부 모델에서는, 모터의 온도 데이터를 제공합니다.
*On some models, we provide temperature data for the motor.
*Host 에서 주기적으로 확인하여, 서보를 끄거나, 출력을 낮추어야 합니다.
*Host should check periodically to turn off the servo or lower the output.
===전압 상승 방지 회로가 있는 경우===
===With voltage rise protection circuit===
*특정 전압 이상이 되지 못하도록 제한해 주는 회로가 장착된 모델이 있습니다.
*Some models are equipped with a circuit that limits the voltage from exceeding a certain voltage.
**: SG50
**Example: SG50


*서보는 동작 상황에 따라 발전이 되어 전압이 높아지는 경우가 있습니다.
* Depending on the operating conditions, the servo may generate power and increase the voltage.
**: 감속 동작, 윈치 내리기
**Example: Servo deceleration, Lowering winch
**이를 하드웨어적으로 방지하는 회로입니다.
**This is a circuit that prevents this by hardware.
**다만, 한도를 넘어서면 전자 퓨즈에 의해 회로가 꺼지면서 기능이 멈춥니다.
**However, if the limit is exceeded, the circuit is turned off by the electronic fuse and the function stops.


*이 회로가 꺼지면 그 다음으로 Over Voltage Brake 기능이 고전압을 잡아줍니다.
* When this circuit is turned off, the Over Voltage Brake function catches the high voltage next.


*SG50 의 경우에는 방지 회로가 1차로 막고, 2차로 Over Voltage Brake 기능이 막습니다.
*In the case of SG50, the prevention circuit blocks the first, and the Over Voltage Brake function blocks the second.


===습도 센서가 있는 경우===
===With humidity sensor===
*습도 센서가 추가로 있는 모델이 있습니다.
* Some models have an additional humidity sensor.
**예: SG 시리즈 일부: SG33, SG50
**Example: SG33, SG50
*습도 센서는 서보 내부의 상대 습도와 온도 데이터를 제공합니다.
* Humidity sensor provides relative humidity and temperature data inside the servo.
*Low Data 를 그대로 제공하므로, 공식에 따라 계산해야 합니다.
* Servo provides Low Data as it is, so it must be calculated according to the formula.
*주기적으로 데이터를 받아서, Host 에서 판단하여 서보를 끄거나, 동작을 제한해야 합니다.
* After receiving data periodically, the host must decide to turn off the servo or limit the operation.

Latest revision as of 04:05, 14 February 2022

Overview of this page

CAN servo is a servo controlled through CAN communication.

It supports CAN 2.0A, 2.0B, DroneCAN protocol.

This document summarizes the contents of the CAN Servo Manual and rearranges them from a functional point of view. For details, refer to the CAN servo manual.

F/W Types

It is divided according to the type of protocol supported.

  • C Type = support CAN 2.0A, 2.0B
  • U Type = support DroneCAN
  • A Type = support CAN 2.0A, 2.0B, DroneCAN

Simple Test

C Type or A Type: The factory default setting of CAN servo is CAN 2.0A, 1000kbps, Servo Mode.

For testing purposes, you can send the following packets:

  • CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0xAA, 0x2A, DLC = 5 ---> Move to +60 degree position
  • CAN 2.0A packet, CAN ID = 0, DATA = 'w', 0, 0x1E, 0x00, 0x20, DLC = 5 ---> Move to 0 degree position

Communication settings

  • Communication settings are applied at the time of Servo Reset.
  • If you are using CAN communication for the first time, please refer to CAN/Overview.

CAN baudrate

Select the communication speed to use. The unit is kbps.

  • Register Address: 0x38
  • 0 - 1000
  • 1 - 800
  • 2 - 750
  • 3 - 500
  • 4 - 400
  • 5 - 250
  • 6 - 200
  • 7 - 150
  • 8 - 125

Select Protocol

Select the protocol type to be used for communication through CanServo/MODE/CAN/en.

Select from CAN 2.0A, 2.0B, or DroneCAN. Depending on the protocol, it may be necessary to change the FW Type.

The reason CAN 2.0A and B are divided is because the CAN ID value must also match, but the Type is also checked. That is, CAN ID = 100 with CAN 2.0A and CAN ID = 100 with CAN 2.0B are recognized differently.

According to the status of CanServo/MODE/CAN/en, the following protocol is followed.

Servo ID designation

To control servos, you need to distinguish between servos. Servos are distinguished by two types of IDs.

  • When using CAN 2.0A, 2.0B protocol, it is divided into CAN ID and Servo ID.
  • When using DroneCAN, it is divided into Node ID and Actuator ID.

Set each ID:

Operation Mode

  • CAN servo supports Servo Mode that operates within one rotation and Turn Mode that allows +/-32760 x 360 deg operation.
    • Note: When Turn Mode is selected, the position at the time of servo reset becomes 0 deg, 0 Turn position.
  • Choose from 2 options.
  • Operation mode is applied at the time of servo reset.
  • Please refer to Register CanServo/MODE/RUN/en.

Servo control method

  • CAN servo has 128 registers of 2 byte size.
  • It operates according to these values.
  • For example
    • In Servo Mode, if you set a value of 8192 in Register POSITION_NEW, it moves to the center position.
    • If you read the Register CanServo/POSITION/en value, you can know the current position of the servo.

Applied time when setting value is changed

  • Most user-use settings take effect immediately after change.
  • But, the following items, as an exception, are applied at the time of Servo Reset, so SAVE and RESET procedures must be performed.

Storage of setting value

  • Most of the registers are saved at the time of SAVE command and are maintained even after Servo Reset.
    • Exceptions are:
      • Control values ​​(POSITION_NEW, TURN_NEW, etc.)
      • Various status values ​​(ex: POSITION)
      • Other exceptions
  • !!! caution !!!
    • It is recommended to do SAVE with the motor stopped.
    • You should not SAVE too often.
    • In particular, this should not be done periodically.
    • After changing as many values ​​as possible, it is recommended to SAVE and Servo Reset.
    • However, it is recommended to change or reset the communication setting value, ID, RUN_MODE, etc., not together with other values.

Location coordinate system

Servo Mode

  • This mode operates within 1 rotation.
  • Set the desired position in Register POSITION_NEW.
    • Range: 0 ~ 16383
    • Center: 8192
  • You can limit the range of motion with POSITION_MIN, POSITION_MAX.

Turn Mode

  • Multi-rotation position control mode.
  • It works if you set the number of rotations in CanServo/TURN_NEW/en and set the angle within 360 degrees in CanServo/POSITION_NEW/en.
  • Both values ​​follow the int16_t ( 16 bits signed integer ) method, so negative numbers can be specified.
  • !!! caution !!!
    • When the servo is reset, the position value is initialized to 0.
    • Immediately after Servo Reset, if TURN_NEW = 0, POSITION_NEW = 0 is transmitted, it remains motionless.
      • It is recommended to use the 'W' Write message that can transmit two registers at the same time.
      • When transmitting separately, an error occurs in either of the two transmissions, resulting in undesirable behavior.

DroneCAN UNITLESS Coordinate System

  • If you use UNITLESS mode when designating the target position in DroneCAN Actuator.ArrayCommand message, you can specify from -1.0000 to +1.0000 in normalized form.
  • The position values ​​specified in this way are converted to actual position values ​​from -1 to 0 to +1 ---> POSITION_MIN, POSITION_MID, and POSITION_MAX.
  • For example, -0.5000 becomes (POSITION_MIN+POSITION_MID)/2 .

Communication example

For example, if you have 4 servos as

  • S1: PROTOCOL=2.0A, ID2 = 10, ID1 = 101
  • S2: PROTOCOL=2.0A, ID2 = 20, ID1 = 102
  • S3: PROTOCOL=2.0B, ID2 = 10, ID1 = 103
  • S4: PROTOCOL=2.0B, ID2 = 20, ID1 = 104

Assuming that the value 0x11 is written to register 0x30 of S2 servo

  • CAN ID = 0, TYPE=2.0A, DATA = 'w', 102, 0x30, 0x11, 0x00 -> Received and processed by S2
  • CAN ID = 0, TYPE=2.0B, DATA = 'w', 102, 0x30, 0x11, 0x00 -> S2 ignored, TYPE incorrect

To explain the DATA part,

  • The first byte 'w' means the command to write 1 Register.
  • The second byte 102 means Target Servo ID, and since it is 102, it points to S2.

Basic usage

Change target position

You can specify the target position through *Register POSITION_NEW.

    • In Turn Mode, Register TURN_NEW is used together.
    • Register TURN_NEW is ignored in Servo Mode.
  • POSITION_NEW and TURN_NEW are not saved.


  • In Turn Mode, there are two ways to specify the target position, depending on whether POSITION_NEW is used as a negative number.
    • Let's take the following three examples.
      • -370 deg = -370 x 16384 / 360 = -16839.111 = -16839
      • -10 deg = -10 x 16384 / 360 = -455.111 = -455
      • 10 deg = 10 x 16384 / 360 = 455.111 = 455
    • -370 deg
      • TURN_NEW = -1, POSITION_NEW = -455 -> when using negative numbers
      • TURN_NEW = -2, POSITION_NEW = 15929 -> When not to use negative numbers
    • -10 deg
      • TURN_NEW = 0, POSITION_NEW = -455 -> when using negative numbers
      • TURN_NEW = -1, POSITION_NEW = 15929 -> When not to use negative numbers
    • 10 deg
      • TURN_NEW = 0, POSITION_NEW = 455


  • Calculating TURN_NEW, POSITION_NEW in Turn Mode
    • Change the target angle (deg) in POSITION units.
      • pos = (integer conversion) ( deg x 16384 / 360 )
    • turn and the remainder.
      • TURN_NEW = (convert to round off) (pos / 16384)
      • POSITION_NEW = pos % 16384 ( C style )
    • Transmit two values ​​(Type 1)
      • POSITION_NEW can be less than 0 here.
    • If you change POSITION_NEW to a positive number, set CanServo/TURN to -1. (Type 2)
int32_t pos = (int32_t)(deg * 16384 / 360);
int32_t turn = pos / 16384;
int32_t posi = pos % 16834;
// TYPE 1: send 'W' command: turn -> TURN_NEW, posi -> POSITION_NEW
while( posi < 0 )
{
    posi += 16384;
    turn -= 1;
}
// TYPE 2: send 'W' command: turn -> TURN_NEW, posi -> POSITION_NEW

Limiting the target position

  • In Servo Mode, you can specify the operating range in Register POSITION_MIN and POSITION_MAX.
  • Resolution is 16384 = 360 deg.
  • Recommended maximum range of motion: Center (8192) +/- 150 degrees
  • For example, if you specify +/- 60 degrees
    • 60 deg = 60 x 16384 / 360 = 2730
    • POSITION_MIN = -60 deg = 8192 - 2730 = 5462
    • POSITION_MAX = +60 deg = 8192 + 2730 = 10922

Read current location

The servo's current position value is provided in various formats.

Register

Read value:

  • In Servo Mode, read Register POSITION or POSITION-32-LOW.
  • In Turn Mode, read Register POSITION, TURN. Or read POSITION-32.

The difference between POSITION and POSITION-32-LOW

  • POSITION is stored only from 0 to 16383, and the change in TURN is known only by reading TURN.
  • POSITION-32-LOW has 2 additional bits, so you can know the status up to 4 turns back and forth.

Change speed

  • You can specify the maximum operating speed.
  • If it is changed to 0, it will not move even if the target position is changed.

The unit of speed in CAN servo is pos/100msec.

The resolution of pos is 16384 = 360 deg .

The conversion formula for Vt (sec/60deg) and Vp (pos/100msec) is as follows. However, PT = Reg PID TIME, PX = PT / 10

  • Vp = 60 x 16384 / 360 / Vt / 10 x PX
  • Vt = 60 x 16384 / 360 / Vp / 10 x PX

ex) 1920 pos/100msec = 0.142 sec/60deg, PX=1

ex) 1920 pos/100msec = 0.284 sec/60deg, PX=2

Torque change

  • Adjusts the maximum output.
  • Maximum speed is also adjusted proportionally.
  • If you change it to 0, the force is completely released and you can move by external force.

OLP

  • Over Load Protection function.
  • It is activated when the internal controller output remains Full for more than the specified time.
  • When OLP is triggered, the output is adjusted to the value specified by OLP Ratio.
    • If it is 90 then the output will be 90%.
  • OLP activation time depends on PX = PT / 10, PT = PID TIME.
  • OLP activation time = OLP Time x PX.
    • If PX = 2 and OLP Time = 3, the OLP activation time will be 6 seconds.

Emergency stop

  • Temporarily stops servo movement.
  • This state is not saved and is released after Servo Reset.
  • Depending on the emergency stop status, the process until the stop and the status maintenance method are different.
    • 0 = emergency stop release
    • 1 = Turns off motor output immediately. It can be moved by external force.
    • 2 = Decelerate according to the Time Speed ​​ES value, and hold the stop position.
    • 3 = Stop immediately, hold stop position.

Emergency stop according to voltage and MCU temperature

  • When the condition of MCU temperature and voltage is outside the specified operating range, the motor output is turned off.
  • It is not real-time, it is averaged to some extent.

Specifying the acceleration/deceleration time

  • Acceleration time (Time Speed ​​Up) and deceleration time (Time Speed ​​Down) can be set separately.
    • In addition, set the emergency stop time (Time Speed ​​ES: Emergency Stop).
  • This setup implements a trapezoidal velocity profile.
  • You can specify the time to accelerate to the specified maximum speed and the time to decelerate from the maximum speed to 0 speed.
  • Used when smooth acceleration/deceleration is required.
  • When used as a general servo, set to 0.
  • The unit of these setting values ​​depends on PX = PT / 10 ( PT = PID TIME ).
  • For example
    • If PX = 1: Time Speed ​​Up = 100 = 100 msec.
    • If PX = 2: Time Speed ​​Up = 100 = 200 msec.

Read movement speed

You can find out the current speed of the servo by reading Register VELOCITY.

The unit of speed is pos/100msec.

The resolution of pos is 16384 = 360 deg .

The conversion formula for Vt (sec/60deg) and Vp (pos/100msec) is as follows.

  • Vp = 60 x 16384 / 360 / Vt / 10
  • Vt = 60 x 16384 / 360 / Vp / 10

ex) 1920 pos/100msec = 0.142 sec/60deg

Read acceleration of movement

  • If you read Register ACC, you can know the current acceleration of the servo.

Servo internal temperature sensors

CAN servos have various temperature sensors depending on the product.

  • MCU temperature
    • Data from the temperature sensor built into the MCU of the control board.
  • Motor temperature
    • Data from the temperature sensor attached to the motor.
  • Temperature of humidity sensor
    • Data from the temperature sensor included in the humidity sensor.

If you specify the minimum and maximum values ​​of MCU temperature, the motor output is automatically turned on or off according to the temperature condition.

Since there is no separate monitoring code for the temperature data of the motor temperature and humidity sensor, the servo output must be turned off or controlled by periodically reading and judging from the host.

Additional Features

User Data

  • You can put the information you want in 2 registers.
  • If the value is changed and the SAVE procedure is performed, it is maintained even if it is reset.

Stream

Transmits information such as *Register POSITION, CanServo/TURN/en at specified intervals.

Stream Address

Stream CAN ID

  • This is a function to separately designate CAN ID to be used when sending Stream CAN Packet.

Start Position

  • CAN servo maintains the reset position when starting.
  • This function is used when you want to move to a specific location at the time of reset.

Fail Safe

  • This function moves to the designated location when the Reg POSITION_NEW write message does not come for a certain period of time.
  • POSITION_NEW Write message must be received once to be activated.
  • Set the time and location respectively.
  • Refer to CanServo/Fail Safe/en.

Pause Stream

  • This is a function to temporarily stop sending the stream.
  • This state is not saved, and the stop is released when the servo is reset.

Switch to Bootloader

  • This is a function to switch to Bootloader during FW execution.
  • You can specify the communication speed, CAN ID, etc. to be used in the bootloader.
  • With this, only one servo can update FW while all servos are turned on.

Classification by function

With Motor Current Measuring Circuit

  • Some MD series (eg MD89), SG series, RB series, DB series have motor current measuring circuit.
  • The output is adjusted using the real-time measured voltage and current.

With motor temperature sensor

  • On some models, we provide temperature data for the motor.
  • Host should check periodically to turn off the servo or lower the output.

With voltage rise protection circuit

  • Some models are equipped with a circuit that limits the voltage from exceeding a certain voltage.
    • Example: SG50
  • Depending on the operating conditions, the servo may generate power and increase the voltage.
    • Example: Servo deceleration, Lowering winch
    • This is a circuit that prevents this by hardware.
    • However, if the limit is exceeded, the circuit is turned off by the electronic fuse and the function stops.
  • When this circuit is turned off, the Over Voltage Brake function catches the high voltage next.
  • In the case of SG50, the prevention circuit blocks the first, and the Over Voltage Brake function blocks the second.

With humidity sensor

  • Some models have an additional humidity sensor.
    • Example: SG33, SG50
  • Humidity sensor provides relative humidity and temperature data inside the servo.
  • Servo provides Low Data as it is, so it must be calculated according to the formula.
  • After receiving data periodically, the host must decide to turn off the servo or limit the operation.