Edit on GitHub

Introduction

To control DYNAMIXEL, communication should be established according to the protocol of DYNAMIXEL. DYNAMIXEL is driven by receiving binary data. Examples of programs for the transmission of this kind of data are described in detail in the User’s Manual of DYNAMIXEL-only controller or the USB2DYNAMIXEL. Thus, this manual describes only the method and protocol of communication used in DYNAMIXEL on the assumption that Main Controller can transfer binary data.

TIP : See DYNAMIXEL Protocol Compatibility Table.

Note: MX(2.0) is a special firmware for the DYNAMIXEL MX series supporting the DYNAMIXEL Protocol 2.0. The MX(2.0) firmware can be upgraded from the Protocol 1.0 by using the Firmware Recovery in DYNAMIXEL Wizard 2.0.

Packet

Main Controller and DYNAMIXEL communicate each other by sending and receiving data called Packet. Packet has two kinds: Instruction Packet, which Main Controller sends to control DYNAMIXEL, and Status Packet, which DYNAMIXEL responses to Main Controller.

ID

ID is a specific number for distinction of each DYNAMIXEL when several DYNAMIXEL’s are linked to one bus. By giving IDs to Instruction and Status Packets, Main Controller can control only DYNAMIXEL that you want to control

DYNAMIXEL Protocol

DYNAMIXEL does the Asynchronous Serial Communication with 8 bit, 1 Stop bit, and None Parity.

If DYNAMIXEL with the same ID is connected, packet will collide and network problem will occur. Thus, set ID as such that there is no DYNAMIXEL with the same ID. To change the DYNAMIXEL’s ID, reference the DYNAMIXEL Control Table section in the DYNAMIXEL Wizard 2.0.

NOTE: The DYNAMIXEL’s initial ID is 1 at the factory condition.

Half Duplex

Half duplex UART is a serial communication protocol where both TxD and RxD cannot be used at the same time. This method is generally used when many devices need to be connected to a single bus. Since more than one device are connected to the same bus, all the other devices need to be in input mode while one device is transmitting. The Main Controller that controllers DYNAMIXEL actuators sets the communication direction to input mode, and only when it is transmitting an Instruction Packet, it changes the direction to output mode.

Tx, Rx Direction

For Half Duplex UART, the transmission ending timing is important to change the direction to receiving mode. The bit definitions within the register that indicates UART_STATUS are as the following

The TXD_BUFFER_READY_BIT is used when one byte is to be transmitted via the serial communication channel, and an example is shown below.

  TxDByte(byte bData)
  {
    while(!TXD_BUFFER_READY_BIT); //wait until data can be loaded.
    SerialTxDBuffer = bData; //data load to TxD buffer
  }

When changing the direction, the TXD_SHIFT_REGISTER_EMPTY_BIT must be checked. The following is an example program that sends an Instruction Packet

1  DIRECTION_PORT = TX_DIRECTION;
2  TxDByte(0xff);
3  TxDByte(0xff);
4  TxDByte(0xfd);
5  TxDByte(0x00);
6  TxDByte(bID);
7  TxDByte(bLengthLow);
8  TxDByte(bLengthHigh);
9  TxDByte(bInstruction);
10  TxDByte(Parameter0); TxDByte(Parameter1); ...
11  TxDByte(bCrcLow);
12  DisableInterrupt(); // interrupt should be disable
13  TxDByte(bCrcHigh);  // last TxD
14  while(!TXD_SHIFT_REGISTER_EMPTY_BIT); // Wait till last data bit has been sent
15  DIRECTION_PORT = RX_DIRECTION; // Direction change to RXD
16  EnableInterrupt(); // enable interrupt again

WARNING : Please note the important lines between LINE 12 and LINE 16. Line 12 is necessary since an interrupt here may cause a delay longer than the return delay time and corruption to the front of the status packet may occur.

Byte to Byte Time

The delay time between bytes when sending an instruction packet. If the delay time is over 1.5ms, then DYNAMIXEL actuator recognizes this as a communication problem and waits for the next header (0xff 0xff 0xfd) of a packet again.

Instruction Packet

Instruction Packet is the command packet sent to the Device.

Header 1 Header 2 Header 3 Reserved Packet ID Length 1 Length 2 Instruction Param Param Param CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 ID Len_L Len_H Instruction Param 1 Param N CRC_L CRC_H

The field that indicates the start of the Packet

Reserved

Uses 0X00 (Note that Reserved does not use 0XFD). The Reserved functions the same as Header.

