Skip to content

Fashion Star CANBUS Servo Communication Protocol Specification

1. Document Overview

1.1 Applicable Products

Applicable Products

This document applies to Fashion Star CANBUS servo products.

Rated voltage, output capability, temperature sensors, and some parameter ranges may vary by model. For model-specific differences, also refer to the corresponding datasheet.

This specification is organized in the order of “connect first, check the tables next, and control the servo last.” For first-time use, read Chapter 2 first. When developing a program, focus on Chapters 4–6. For motion, stop, or configuration operations, refer to Chapters 7–9.

1.2 Intended Audience

Intended Audience

  • Users of servo devices
  • Robot and automation-system integrators
  • PC configuration software and CAN host-controller developers
  • Product configuration, testing, and maintenance personnel

1.3 Protocol Version

Item Content
Protocol name Fashion Star CANBUS servo communication protocol
Protocol version V1.1.1
Release date 2026-08-05
CAN type Classical CAN
CAN frame format CAN 2.0A standard data frame

1.4 Document Notation

Symbol Meaning
0x12 Hexadecimal number
Data[n] Byte n+1 in the CAN data field
ServoID servo ID
DLC Actual number of bytes in the CAN data field
R Readable
W Writable
R/W Read/write
None, undefined, or not applicable

1.5 Important Notes

Important Notes

  1. This protocol uses 11-bit standard CAN data frames. Extended frames, remote frames, and CAN-FD are not used.
  2. The host controller and servo must be configured to use the same CAN baud rate.
  3. All multibyte parameters use little-endian byte order, with the low byte first.
  4. Parameters such as angle and speed must be converted using the scales specified in this document. Do not treat raw values as engineering values directly.
  5. Before changing the servo ID, CAN baud rate, zero point, turn count, or PID parameters, confirm that the target servo and mechanical structure are in a safe state.
  6. When multiple servo units are present on the same bus, do not broadcast read commands or write-and-respond commands that generate responses.

2. Quick Start

2.1 CAN Interface and Communication Conditions

The CAN bus must include CAN_H, CAN_L, and a common reference ground. Termination resistors should be configured at both ends of the bus according to the system design; 120 Ω is a common value.

The host controller and servo must meet the following requirements:

  • Connect CAN_H to CAN_H.
  • Connect CAN_L to CAN_L.
  • Use the same CAN baud rate.
  • Use standard data frames for both host transmission and reception.
  • Set the CAN ID to 0x321.

2.2 Default Communication Parameters

Item Default value
CAN baud rate 500 Kbps
CAN ID 0x321
Frame format 11-bit standard data frame
Frame type Data frame
Maximum DLC 8 Byte
Ordinary servo ID range 0~254

2.3 CAN Standard Frame Format

Commands sent by the host controller and data returned by the servo both use:

CAN ID = 0x321
IDE    = Standard (standard frame)
RTR    = Data (data frame)

The servo ID is not placed in the CAN ID. It is placed in Data[1] of the CAN data field.

2.4 Difference Between Servo ID and CAN ID

Item CAN ID Servo ID
Purpose CAN bus arbitration identifier Distinguishes different servo units on the same bus
Location in this protocol CAN frame identifier Data[1] of the CAN data field
Value in this protocol Fixed at 0x321 0~254

For example, when reading servo ID 1 and servo ID 2, the CAN ID is 0x321 in both cases. The only difference is the second byte in the data field.

2.5 First Servo Read

Using the default 500 Kbps baud rate and servo ID 1 as an example, read the servo model address 0x01:

TX  CAN ID=0x321  DLC=3  Data: 72 01 01

Normal response format:

RX  CAN ID=0x321  DLC=5  Data: 76 01 01 LL HH

Where:

  • 0x72: Read one parameter.
  • 0x01: Target Servo ID.
  • 0x01: Servo model parameter address.
  • LL HH: Low and high bytes of the model parameter.

A correct response indicates that the CAN wiring, baud rate, CAN ID, and servo ID are basically configured correctly.

2.6 Connecting the Servo with the Supplied PC Configuration Software

When using the Fashion Star adapter board and the CANBUS Servo PC configuration software:

  1. Connect the adapter board to the computer.
  2. Connect the adapter board's CAN_H and CAN_L correctly to the servo.
  3. Provide the servo with a power supply that meets its specifications.
  4. Open the PC configuration software in a browser that supports Web Serial.
  5. Click “Connect serial port”.
  6. Select the current CAN baud rate of the servo.
  7. Set the scan range and start scanning.
  8. After the servo is found, select the target ID for monitoring, control, or parameter configuration.

3. Communication Protocol Basics

3.1 CAN Frame Parameters

Item Requirement
CAN type Classical CAN
Frame format CAN 2.0A standard frame
Identifier length 11 bit
CAN ID 0x321
Frame type Data frame
Data length Determined by the command, up to 8 Byte
Extended frame Not used
Remote frame Not used
CAN-FD Not used

