본문으로 건너뛰기

DYNAMIXEL Protocol 2.0

소개

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 통신은 다음 제어기에서 지원됩니다:

: 자세한 내용은 DYNAMIXEL Protocol Compatibility Table을 참고하세요.

Packet

Main Controller와 DYNAMIXEL은 Packet이라고 불리는 데이터를 주고 받으며 통신합니다. Packet에는 두 가지 종류가 있습니다. Main Controller가 DYNAMIXEL을 제어하기 위해 전송하는 Instruction Packet과 DYNAMIXEL이 Main Controller로 답변하는 Status Packet이 그것입니다.

ID

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); //wait until data can be loaded.
SerialTxDBuffer = bData; //data load to TxD buffer
}

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(); // 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

경고

주의: 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 1Header 2Header 3ReservedPacket IDLength 1Length 2InstructionParamParamParamCRC 1CRC 2
0xFF0xFF0xFD0x00Packet IDLen_LLen_HInstructionParam 1...Param NCRC_LCRC_H

Packet의 시작을 나타내는 필드입니다.

Reserved

Header 필드에 포함되는 추가 0x00 byte입니다.

DYNAMIXEL Wizard 2.0의 Packet 상세 정보에서 Reserved는 Header에 포함되어 표시됩니다.

DYNAMIXEL 위자드 2.0 패킷 상세정보

Packet ID

Instruction Packet을 받아 처리해야 할 장치의 ID를 나타내는 필드.

  1. 범위 : 0 ~ 252 (0x00 ~ 0xFC) 까지 253 개 사용할 수 있습니다
  2. Broadcast ID : 254 (0xFE), 연결된 모든 장치가 Instruction Packet을 실행하도록 함.
경고

주의: DYNAMIXEL Broadcast ID(254 (0xFE))는 Ping, Sync Read, Bulk Read 명령에 대해서만 Status Packet을 반환합니다. Ping, Sync Read, Bulk Read를 제외한 다른 Instruction은 Broadcast ID로 전송해도 Status Packet을 반환하지 않습니다.

Length

Packet의 길이를 나타냄.

  1. 하위 바이트와 상위 바이트를 Instruction Packet에서 나누어서 보냄.
  2. Length는 Instruction, Parameter, CRC 필드의 Byte Size를 나타내는 필드
  • Length = Parameter 개수 + 3
  • Status Packet의 Length에는 ERROR 필드를 나타내는 1바이트가 추가.

Instruction

Packet의 용도를 정의하는 필드

명령설명
0x01PingPacket ID와 동일한 ID를 가지는 장치에 Packet이 도달했는지 여부 확인을 위한 Instruction
0x02Read장치로부터 데이터를 읽어오기 위한 Instruction
0x03Write장치에 데이터를 쓰기 위한 Instruction
0x04Reg WriteInstruction Packet을 대기 상태로 등록하는 Instruction, Action 명령에 의해 실행됩니다
0x05ActionReg Write 로 미리 등록한 Packet을 실행하는 Instruction
0x06Factory ResetControl Table을 공장 출하 상태의 기본값으로 되돌리는 Instruction
0x08Reboot장치를 재부팅 시키는 Instruction
0x10Clear장치의 특정 상태를 해제하는 Instruction
0x20Control Table BackupControl Table을 Backup 또는 복구하기 위한 Instruction
0x55Status(반환)Instruction Packet에 대한 반환 packet
0x82Sync Read다수의 장치에 대해서, 동일한 Address에서 동일한 길이의 데이터를 한 번에 읽기 위한 Instruction
0x83Sync Write다수의 장치에 대해서, 동일한 Address에 동일한 길이의 데이터를 한 번에 쓰기 위한 Instruction
0x8AFast Sync Read다수의 장치에 대해서, 동일한 Address에서 동일한 길이의 데이터를 한 번에 읽기 위한 Instruction
0x92Bulk Read다수의 장치에 대해서, 서로 다른 Address에서 서로 다른 길이의 데이터를 한 번에 읽기 위한 Instruction
0x93Bulk Write다수의 장치에 대해서, 서로 다른 Address에 서로 다른 길이의 데이터를 한 번에 쓰기 위한 Instruction
0x9AFast Bulk Read다수의 장치에 대해서, 서로 다른 Address에서 서로 다른 길이의 데이터를 한 번에 읽기 위한 Instruction

Parameters

  1. Instruction의 보조 데이터 필드로써, Instruction 별로 용도가 다릅니다.
경고

주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.

CRC