See the next image of a table of the Packet Details of the DYNAMIXEL Wizard 2.0, which shows that the Reserved (0x00) are included in the Header field.

A table of Packet Details of DYNAMIXEL Wizard 2.0

Packet ID

The field that indicates an ID of the device that should receive the Instruction Packet and process it

  1. Range : 0 ~ 252 (0x00 ~ 0xFC), which is a total of 253 numbers that can be used
  2. Broadcast ID : 254 (0xFE), which makes all connected devices execute the Instruction Packet

WARNING: Be sure that Broadcast ID(254 (0xFE)) return Status Packet for Ping, Sync Read and Bulk Read only, other [Instruction] aside from Ping, Sync Read and Bulk Read will not return Status Packet to Broadcast ID.

Length

The field that indicates the length of packet field.

  1. Devided into low and high bytes in the Instruction Packet
  2. The Length indicates the Byte size of Instruction, Parameters and CRC fields

Instruction

The field that defines the type of commands.

Value Instructions Description
0x01 Ping Instruction that checks whether the Packet has arrived to a device with the same ID as Packet ID
0x02 Read Instruction to read data from the Device
0x03 Write Instruction to write data on the Device
0x04 Reg Write Instruction that registers the Instruction Packet to a standby status; Packet is later executed through the Action command
0x05 Action Instruction that executes the Packet that was registered beforehand using Reg Write
0x06 Factory Reset Instruction that resets the Control Table to its initial factory default settings
0x08 Reboot Instruction to reboot the Device
0x10 Clear Instruction to reset certain information
0x20 Control Table Backup Instruction to store current Control Table status data to a Backup area or to restore EEPROM data.
0x55 Status(Return) Return packet for the Instruction Packet
0x82 Sync Read For multiple devices, Instruction to read data from the same Address with the same length at once
0x83 Sync Write For multiple devices, Instruction to write data on the same Address with the same length at once
0x8A Fast Sync Read For multiple devices, Instruction to read data from the same Address with the same length at once
0x92 Bulk Read For multiple devices, Instruction to read data from different Addresses with different lengths at once
0x93 Bulk Write For multiple devices, Instruction to write data on different Addresses with different lengths at once
0x9A Fast Bulk Read For multiple devices, Instruction to read data from different Addresses with different lengths at once

Parameters

  1. As the auxiliary data field for Instruction, its purpose is different for each Instruction.
  2. Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product.

CRC

16bit CRC field which checks if the Packet has been damaged during communication.

  1. Devided into low and high bytes in the Instruction Packet
  2. Range of CRC calculation: From Header (FF FF FD 00) to Parameteres before CRC field in Instruction Packet
  3. Calculating CRC and examples: CRC Calculation

Status Packet

Status Packet is the response packet transmitted from the device to a main controller. Note that it has the same construction as the Instruction Packet except the ERROR field is added.

Header 1 Header 2 Header 3 Reserved Packet ID Length 1 Length 2 Instruction ERR PARAM PARAM PARAM CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 ID Len_L Len_H Instruction Error Param 1 Param N CRC_L CRC_H

Instruction

Instruction of the Status Packet is designated to 0x55 (Status)

Error

The field that indicates the processing result of Instruction Packet

Bit 7 Bit 6 ~ Bit 0
Alert Error Number
Error Number Error Description
0x01 Result Fail Failed to process the sent Instruction Packet
0x02 Instruction Error Undefined Instruction has been used
Action has been used without Reg Write
0x03 CRC Error CRC of the sent Packet does not match
0x04 Data Range Error Data to be written in the corresponding Address is outside the range of the minimum/maximum value
0x05 Data Length Error Attempt to write Data that is shorter than the data length of the corresponding Address
(ex: when you attempt to only use 2 bytes of a item that has been defined as 4 bytes)
0x06 Data Limit Error Data to be written in the corresponding Address is outside of the Limit value
0x07 Access Error Attempt to write a value in an Address that is Read Only or has not been defined
Attempt to read a value in an Address that is Write Only or has not been defined
Attempt to write a value in the ROM domain while in a state of Torque Enable(ROM Lock)

Parameters

  1. As the auxiliary data field for Instruction, its purpose is different for each Instruction.
  2. Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product

Response Policy

  1. Broadcast ID(254 (0xFE)) is responded to Ping, Sync Read and Bulk Read only. For instance, Broadcast ID is not responded to Sync Write and Bulk Write Instruction.
  2. A response to Instruction can be determined depending on a value of Status Return Level in Control Table. For more details, see the selectable value from Status Return Level in Control Table of the DYNAMIXEL in use.

Packet Process