3.2 CAN Data-Field Structure

All public commands begin with a command byte:

Data[0] = Command
Data[1] = ServoID
Data[2...] = Command parameters such as Address and Value

The specific DLC and field order for each command are defined in Chapter 4.

3.3 Byte Numbering

This document numbers data-field bytes starting from 0:

Data[0]  Data[1]  Data[2]  ...  Data[7]

Some original materials may label them Byte1–Byte8. The correspondence is:

Byte1 = Data[0]
Byte2 = Data[1]
...
Byte8 = Data[7]

3.4 Command Byte

The command byte is the hexadecimal value corresponding to an ASCII character, and it is case-sensitive. For example:

ASCII Hex Function
r 0x72 Read one parameter
R 0x52 Read two parameters
w 0x77 Write one parameter
W 0x57 Write two parameters

r and R, as well as w and W, are different commands and must not be interchanged.

3.5 Servo ID

  • The ordinary Servo ID range is 0x00~0xFE, which is decimal 0~254.
  • 0xFF is the broadcast ID and is used only to execute synchronized motion that has already been buffered separately in each Servo unit.
  • Read commands and commands that require a response must not use the broadcast ID.

3.6 16-Bit Parameters and Little-Endian Order

16-bit parameters are transmitted with the low byte first:

Value16 = ValueLow | (ValueHigh << 8)

For example, the data order for hexadecimal value 0x1234 is:

34 12

3.7 Combining 32-Bit Parameters

A 32-bit parameter consists of two adjacent 16-bit addresses:

Value32 = WordLow | (WordHigh << 16)

The lower address stores the low 16 bits, and the higher address stores the high 16 bits. Each 16-bit word is still transmitted with its low byte first.

For example, the target angle consists of 0x53/0x54:

0x53 = Low 16 bits
0x54 = High 16 bits

3.8 Signed-Number Encoding

Single-turn angle, target-angle, and angle-limit parameters use two's-complement representation. During parsing, convert them according to the parameter type to:

  • signed 16-bit; or
  • signed 32-bit.

Negative angles must not be converted to 0~360° before transmission.

3.9 Response Matching and Timeout Handling

After receiving a response, the host controller should check at least the following:

  1. Whether the CAN ID is 0x321.
  2. Whether the DLC matches the command definition.
  3. Whether the response command byte is correct.
  4. Whether the Servo ID matches the request.
  5. Whether the parameter address matches the request.
  6. Whether the two addresses and their order in a dual-parameter response are correct.

The host controller may set communication timeouts and retry counts according to the bus load. Avoid sending another response-generating request before the previous request has completed.


4. Commands and Packet Formats

4.1 Command Summary

ASCII Hex Direction Function DLC Response
r 0x72 Host → servo Read one parameter 3 v, DLC = 5
R 0x52 Host → servo Read two parameters 4 V, DLC = 8
w 0x77 Host → servo Write one parameter 5 No response
W 0x57 Host → servo Write two parameters 8 No response
x 0x78 Host → servo Write one parameter and return the value 5 v, DLC = 5
X 0x58 Host → servo Write two parameters and return the values 8 V, DLC = 8
Q 0x51 Host → servo Begin continuous writes 2 No response
q 0x71 Host → servo End continuous writes and commit 2 No response
v 0x76 servo → Host Single-parameter response 5
V 0x56 servo → Host Dual-parameter response 8

4.2 Read One Parameter r/v

Request format:

Data[0] Data[1] Data[2]
0x72 Servo ID Address

Response format:

Data[0] Data[1] Data[2] Data[3] Data[4]
0x76 Servo ID Address ValueLow ValueHigh

Example: Read the single-turn angle at 0x18 for ID 1:

TX DLC=3: 72 01 18
RX DLC=5: 76 01 18 LL HH

4.3 Read Two Parameters R/V

Request format:

Data[0] Data[1] Data[2] Data[3]
0x52 Servo ID AddressA AddressB

Response format:

Data[0] Data[1] Data[2] Data[3] Data[4] Data[5] Data[6] Data[7]
0x56 Servo ID AddressA ValueA_L ValueA_H AddressB ValueB_L ValueB_H

Example: Read the low and high words of the multi-turn angle for ID 1:

TX DLC=4: 52 01 15 16
RX DLC=8: 56 01 15 L0 L1 16 H0 H1

4.4 Write One Parameter w

Packet format:

Data[0] Data[1] Data[2] Data[3] Data[4]
0x77 Servo ID Address ValueLow ValueHigh

This command does not return a response after writing.

Example: Write stop-and-hold value 0x0011 to address 0x7B of ID 1:

77 01 7B 11 00

4.5 Write One Parameter and Return the Value x/v

Request format:

78 ServoID Address ValueLow ValueHigh

Response format:

76 ServoID Address ActualValueLow ActualValueHigh

The response returns the actual parameter value after the servo write. The host controller must compare the returned value with the target value and must not assume that the write was completely accepted merely because a response was received.