Packet이 통신 중에 파손되었는지를 점검하기 위한 필드 (16bit CRC)

  1. 하위 바이트와 상위 바이트를 Instruction Packet에서 나누어서 보냄.
  2. CRC 계산 범위: Instruction Packet의 Header (FF FF FD 00)를 포함하여, CRC 필드 이전까지.
  3. CRC 계산 방법 및 예제 : CRC Calculation

Status Packet

Status Packet은 장치(Device)가 Instruction Packet을 수신한 뒤 Main Controller로 전송하는 응답 Packet입니다. Error 필드가 추가되는 것을 제외하면 Instruction Packet과 구성이 동일합니다.

Header 1Header 2Header 3ReservedPacket IDLength 1Length 2InstructionERRPARAMPARAMPARAMCRC 1CRC 2
0xFF0xFF0xFD0x00IDLen_LLen_HInstructionErrorParam 1...Param NCRC_LCRC_H

Instruction

Status Packet의 Instruction은 0x55(Status)로 고정되며, 반환되는 모든 Status Packet에 포함되어야 합니다.

Error

Instruction Packet의 처리 결과를 나타내는 필드입니다.

Bit 7Bit 6 ~ Bit 0
AlertError Number
  • Alert : 장치에 하드웨어적인 문제가 발생한 경우 1로 설정됩니다. 이 경우 Control Table의 Hardware error status 값을 읽으면 문제의 원인을 확인할 수 있습니다.
  • Error Number : Instruction Packet의 처리에 Error 가 발생한 경우.
Error NumberError설명
0x01Result Fail전송된 Instruction Packet을 처리하는데 실패한 경우
0x02Instruction Error정의되지 않은 Instruction을 사용한 경우
Reg Write 없이 Action 을 사용한 경우
0x03CRC Error전송된 Packet의 CRC 값이 맞지 않는 경우
0x04Data Range Error해당 Address에 쓰려는 Data가 최소/최대값의 범위를 벗어난 경우
0x05Data Length Error해당 Address 의 데이터 길이보다 짧은 데이터를 적으려고 한 경우
(예: 4 byte로 정의된 항목의 2 byte 만 쓰려고 하는 경우)
0x06Data Limit Error해당 Address에 쓰려는 Data가 Limit 값을 벗어난 경우
0x07Access ErrorRead Only 혹은 정의되지 않은 Address에 값을 쓰려고 한 경우
Write Only 혹은 정의되지 않은 Address에 값을 읽으려고 한 경우
Torque Enable(ROM Lock) 상태에서 ROM 영역에 값을 쓰려고 한 경우

Parameters

  1. Instruction의 보조 데이터 필드로써, Instruction마다 용도가 다릅니다.
경고

주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.

Response Policy

Control Table의 Status Return Level 값에 따라 응답 여부가 결정됩니다. 각 장치의 Status Return Level에서 설정 가능한 값을 참고하세요.

경고

주의: Broadcast ID(254 (0xFE))는 Ping, Sync ReadBulk Read 에만 응답하며, 그 외 Instruction에는 응답하지 않습니다. 예를 들어 Sync WriteBulk Write Instruction에서는 응답 하지 않습니다.

Packet 처리

전송 시 처리 순서

  1. 필요한 Parameter를 포함하여 Packet의 기본 구조를 생성합니다.
  2. Packet이 올바르게 처리될 수 있도록 Byte Stuffing을 적용합니다.
  3. 추가된 Byte Stuffing 데이터를 포함하도록 Packet Length를 갱신합니다.
  4. Byte Stuffing이 적용된 상태에서 최종 CRC를 계산합니다.
노트

알림: Byte Stuffing은 생성된 Instruction Packet이 올바르게 처리될 수 있도록 추가 데이터를 삽입하는 방법입니다. Packet에 "0xFF 0xFF 0xFD" 패턴이 나타날 경우, 이 패턴이 다른 Packet의 Header로 해석되지 않도록 0xFD를 추가하여 "0xFF 0xFF 0xFD 0xFD"로 변환합니다.

수신 시 처리 순서

  1. Header(0xFF 0xFF 0xFD)를 검색하며, Byte Stuffing(0xFF 0xFF 0xFD 0xFD)이 발견되면 무시합니다.
  2. Packet ID가 유효하면, Length 크기만큼 추가 전송 데이터를 수신할 준비를 합니다.
  3. Byte Stuffing이 포함된 수신 Packet으로 CRC를 계산하고, CRC가 일치하면 수신 Packet에서 Byte Stuffing을 제거합니다.
  4. 수신한 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