Processing Order of Transmission

  1. Generate basic form of Packet and afterwards Byte Stuffing(0xFD)
    • Inspection range : Everything within the Instruction field to the Parameter field (not the CRC)
    • Processing method : When the pattern “0xFF 0xFF 0xFD” appears, add Byte Stuffing (0xFD) (If “0xFF 0xFF 0xFD” already exists, add a 0xFD to change it to “0xFF 0xFF 0xFD 0xFD”)
  2. Length : Modify to Length with Byte Stuffing applied
  3. CRC : Calculate CRC with Byte Stuffing applied

Processing Order of Reception

  1. Search for Header(0xFF 0xFF 0xFD) : Ignore the Byte Stuffing(“0xFF 0xFF 0xFD 0xFD”).
  2. Packet ID : If Packet ID is valid, receive additional transmission the size of Length
  3. CRC : Calculate with the received Packet with Byte Stuffing included, and once CRC is matched then remove Byte Stuffing

Instruction Details

Note that given examples use the following abbreviation to provide clear information.

Ping (0x01)

Description

Packet Parameters

Note : Status Packet is received from each Device.

Status Packet Description
Parameter 1 Model Number LSB
Parameter 2 Model Number MSB
Parameter 3 Version of Firmware

Example 1

Conditions

Ping Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x01 0x19 0x4E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x65 0x5D

Example 2

Conditions

Ping Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0xFE 0x03 0x00 0x01 0x31 0x42

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x65 0x5D

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x6F 0x6D

Read (0x02)

Description

Note: If requesting the response for the excess range of its Control Table, the Status packet will fill Access Error in its error field, and return the packet with no parameters.

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length (X)
Parameter 4 High-order byte from the data length (X)
Status Packet Description
Parameter 1 First Byte
Parameter 2 Second Byte
Parameter X X-th Byte

Example

Conditions

Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x02 0x84 0x00 0x04 0x00 0x1D 0x15

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x55 0x00 0xA6 0x00 0x00 0x00 0x8C 0xC0

Write (0x03)

Description

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 2+1 First Byte
Parameter 2+2 Second Byte
Parameter 2+X X-th Byte

Example

Conditions

Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x09 0x00 0x03 0x74 0x00 0x00 0x02 0x00 0x00 0xCA 0x89

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Reg Write (0x04)

Description

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 2+1 First Byte
Parameter 2+2 Second Byte
Parameter 2+X X-th Byte

Example

Condition

Reg Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x09 0x00 0x04 0x68 0x00 0xC8 0x00 0x00 0x00 0xAE 0x8E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Action (0x05)

Description

Example

Condition

Action Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x05 0x02 0xCE

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Factory Reset (0x06)

Description

Parameters

Instruction Packet Description
Parameter 1 0xFF : Reset all
0x01 : Reset all except ID
0x02 : Reset all except ID and Baudrate

Example

Conditions

Factory Reset Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x06 0x01 0xA1 0xE6

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Reboot (0x08)

Description

Example

Conditions

Reboot Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x08 0x2F 0x4E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Clear (0x10)

Description

Parameters

P1 P2 ~ P5 Description
0x01 Fixed Values
(0x44 0x58 0x4C 0x22)
Reset the Present Position value to an absolute value within one rotation (0-4095).
The Clear instruction can only be applied when DYNAMIXEL is stopped.
Note that if DYNAMIXEL is in motion and the Clear Instruction packet is sent, Result Fail (0x01) will be sent via the Error field of the Status Packet.
0x02 Fixed value
(0x45 0x52 0x43 0x4C)
Clear errors that occurred in DYNAMIXEL.
If an error cannot be cleared or the conditions for clearance are not met, the error remains uncleared, and Result Fail (0x01) is displayed in the Error field of the Status Packet.
Support only DYNAMIXEL Y series.
- Reserved
0xFF - Reserved

Example

Conditions

Clear Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x10 0x01 0x44 0x58 0x4C 0x22 0xB1 0xDC

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Control Table Backup (0x20)

Description

Note

Parameters

P1 P2 ~ P5 Description
0x01 Fixed Values
(0x43 0x54 0x52 0x4C)
Store current Control Table status data to a Backup area
0x02 Fixed Values
(0x43 0x54 0x52 0x4C)
Restore EEPROM data from Backup area.
After processing packets, DYNAMIXEL reboots itself
0x03 - Reserved
- Reserved
0xFF - Reserved

Example

Example 1 Conditions

Control Table Backup Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x20 0x01 0x43 0x54 0x52 0x4C 0x16 0xF5

ID1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Example 2 Conditions