4.6 Write Two Parameters W

Packet format:

Data[0] Data[1] Data[2] Data[3] Data[4] Data[5] Data[6] Data[7]
0x57 Servo ID AddressA ValueA_L ValueA_H AddressB ValueB_L ValueB_H

This command does not return a response after writing.

4.7 Write Two Parameters and Return the Values X/V

Request format:

58 ServoID AddressA ValueA_L ValueA_H AddressB ValueB_L ValueB_H

Response format:

56 ServoID AddressA ActualA_L ActualA_H AddressB ActualB_L ActualB_H

4.8 Begin Continuous Writes Q

51 ServoID

After receiving this command, the servo enters continuous-write buffer mode.

4.9 End Continuous Writes q

71 ServoID

After receiving this command, the servo commits the buffered contents and exits continuous-write mode.

Continuous-write rules:

  1. The buffer can receive up to eight groups of w or W writes.
  2. During buffering, x/X are equivalent to w/W respectively and do not generate responses.
  3. Read commands r/R may be used during buffering.
  4. After the eighth write, the servo automatically writes the current buffered contents.
  5. To support different firmware versions, the host controller should still explicitly send q to finish.
  6. Q, the writes, and q should use the same Servo ID.

4.10 Broadcast Execution Rules

ServoID=0xFF may be used only to synchronously execute motion commands that have already been buffered separately in multiple servo units.

Broadcast execution does not generate a response. Do not use 0xFF broadcasts for reads, ordinary writes, parameter configuration, or protected-area operations.


5. Memory Table

5.1 Table Description

The memory table uses the following fields:

Field Meaning
Address Parameter address
Parameter name Parameter purpose
Type Raw data type
Access Readable, writable, or write-only
Unit/Range Engineering unit and valid range
Activation Takes effect immediately after writing, on execution, or after power cycling
Notes Additional information

Parameters without a specified engineering unit should be treated as raw 16-bit values. Do not apply an assumed conversion.

5.2 Memory Address Overview

Address range Category
0x01~0x04 Device information
0x10~0x18 Real-time status
0x28 Motion damping mode
0x50~0x59 Angle motion control
0x78~0x7B Parameter reset, calibration, and stop control
0x80~0x90 Communication, protection, and power-on configuration
0x91~0x93 Angle limits
0xC8~0xD5 PID and protected parameters
0xFF Protected-area unlock control

5.3 Device Information Parameters 0x01~0x04

Address Parameter name Type Access Unit/Range Activation Notes
0x01 servo model uint16 R Model code Read-only
0x02 Firmware version uint16 R Version code
0x03 servo serial-number low word uint16 R Low 16 bits of the serial number
0x04 servo serial-number high word uint16 R High 16 bits of the serial number

5.4 Real-Time Status Parameters 0x10~0x18

Address Parameter name Type Access Unit/Range Activation Notes
0x10 servo voltage uint16 R Model-dependent Real-time update Conversion depends on the specific model
0x11 servo current uint16 R Model-dependent Real-time update Conversion depends on the specific model
0x12 servo power uint16 R Model-dependent Real-time update Conversion depends on the specific model
0x13 servo temperature uint16 R Model-dependent Real-time update Conversion depends on the specific model
0x14 servo status uint16 R Bit flags Real-time update See the low 8 bits in Section 6.8
0x15 Multi-turn current angle, low word uint16 R 0.1° Real-time update Forms a signed 32-bit value with 0x16
0x16 Multi-turn current angle, high word uint16 R 0.1° Real-time update Forms a signed 32-bit value with 0x15
0x17 Current turn count 16-bit R Turns Real-time update Direction and overflow rules depend on the specific model
0x18 Current single-turn angle signed 16-bit R -180.0°~180.0° Real-time update Raw unit: 0.1°

5.5 Motion Damping Parameter 0x28

Address Parameter name Type Access Unit/Range Activation Notes
0x28 Motion-damping-mode power uint16 R/W 0~1000 mW Takes effect immediately after writing An independent motion mode; this is not the stop-damping power

After power is written to 0x28, the servo immediately enters motion damping mode. It is not necessary to write 0x59 or 0x7B.

5.6 Angle-Motion Parameters 0x50~0x59

Address Parameter name Type Access Unit/Range Activation Notes
0x50 Time to target angle, low word uint16 R/W ms Parameter write Forms a uint32 value with 0x51
0x51 Time to target angle, high word uint16 R/W ms Parameter write Forms a uint32 value with 0x50
0x52 Motion mode uint16 R/W 0/1/2 Parameter write See Chapter 7
0x53 Target angle, low word uint16 R/W 0.1° Parameter write Forms a signed 32-bit value with 0x54
0x54 Target angle, high word uint16 R/W 0.1° Parameter write Forms a signed 32-bit value with 0x53
0x55 Angle-mode execution power uint16 R/W 0~65535 mW Parameter write Limited to 0~1000 mW in stop-damping mode
0x56 Startup acceleration time uint16 R/W ms Parameter write Used in acceleration/deceleration modes
0x57 Deceleration time near target uint16 R/W ms Parameter write Used in acceleration/deceleration modes
0x58 Maximum speed uint16 R/W 0.1°/s Parameter write Used in speed mode
0x59 Execute angle motion uint16 R/W 0/1 Write 1 to execute Executes 0x50~0x58 parameters