H1H2H3RSRVPacket IDLEN1LEN2INSTCRC 1CRC 2
0xFF0xFF0xFD0x000x010x030x000x010x190x4E
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3CRC 1CRC 2
0xFF0xFF0xFD0x000x010x070x000x550x000x060x040x260x650x5D

예제 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
H1H2H3RSRVPacket IDLEN1LEN2INSTCRC 1CRC 2
0xFF0xFF0xFD0x000xFE0x030x000x010x310x42
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3CRC 1CRC 2
0xFF0xFF0xFD0x000x010x070x000x550x000x060x040x260x650x5D
ID 2 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3CRC 1CRC 2
0xFF0xFF0xFD0x000x020x070x000x550x000x060x040x260x6F0x6D

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 XX 번째 바이트

예제

조건
  • ID1(XM430-W210) : Present Position(132, 0x0084, 4[byte])이 166(0x000000A6)인 경우
Read Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4CRC 1CRC 2
0xFF0xFF0xFD0x000x010x070x000x020x840x000x040x000x1D0x15
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3P4CRC 1CRC 2
0xFF0xFF0xFD0x000x010x080x000x550x000xA60x000x000x000x8C0xC0

Write (0x03)

설명

경고

주의: 음수 데이터의 표현 방법은 제품별로 차이가 있으므로 해당 제품의 e-Manual을 참고하세요.

Packet Parameters

Instruction Packet설명
Parameter 1시작 주소의 하위 바이트
Parameter 2시작 주소의 상위 바이트
Parameter 2+1첫 번째 바이트
Parameter 2+2두 번째 바이트
......
Parameter 2+XX번째 바이트

예제

조건
  • ID1(XM430-W210) : Goal Position(116, 0x0074, 4[byte])를 512(0x00000200)로 변경하려는 경우
Write Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6CRC 1CRC 2
0xFF0xFF0xFD0x000x010x090x000x030x740x000x000x020x000x000xCA0x89
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

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+XX번째 바이트

예제

조건
  • ID1(XM430-W210) : Goal Velocity(104, 0x0068, 4[byte])를 200(0x000000C8)로 변경하려는 경우
Reg Write Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6CRC 1CRC 2
0xFF0xFF0xFD0x000x010x090x000x040x680x000xC80x000x000x000xAE0x8E
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

Action (0x05)

설명

  • Reg Write Instruction으로 등록된 Packet을 실행하라는 Instruction
  • Write Instruction으로 다수의 장치를 제어할 경우, Packet을 최초로 수신한 장치와 마지막으로 수신한 장치는 실행 시점에 차이가 발생함.
  • Reg Write 와 Action Instruction을 사용하면, 다수의 장치를 동시에 구동할 수 있습니다.

예제

조건
  • ID1(XM430-W210) : Reg Write Instruction에 의해 Instruction이 등록된 경우
Action Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTCRC 1CRC 2
0xFF0xFF0xFD0x000x010x030x000x050x020xCE
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

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 10xFF : 모든 값 초기화
0x01 : ID를 제외한 모든 값 초기화
0x02 : ID와 통신속도를 제외한 모든 값 초기화

예제

조건
  • ID1(XM430-W210) : Option 0x01(ID를 제외한 모든 값 초기화)
Factory Reset Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1CRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x060x010xA10xE6
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

Reboot (0x08)

설명

  • 장치를 재부팅 시키는 Instruction

예제

조건
  • ID1(XM430-W210)를 Reboot 시킬 경우
Reboot Instruction Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTCRC 1CRC 2
0xFF0xFF0xFD0x000x010x030x000x080x2F0x4E
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

Clear (0x10)

설명

  • 장치의 특정 상태를 해제하는 Instruction
  • 특이사항 : MX(2.0) FW42 이상, DYNAMIXEL-X 시리즈 FW42 이상부터 지원

Parameters

P1P2 ~ P5설명
0x01Fixed value
(0x44 0x58 0x4C 0x22)
현재 위치(Present Position) 값을 1회전(0~4095) 이내의 절대위치 값으로 초기화.
정지된 상태에서만 Clear 가능.
구동중에 Clear Inst Packet을 전송할 경우, Status Packet의 Error 필드에 Result Fail(0x01) 발생.
0x02Fixed 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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5CRC 1CRC 2
0xFF0xFF0xFD0x000x010x080x000x100x010x440x580x4C0x220xB10xDC
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC 1CRC 2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

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 시리즈 제외)
노트

참고

  • 자세한 내용은 Backup and Restore를 참고하세요.
  • RAM 영역의 데이터는 Control Table의 Startup Configuration(60) 설정으로 복구할 수 있습니다. 자세한 내용은 Restoring RAM Area를 참고하세요.