Control Table EEPROM Restoring Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x20 0x02 0x43 0x54 0x52 0x4C 0x92 0xF5

ID1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Sync Read (0x82)

Description

Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 4+1 ID of the 1st Device
Parameter 4+2 ID of the 2nd Device
Parameter 4+X ID of the X-th Device
Status Packet Description
Parameter 1 Frist Byte
Parameter 2 Second Byte
Parameter X X-th Byte

Note : Each device individually returns Status Packet for Sync Read instruction.

Example

Conditions

Sync Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0xFE 0x09 0x00 0x82 0x84 0x00 0x04 0x00 0x01 0x02 0xCE 0xFA

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x55 0x00 0xA6 0x00 0x00 0x00 0x8C 0xC0

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x08 0x00 0x55 0x00 0x1F 0x08 0x00 0x00 0xBA 0xBE

Sync Write (0x83)

Description

Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 5 [1st Device] ID
Parameter 5+1 [1st Device] 1st Byte
Parameter 5+2 [1st Device] 2nd Byte
[1st Device]…
Parameter 5+X [1st Device] X-th Byte
Parameter 6 [2nd Device] ID
Parameter 6+1 [2nd Device] 1st Byte
Parameter 6+2 [2nd Device] 2nd Byte
[2nd Device]…
Parameter 6+X [2nd Device] X-th Byte

Example

Conditions

Sync Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4
0xFF 0xFF 0xFD 0x00 0xFE 0x11 0x00 0x83 0x74 0x00 0x04 0x00
P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 CRC 1 CRC 2
0x01 0x96 0x00 0x00 0x00 0x02 0xAA 0x00 0x00 0x00 0x82 0x87

Fast Sync Read (0x8A)

Description

Note: DYNAMIXEL Tips | Use Fast Sync and Fast Bulk Read Instruction for Speedy Communication

Parameter

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 4+1 1st Device ID
Parameter 4+2 2nd Device ID
Parameter 4+n Nnd Device ID
Status Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device First Byte
Parameter 3 1st Device Second Byte
Parameter X 1st Device X-th Byte
Parameter X+1 1st Device Low-order byte from CRC
Parameter X+2 1st Device High-order byte from CRC
Parameter X+3 2nd Device Error
Parameter X+4 2nd Device ID
Parameter X+4+1 2nd Device First Byte
Parameter X+4+2 2nd Device Second Byte
Parameter 2X+4 2nd Device X-th Byte
Parameter 2X+4+1 2nd Device Low-order byte from CRC
Parameter 2X+4+2 2nd Device High-order byte from CRC
Parameter nX+4 Nnd Device X-th Byte

Note: CRC values are used for internal calculation in DYNAMIXEL to confirm packet integrity between DYNAMIXELs. You can let the main controller check CRC only at the end of Status Packet.

Note: Each device respectively returns a particular part of Status Packet in response to Fast Sync Read Instruction. For more details, see Example below.

Note: Fast Sync Read Status Packet does not perform Byte Stuffing(0xFD) process.

Example

Example Description

Fast Sync Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x0A 0x00 0x8A 0x84 0x00 0x04 0x00 0x03 0x07 0x04 0x20 0xF2

ID 3 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR ID1 D1 D2 D3 D4 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x19 0x00 0x55 0x00 0x03 0xA6 0x00 0x00 0x00 0x84 0x08

ID 7 Status Packet

ERR ID2 D1 D2 D3 D4 CRC1 CRC2
0x00 0x07 0x1F 0x08 0x00 0x00 0x16 0xCA

ID 4 Status Packet

ERR ID3 D1 D2 D3 D4 CRC1 CRC2
0x00 0x04 0xFF 0x03 0x00 0x00 0xD1 0x9E

Bulk Read (0x92)

Description

Parameters

Instruction Packet Description
Parameter 1 [1st Device] ID
Parameter 2 [1st Device] Low-order byte from the starting address
Parameter 3 [1st Device] High-order byte from the starting address
Parameter 4 [1st Device] Low-order byte from the data
Parameter 5 [1st Device] High-order byte from the data
Parameter 6 [2nd Device] ID
Parameter 7 [2nd Device] Low-order byte from the starting address
Parameter 8 [2nd Device] High-order byte from the starting address
Parameter 9 [2nd Device] Low-order byte from the data
Parameter 10 [2nd Device] High-order byte from the data
Status Packet Description
Parameter 1 1st Byte
Parameter 2 2nd Byte
Parameter X X-th Byte

Note : Each device individually returns Status Packet for Bulk Read instruction. See the Example below for more details.

Example

Condition

