DYNAMIXEL 서보는 직렬 통신과 제어 동작을 위해 DYNAMIXEL Protocol을 사용합니다. 이 문서는 DYNAMIXEL Protocol 2.0 통신 사양을 설명하는 참고 문서입니다.
DYNAMIXEL Protocol 2.0 통신은 다음 서보에서 지원됩니다:
참고: MX(2.0)은 DYNAMIXEL Protocol 2.0을 지원하기 위한 DYNAMIXEL MX 시리즈 전용 펌웨어입니다. DYNAMIXEL Wizard 2.0의 Firmware Recovery를 사용해 서보에 MX(2.0) 펌웨어를 업로드할 수 있습니다.
DYNAMIXEL Protocol 2.0 통신은 다음 제어기에서 지원됩니다:
Packet
Main Controller와 DYNAMIXEL은 Packet이라고 불리는 데이터를 주고 받으며 통신합니다. Packet에는 두 가지 종류가 있습니다. Main Controller가 DYNAMIXEL을 제어하기 위해 전송하는 Instruction Packet과 DYNAMIXEL이 Main Controller로 답변하는 Status Packet이 그것입니다.
ID는 한 개의 버스에 여러 개의 DYNAMIXEL이 연결되었을 때 각각의 DYNAMIXEL들을 구별하기 위해 만든 고유 번호입니다.
Instruction Packet과 Status Packet에 ID를 넣음으로써 Main Controller는 제어하고자 하는 DYNAMIXEL만을 제어할 수 있습니다.
만약 같은 ID 를 가진 DYNAMIXEL이 연결되었을 경우 Packet 충돌이 일어나서 통신에 문제를 일으키게 됩니다.
그러므로 ID가 같은 DYNAMIXEL이 존재하지 않도록 ID설정을 해야 합니다. ID 설정을 위해서는, DYNAMIXEL 위자드 2.0에서 컨트롤 테이블을 참고 하세요.
참고: DYNAMIXEL은 공장 출하시 초기 ID가 1번입니다.
DYNAMIXEL Protocol
DYNAMIXEL은 8 bit, 1 Stop bit, None Parity의 Asynchronous Serial 통신을 합니다.
Half Duplex
Half Duplex란 TxD, RxD를 하나의 선으로 공유하는 통신 방식으로 DYNAMIXEL은 Half Duplex 방식을 사용하고 있습니다.
보통 하나의 BUS에 여러 개의 통신 장치를 연결할 경우에 사용합니다.
여러 개의 장치가 송신하는 동안 그 외의 다른 모든 장치들은 입력 상태이어야 하기 때문에 통신 방향을 제어하는 Direction Port가 필요합니다.
DYNAMIXEL을 제어하는 Main Controller는 통신 방향을 입력으로 설정해 놓고 있다가 Instruction Packet을 전송하는 동안만 통신 방향을 출력으로 설정해야 합니다.

Tx, Rx Direction
Half Duplex 통신 방식을 사용하기 위해 필요한 제어 방법입니다.
RS485 UART 에서는 송신이 끝나는 Timing 을 잘 맞춰서 Direction 을 수신 Mode 로 바꾸어야 합니다.
CPU 에서는 일반적으로 UART_STATUS 를 표시해주는 REGISTER 내에 다음과 같은 의미의 BIT 가 있습니다.
- TXD_BUFFER_READY_BIT: Transmission DATA 를 Buffer 에 적재할 수 있는 상태임을 뜻합니다. 상태는 SERIAL TX BUFFER 가 비어 있다는 의미이지, 이전에 전송한 데이터가 모두 CPU 밖으로 배출된 상태를 의미하는 것은 아닙니다.
- TXD_SHIFT_REGISTER_EMPTY_BIT: Transmission Data가 모두 CPU 밖으로 배출되었을 때 SET 됩니다.
TXD_BUFFER_READY_BIT 의 경우는 Serial 통신에서 한 Byte 를 송신할 때 사용되며 그 예는 다음과 같습니다.
TxDByte(byte bData)
{
while(!TXD_BUFFER_READY_BIT);
SerialTxDBuffer = bData;
}
Direction을 전환하는 시점에서는 TXD_SHIFT_REGISTER_EMPTY_BIT를 확인해야 합니다. 다음은 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();
13 TxDByte(bCrcHigh);
14 while(!TXD_SHIFT_REGISTER_EMPTY_BIT);
15 DIRECTION_PORT = RX_DIRECTION;
16 EnableInterrupt();
주의: LINE 12부터 LINE 16까지의 부분에 주의하세요. LINE 12가 필요한 이유는 해당 시점에 Interrupt가 발생해 Return Delay Time보다 긴 시간 동안 Interrupt routine이 수행될 경우 Status Packet의 앞부분이 손상될 수 있기 때문입니다.
Byte to Byte Time
Instruction Packet을 전송할 때 Byte와 Byte사이의 Delay Time을 의미하는데, 이 시간이 1.5 msec가 넘을 경우 DYNAMIXEL은 전송 장애가 발생한 것으로 간주하고, 다시 Packet의 header(0xff 0xff 0xfd)를 기다립니다