5.7 Reset, Calibration, and Stop Parameters 0x78~0x7B

Address Parameter name Type Access Write value Activation Notes
0x78 Restore factory parameters uint16 W 1 Executes on write Restores factory parameter settings
0x79 Clear current turn count uint16 W 1 Executes on write Clears the multi-turn count
0x7A Zero-point setting flag uint16 W 0: Set the current position as zero; nonzero: restore the factory zero point Executes on write A nonzero value restores only the factory zero point, not other parameters
0x7B Stop mode uint16 W 0x10/0x11/0x12 Executes on write See Chapter 8

5.8 Communication, Protection, and Power-On Configuration 0x80~0x90

Address Parameter name Type Access Unit/Range Activation Notes
0x80 Control response uint16 R/W Model-dependent Model-dependent Definitions may vary by model
0x81 servo ID uint16 R/W 0~254 Takes effect immediately Subsequent communication uses the new ID
0x82 CAN baud-rate index uint16 R/W 0~9 Firmware-dependent May take effect immediately or after a power cycle
0x83 Stall-protection function uint16 R/W 0=Off, 1=On Configuration write
0x84 Stall-protection power limit uint16 R/W 0~65535 mW Configuration write
0x85 Low-voltage protection threshold uint16 R/W 0~65535 mV Configuration write
0x86 High-voltage protection threshold uint16 R/W 0~65535 mV Configuration write
0x87 Temperature protection value uint16 R/W Model-dependent Configuration write Raw-value conversion depends on the specific model
0x88 Power protection value uint16 R/W 0~65535 mW Configuration write
0x89 Current protection value uint16 R/W 0~65535 mA Configuration write
0x8A Acceleration uint16 R/W Model-dependent Configuration write Raw 16-bit parameter
0x8B Power-protection hysteresis uint16 R/W 0 or 50~99% Configuration write 0 means disabled
0x8C Power-on holding-force switch uint16 R/W 0=Off, 1=On Configuration write
0x8E Angle-limit switch uint16 R/W 0=Off, 1=On Configuration write Used with 0x91~0x93
0x8F Power-on soft-start switch uint16 R/W 0=Off, 1=On Configuration write
0x90 Power-on soft-start time uint16 R/W 0~65535 ms Configuration write

5.9 Angle-Limit Parameters 0x91~0x93

Address Parameter name Type Access Unit/Range Activation Notes
0x91 Upper angle limit signed 16-bit R/W 0.1° Configuration write Used with the angle-limit switch
0x92 Lower angle limit signed 16-bit R/W 0.1° Configuration write Used with the angle-limit switch
0x93 Center offset signed 16-bit R/W 0.1° Configuration write

5.10 PID and Protected Parameters 0xC8~0xD5

Address Parameter name Type Access Unit/Range Activation Notes
0xC8 Kp uint16 R/W, protected Model-dependent After unlock
0xC9 Kd uint16 R/W, protected Model-dependent After unlock
0xCA Ki uint16 R/W, protected Model-dependent After unlock
0xCB PwmBias uint16 R/W, protected Model-dependent After unlock
0xCC HoldKp uint16 R/W, protected Model-dependent After unlock
0xCD HoldKd uint16 R/W, protected Model-dependent After unlock
0xCE HoldPwmBias uint16 R/W, protected Model-dependent After unlock
0xCF FullDeg uint16 R/W, protected Model-dependent After unlock
0xD0 PwmLimit uint16 R/W, protected Model-dependent After unlock
0xD1 NegativeDirectionMap uint16 R/W, protected Model-dependent After unlock
0xD2 PwmFreq uint16 R/W, protected Model-dependent After unlock
0xD3 DeadBand uint16 R/W, protected Model-dependent After unlock
0xD4 MotorDirMap uint16 R/W, protected Model-dependent After unlock
0xD5 VersionInfo uint16 R/W, protected Model-dependent After unlock

Unless the corresponding model-specific configuration documentation is available, changing protected parameters is not recommended.

5.11 Protected-Area Unlock Address 0xFF

Unlock the protected area:

77 ServoID FF E6 00

Then send the following within 500 ms:

77 ServoID FF 09 00

Relock the protected area after completing protected-area reads or writes:

77 ServoID FF 00 00

The unlocked state remains until it is actively relocked or the servo is powered on again. Some firmware versions return a correctly formatted response with values of 0 when the protected area is read while locked. Therefore, perform the unlock procedure before reliably reading PID parameters.