Parameters

P1P2 ~ P5설명
0x01Fixed value
(0x43 0x54 0x52 0x4C)
현재 상태의 Control Table 데이터를 Backup 영역에 저장
0x02Fixed value
(0x43 0x54 0x52 0x4C)
Backup 영역에 저장된 Control Table 데이터 중에서 EEPROM 영역의 데이터를 복구
패킷 처리 후 자동으로 재부팅 합니다.
0x03-사용하지 않습니다
-사용하지 않습니다
0xFF-사용하지 않습니다

예제

예제 1 조건
  • ID 1(XC330-T288) : 현재 상태의 Control Table 데이터를 Backup영역에 저장
Control Table Backup Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5CRC1CRC2
0xFF0xFF0xFD0x000x010x080x000x200x010x430x540x520x4C0x160xF5
ID1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC1CRC2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C
예제 2 조건
  • ID1 (XC330-T288) : Backup 영역에 저장된 EEPROM 데이터를 복구
  • 성공적으로 EEPROM 복구 후 자동적으로 재부팅
Control Table EEPROM Restoring Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5CRC1CRC2
0xFF0xFF0xFD0x000x010x080x000x200x020x430x540x520x4C0x9E0xF5
ID1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRCRC1CRC2
0xFF0xFF0xFD0x000x010x040x000x550x000xA10x0C

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+XX번째 장치의 ID
Status Packet설명
Parameter 1첫 번째 바이트
Parameter 2두 번째 바이트
......
Parameter XX번째 바이트
노트

참고 : 각 장치는 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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6CRC 1CRC 2
0xFF0xFF0xFD0x000xFE0x090x000x820x840x000x040x000x010x020xCE0xFA
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3P4CRC 1CRC 2
0xFF0xFF0xFD0x000x010x080x000x550x000xA60x000x000x000x8C0xC0
ID 2 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2P3P4CRC 1CRC 2
0xFF0xFF0xFD0x000x020x080x000x550x000x1F0x080x000x000xBA0xBE

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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4
0xFF0xFF0xFD0x000xFE0x110x000x830x740x000x040x00
P5P6P7P8P9P10P11P12P13P14CRC 1CRC 2
0x010x960x000x000x000x020xAA0x000x000x000x820x87

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+nn번째 장치 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+4n번째 장치 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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6P7CRC1CRC2
0xFF0xFF0xFD0x000xFE0x0A0x000x8A0x840x000x040x000x030x070x040x200xF2
ID 3 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRID1D1D2D3D4CRC1CRC2
0xFF0xFF0xFD0x000xFE0x190x000x550x000x030xA60x000x000x000x840x08
ID 7 Status Packet
ERRID2D1D2D3D4CRC1CRC2
0x000x070x1F0x080x000x000x160xCA
ID 4 Status Packet
ERRID3D1D2D3D4CRC1CRC2
0x000x040xFF0x030x000x000xD10x9E

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 XX번째 바이트
노트

참고 : 각 장치는 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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5
0xFF0xFF0xFD0x000xFE0x0D0x000x920x010x900x000x020x00
P6P7P8P9P10CRC 1CRC 2
0x020x920x000x010x000x1A0x05
ID 1 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1P2CRC 1CRC 2
0xFF0xFF0xFD0x000x010x060x000x550x000x770x000xC30x69
ID 2 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRP1CRC 1CRC 2
0xFF0xFF0xFD0x000x020x050x000x550x000x240x8B0xA9

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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6P7
0xFF0xFF0xFD0x000xFE0x100x000x930x010x200x000x020x000xA00x00
P8P9P10P11P12P13CRC 1CRC 2
0x020x1F0x000x010x000x500xB70x68

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
H1H2H3RSRVPacket IDLEN1LEN2INSTP1P2P3P4P5P6P7P8
0xFF0xFF0xFD0x000xFE0x120x000x9A0x030x840x000x040x000x070x7C0x00
P9P10P11P12P13P14P15CRC1CRC2
0x020x000x040x920x000x010x000xDA0x2D
ID 3 Status Packet
H1H2H3RSRVPacket IDLEN1LEN2INSTERRID1D1D2D3D4CRC1CRC2
0xFF0xFF0xFD0x000xFE0x140x000x550x000x030xA60x000x000x000x670xA4
ID 7 Status Packet
ERRID2D1D2CRC1CRC2
0x000x070xA50x010x240x74
ID 4 Status Packet
ERRID2D1CRC1CRC2
0x000x040x1F0xD90xC1