Instruction Packet
Instruction Packet은 Main Controller가 장치(Device)로 보내는 명령 Packet입니다. Packet 구조는 다음과 같습니다.
| 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 | Packet ID | Len_L | Len_H | Instruction | Param 1 | ... | Param N | CRC_L | CRC_H |
Packet의 시작을 나타내는 필드입니다.
Reserved
Header 필드에 포함되는 추가 0x00 byte입니다.
DYNAMIXEL Wizard 2.0의 Packet 상세 정보에서 Reserved는 Header에 포함되어 표시됩니다.

DYNAMIXEL 위자드 2.0 패킷 상세정보
Packet ID
Instruction Packet을 받아 처리해야 할 장치의 ID를 나타내는 필드.
- 범위 : 0 ~ 252 (0x00 ~ 0xFC) 까지 253 개 사용할 수 있습니다
- Broadcast ID : 254 (0xFE), 연결된 모든 장치가 Instruction Packet을 실행하도록 함.
Length
Packet의 길이를 나타냄.
- 하위 바이트와 상위 바이트를 Instruction Packet에서 나누어서 보냄.
- Length는 Instruction, Parameter, CRC 필드의 Byte Size를 나타내는 필드
Length = Parameter 개수 + 3
- Status Packet의 Length에는 ERROR 필드를 나타내는 1바이트가 추가.
Instruction
Packet의 용도를 정의하는 필드
| 값 | 명령 | 설명 |
|---|
| 0x01 | Ping | Packet ID와 동일한 ID를 가지는 장치에 Packet이 도달했는지 여부 확인을 위한 Instruction |
| 0x02 | Read | 장치로부터 데이터를 읽어오기 위한 Instruction |
| 0x03 | Write | 장치에 데이터를 쓰기 위한 Instruction |
| 0x04 | Reg Write | Instruction Packet을 대기 상태로 등록하는 Instruction, Action 명령에 의해 실행됩니다 |
| 0x05 | Action | Reg Write 로 미리 등록한 Packet을 실행하는 Instruction |
| 0x06 | Factory Reset | Control Table을 공장 출하 상태의 기본값으로 되돌리는 Instruction |
| 0x08 | Reboot | 장치를 재부팅 시키는 Instruction |
| 0x10 | Clear | 장치의 특정 상태를 해제하는 Instruction |
| 0x20 | Control Table Backup | Control Table을 Backup 또는 복구하기 위한 Instruction |
| 0x55 | Status(반환) | Instruction Packet에 대한 반환 packet |
| 0x82 | Sync Read | 다수의 장치에 대해서, 동일한 Address에서 동일한 길이의 데이터를 한 번에 읽기 위한 Instruction |
| 0x83 | Sync Write | 다수의 장치에 대해서, 동일한 Address에 동일한 길이의 데이터를 한 번에 쓰기 위한 Instruction |
| 0x8A | Fast Sync Read | 다수의 장치에 대해서, 동일한 Address에서 동일한 길이의 데이터를 한 번에 읽기 위한 Instruction |
| 0x92 | Bulk Read | 다수의 장치에 대해서, 서로 다른 Address에서 서로 다른 길이의 데이터를 한 번에 읽기 위한 Instruction |
| 0x93 | Bulk Write | 다수의 장치에 대해서, 서로 다른 Address에 서로 다른 길이의 데이터를 한 번에 쓰기 위한 Instruction |
| 0x9A | Fast Bulk Read | 다수의 장치에 대해서, 서로 다른 Address에서 서로 다른 길이의 데이터를 한 번에 읽기 위한 Instruction |
Parameters
- Instruction의 보조 데이터 필드로써, Instruction 별로 용도가 다릅니다.
주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.
CRC
Packet이 통신 중에 파손되었는지를 점검하기 위한 필드 (16bit CRC)
- 하위 바이트와 상위 바이트를 Instruction Packet에서 나누어서 보냄.
- CRC 계산 범위: Instruction Packet의 Header (FF FF FD 00)를 포함하여, CRC 필드 이전까지.
- CRC 계산 방법 및 예제 : CRC Calculation
Status Packet
Status Packet은 장치(Device)가 Instruction Packet을 수신한 뒤 Main Controller로 전송하는 응답 Packet입니다. Error 필드가 추가되는 것을 제외하면 Instruction Packet과 구성이 동일합니다.
| 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
Status Packet의 Instruction은 0x55(Status)로 고정되며, 반환되는 모든 Status Packet에 포함되어야 합니다.
Error
Instruction Packet의 처리 결과를 나타내는 필드입니다.
| Bit 7 | Bit 6 ~ Bit 0 |
|---|
| Alert | Error Number |
- Alert : 장치에 하드웨어적인 문제가 발생한 경우 1로 설정됩니다. 이 경우 Control Table의 Hardware error status 값을 읽으면 문제의 원인을 확인할 수 있습니다.
- Error Number : Instruction Packet의 처리에 Error 가 발생한 경우.
| Error Number | Error | 설명 |
|---|
| 0x01 | Result Fail | 전송된 Instruction Packet을 처리하는데 실패한 경우 |
| 0x02 | Instruction Error | 정의되지 않은 Instruction을 사용한 경우 Reg Write 없이 Action 을 사용한 경우 |
| 0x03 | CRC Error | 전송된 Packet의 CRC 값이 맞지 않는 경우 |
| 0x04 | Data Range Error | 해당 Address에 쓰려는 Data가 최소/최대값의 범위를 벗어난 경우 |
| 0x05 | Data Length Error | 해당 Address 의 데이터 길이보다 짧은 데이터를 적으려고 한 경우 (예: 4 byte로 정의된 항목의 2 byte 만 쓰려고 하는 경우) |
| 0x06 | Data Limit Error | 해당 Address에 쓰려는 Data가 Limit 값을 벗어난 경우 |
| 0x07 | Access Error | Read Only 혹은 정의되지 않은 Address에 값을 쓰려고 한 경우 Write Only 혹은 정의되지 않은 Address에 값을 읽으려고 한 경우 Torque Enable(ROM Lock) 상태에서 ROM 영역에 값을 쓰려고 한 경우 |
Parameters
- Instruction의 보조 데이터 필드로써, Instruction마다 용도가 다릅니다.
주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.
Response Policy
Control Table의 Status Return Level 값에 따라 응답 여부가 결정됩니다. 각 장치의 Status Return Level에서 설정 가능한 값을 참고하세요.
Packet 처리
전송 시 처리 순서
- 필요한 Parameter를 포함하여 Packet의 기본 구조를 생성합니다.
- Packet이 올바르게 처리될 수 있도록 Byte Stuffing을 적용합니다.
- 추가된 Byte Stuffing 데이터를 포함하도록 Packet Length를 갱신합니다.
- Byte Stuffing이 적용된 상태에서 최종 CRC를 계산합니다.
알림: Byte Stuffing은 생성된 Instruction Packet이 올바르게 처리될 수 있도록 추가 데이터를 삽입하는 방법입니다. Packet에 "0xFF 0xFF 0xFD" 패턴이 나타날 경우, 이 패턴이 다른 Packet의 Header로 해석되지 않도록 0xFD를 추가하여 "0xFF 0xFF 0xFD 0xFD"로 변환합니다.
수신 시 처리 순서
- Header(0xFF 0xFF 0xFD)를 검색하며, Byte Stuffing(0xFF 0xFF 0xFD 0xFD)이 발견되면 무시합니다.
- Packet ID가 유효하면, Length 크기만큼 추가 전송 데이터를 수신할 준비를 합니다.
- Byte Stuffing이 포함된 수신 Packet으로 CRC를 계산하고, CRC가 일치하면 수신 Packet에서 Byte Stuffing을 제거합니다.
- 수신한 Packet을 실행합니다.
Instruction 상세
설명의 편의를 위하여, 다음과 같은 약어를 사용.
- Header : H
- Reserved: RSRV
- Length: LEN
- Instruction: INST
- Error: ERR
- Param: P
Ping (0x01)
- 장치의 존재 여부 및 기본 정보를 얻기 위한 Instruction
- 장치는 Status Return Level에 관계없이, Ping Instruction에는 무조건 Status Packet을 전송
- Packet ID 필드가 0xFE(Broadcast ID)인 경우, 모든 장치는 정해진 순서에 따라 자신의 Status Packet을 전송
Packet Parameters
참고: Status Packet은 각 장치로부터 수신됩니다.
| Status Packet | 설명 |
|---|
| Parameter 1 | 모델번호 LSB |
| Parameter 2 | 모델번호 MSB |
| Parameter 3 | 펌웨어 Version |
예제 1
- ID1(XM430-W210) : Model Number 1030(0x0406), Version of Firmware 38(0x26)인 경우
- Instruction Packet ID : 1
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 |
예제 2
- ID1(XM430-W210) : Model Number 1030(0x0406), Version of Firmware 38(0x26)인 경우
- ID2(XM430-W210) : Model Number 1030(0x0406), Version of Firmware 38(0x26)인 경우
- Instruction Packet ID : 254(Broadcast ID)
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)
- Control Table 의 값을 읽어오기 위한 Instruction
- Broadcast ID(254 (0xFE))에 대해서는 응답하지 않습니다.
주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.
참고: Control Table 범위를 초과하여 요청할 경우 Error 필드에 Access Error가 채워지고, Parameter가 없는 Status Packet을 응답합니다.
Packet Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 3 | 데이터 길이(X)의 하위 바이트 |
| Parameter 4 | 데이터 길이(X)의 상위 바이트 |
| Status Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 바이트 |
| Parameter 2 | 두 번째 바이트 |
| ... | ... |
| Parameter X | X 번째 바이트 |
- ID1(XM430-W210) : Present Position(132, 0x0084, 4[byte])이 166(0x000000A6)인 경우
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)
주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.
Packet Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 2+1 | 첫 번째 바이트 |
| Parameter 2+2 | 두 번째 바이트 |
| ... | ... |
| Parameter 2+X | X번째 바이트 |
- ID1(XM430-W210) : Goal Position(116, 0x0074, 4[byte])를 512(0x00000200)로 변경하려는 경우
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)
- Write Instruction과 유사하지만, 동기화 특성이 향상된 Instruction
- Write Instruction은 Instruction Packet을 받으면 즉시 실행됩니다.
- Reg Write 와 Action Instruction을 사용하면, 다수의 장치를 동시에 구동할 수 있습니다.
- Reg Write Instruction은 Instruction Packet을 대기 상태로 등록하고, Control table Registered Instruction을 ‘1’로 설정합니다.
- Action Instruction을 수신하면, 등록된 Packet을 실행하고, Control Table Registered Instruction을 ‘0’으로 변경합니다.
Packet Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 2+1 | 첫 번째 바이트 |
| Parameter 2+2 | 두 번째 바이트 |
| ... | ... |
| Parameter 2+X | X번째 바이트 |
- ID1(XM430-W210) : Goal Velocity(104, 0x0068, 4[byte])를 200(0x000000C8)로 변경하려는 경우
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)
- Reg Write Instruction으로 등록된 Packet을 실행하라는 Instruction
- Write Instruction으로 다수의 장치를 제어할 경우, Packet을 최초로 수신한 장치와 마지막으로 수신한 장치는 실행 시점에 차이가 발생함.
- Reg Write 와 Action Instruction을 사용하면, 다수의 장치를 동시에 구동할 수 있습니다.
- ID1(XM430-W210) : Reg Write Instruction에 의해 Instruction이 등록된 경우
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)
- Control Table 을 공장 출하 시의 기본값으로 되돌리는 Instruction.
- Factory Reset (0x06) Instruction이 실행되면, 장치는 재부팅되고 LED가 4번 점멸
주의: Packet ID가 Broadcast ID(0xFE)이고 Option이 Reset all value(0xFF)일 경우, Factory Reset Instruction (0x06)은 동작하지 않습니다. MX(2.0) FW42, DYNAMIXEL-X 시리즈 FW42 이상부터 적용됩니다.
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 0xFF : 모든 값 초기화 0x01 : ID를 제외한 모든 값 초기화 0x02 : ID와 통신속도를 제외한 모든 값 초기화 |
- ID1(XM430-W210) : Option 0x01(ID를 제외한 모든 값 초기화)
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)
- ID1(XM430-W210)를 Reboot 시킬 경우
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)
- 장치의 특정 상태를 해제하는 Instruction
- 특이사항 : MX(2.0) FW42 이상, DYNAMIXEL-X 시리즈 FW42 이상부터 지원
Parameters
| P1 | P2 ~ P5 | 설명 |
|---|
| 0x01 | Fixed value (0x44 0x58 0x4C 0x22) | 현재 위치(Present Position) 값을 1회전(0~4095) 이내의 절대위치 값으로 초기화. 정지된 상태에서만 Clear 가능. 구동중에 Clear Inst Packet을 전송할 경우, Status Packet의 Error 필드에 Result Fail(0x01) 발생. |
| 0x02 | Fixed value (0x45 0x52 0x43 0x4C) | DYNAMIXEL에 발생한 Error를 Clear. Clear가 불가능한 Error가 있거나 Clear 조건이 아닌 경우 Error는 Clear 되지 않으며 Status Packet의 Error 필드에 Result Fail(0x01) 발생. DYNAMIXEL Y시리즈만 지원합니다. |
| ... | - | 사용하지 않습니다 |
| 0xFF | - | 사용하지 않습니다 |
- ID1(XM430-W210) : 다수의 회전 정보(멀티턴)을 초기화
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)
- 현재 상태의 Control table 값을 Backup 영역에 저장하거나, 저장된 값으로 EEPROM을 복구하기 위한 Instruction.
- Control Table Backup 명령은 Torque Enable 항목이 ‘0’(Off) 상태일 때만 수행되며, ‘1’(On) 상태일 때에는 Result Fail Packet을 응답합니다.
- 지원 DYNAMIXEL: X430, X540 시리즈 FW45 이상, X330 시리즈 FW46 이상, DYNAMIXEL-P 시리즈 FW12 이상부터 지원 (XL-320은 미지원).
- Backup으로 저장하는 데이터.
- EEPROM 영역: 전체
- RAM 영역
- 속도 제어기의 PI gains
- 위치 제어기의 PID gains
- Feedforward 1st, 2nd Gain
- Profile Acceleration, Velocity
- Indirect Address (DYNAMIXEL-P 시리즈 제외)
Parameters
| P1 | P2 ~ P5 | 설명 |
|---|
| 0x01 | Fixed value (0x43 0x54 0x52 0x4C) | 현재 상태의 Control Table 데이터를 Backup 영역에 저장 |
| 0x02 | Fixed value (0x43 0x54 0x52 0x4C) | Backup 영역에 저장된 Control Table 데이터 중에서 EEPROM 영역의 데이터를 복구 패킷 처리 후 자동으로 재부팅 합니다. |
| 0x03 | - | 사용하지 않습니다 |
| ⋯ | - | 사용하지 않습니다 |
| 0xFF | - | 사용하지 않습니다 |
예제 1 조건
- ID 1(XC330-T288) : 현재 상태의 Control Table 데이터를 Backup영역에 저장
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 |
예제 2 조건
- ID1 (XC330-T288) : Backup 영역에 저장된 EEPROM 데이터를 복구
- 성공적으로 EEPROM 복구 후 자동적으로 재부팅
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 | 0x9E | 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)
- 하나의 Instruction Packet 으로 동시에 여러 개 장치의 데이터를 읽을 때 사용하는 Instruction
- 데이터의 Address와 Data Length가 모두 동일해야 함.
- 데이터의 주소가 연속적이지 않을 경우, Indirect Address를 사용할 수 있습니다.
- Instruction Packet에 입력된 ID 순서대로 DYNAMIXEL이 Status Packet 응답합니다.
- Packet ID 필드 : 0xFE (Broadcast ID)
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 3 | 데이터 길이(X)의 하위 바이트 |
| Parameter 4 | 데이터 길이(X)의 상위 바이트 |
| Parameter 4+1 | 첫 번째 장치 ID |
| Parameter 4+2 | 두 번째 장치 ID |
| ... | ... |
| Parameter 4+X | X번째 장치의 ID |
| Status Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 바이트 |
| Parameter 2 | 두 번째 바이트 |
| ... | ... |
| Parameter X | X번째 바이트 |
참고 : 각 장치는 Sync Read Instruction에 대해 Status Packet을 개별적으로 반환합니다.
- ID1(XM430-W210) : Present Position(132, 0x0084, 4[byte])이 166(0x000000A6)인 경우
- ID2(XM430-W210) : Present Position(132, 0x0084, 4[byte])이 2,079(0x0000081F)인 경우
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)
- 하나의 Instruction Packet 으로 동시에 여러 개 장치를 제어하기 위해 사용하는 Instruction
- 데이터의 Address와 Data Length가 모두 동일해야 함.
- 데이터의 주소가 연속적이지 않을 경우, Indirect Address를 사용할 수 있습니다.
- Packet ID 필드 : 0xFE (Broadcast ID)
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 3 | 데이터 길이(X)의 하위 바이트 |
| Parameter 4 | 데이터 길이(X)의 상위 바이트 |
| Parameter 5 | 첫 번째 장치 ID |
| Parameter 5+1 | 첫 번째 장치 첫 번째 바이트 |
| Parameter 5+2 | 첫 번째 장치 두 번째 바이트 |
| ... | 첫 번째 장치... |
| Parameter 5+X | 첫 번째 장치 X번째 바이트 |
| Parameter 6 | 두 번째 장치 ID |
| Parameter 6+1 | 두 번째 장치 첫 번째 바이트 |
| Parameter 6+2 | 두 번째 장치 두 번째 바이트 |
| ... | 두 번째 장치... |
| Parameter 6+X | 두 번째 장치 X번째 바이트 |
| ... | ... |
- ID1(XM430-W210) : Goal Position(116, 0x0074, 4[byte])을 150(0x00000096)로 변경하려는 경우
- ID2(XM430-W210) : Goal Position(116, 0x0074, 4[byte])을 170(0x000000AA)로 변경하려는 경우
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)
- 보다 빠른 Sync Read Instruction(0x82) 통신을 하기 위해서 고안된 프로토콜
- Fast Sync Read 패킷을 받은 다수의 DYNAMIXEL은 마치 하나의 DYNAMIXEL이 응답하는 것처럼 Status Packet을 하나로 구성하여 응답한다.
- Instruction Packet은 Sync Read (0x82) 패킷과 동일한 방식으로 구성된다.
- 지원 DYNAMIXEL: X430/540 시리즈(2X 시리즈 제외, FW v45 이상), X330(FW v46 이상), P 시리즈(FW v12 이상), RH-P12-RN(A)(FW v13 이상)에서 지원.
Parameter
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 시작 주소의 하위 바이트 |
| Parameter 2 | 시작 주소의 상위 바이트 |
| Parameter 3 | 데이터 길이(X)의 하위 바이트 |
| Parameter 4 | 데이터 길이(X)의 상위 바이트 |
| Parameter 4+1 | 첫 번째 장치 ID |
| Parameter 4+2 | 두 번째 장치 ID |
| ⋯ | ⋯ |
| Parameter 4+n | n번째 장치 ID |
| Status Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 장치 ID |
| Parameter 2 | 첫 번째 장치 첫 번째 바이트 |
| Parameter 3 | 첫 번째 장치 두 번째 바이트 |
| ⋯ | ⋯ |
| Parameter X | 첫 번째 장치 X번째 바이트 |
| Parameter X+1 | 첫 번째 장치 CRC 하위 바이트 |
| Parameter X+2 | 첫 번째 장치 CRC 상위 바이트 |
| Parameter X+3 | 두 번째 장치 Error |
| Parameter X+4 | 두 번째 장치 ID |
| Parameter X+4+1 | 두 번째 장치 첫 번째 바이트 |
| Parameter X+4+2 | 두 번째 장치 두 번째 바이트 |
| ⋯ | ⋯ |
| Parameter 2X+4 | 두 번째 장치 X번째 바이트 |
| Parameter 2X+4+1 | 두 번째 장치 CRC 하위 바이트 |
| Parameter 2X+4+2 | 두 번째 장치 CRC 상위 바이트 |
| ⋯ | ⋯ |
| Parameter nX+4 | n번째 장치 X번째 바이트 |
참고: 각 장치의 CRC 값은 DYNAMIXEL 간의 패킷 무결성 확인을 위하여 DYNAMIXEL 내부 연산에 이용되며, Main Controller는 Status Packet 마지막의 CRC만 확인하여도 무방합니다.
참고: 각 장치는 Fast Sync Read Instruction Packet에 대해 응답 시, Status Packet 하나의 부분을 각각 반환. 아래 예제를 참고하세요.
참고: Fast Sync Read Status Packet은 Byte Stuffing(0xFD) 처리를 하지 않습니다.
- ID3(XC330-T288) : Present Position(132, 0x0084, 4[byte])이 166(0x000000A6)인 경우
- ID7(XC330-T288) : Present Position(132, 0x0084, 4[byte])이 2,079(0x0000081F)인 경우
- ID4(XC330-T288) : Present Position(132, 0x0084, 4[byte])이 1,023(0x000003FF)인 경우
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)
- Sync Read 와 유사하게, 하나의 Instruction Packet 으로 동시에 여러 개 장치의 데이터를 읽을 때 사용하는 Instruction
- 데이터의 Address와 Data Length가 장치별로 달라도 사용할 수 있습니다.
- Parameter에 동일한 아이디가 여러 번 사용될 수 없음. 즉, 하나의 장치에서는 한 번만 읽을 수 있습니다.
- 데이터의 주소가 연속적이지 않을 경우, Indirect Address를 사용할 수 있습니다.
- Instruction Packet에 입력된 ID 순서대로 DYNAMIXEL이 Status Packet 응답합니다.
- Packet ID 필드 : 0xFE (Broadcast ID)
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 장치 ID |
| Parameter 2 | 첫 번째 장치 시작 주소 하위 바이트 |
| Parameter 3 | 첫 번째 장치 시작 주소 상위 바이트 |
| Parameter 4 | 첫 번째 장치 데이터 길이 하위 바이트 |
| Parameter 5 | 첫 번째 장치 데이터 길이 상위 바이트 |
| Parameter 6 | 두 번째 장치 ID |
| Parameter 7 | 두 번째 장치 시작 주소 하위 바이트 |
| Parameter 8 | 두 번째 장치 시작 주소 상위 바이트 |
| Parameter 9 | 두 번째 장치 데이터 길이 하위 바이트 |
| Parameter 10 | 두 번째 장치 데이터 길이 상위 바이트 |
| ... | ... |
| Status Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 바이트 |
| Parameter 2 | 두 번째 바이트 |
| ... | ... |
| Parameter X | X번째 바이트 |
참고 : 각 장치는 Bulk Read Instruction Packet에 대해 Status Packet을 각각 반환. 아래 예제를 참고하세요.
- ID1(XM430-W210) : Present Voltage(144, 0x0090, 2[byte])이 119(0x0077)인 경우
- ID2(XM430-W210) : Present Temperature(146, 0x0092, 1[byte])이 36(0x24)인 경우
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)
- Sync Write 와 유사하게, 하나의 Instruction Packet 으로 여러 개 장치를 제어하기 위해 사용하는 Instruction.
- 데이터의 Address와 Data Length가 장치별로 달라도 사용할 수 있습니다.
- Parameter에 동일한 아이디가 여러 번 사용될 수 없음. 즉, 하나의 장치에는 한 번만 쓸 수 있습니다.
- 데이터의 주소가 연속적이지 않을 경우, Indirect Address를 사용할 수 있습니다.
- Packet ID 필드 : 0xFE (Broadcast ID)
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 장치 ID |
| Parameter 2 | 첫 번째 장치 시작 주소 하위 바이트 |
| Parameter 3 | 첫 번째 장치 시작 주소 상위 바이트 |
| Parameter 4 | 첫 번째 장치 데이터 길이 하위 바이트 |
| Parameter 5 | 첫 번째 장치 데이터 길이 상위 바이트 |
| Parameter 5+1 | 첫 번째 장치 첫 번째 바이트 |
| Parameter 5+2 | 첫 번째 장치 두 번째 바이트 |
| ... | ... |
| Parameter 5+X | 첫 번째 장치 X번째 바이트 |
| Parameter 6+X | 두 번째 장치 ID |
| Parameter 7+X | 두 번째 장치 시작 주소 하위 바이트 |
| Parameter 8+X | 두 번째 장치 시작 주소 상위 바이트 |
| Parameter 9+X | 두 번째 장치 데이터 길이 하위 바이트 |
| Parameter 10+X | 두 번째 장치 데이터 길이 상위 바이트 |
| Parameter 10+X+1 | 두 번째 장치 첫 번째 바이트 |
| Parameter 10+X+2 | 두 번째 장치 두 번째 바이트 |
| ... | ... |
| Parameter 10+X+Y | 두 번째 장치 Y번째 바이트 |
| ... | ... |
- ID1(XM430-W210) : Max Voltage Limit(32, 0x0020, 2[byte])을 160(0x00A0) 로 변경하려는 경우
- ID2(XM430-W210) : Temperature Limit(31, 0x001F, 1[byte])를 80(0x50)으로 쓸 경우
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)
- 보다 빠른 Bulk Read 통신을 하기 위해서 고안된 프로토콜
- Fast Bulk Read 패킷을 받은 다수의 DYNAMIXEL은 마치 하나의 DYNAMIXEL이 응답하는 것처럼 Status Packet을 하나로 구성하여 응답한다.
- Instruction Packet은 Bulk Read 패킷과 동일한 방식으로 구성된다.
- 지원 DYNAMIXEL: X430/540 시리즈(2X 시리즈 제외, FW v45 이상), X330(FW v46 이상), P 시리즈(FW v12 이상), RH-P12-RN(A)(FW v13 이상)에서 지원.
Parameters
| Instruction Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 장치 ID |
| Parameter 2 | 첫 번째 장치 시작 주소 하위 바이트 |
| Parameter 3 | 첫 번째 장치 시작 주소 상위 바이트 |
| Parameter 4 | 첫 번째 장치 데이터 길이(X1)의 하위 바이트 |
| Parameter 5 | 첫 번째 장치 데이터 길이(X1)의 상위 바이트 |
| Parameter 6 | 두 번째 장치 ID |
| Parameter 7 | 두 번째 장치 시작 주소 하위 바이트 |
| Parameter 8 | 두 번째 장치 시작 주소 상위 바이트 |
| Parameter 9 | 두 번째 장치 데이터 길이(X2)의 하위 바이트 |
| Parameter 10 | 두 번째 장치 데이터 길이(X2)의 상위 바이트 |
| Status Packet | 설명 |
|---|
| Parameter 1 | 첫 번째 장치 ID |
| Parameter 2 | 첫 번째 장치 첫 번째 바이트 |
| Parameter 3 | 첫 번째 장치 두 번째 바이트 |
| ⋯ | ⋯ |
| Parameter X1 | 첫 번째 장치 X1번째 바이트 |
| Parameter X1+1 | 첫 번째 장치 CRC 하위 바이트 |
| Parameter X1+2 | 첫 번째 장치 CRC 상위 바이트 |
| Parameter X1+3 | 두 번째 장치 Error |
| Parameter X1+4 | 두 번째 장치 ID |
| Parameter X1+4+1 | 두 번째 장치 첫 번째 바이트 |
| Parameter X1+4+2 | 두 번째 장치 두 번째 바이트 |
| ⋯ | ⋯ |
| Parameter X1+4+X2 | 두 번째 장치 X2번째 바이트 |
| Parameter X1+4+X2+1 | 두 번째 장치 CRC 하위 바이트 |
| Parameter X1+4+X2+2 | 두 번째 장치 CRC 상위 바이트 |
| ⋯ | ⋯ |
Parameter X1+4+X2+ ⋯ 4+Xn | n번째 장치 Xn번째 바이트 |
참고 : 각 장치의 CRC 값은 DYNAMIXEL 간의 패킷 무결성 확인을 위하여 DYNAMIXEL 내부 연산에 이용되며, Main Controller는 Status Packet 마지막의 CRC만 확인하여도 무방합니다.
참고 : 각 장치는 Fast Bulk Read Instruction Packet에 대해 응답 시, Status Packet 하나의 부분을 각각 반환. 아래 예제를 참고하세요.
참고 : Fast Bulk Read Status Packet은 Byte Stuffing(0xFD) 처리를 하지 않습니다.
- ID3(XC330-T288) : Present Position(132, 0x0084, 4[byte])이 166(0x000000A6)인 경우
- ID7(XC330-T288) : Present PWM(124, 0x007C, 2[byte])이 421(0x01A5)인 경우
- ID4(XC330-T288) : Present Temperature(146, 0x0092, 1[byte])이 31(0x1F)인 경우
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 | 0xDA | 0x2D |
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 |