6. Parameter Encoding and Status Parsing

6.1 Single-Turn Angle Encoding

The single-turn angle is stored at address 0x18. Its raw type is signed 16-bit, and its unit is 0.1°:

AngleDegree = signed16(RawValue) / 10

Valid engineering range:

-180.0°~180.0°

6.2 Multi-Turn Angle Encoding

The multi-turn angle consists of 0x15/0x16 and forms a signed 32-bit value:

Raw32 = Word_0x15 | (Word_0x16 << 16)
AngleDegree = signed32(Raw32) / 10

6.3 Target-Angle Encoding

The target angle consists of 0x53/0x54 and forms a signed 32-bit value:

RawAngle = round(AngleDegree × 10)
WordLow  = RawAngle & 0xFFFF
WordHigh = (RawAngle >> 16) & 0xFFFF

The current product supports the following target-angle range:

-368640.0° to 368640.0° (±1024 turns)

6.4 Time-Parameter Encoding

  • 0x50/0x51: uint32, in ms.
  • 0x56: uint16, in ms.
  • 0x57: uint16, in ms.

Speed mode does not use or transmit the motion-time memory address 0x50/0x51. The command byte Q=0x51 is still used only in the continuous-write process; the two concepts are unrelated.

6.5 Speed-Parameter Encoding

The maximum-speed address is 0x58, with a raw unit of 0.1°/s:

RawSpeed = round(SpeedDegreePerSecond × 10)

6.6 Power-Parameter Encoding

Address Function Unit/Range
0x28 Motion-damping-mode power 0~1000 mW, takes effect on write
0x55 Angle-mode execution power 0~65535 mW
0x55 Stop-damping power Limited to 0~1000 mW in the stop-damping scenario

6.7 Voltage, Current, Power, and Temperature

0x10~0x13 return 16-bit raw measurement values. Different models may use different sensors or conversion parameters. Engineering-value conversion must follow the documentation for the specific model.

When using the supplied Fashion Star PC configuration software, the PC configuration software converts and displays values according to the currently supported models.

6.8 Status-Register Bit Definitions

The low 8 bits of address 0x14 are defined as follows:

Bit Status Condition for setting to 1 Condition for clearing
BIT0 Executing command A motion command is being executed Automatically cleared after execution
BIT1 Execution error A motion command failed Cleared after the next successful execution
BIT2 Stall error A stall is detected Cleared after the stall is removed
BIT3 Overvoltage Voltage is above the protection threshold Cleared after voltage returns to normal
BIT4 Undervoltage Voltage is below the protection threshold Cleared after voltage returns to normal
BIT5 Current error Current protection is triggered Cleared after current returns to normal
BIT6 Power error Power protection is triggered Cleared after power returns to normal
BIT7 Temperature error Temperature protection is triggered Cleared after temperature returns to normal

BIT8–BIT15 are undefined in the current version and must be ignored by the receiver.


7. Motion Control

7.1 Motion-Control Sequence

The general sequence for angle motion is:

  1. Write the motion mode 0x52.
  2. Write the target angle 0x53/0x54.
  3. Write the time, acceleration/deceleration, or speed parameters required by the selected mode.
  4. Write the execution power 0x55.
  5. Write 1 to 0x59 to execute the motion.

These parameters may also be submitted together using the continuous-write method in Sections 4.8 and 4.9.

7.2 Simple Mode

0x52 = 0

Parameters used:

  • Target angle 0x53/0x54.
  • Motion time 0x50/0x51.
  • Execution power 0x55.
  • Execute command 0x59=1.

7.3 Time-Based Acceleration/Deceleration Mode

0x52 = 1

Parameters used:

  • Target angle 0x53/0x54.
  • Motion time 0x50/0x51.
  • Acceleration time 0x56.
  • Deceleration time 0x57.
  • Execution power 0x55.
  • Execute command 0x59=1.

7.4 Speed-Based Acceleration/Deceleration Mode

0x52 = 2

Parameters used:

  • Target angle 0x53/0x54.
  • Maximum speed 0x58.
  • Acceleration time 0x56.
  • Deceleration time 0x57.
  • Execution power 0x55.
  • Execute command 0x59=1.

7.5 Motion-Mode Parameter Comparison

Parameter Simple mode Time-based acceleration/deceleration Speed-based acceleration/deceleration
Mode 0x52 0 1 2
Target angle 0x53/0x54 Used Used Used
Execution power 0x55 Used Used Used
Motion time 0x50/0x51 Used Used Not used
Acceleration time 0x56 Not used Used Used
Deceleration time 0x57 Not used Used Used
Maximum speed 0x58 Not used Not used Used
Execute 0x59=1 Used Used Used

7.6 Single-Turn and Multi-Turn Target Angles

The target angle is always transmitted through 0x53/0x54 as signed 0.1° data.

  • For single-turn applications, the recommended range is -180.0°~180.0°.
  • For multi-turn applications, the current product supports -368640.0°~368640.0°.
  • Transmit negative angles directly as signed 32-bit two's-complement values.