Bulk Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5
0xFF 0xFF 0xFD 0x00 0xFE 0x0D 0x00 0x92 0x01 0x90 0x00 0x02 0x00
P6 P7 P8 P9 P10 CRC 1 CRC 2
0x02 0x92 0x00 0x01 0x00 0x1A 0x05

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x06 0x00 0x55 0x00 0x77 0x00 0xC3 0x69

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x05 0x00 0x55 0x00 0x24 0x8B 0xA9

Bulk Write (0x93)

Description

Parameters

Instruction Packet Description
Parameter 1 [1st Device] ID
Parameter 2 [1st Device] Low-order byte from the starting address
Parameter 3 [1st Device] High-order byte from the starting address
Parameter 4 [1st Device] Low-order byte from the data length(X)
Parameter 5 [1st Device] High-order byte from the data length(X)
Parameter 5+1 [1st Device] 1st Byte
Parameter 5+2 [1st Device] 2nd Byte
Parameter 5+X [1st Device] X-th Byte
Parameter 6+X [2nd Device] ID
Parameter 7+X [2nd Device] Low-order byte from the starting address
Parameter 8+X [2nd Device] High-order byte from the starting address
Parameter 9+X [2nd Device] Low-order byte from the data length(X)
Parameter 10+X [2nd Device] High-order byte from the data length(X)
Parameter 10+X+1 [2nd Device] 1st Byte
Parameter 10+X+2 [2nd Device] 2nd Byte
Parameter 10+X+Y [2nd Device] Y-th Byte

Example

Condition

Bulk Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7
0xFF 0xFF 0xFD 0x00 0xFE 0x10 0x00 0x93 0x01 0x20 0x00 0x02 0x00 0xA0 0x00
P8 P9 P10 P11 P12 P13 CRC 1 CRC 2
0x02 0x1F 0x00 0x01 0x00 0x50 0xB7 0x68

Fast Bulk Read (0x9A)

Description

Note: DYNAMIXEL Tips | Use Fast Sync and Fast Bulk Read Instruction for Speedy Communication

Parameters

Instruction Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device Low-order byte from the starting address
Parameter 3 1st Device High-order byte from the starting address
Parameter 4 1st Device Low-order byte from the data length(X1)
Parameter 5 1st Device High-order byte from the data length(X1)
Parameter 6 2nd Device ID
Parameter 7 2nd Device Low-order byte from the starting address
Parameter 8 2nd Device High-order byte from the starting address
Parameter 9 2nd Device Low-order byte from the data length(X2)
Parameter 10 2nd Device High-order byte from the data length(X2)
Status Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device First Byte
Parameter 3 1st Device Second Byte
Parameter X1 1st Device X1-th Byte
Parameter X1+1 1st Device Low-order byte from CRC
Parameter X1+2 1st Device High-order byte from CRC
Parameter X1+3 2nd Device Error
Parameter X1+4 2nd Device ID
Parameter X1+4+1 2nd Device First Byte
Parameter X1+4+2 2nd Device Second Byte
Parameter X1+4+X2 2nd Device X2-th Byte
Parameter X1+4+X2+1 2nd Device Low-order byte from CRC
Parameter X1+4+X2+2 2nd Device High-order byte from CRC
Parameter X1+4+X2+
⋯ 4+Xn
Nnd Device Xn-th Byte

Note: CRC values are used for internal calculation in DYNAMIXEL to confirm packet integrity between DYNAMIXELs. You can let the main controller check CRC only at the end of Status Packet.

Note: Each device respectively returns a particular part of Status Packet in response to Fast Bulk Read Instruction. For more details, see Example below.

Note: Status Packet responded from Fast Bulk Read does not perform Byte Stuffing(0xFD) process.

Example

Example Description

Fast Bulk Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7 P8
0xFF 0xFF 0xFD 0x00 0xFE 0x12 0x00 0x9A 0x03 0x84 0x00 0x04 0x00 0x07 0x7C 0x00
P9 P10 P11 P12 P13 P14 P15 CRC1 CRC2
0x02 0x00 0x04 0x92 0x00 0x01 0x00 0x20 0xF2

ID 3 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR ID1 D1 D2 D3 D4 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x14 0x00 0x55 0x00 0x03 0xA6 0x00 0x00 0x00 0x67 0xA4

ID 7 Status Packet

ERR ID2 D1 D2 CRC1 CRC2
0x00 0x07 0xA5 0x01 0x24 0x74

ID 4 Status Packet

ERR ID2 D1 CRC1 CRC2
0x00 0x04 0x1F 0xD9 0xC1