!!暫定版注意!!
商品番号 | BTX___ | |
連続トルク | 10.1N•m (at 24V 3.0A) | |
無負荷回転数 | 33.1rpm (at 24V) | |
減速比 | 1/251.4 | |
エンコーダ分解能 | 251417ppr | |
バックラッシュ | 3.8arcmin | |
最大動作角度 | 位置決め制御時:0~360°, Endless Turn | |
標準電源電圧 | 24V | |
動作温度範囲 | 5~+55℃ | |
重量 | 853g | |
コマンドシグナル | デジタルパケット | |
プロトコル | 半二重非同期通信 8-1-N | |
リンク方式 | RS-485 Multi Drop(daisy chain type Connector) | |
ID数 | 253 (ID=0~252) | |
通信速度 | 9.6k,57.6k,115.2k,1M,2M,3M,4M,4.5,10.5Mbps | |
フィードバック | 位置, 速度, 温度, 電源電圧, 電流 | |
動作モード | 電流, 速度, 位置, 拡張位置 | |
材質 | ケース | アルミ |
ギア | メタル | |
認証 | ![]() ![]() |
Dynamixel X及びPROシリーズ共通の通信プロトコルです。また、Dynamixel MXシリーズのファームウェアをV2対応版に書き換えた際にも適用されます。
Dynamixelでは複数のデバイスを同じネットワークに接続して運用する事を前提としているため、各々のデバイスを区別するためにユニークなID番号を用いる事としています。
また、ホストは任意のIDを持ったデバイスを指定して命令し、指定されたIDに一致したデバイスがそれに応答するといったマスタースレーブ方式を採用しています。
なお、複数のデバイスに同じID値が付けられている事は前提としていないため、1つのネットワークに同一IDを持つデバイスが複数存在してはなりません。
デバイスの情報はメモリマップでとして提供されており、それをコントロールテーブルと称します。
複数の情報はコントロールテーブル上の異なるアドレスに割り当てられており、必要に応じてホストから任意のIDを持ったデバイスの任意のアドレスへアクセスします。
ホストとデバイス間は一般的なシリアル通信を行うハードウェアで接続され、パケット単位で処理される共通の通信プロトコルを用いて相互に情報をやりとりします。
ここではホストからデバイスへ送信されるパケットを「インストラクションパケット」、デバイスからホストへ送信されるパケットを「ステータスパケット」と称します。
ホストから送信するインストラクションパケットの主な機能はIDの指定とコントロールテーブルの任意のアドレスへのデータの読み書きとなります。そのパケットに対して応答すべきデバイスから返信されるステータスパケットには、ホストから読み出し要求されたコントロールテーブル内のデータや、書き込み要求に対する整合性の結果などが含まれます。
以後16bit幅のパラメータはリトルエンディアン(データの下位バイトから順に格納)で指定するものとし、「0x」が付与された英数字は16進数、そうでないものは10進数とみなします。
また、デバイスのコントロールテーブル上のStatus Return Levelによってパケットの有無が異なります。
インストラクションパケットはホストからデバイスへ命令するためのパケットです。
パケット構造は以下の通りで、囲み1つが1byteを意味します。例外についてはこちらを参照します。
Instruction | Function | Value | Number of Parameter |
PING | デバイスの死活確認 | 0x01 | 0 |
READ | コントロールテーブルからの読み込み | 0x02 | 4 |
WRITE | コントロールテーブルへの書き込み(即時反映) | 0x03 | 3~ |
REG WRITE | コントロールテーブルへの書き込み(保留) | 0x04 | 3~ |
ACTION | REG WRITEで保留された値を反映 | 0x05 | 0 |
FACTORY RESET | デバイスのコントロールテーブルの値を出荷時デフォルト化 | 0x06 | 1 |
REBOOT | デバイスの再起動 | 0x08 | 0 |
SYNC READ | 複数デバイスの同一コントロールテーブルから読み込み | 0x82 | 5~ |
SYNC WRITE | 複数デバイスの同一コントロールテーブルへ書き込み | 0x83 | 6~ |
BULK READ | 複数デバイスの異なるコントロールテーブルから読み込み | 0x92 | 6~ |
BULK WRITE | 複数デバイスの異なるコントロールテーブルへ書き込み | 0x93 | 6~ |
(X^16+X^15+X^2+1) Polynomial 0x8005
ステータスパケットはホストから送信されるインストラクションパケットをデバイスが受信した後、その応答としてデバイスからホストへ返信されるパケットです。
パケット構造は以下の通りで、囲み1つが1byteを意味します。例外についてはこちらを参照します。
Bit | Name | Description | |
7 | Alert | - | |
6~0 | Error No. | 1:Result Fail | パケット処理失敗 |
2:Instruction Error | 未定義のインストラクションセット, RegWriteなしでAction | ||
3:CRC Error | CRC不一致 | ||
4:Data Range Error | データの最大・最小値外 | ||
5:Data Length Error | データ幅の不一致 | ||
6:Data Limit Error | データのLimit値外 | ||
7:Accrss Error | 読出専用・書込専用・ロック中のアドレスへのアクセス |
(X^16+X^15+X^2+1) Polynomial 0x8005
Header部と一致するデータ列がInstruction~Parameter間に現れる場合は、Header部と一致する全てのデータ列の末尾に0xFDを1byte付与するものとします。
例えば例外処理前のParameterが「0x01 0x02 0xFF 0xFF 0xFD 0x03」の場合、Header部と一致するデータ列を含んでいますので、「0x01 0x02 0xFF 0xFF 0xFD 0xFD 0x03」の様に追加します。データ長が増えるため、実際のパケットも増えた分だけLengthを増やし、最終的に追加したデータを含むパケットのChecksumを計算します。
例1)
INST:ID=1のアドレス634に10バイトのデータ(0xFF,0xFF,0xFD,0xFF,0xFF,0xFD,0xFF,0xFF,0xFD,0xFF)を書き込む。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x12 0x00 ...Length
0x03 ...Instruction
0x7A 0x02 0xFF 0xFF 0xFD 0xFD 0xFF 0xFF 0xFD 0xFD 0xFF 0xFF 0xFD 0xFD 0xFF ...Parameter
0xA3 0xE2 ...Checksum
STAT:正常応答
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C
例2)
INST:ID=1のアドレス634から例1で書き込んだ10バイトのデータを読み出す。
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x02 0x7A 0x02 0x0A 0x00 0x1E 0xA9
STAT:正常応答
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x11 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xFF 0xFF 0xFD 0xFD 0xFF 0xFF 0xFD 0xFD 0xFF 0xFF 0xFD 0xFD 0xFF ...Parameter
0x18 0x99 ...Checksum
特定のIDを持ったDynamixelの存在を確認します。ステータスパケットのパラメータには応答したDynamixelのModel No.とVersion of Firmwareが含まれます。
IDに254を指定してPINGインストラクションを送信すると、ネットワークに存在する全てのDynamixelが順次ステータスパケットを返します。
Param byte No. | Description |
1 | Model No. |
2 | |
3 | Version of Firmware |
例)
INST:ID=1にPINGを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x03 0x00 ...Length
0x01 ...Instruction
0x19 0x4E ...Checksum
STAT:ID=1のXM430-W210-R(Model No.:0x0406, FW Ver.:0x26)が応答。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x07 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0x06 0x04 ...Model No.
0x26 ...Version of Firmware
0x65 0x5D ...Checksum
特定IDのデバイスへアドレス(16bit幅)・バイトサイズ(16bit幅)を指定してコントロールテーブルのデータを読み出します。IDは0~252の範囲が指定できます。
Param byte No. | Description |
1 | 開始アドレス |
2 | |
3 | バイトサイズ(N) |
4 |
Param byte No. | Description |
1 | DATA[0] |
2 | DATA[1] |
3 | DATA[2] |
... | ... |
N | DATA[N-1] |
例)
INST:XM430-W210想定。ID=1に対しパラメータにAddress=132(0x0084 PresentPosition), Length=4(0x0004)を指定してREADを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x07 0x00 ...Length
0x02 ...Instruction
0x84 0x00 ...開始アドレス
0x04 0x00 ...バイトサイズ
0x1D 0x15 ...Checksum
STAT:32bit幅で現在のPresentPosition=3677(0x00000E5D)の値を返信。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x08 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0x5D 0x0E 0x00 0x00 ...DATAs
0x7C 0x9C ...Checksum
特定IDのデバイスへアドレス(16bit幅)・データ(任意バイト数)を指定してコントロールテーブルへ書き込みます。IDは0~252の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。
Param byte No. | Description |
1 | 開始アドレス |
2 | |
3 | DATA[0] |
4 | DATA[1] |
5 | DATA[2] |
... | ... |
N+2 | DATA[N-1] |
例)
INST:XM430-W210想定。ID=1に対しパラメータにAddress=116(0x0074 GoalPosition), Data=999(0x000003E7 32bit幅)を指定してWRITEを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x09 0x00 ...Length
0x03 ...Instruction
0x74 0x00 ...開始アドレス
0xE7 0x03 0x00 0x00 ...DATAs
0xF0 0x65 ...Checksum
STAT:正常時の返信。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xA1 0x0C...Checksum
特定IDのデバイスへアドレス(16bit幅)・データ(任意バイト数)を指定してコントロールテーブルへ書き込む点ではWRITEインストラクションと同じですが、その後ACTIONインストラクションが実行されない限りコントロールテーブルへ反映されません。IDは0~252の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。
なお、REG WRITEを受信したデバイスは、コントロールテーブル上のアイテムRegistered Instructionを1にし、ACTIONインストラクションを待機中である事を示します。
Param byte No. | Description |
1 | 開始アドレス |
2 | |
3 | DATA[0] |
4 | DATA[1] |
5 | DATA[2] |
... | ... |
N+2 | DATA[N-1] |
例)
INST:XM430-W210想定。ID=1に対しパラメータにAddress=104(0x0068 GoalVelocity), Data=200(0x000000C8 32bit幅)を指定してREG WRITEを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x09 0x00 ...Length
0x04 ...Instruction
0x68 0x00 ...開始アドレス
0xC8 0x00 0x00 0x00 ...DATAs
0xAE 0x8E ...Checksum
STAT:正常時の返信。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xA1 0x0C...Checksum
REG WRITEインストラクションで待機中のデバイスのコントロールテーブルを更新します。IDは0~252の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。
ACTIONを受け取ったデバイスはRegistered Instructionが1であれば0になりますが、0であったデバイスはエラーを返します。
例)
INST:ID=1に対しACTIONを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x03 0x00 ...Length
0x05 ...Instruction
0x02 0xCE ...Checksum
STAT:Registered Instructionが1であった場合の正常時の返信。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xA1 0x0C...Checksum
特定IDのデバイスを出荷時の状態にします。IDは0~252の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。
Param byte No. | Description |
1 | 0x01:IDのみ対象外とする 0x02:IDとBaudrateのみ対象外とする 0xFF:全てを対象とする |
例)
INST:ID=1に完全なFACTORY RESETを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x06 ...Instruction
0xFF ...Parameter
0xA6 0x64 ...Checksum
STAT:正常時の返信
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xA1 0x0C
特定IDのデバイスを再起動します。IDは0~252が指定できます。
例)
INST:XM430-W210想定。ID=1へREBOOTを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x03 0x00 ...Length
0x08 ...Instruction
0x2F 0x4E ...CheckSum
STAT:正常時の返信
0xFF 0xFF 0xFD 0x00 ...Header
0x01 ...ID
0x04 0x00 ...Length
0x55 ...Instruction
0x00 ...Error
0xA1 0x0C...Checksum
Parameterにアドレス(16bit幅)・バイトサイズ(16bit幅)・複数のID指定した1回のインストラクションパケットで、指定されたIDのデバイスのコントロールテーブルからデータを順次読み出します。
インストラクションパケットのIDは254固定、パラメータ内のIDは重複しない0~252の範囲をとります。
個々のデバイスはインストラクションパケットのパラメータで指定されたIDの順にREADと同様のステータスパケットで順次応答しますが、何らかの理由により応答しないデバイスがあった場合は、それ以後に指定された全てのデバイスは応答を中止します。
Param byte No. | Description | |
1 | 開始アドレス | |
2 | ||
3 | バイトサイズ(N) (1以上) | |
4 | ||
5 | 1stデバイスのID (0~252) | |
6 | 2ndデバイスのID (0~252) | |
7 | 3rdデバイスのID (0~252) | |
... | ... |
Param byte No. | Description |
1 | DATA[0] |
2 | DATA[1] |
3 | DATA[2] |
... | ... |
N | DATA[N-1] |
例)
INST:XM430-W210想定。パラメータにアドレス=132(0x0084 PresentPosition), サイズ=4, ID=1,2を指定してSYNC READを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0xFE ...ID(254固定)
0x09 0x00 ...Length
0x82 ...Instruction
0x84 0x00 ...開始アドレス
0x04 0x00 ...バイトサイズ
0x01 0x02 ...IDs
0xCE 0xFA ...CheckSum
STAT:正常時の返信
ID=1が現在のPresentPosition=3677(0x00000E5D 32bit幅)の値を返信。
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x55 0x00 0x5D 0x0E 0x00 0x00 0x7C 0x9C
ID=2が現在のPresentPosition=1538(0x00000602 32bit幅)の値を返信。
0xFF 0xFF 0xFD 0x00 0x02 0x08 0x00 0x55 0x00 0x02 0x06 0x00 0x00 0x64 0x1A
Parameterに共通のアドレス(16bit幅)・共通のバイトサイズ(16bit幅)・複数のIDと各データを指定した1回のインストラクションパケットで、複数のデバイスのコントロールテーブルへ書き込みます。
インストラクションパケットのIDは254固定、パラメータ内のIDは重複しない0~252の範囲をとります。
Param byte No. | Description | |
1 | 開始アドレス | |
2 | ||
3 | バイトサイズ(N) (1以上) | |
4 | ||
5 | 1stデバイス | ID (0~252) |
6 | DATAa[0] | |
7 | DATAa[1] | |
... | ... | |
N+5 | DATAa[N-1] | |
N+6 | 2ndデバイス | ID (0~252) |
N+7 | DATAb[0] | |
N+8 | DATAb[1] | |
... | ... | |
2*N+6 | DATAb[N-1] | |
2*N+7 | 3rdデバイス | ID (0~252) |
2*N+8 | DATAc[0] | |
2*N+9 | DATAc[1] | |
... | ... | |
3*N+5 | DATAc[N-1] | |
... | ... | ... |
0xFF 0xFF 0xFD 0x00 ...Header
0xFE ...ID(254固定)
0x11 0x00 ...Length
0x83 ...Instruction
0x74 0x00 ...開始アドレス
0x04 0x00 ...バイトサイズ
0x01 0xD2 0x04 0x00 0x00 ...1st ID, DATAs
0x02 0x80 0x0D 0x00 0x00 ...2nd ID, DATAs
0xF4 0x4E ...Checksum
ParameterにID・アドレス(16bit幅)・バイトサイズ(16bit幅)を複数指定した1回のインストラクションパケットで、指定されたIDのデバイスのコントロールテーブルからデータを順次読み出します。
インストラクションパケットのIDは254固定、パラメータ内のIDは重複しない0~252の範囲をとります。
個々のデバイスはインストラクションパケットのパラメータで指定されたIDの順にREADと同様のステータスパケットで順次応答しますが、何らかの理由により応答しないデバイスがあった場合は、それ以後に指定された全てのデバイスは応答を中止します。
Param byte No. | Description | |
1 | 1stデバイス | ID (0~252) |
2 | 開始アドレス | |
3 | ||
4 | バイトサイズ (1以上) | |
5 | ||
6 | 2ndデバイス | ID (0~252) |
7 | 開始アドレス | |
8 | ||
9 | バイトサイズ (1以上) | |
10 | ||
11 | 3rdデバイス | ID (0~252) |
12 | 開始アドレス | |
13 | ||
14 | バイトサイズ (1以上) | |
15 | ||
... | ... | ... |
Param byte No. | Description |
1 | DATA[0] |
2 | DATA[1] |
3 | DATA[2] |
... | ... |
N | DATA[N-1] |
例)
INST:XM430-W210想定。パラメータに、ID=1,アドレス=144(0x0090 PresentInputVoltage),サイズ=2と、ID=2,アドレス=132(0x0084 PresentPosition),サイズ=4を指定してBULK READを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0xFE ...ID(254固定)
0x0D 0x00 ...Length
0x92 ...Instruction
0x01 0x90 0x00 0x02 0x00 ...1st ID, アドレス, サイズ
0x02 0x84 0x00 0x04 0x00 ...2bd ID, アドレス, サイズ
0x1C 0x23 ...CheckSum
STAT:正常時の返信
ID=1が現在のPresentVoltage=151(0x0097 16bit幅)の値を返信。
0xFF 0xFF 0xFD 0x00 0x01 0x06 0x00 0x55 0x00 0x97 0x00 0xCF 0x29
ID=2が現在のPresentPosition=1538(0x00000602 32bit幅)の値を返信。
0xFF 0xFF 0xFD 0x00 0x02 0x08 0x00 0x55 0x00 0x02 0x06 0x00 0x00 0x64 0x1A
ParameterにID・アドレス(16bit幅)・バイトサイズ(16bit幅)・データを複数指定した1回のインストラクションパケットで、指定されたIDのデバイスのコントロールテーブルへ書き込みます。
インストラクションパケットのIDは254固定、パラメータ内のIDは重複しない0~252の範囲をとります。
Param byte No. | Description | |
1 | 1stデバイス a | ID (0~252) |
2 | 開始アドレス | |
3 | ||
4 | バイトサイズ(Na) (1以上) | |
5 | ||
6 | DATAa[0] | |
7 | DATAa[1] | |
8 | DATAa[2] | |
... | ... | |
Na+5 | DATAa[Na-1] | |
Na+6 | 2ndデバイス b | ID (0~252) |
Na+7 | 開始アドレス | |
Na+8 | ||
Na+9 | バイトサイズ(Nb) (1以上) | |
Na+10 | ||
Na+11 | DATAb[0] | |
Na+12 | DATAb[1] | |
Na+13 | DATAb[2] | |
... | ... | |
Na+Nb+10 | DATAb[Nb-1] | |
... | ... | ... |
例)
INST:XM430-W210想定。パラメータに、ID=1・アドレス=112(0x0070 ProfileVelocity~)・サイズ=8・ProfileVelocity=10(32bit幅)・GoalPosition=2048(32bit幅)と、ID=2・アドレス=80(0x0050 PositionDGain)・サイズ=6・PositionDGain=0(16bit幅),PositionIGain=0(16bit幅)・PositionPGain=800(16bit幅)を指定してBULK WRITEを発行。
0xFF 0xFF 0xFD 0x00 ...Header
0xFE ...ID(254固定)
0x1B 0x00 ...Length
0x93 ...Instruction
0x01 0x70 0x00 0x08 0x00 0x0A 0x00 0x00 0x00 0x00 0x08 0x00 0x00 ...1st ID,アドレス,サイズ,DATAs
0x02 0x50 0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x20 0x03 ...2nd ID,アドレス,サイズ,DATAs
0x63 0xE8 ...CheckSum
!!暫定版注意!!
ファームウェア Ver.25以降を搭載した以下のDynamixel PROシリーズに共通するコントロールテーブルです。
Address | Item | Access | Default Value | Type/Range |
0 | Model Number | R | - | uint16 |
1 | ||||
2 | Model Information | R | 0 | uint32 |
3 | ||||
4 | ||||
5 | ||||
6 | Version of Firmware | R | ? | uint8 |
7 | ID | R/W (NVM) | 1 | uint8 0~252 |
8 | Baudrate | R/W (NVM) | 1 | uint8 0~7 |
9 | Return Delay Time | R/W (NVM) | 250 | uint8 0~254 |
10 | (reserve) | R | - | uint8 |
11 | Operating Mode | R/W (NVM) | 3 | uint8 0~16 |
12 | (reserve) | R | - | uint8 |
13 | Homing Offset | R/W (NVM) | 0 | int32 |
14 | ||||
15 | ||||
16 | ||||
17 | Moving Threshold | R/W (NVM) | 50 | uint32 0~2147483647 |
18 | ||||
19 | ||||
20 | ||||
21 | Temperature Limit | R/W (NVM) | 80 | uint8 0~100 |
22 | Max Voltage Limit | R/W (NVM) | 400 | uint16 0~400 |
23 | ||||
24 | Min Voltage Limit | R/W (NVM) | 150 | uint16 0~400 |
25 | ||||
26 | Acceleration Limit | R/W (NVM) | 32767 | uint32 0~2147483647 |
27 | ||||
28 | ||||
29 | ||||
30 | Torque Limit | R/W (NVM) | - | uint16 |
31 | ||||
32 | Velocity Limit | R/W (NVM) | - | uint32 0~2147483647 |
33 | ||||
34 | ||||
35 | ||||
36 | Max Position Limit | R/W (NVM) | - | int32 |
37 | ||||
38 | ||||
39 | ||||
40 | Min Position Limit | R/W (NVM) | - | int32 |
41 | ||||
42 | ||||
43 | ||||
44 | External Port Mode 1 | R/W (NVM) | 0 | uint8 0~3 |
45 | External Port Mode 2 | R/W (NVM) | 0 | uint8 0~3 |
46 | External Port Mode 3 | R/W (NVM) | 0 | uint8 0~3 |
47 | External Port Mode 4 | R/W (NVM) | 0 | uint8 0~3 |
48 | Shutdown | R/W (NVM) | 58(0x3A) | uint8 0~63 |
49 | Indirect Address 1 | R/W (NVM) | 634 | uint16 64~661 |
50 | ||||
51 | Indirect Address 2 | 635 | ||
52 | ||||
53,54 ~ 555,556 | Indirect Address 3 ~ Indirect Address 254 | 636 ~ 887 | ||
557 | Indirect Address 255 | 888 | ||
558 | ||||
559 | Indirect Address 256 | 889 | ||
560 | ||||
561 | (reserve) | R | - | uint8 |
562 | Torque Enable | R/W | 0 | uint8 0~255 |
563 | LED RED | R/W | 0 | uint8 0~255 |
564 | LED GREEN | R/W | 0 | |
565 | LED BLUE | R/W | 0 | |
566 ~ 585 | (reserve) | R | - | uint8 |
586 | Velocity I Gain | R/W | - | uint16 0~32767 |
587 | ||||
588 | Velocity P Gain | R/W | - | uint16 0~32767 |
589 | ||||
590 ~ 593 | (reserve) | R | - | uint8 |
594 | Position P Gain | R/W | - | uint16 0~32767 |
595 | ||||
596 | Goal Position | R/W | - | int32 Min Position Limit~Max Position Limit -2147483648~2147483647 |
597 | ||||
598 | ||||
599 | ||||
600 | Goal Velocity | R/W | 0 | int32 -Velocity Limit~Velocity Limit |
601 | ||||
602 | ||||
603 | ||||
604 | Goal Torque | R/W | 0 | int16 -Current Limit~Current Limit |
605 | ||||
606 | Goal Acceleration | R/W | 0 | uint32 0~Acceleration Limit |
607 | ||||
608 | ||||
609 | ||||
610 | Moving | R | 0 | uint8 |
611 | Present Position | R | - | int32 |
612 | ||||
613 | ||||
614 | ||||
615 | Present Velocity | R | - | int32 |
616 | ||||
617 | ||||
618 | ||||
619 ~ 620 | (reserve) | R | - | uint8 |
621 | Present Current | R | - | int16 |
622 | ||||
623 | Present Input Voltage | R | - | uint16 |
624 | ||||
625 | Present Temperature | R | - | uint8 |
626 | External Port Data 1 | R/W | - | uint16 |
627 | ||||
628 | External Port Data 2 | |||
629 | ||||
630 | External Port Data 3 | |||
631 | ||||
632 | External Port Data 4 | |||
633 | ||||
634 | Indirect Data 1 | R/W | 0 | uint8 |
635 | Indirect Data 2 | |||
636 | Indirect Data 3 | |||
637 ~ 887 | Indirect Data 4 ~ Indirect Data 254 | |||
888 | Indirect Data 255 | |||
889 | Indirect Data 256 | |||
890 | Registered Instruction | R | 0 | uint8 |
891 | Status Return Level | R/W | 2 | uint8 0~2 |
892 | Hardware Error Status | R | 0 | uint8 |
モデル固有の値を保持します。異なる種類のDynamixelを混在して使用する際の個体識別などに使用できます。
Model Name | Value |
H54-200-S500-R | 54024(0xD308) |
H54-100-S500-R | 53768(0xD208) |
H42-20-S300-R | 51200(0xC800) |
M54-60-S250-R | 46352(0xB510) |
M54-40-S250-R | 46096(0xB410) |
M42-10-S260-R | 43288(0xA918) |
L54-50-S290-R | 38176(0x9520) |
L54-50-S500-R | 38152(0x9508) |
L54-30-S400-R | 37928(0x9428) |
L54-30-S500-R | 37896(0x9408) |
L42-10-S300-R | 35072(0x8900) |
通信する際のボーレートです。ホストとDynamixelのボーレートは一致させなくてはなりません。
Value | Baudrate [bps] |
0 | 9600 |
1 | 57600 |
2 | 115200 |
3 | 1000000 |
4 | 2000000 |
5 | 3000000 |
6 | 4000000 |
7 | 4500000 |
8 | 10500000 |
インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。
ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、DXHUBを使用する限りでは0を設定しても問題ありません。
Delay Time [us] = Value * 2 [us]
動作モードを選択します。Valueに記載が無い値は予約済みのため、指定してはなりません。
なお、電流センサを搭載しないデバイスは一部のモードが選択できません。
Value | Mode | Description |
0 | Torque Control Mode | 電流制御。位置及び速度制御は行わない。 |
1 | Velocity Control Mode | 加減速度制御制御。位置及びトルク制御は行わない。 |
3 | Position Control Mode | 加減速度制御付き位置制御。加減速度制御も可。GoalPositionはMin Position Limit~Min Position Limitの制御範囲に制限。 |
4 | Extended Position Control Mode | 加減速度制御付き拡張位置制御。GoalPositionの範囲が拡大され、符号付き32bitの範囲まで対応。Position Limitは無視される。 |
この値が真の現在位置に加算されPresent Positionに反映されます。オフセット位置をホスト側では無くDynamixel側に持たせる際に使用します。
※L42-10-S300-Rは未装備
Position [deg] = Value * 360 [deg] / Resolution
Model | Resolution for 1 revolution |
H54-200-S500-R | 501923 |
H54-100-S500-R | 501923 |
H42-20-S300-R | 303750 |
M54-60-S250-R | 251417 |
M54-40-S250-R | 251417 |
M42-10-S260-R | 263187 |
L54-50-S290-R | 207692 |
L54-50-S500-R | 361384 |
L54-30-S400-R | 288395 |
L54-30-S500-R | 316384 |
L42-10-S300-R | 4096 |
Present Velocityの絶対値とこの値を比較した結果がMovingに示されます。
Velocity [rpm] = Value * VelocityScalingFactor [rpm]
Model | Velocity Scaling Factor[rpm] |
H54-200-S500-R | 1/501.923 |
H54-100-S500-R | 1/501.923 |
H42-20-S300-R | 1/303.750 |
M54-60-S250-R | 1/251.417 |
M54-40-S250-R | 1/251.417 |
M42-10-S260-R | 1/257.019 |
L54-50-S290-R | 1/288.461 |
L54-50-S500-R | 1/501.923 |
L54-30-S400-R | 1/400.550 |
L54-30-S500-R | 1/501.923 |
L42-10-S300-R | 1/303.8 |
Present Temperatureがこの値を超えるとHardware Error Statusの該当ビットがONになり、Shutdownで指定された動作に遷移します。
Temperature [degC] = Value * 1 [degC]
Present Input Voltageがこの値の範囲を超えるとHardware Error Statusの該当ビットはONになり、Shutdownで指定された動作に遷移します。
Voltage [V] = Value * 0.1 [V]
Goal Torqueの絶対値はこの値以下に制限されます。
Current [mA] = Value * CurrentScalingFactor [mA]
Model | Default value | Range | Current Scaling Factor [mA] |
H54-200-S500-R | ? | ? | 33000/2048 |
H54-100-S500-R | ? | ? | |
M54-60-S250-R | ? | ? | |
M54-40-S250-R | ? | ? | |
L54-50-S290-R | ? | ? | |
L54-50-S500-R | ? | ? | |
L54-30-S400-R | ? | ? | |
L54-30-S500-R | ? | ? | |
H42-20-S300-R | ? | ? | 8250/2048 |
M42-10-S260-R | 300 | 0~900 | |
L42-10-S300-R | 987 | 0~987 |
Goal Velocityの絶対値はこの値以下に制限されます。
Velocity [rpm] = Value * VelocityScalingFactor [rpm]
モデル毎のVelocity Scaling Factorはこちら。
Operating ModeにPosition Control Modeが設定されている時にGoal Positionはこの値の範囲内に制限されます。
Position [deg] = Value * 360 [deg] / Resolution
モデル毎のResolutionはこちら。
Model | Default value | |
Max | Min | |
H54-200-S500-R | 250961 | -250961 |
H54-100-S500-R | 250961 | -250961 |
H42-20-S300-R | 151875 | -151875 |
M54-60-S250-R | 125708 | -125708 |
M54-40-S250-R | 125708 | -125708 |
M42-10-S260-R | 131593 | -131593 |
L54-50-S290-R | 103846 | -103846 |
L54-50-S500-R | 180692 | -180692 |
L54-30-S400-R | 144197 | -144197 |
L54-30-S500-R | 180692 | -180692 |
L42-10-S300-R | 2048 | -2047 |
Modeにて3つのExternal Portをデジタル入出力、もしくはアナログ入力に設定します。
Mode Value | Mode | Description |
0 | Analog IN | PortNへ入力された0~3.3Vの電圧を12bitの分解能でA/D測定しDataNにストア |
1 | Digital OUT (PushPull) | DataNに0の書き込みでPortNから3.3V、1の書き込みでPortNから0Vを出力 VOH:2.4V, VOL:0.5V |
2 | Digital IN (PullUp) | PortNへ0Vの入力でDataに0、PortNへ3.3Vの入力でDataに1をストア VIH:2.3V, VIL:1.0V PullUp/Down Reg:40kΩ(typ) |
3 | Digital IN (PullDown) |
この設定とHardware Error Statusの論理積が0以外になると、Torque Enableは0になりモータの出力が遮断されシャットダウン状態に遷移します。以後通常のインストラクションパケットにてTorque Enableを1にする事ができません。
Bit | Name |
7 | 常時0 |
6 | 常時0 |
5 | Overload Error |
4 | Electrical Shock Error |
3 | Motor Encoder Error |
2 | Overheating Error |
1 | Motor hall sensor error |
0 | Input Voltage Error |
なお、シャットダウン状態から復帰するには発生している障害を排除した後、電源の再投入か、REBOOTインストラクションパケットを受信しなくてはなりません。
出力軸をフリーにするか、設定されたOperating Modeに従った制御を開始します。
Value | Description |
0 | 出力軸フリー、制御停止、ロックされたアイテムを解除 |
1 | Operating Modeに従った制御開始、NVM及びIndirect Address領域のアイテムロック |
速度制御演算における各種制御ゲインを指定します。
Operating ModeにVelocity Control Modeが設定されている時に有効です。
Model | Default Value | |
I | P | |
H54-200-S500-R | ? | ? |
H54-100-S500-R | ? | ? |
H42-20-S300-R | ? | ? |
M54-60-S250-R | ? | ? |
M54-40-S250-R | ? | ? |
M42-10-S260-R | 72 | 520 |
L54-50-S290-R | ? | ? |
L54-50-S500-R | ? | ? |
L54-30-S400-R | ? | ? |
L54-30-S500-R | ? | ? |
L42-10-S300-R | 40 | 440 |
位置制御演算における各種制御ゲインを指定します。
Operating ModeにPosition Control Mode・Extended Position Control Modeが設定されている時に有効な値です。
Model | Default Value |
H54-200-S500-R | ? |
H54-100-S500-R | ? |
H42-20-S300-R | ? |
M54-60-S250-R | ? |
M54-40-S250-R | ? |
M42-10-S260-R | 32 |
L54-50-S290-R | ? |
L54-50-S500-R | ? |
L54-30-S400-R | ? |
L54-30-S500-R | ? |
L42-10-S300-R | 64 |
位置制御の目標値を指定します。
Operating ModeにPosition Control Mode・Extended Position Control Modeが設定されている時に有効で、各Mode毎に指摘できる数値範囲が異なります。
Operating Mode | Range |
3 | Min Position Limit~Max Position Limit |
4 | -2147483648~2147483647 |
Position [deg] = Value * 360 / Resolution
モデル毎のResolutionはこちら。
速度制御の目標値を指定します。
Operating ModeにPosition Control Mode・Extended Position Control Mode・Velocity Control Modeが設定されている時に有効な値です。
Velocity [rpm] = Value * VelocityScalingFactor [rpm]
モデル毎のVelocity Scaling Factorはこちら。
トルク制御の目標値を指定します。
Operating ModeにPosition Control Mode・Extended Position Control Mode・Velocity Control Mode・Torque Control Modeが設定されている時に有効な値です。
Current [mA] = Value * CurrentScalingFactor [mA]
モデル毎のCurrent Scaling Factorはこちら。
加速度を指定します。
Operating ModeがTorque Control Modeである時を除くModeに有効です。
Acceleration [rpm²] = Value * 58000 [rpm²]
加速度・目標速度・目標位置の値によって最終的に4種類の軌跡が得られます。位置制御時における設定値による位置と速度のProfileを以下に示します。
Profile | Condition, Waveform |
ステップ | Velocity = 0, Acceleration = don't care |
![]() | |
矩形 | Velocity ≠ 0, Acceleration = 0 |
![]() | |
三角 | Velocity ≠ 0, Acceleration ≠ 0 |
![]() | |
台形 | Velocity ≠ 0, Acceleration ≠ 0 |
![]() |
Present Velocityの絶対値とMoving Thresholdの比較結果を示します。
Value | Description |
0 | Moving Threshold ≥ |Present Velocity| |
1 | Moving Threshold < |Present Velocity| |
真の位置からHoming Offsetを除した出力軸の位置です。
Torque Enableが0の状態ではレンジフローするまで回転に応じた増減をしますが、Torque Enableを1にした瞬間にOperating Modeに依存した値でクリップされます。
Position [deg] = Value * 360 [deg] / Resolution
モデル毎のResolutionはこちら。
現在の出力軸の回転数です。
Velocity [rpm] = Value * VelocityScalingFactor [rpm]
モデル毎のVelocity Scaling Factorはこちら。
現在モータへ流れている電流です。
Current [mA] = Value * CurrentScalingFactor [mA]
モデル毎のCurrent Scaling Factorはこちら。
コントロールテーブル上のアドレスを再構成します。
Indirect Address N(N=1~256)とIndirect Data N(N=1~256)は対になっており、Indirect Address Nに任意のコントロールテーブル上のアドレスXを設定すると、その後Indirect Data Nへアクセスする事はIndirect Address Nに設定されたアドレスXへ間接的にアクセスする事になります。
具体的な例として、ホストから頻繁にアクセスしたいアイテムが複数あり、それらが離れたアドレスに配置されていた場合を考えます。通常はそれらアイテム全てをまたぐアドレス範囲のデータをまとめてアクセスするか、個々のアイテムに個別にアクセスするとった手段を執ります。これには本来無用なデータやアクセス回数が強いられるため、通信のトラフィックが上がる要因になるのと、ホスト側のプログラムの負担になります。
ホストから書き込み対象としてPosition P Gain・Goal Velocity・Goal Position、読み出し対象としてPresent Position・Present Temperatureがあった場合、これらをIndirect Data領域に再配置するには以下の手順を踏みます。
以後Indirect Data 1からの連続した624番地にアクセスする事は、再配置したアイテムへ個々に間接的にアクセスした事になります。
なお、Indirect Addressがデフォルト値のままであれば、Indirect Data領域はユーザ任意のRAM領域として扱うことができます。
ステータスパケットを返信するインストラクションパケットを選択します。
Value | Instruction to respond |
0 | Ping |
1 | Ping, Read |
2 | Ping, Read, Write, Reg Write, Factory Reset, Reboot, Sync Read, Bulk Read |
様々なフィードバックと内部の制御状態を比較した結果を示します。さらに、この値とShutdownの論理積の結果により動作を継続するか否かを決定します。
Bit | Name | Description |
7 | - | 常時0 |
6 | - | 常時0 |
5 | Overload Error | 最大出力で制御できない負荷が継続的に発生した |
4 | Electrical Shock Error | 電気的に回路が衝撃を受けたり入力電力が不足してモータが正常動作しない |
3 | Motor Encoder Error | エンコーダが正常動作しない |
2 | Overheating Error | Present TemperatureがTemperature Limitを超えた |
1 | Motor hall sensor error | モータのホールセンサがリミット値を超えた |
0 | Input Voltage Error | Present VoltageがMax/Min Voltage Limitの範囲を超えた |