7.7 Executing Motion

After all required motion parameters have been written:

77 ServoID 59 01 00

Writing 1 to 0x59 executes the motion.

7.8 Motion Damping Mode 0x28

Motion damping mode is an independent motion mode. It does not use the target angle, motion time, or 0x59.

Write 0~1000 mW to 0x28 to execute it immediately:

77 ServoID 28 PowerLow PowerHigh

7.9 Continuous Writes and Synchronized Motion

A single servo can use Q/q to buffer and submit motion parameters together:

51 01
57 01 53 AL0 AL1 54 AH0 AH1
57 01 50 TL0 TL1 51 TH0 TH1
77 01 52 00 00
77 01 55 PL PH
77 01 59 01 00
71 01

7.10 Broadcast Execution for Multiple Servo Units

For synchronized motion of multiple servo units, first buffer the motion parameters separately for each servo unit, then use broadcast ID 0xFF to execute the buffered motion.

Broadcasts do not generate responses. Do not use broadcasts to read parameters or perform ordinary write-and-respond operations.


8. Stop and Calibration Control

8.1 Stop and Release Torque

Stop motion and release the output:

77 ServoID 7B 10 00

8.2 Stop and Hold Torque

Stop motion and hold the current position:

77 ServoID 7B 11 00

8.3 Stop Damping

Stop-damping power comes from 0x55. You must first write 0~1000 mW, and then send the stop-damping command:

77 ServoID 55 PowerLow PowerHigh
77 ServoID 7B 12 00

Send the two frames consecutively and in order. If the power write fails or the value is out of range, do not continue with 0x7B=0x12.

8.4 Difference Between Motion Damping and Stop Damping

Function Power address Power range Execution method
Motion damping mode 0x28 0~1000 mW Takes effect immediately after the power is written
Stop damping 0x55 0~1000 mW Write the power first, then write 0x7B=0x12

These two damping functions must not be mixed. 0x28 is not the stop-damping power address.

8.5 Clear Multi-Turn Count

77 ServoID 79 01 00

This operation changes the multi-turn position reference. Confirm that the mechanical structure is safe before executing it.

8.6 Set the Zero Point 0x7A

0x7A performs two zero-point operations according to the value written:

Write value Function Example
0 Set the current position of the servo as zero 77 ServoID 7A 00 00
Nonzero Restore the factory-configured zero point 77 ServoID 7A 01 00

Writing a nonzero value restores only the factory zero point; it does not restore other user parameters.

Before setting the zero point, confirm that the mechanical structure is safe and first place the servo in stop-and-release or stop-damping mode.

8.7 Restore Factory Parameters 0x78

Write 1 to 0x78:

77 ServoID 78 01 00

9. Servo Configuration

9.1 Change the Servo ID

The servo ID is stored at address 0x81, with a valid range of 0~254.

Example: Change ID 1 to ID 2:

78 01 81 02 00

The new ID takes effect immediately. After a successful write, all subsequent communication must use the new ID 2.

9.2 Change the CAN Baud Rate

The CAN baud-rate address is 0x82. Write the baud-rate index to this address.

Example: Change ID 1 to 1 Mbps, index 9:

78 01 82 09 00

9.3 When the Baud-Rate Change Takes Effect

Different servo firmware versions may use either of the following behaviors:

  • Switch immediately after the write.
  • Save the parameter immediately and switch after a power cycle.

Recommended procedure:

  1. Connect only the target servo to the bus during the change.
  2. Write the new baud-rate index.
  3. Try to read back 0x82 at the old baud rate.
  4. If the new index can still be read at the old baud rate, power cycle the servo before switching the host controller.
  5. If the servo stops responding immediately at the old baud rate, switch the host controller to the new baud rate for verification.
  6. All servo units on the same bus must use the same baud rate.

9.4 Configure Angle Limits

Angle limits use the following parameters:

  • 0x8E: angle-limit switch.
  • 0x91: upper angle limit.
  • 0x92: lower angle limit.
  • 0x93: center offset.

The upper limit, lower limit, and center offset are all signed 16-bit values with unit 0.1°.

9.5 Configure Protection Parameters

The protection parameters include:

  • Stall protection 0x83/0x84.
  • Low-voltage protection 0x85.
  • High-voltage protection 0x86.
  • Temperature protection 0x87.
  • Power protection 0x88.
  • Current protection 0x89.
  • Power-protection hysteresis 0x8B.

Power-protection hysteresis accepts only:

0       = Disabled
50~99  = Percentage hysteresis

9.6 Configure Power-On Behavior

  • 0x8C: power-on holding-force switch.
  • 0x8F: power-on soft-start switch.
  • 0x90: power-on soft-start time, in ms.

9.7 Read and Modify PID Parameters

PID and motor-control parameters are located at 0xC8~0xD5 and belong to the protected parameter area.

Ordinary users are not advised to modify this area. When modification is required, use the model-specific configuration parameters and the unlock procedure in Section 9.8.

9.8 Unlock and Relock the PID Protected Area

Unlock:

77 ServoID FF E6 00

Continue by sending the following within 500 ms:

77 ServoID FF 09 00

Relock after completion:

77 ServoID FF 00 00

10. Complete Communication Examples

All examples below use the standard CAN ID 0x321 and example Servo ID 0x01. Unless otherwise noted, all bytes are hexadecimal.

10.1 Read the Servo Model

TX DLC=3: 72 01 01
RX DLC=5: 76 01 01 LL HH

10.2 Read the Firmware Version

TX DLC=3: 72 01 02
RX DLC=5: 76 01 02 LL HH

10.3 Read the Single-Turn Angle

TX DLC=3: 72 01 18
RX DLC=5: 76 01 18 LL HH

RawAngle = signed16(LL | (HH << 8))
AngleDegree = RawAngle / 10

10.4 Read the Multi-Turn Angle

TX DLC=4: 52 01 15 16
RX DLC=8: 56 01 15 L0 L1 16 H0 H1

WordLow = L0 | (L1 << 8)
WordHigh = H0 | (H1 << 8)
RawAngle = signed32(WordLow | (WordHigh << 16))
AngleDegree = RawAngle / 10

10.5 Read Real-Time Voltage and Current

TX DLC=4: 52 01 10 11
RX DLC=8: 56 01 10 VL VH 11 CL CH

Physical-value conversion is determined by the specific servo model.

10.6 Move the Servo to a Specified Angle

Example: target angle 90.0°, motion time 1000 ms, simple mode:

57 01 53 84 03 54 00 00     # 90.0°,Raw=900
57 01 50 E8 03 51 00 00     # 1000 ms
77 01 52 00 00              # Simple mode
77 01 55 00 00              # Execution power
77 01 59 01 00              # Execute

10.7 Move in Time-Based Acceleration/Deceleration Mode

57 01 53 AL0 AL1 54 AH0 AH1
57 01 50 TL0 TL1 51 TH0 TH1
77 01 52 01 00
77 01 56 AccelLow AccelHigh
77 01 57 DecelLow DecelHigh
77 01 55 PowerLow PowerHigh
77 01 59 01 00

10.8 Move in Speed-Based Acceleration/Deceleration Mode

57 01 53 AL0 AL1 54 AH0 AH1
77 01 52 02 00
77 01 58 SpeedLow SpeedHigh
77 01 56 AccelLow AccelHigh
77 01 57 DecelLow DecelHigh
77 01 55 PowerLow PowerHigh
77 01 59 01 00

Speed mode does not transmit the motion-time memory address 0x50/0x51. When continuous writes are used, the command byte Q=0x51 is still used as described in Section 4.8.

10.9 Enter Motion Damping Mode

Example with 500 mW power:

77 01 28 F4 01

10.10 Stop and Hold Torque

77 01 7B 11 00

10.11 Stop and Release Torque

77 01 7B 10 00

10.12 Stop Damping

Example with 500 mW stop-damping power:

77 01 55 F4 01
77 01 7B 12 00

10.13 Change the Servo ID

Change ID 1 to ID 2:

78 01 81 02 00

10.14 Change the CAN Baud Rate

Change to 1 Mbps, index 9:

78 01 82 09 00

10.15 Clear the Turn Count

77 01 79 01 00

10.16 Set the Zero Point

77 01 7A 00 00

10.17 Synchronized Motion of Multiple Servo Units

Recommended procedure:

  1. Send Q + ServoID separately to each servo unit.
  2. Buffer each unit's motion parameters and 0x59=1 separately.
  3. Use the broadcast-execution method allowed by the protocol to trigger the buffered servo units synchronously.
  4. Do not wait for a response to the broadcast.

Before synchronized motion, confirm that all servo units use the same baud rate and that no Servo ID is duplicated.


11. Frequently Asked Questions and Troubleshooting

11.1 Servo Does Not Respond

Check the following in order:

  1. Whether the servo is powered correctly.
  2. Whether CAN_H and CAN_L are reversed.
  3. Whether the host controller and servo use the same baud rate.
  4. Whether standard frames are being used.
  5. Whether the CAN ID is 0x321.
  6. Whether the Servo ID is correct.
  7. Whether the DLC and command format are correct.
  8. Whether the bus termination resistance and grounding are appropriate.

11.2 Confusing the CAN ID with the Servo ID

The CAN ID is fixed at 0x321. The servo ID is located at Data[1]. Do not place the servo ID in the CAN ID.

11.3 Incorrect Standard-Frame or Extended-Frame Setting

This protocol uses 11-bit standard data frames. If the host controller is configured for 29-bit extended frames, the servo will not communicate normally according to this protocol.

11.4 Inconsistent CAN Baud Rates

All nodes on the same physical CAN bus must use the same baud rate. servo Units with different baud rates cannot be mixed on the same bus.

11.5 Unable to Connect After Changing the Baud Rate

Some firmware versions switch baud rates only after a power cycle. Try both the old and new baud rates and follow the procedure in Section 9.3.

11.6 Angle Values Differ by a Factor of 10

The raw unit of an angle is 0.1°. For example, a raw value of 1600 represents 160.0°, not 1600°.

To transmit 160.0°, encode it as:

160.0 × 10 = 1600

11.7 Incorrect Negative-Angle Parsing

Angles use signed two's-complement values. Parse them as signed 16-bit or signed 32-bit values. Do not treat them as unsigned values or automatically convert negative angles to 0~360°.

11.8 PID Parameters Read as 0

Some firmware versions still return a response when the protected area is locked, but all parameter values may be 0. Run the 0xFF unlock procedure before reading PID parameters, and relock the area after reading.

11.9 Stop Damping Has No Effect

Check that the operations are performed in the correct order:

Write 0x55 = 0 to 1000 mW first
Then write 0x7B = 0x12

Do not treat 0x28 as the stop-damping power address.

11.10 Multiple Servo Units Respond Simultaneously

Do not broadcast read commands or write-and-respond commands. Simultaneous responses from multiple servo units can cause bus data collisions. The broadcast ID is used only to execute buffered synchronized motion.


Appendix A: Quick Command Index

ASCII Hex Function TX DLC RX Command/DLC
r 0x72 Read one parameter 3 v / 5
R 0x52 Read two parameters 4 V / 8
w 0x77 Write one parameter 5 None
W 0x57 Write two parameters 8 None
x 0x78 Write one parameter and return the value 5 v / 5
X 0x58 Write two parameters and return the values 8 V / 8
Q 0x51 Begin continuous writes 2 None
q 0x71 End continuous writes and commit 2 None

Appendix B: Quick Memory-Address Index

Address Parameter Access Unit/Range
0x01 servo model R Model code
0x02 Firmware version R Version code
0x03/0x04 servo serial number R 32-bit
0x10 servo voltage R Model-dependent
0x11 servo current R Model-dependent
0x12 servo power R Model-dependent
0x13 servo temperature R Model-dependent
0x14 servo status R Bit flags
0x15/0x16 Multi-turn current angle R signed 32-bit, 0.1°
0x17 Current turn count R Turns
0x18 Current single-turn angle R signed 16-bit, 0.1°
0x28 Motion-damping-mode power R/W 0~1000 mW, takes effect on write
0x50/0x51 Time to target angle R/W uint32, ms
0x52 Motion mode R/W 0/1/2
0x53/0x54 Target angle R/W signed 32-bit, 0.1°
0x55 Angle-mode execution power R/W 0~65535 mW
0x56 Acceleration time R/W ms
0x57 Deceleration time R/W ms
0x58 Maximum speed R/W 0.1°/s
0x59 Execute angle motion R/W Write 1 to execute
0x78 Restore factory parameters W Write 1
0x79 Clear turn count W Write 1
0x7A Zero-point setting flag W 0=Current position is zero; nonzero=restore factory zero point
0x7B Stop mode W 0x10/0x11/0x12
0x80 Control response R/W Model-dependent
0x81 servo ID R/W 0~254
0x82 CAN baud-rate index R/W 0~9
0x83 Stall-protection function R/W 0/1
0x84 Stall-protection power limit R/W mW
0x85 Low-voltage protection threshold R/W mV
0x86 High-voltage protection threshold R/W mV
0x87 Temperature protection value R/W Model-dependent
0x88 Power protection value R/W mW
0x89 Current protection value R/W mA
0x8A Acceleration R/W Model-dependent
0x8B Power-protection hysteresis R/W 0 or 50~99%
0x8C Power-on holding-force switch R/W 0/1
0x8E Angle-limit switch R/W 0/1
0x8F Power-on soft-start switch R/W 0/1
0x90 Power-on soft-start time R/W ms
0x91 Upper angle limit R/W signed 16-bit, 0.1°
0x92 Lower angle limit R/W signed 16-bit, 0.1°
0x93 Center offset R/W signed 16-bit, 0.1°
0xC8~0xD5 PID and protected parameters R/W, protected Model-dependent
0xFF Protected-area unlock/relock W Control address

Appendix C: CAN Baud-Rate Index

Index CAN baud rate
0 50 Kbps
1 100 Kbps
2 125 Kbps
3 200 Kbps
4 250 Kbps
5 400 Kbps
6 500 Kbps (default)
7 750 Kbps
8 800 Kbps
9 1 Mbps

Appendix D: Status-Bit Quick Reference

Bit Status
BIT0 Executing command
BIT1 Execution error
BIT2 Stall error
BIT3 Overvoltage
BIT4 Undervoltage
BIT5 Current error
BIT6 Power error
BIT7 Temperature error