商品番号 | BTX262 | |
モータ | maxon コアレス | |
連続トルク | 5.1N•m (at 24V 1.5A) | |
無負荷回転数 | 32.7rpm (at 24V) | |
連続転数 | 29.2rpm (at 24V) | |
減速比 | 1/303.75 | |
エンコーダ分解能 | 607500ppr | |
バックラッシュ | 6arcmin | |
最大動作角度 | 位置決め制御時:0~360°, Endless Turn | |
標準電源電圧 | 24V | |
許容ラジアル荷重 | 280N (ホーン端面から10mmの位置) | |
許容アキシアル荷重 | 100N | |
動作温度範囲 | -5~+55℃ | |
重量 | 340g | |
コマンドシグナル | デジタルパケット | |
プロトコル | 半二重非同期通信 8-1-N | |
リンク方式 | RS-485 Multi Drop(daisy chain type Connector) | |
ID数 | 253 (ID=0~252) | |
通信速度 | 9.6k~10.5Mbps | |
フィードバック | 位置, 速度, 温度, 電源電圧, 電流 | |
動作モード | 電流, 速度, 位置, 拡張位置 | |
材質 | ケース | アルミ |
ギア | メタル | |
認証 | ![]() ![]() |
Performance Graph
配線を終え電源を投入すると、正常であればDynamixelの背面上部に装備された赤色のLEDが0.5秒点滅した後消灯します(ホストからLEDの点灯指示等が無いものとする)。
通信を行っていないにもかかわらず電源投入時にLEDが常時消灯ないし常時点灯した場合は、何らかの重大な問題が生じている可能性があります。まず電源を切り、配線方法やケーブル、電源装置を確認して下さい。
LEDが一定周期で点滅し続ける場合は、Dynamixel自身が何かしらの異常を検出した時です。
Dynamixel(スレーブ)自らが勝手にデータを送信することは無く、別途用意されるPC等(マスターないしホスト)から送信されるデータをDynamixelが受信した際にのみデータを返信するといったマスタースレーブ方式を採用しています。また、予め決められた電文に従った(プロトコル)電文にのみ応答します。さらに、その1回分の電文をパケットと言います。
Dynamixelシリーズには2種類の通信プロトコル(1.0と2.0)が存在し、本品は通信プロトコル2.0に対応しています。
RS-485はシリアル通信を行う際の電気的な仕様の1つです。1つの信号を2本の差動信号に変換して伝達する事で、耐ノイズ性を向上させています。
Dynamixelシリーズでは安定したデジタル通信を用いて制御する事としたためRS-485を採用しましたが、ケーブルの本数を増やすと配線作業に支障を来すため、1対(1つの信号)で送信と受信を行う半二重を選択しています。
Dynamixelは出荷時において個体識別用のID(数字)が全て1に設定されいます。その状態のまま1つのネットワークに複数台接続してしまうと、ホストから個々のDynamixelを識別することができないまでか、全てのDynamixelが自分自身への指令と認識してしまいます。そのため、複数台を接続して使用する際は、必ず予め1台ずつ異なるIDを設定しておきます。
IDを設定する際は先の識別の問題を回避するためホストが提供するネットワークに1台のみのDynamixelを接続し、複数台のDynamixelが接続されていない状態で作業を行う必要があります。
Dynamixelのボーレートは高いほど大量のデータを短時間に送受信できます。しかしながら高いボーレートはケーブルの長さや等の外的要因が相まって、データそのものの信頼性が損なわれる確率が高くなります。
また、複数台のDynamixelを使用する際は、全て同じボーレートに設定しておく必要があります。
Dynamixel内に用意されたメモリ領域をここではコントロールテーブルと称します。コントロールテーブル中の任意のデータにアクセスする手段として通信プロトコロルが用意されています。
ホストから指定されたIDを持ったDynamixelのコントロールテーブルに対して読み書きを行う事で全てを統括するため、先のIDやボーレートもコントロールテーブル上に配置されています。
コントロールテーブルの詳細は後述の表に示します。
Dynamixelは用途に応じて複数の動作モードを選択できます。大きく分けて3つの基本動作を持ちます。
これらの制御の切り替えや制御を行う際の条件の設定は、コントロールテーブル上に配置された様々なパラメータの値を変更することで行います。
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.10以降を搭載した以下のDynamixel PROおよびPシリーズに共通するコントロールテーブルです。
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~9 |
9 | Return Delay Time | R/W (NVM) | 250 | uint8 0~254 |
10 | Drive Mode | R/W (NVM) | 0 | uint8 0~1 |
11 | Operating Mode | R/W (NVM) | 3 | uint8 0~16 |
12 | Secondary(Shadow) ID | R/W (NVM) | 255 | uint8 0~255 |
13 ~ 19 | (reserve) | R | - | uint8 |
20 | Homing Offset | R/W (NVM) | 0 | int32 |
21 | ||||
22 | ||||
23 | ||||
24 | Moving Threshold | R/W (NVM) | - | uint32 |
25 | ||||
26 | ||||
27 | ||||
28 ~ 30 | (reserve) | R | - | uint8 |
31 | Temperature Limit | R/W (NVM) | 80 | uint8 0~100 |
32 | Max Voltage Limit | R/W (NVM) | 350 | uint16 0~350 |
33 | ||||
34 | Min Voltage Limit | R/W (NVM) | 150 | uint16 0~350 |
35 | ||||
36 | PWM Limit | R/W (NVM) | 2009 | uint16 0~2009 |
37 | ||||
38 | Current Limit | R/W (NVM) | - | uint16 |
39 | ||||
40 | Acceleration Limit | R/W (NVM) | - | uint32 |
41 | ||||
42 | ||||
43 | ||||
44 | Velocity Limit | R/W (NVM) | - | uint32 |
45 | ||||
46 | ||||
47 | ||||
48 | Max Position Limit | R/W (NVM) | - | int32 |
49 | ||||
50 | ||||
51 | ||||
52 | Min Position Limit | R/W (NVM) | - | int32 |
53 | ||||
54 | ||||
55 | ||||
56 | External Port Mode 1 | R/W (NVM) | 0 | uint8 0~3 |
57 | External Port Mode 2 | R/W (NVM) | 0 | |
58 | External Port Mode 3 | R/W (NVM) | 0 | |
59 | External Port Mode 4 | R/W (NVM) | 0 | |
60 ~ 62 | (reserve) | R | - | uint8 |
63 | Shutdown | R/W (NVM) | 52(0x34) | uint8 0~255 |
64 ~ 167 | (reserve) | R | - | uint8 |
168 | Indirect Address 1 | R/W (NVM) | 634 | uint16 512~1023 |
169 | ||||
170 | Indirect Address 2 | 635 | ||
171 | ||||
172,173 ~ 418,419 | Indirect Address 3 ~ Indirect Address 126 | 636 ~ 759 | ||
420 | Indirect Address 127 | 760 | ||
421 | ||||
422 | Indirect Address 128 | 761 | ||
423 | ||||
424 ~ 511 | (reserve) | R | - | uint8 |
512 | Torque Enable | R/W | 0 | uint8 0~1 |
513 | LED RED | R/W | 0 | uint8 0~255 |
514 | LED GREEN | R/W | 0 | |
515 | LED BLUE | R/W | 0 | |
516 | Status Return Level | R/W | 2 | uint8 0~2 |
517 | Registered Instruction | R | 0 | uint8 |
518 | Hardware Error Status | R | - | uint8 |
519 ~ 523 | (reserve) | R | - | uint8 |
524 | Velocity I Gain | R/W | - | uint16 0~32767 |
525 | ||||
526 | Velocity P Gain | R/W | - | |
527 | ||||
528 | Position D Gain | R/W | - | uint16 0~32767 |
529 | ||||
530 | Position I Gain | R/W | - | |
531 | ||||
532 | Position P Gain | R/W | - | |
533 | ||||
534 ~ 535 | (reserve) | R | - | uint8 |
536 | Feedforward 2nd Gain | R/W | - | uint16 0~32767 |
537 | ||||
538 | Feedforward 1st Gain | R/W | - | uint16 0~32767 |
539 | ||||
540 ~ 545 | (reserve) | R | - | uint8 |
546 | Bus Watchdog | R/W | - | uint8 0~127 |
547 | (reserve) | R | - | uint8 |
548 | Goal PWM | R/W | - | int16 -PWM Limit~PWM Limit |
549 | ||||
550 | Goal Current | R/W | - | int16 -Current Limit~Current Limit |
551 | ||||
552 | Goal Velocity | R/W | 0 | int32 -Velocity Limit~Velocity Limit |
553 | ||||
554 | ||||
555 | ||||
556 | Profile Acceleration | R/W | 0 | uint32 0~Acceleration Limit |
557 | ||||
558 | ||||
559 | ||||
560 | Profile Velocity | R/W | 0 | uint32 0~Velocity Limit |
561 | ||||
562 | ||||
563 | ||||
564 | Goal Position | R/W | - | int32 Min Position Limit~Max Position Limit |
565 | ||||
566 | ||||
567 | ||||
568 | Realtime Tick | R | - | uint16 0~32767 |
569 | ||||
570 | Moving | R | 0 | uint8 |
571 | Moving Status | R | 0 | uint8 |
572 | Present PWM | R | - | int16 |
573 | ||||
574 | Present Current | R | - | int16 |
575 | ||||
576 | Present Velocity | R | - | int32 |
577 | ||||
578 | ||||
579 | ||||
580 | Present Position | R | - | int32 |
581 | ||||
582 | ||||
583 | ||||
584 | Velocity Trajectory | R | - | |
585 | ||||
586 | ||||
587 | ||||
588 | Position Trajectory | R | - | |
589 | ||||
590 | ||||
591 | ||||
592 | Present Input Voltage | R | - | uint16 |
593 | ||||
594 | Present Temperature | R | - | uint8 |
595 ~ 599 | (reserve) | R | - | uint8 |
600 | External Port Data 1 | R/W | - | uint16 |
601 | ||||
602 | External Port Data 2 | |||
603 | ||||
604 | External Port Data 3 | |||
605 | ||||
606 | External Port Data 4 | |||
607 | ||||
608 ~ 633 | (reserve) | R | - | uint8 |
634 | Indirect Data 1 | R/W | 0 | uint8 |
635 | Indirect Data 2 | |||
636 | Indirect Data 3 | |||
637 ~ 759 | Indirect Data 4 ~ Indirect Data 126 | |||
760 | Indirect Data 127 | |||
761 | Indirect Data 128 |
モデル固有の値を保持します。異なる種類のDynamixelを混在して使用する際の個体識別などに使用できます。
Model Name | Value |
PH54-200-S500-R | 2020(0x07E4) |
PH54-100-S500-R | 2010(0x07DA) |
PH42-020-S300-R | 2000(0x07D0) |
PM54-060-S250-R | 2120(0x0848) |
PM54-040-S250-R | 2110(0x083E) |
PM42-010-S260-R | 2100(0x0834) |
H54-200-S500-R(A) | 54025(0xD309) |
H54-100-S500-R(A) | 53769(0xD209) |
H42-20-S300-R(A) | 51201(0xC801) |
M54-60-S250-R(A) | 46353(0xB511) |
M54-40-S250-R(A) | 46097(0xB411) |
M42-10-S260-R(A) | 43289(0xA919) |
通信する際のボーレートです。ホストとDynamixelのボーレートは一致させなくてはなりません。
Value | Baudrate [bps] |
0 | 9600 |
1 | 57600 (57613) |
2 | 115200 (115226) |
3 | 1000000 |
4 | 2000000 |
5 | 3000000 |
6 | 4000000 |
7 | 4500000 (4421053) |
8 | 6000000 |
9 | 10500000 |
インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。
ホストにおける半二重のバス制御のタイミングに合わせて調整しますが、弊社のPC用USBシリアルI/Fを使用する限りでは0を設定しても問題ありません。
Delay Time [us] = Value * 2 [us]
デフォルト回転方向、プロファイル構成を設定します。
デフォルト回転方向によりはPosition, Velocity, PWMの各指令によるホーンの回転方向が変化します。
プロファイル構成は位置決め制御時に速度制御を行うか遷移時間制御を行うかを選択します。
Bit | Name | Description |
7 | 常時0 | |
6 | 常時0 | |
5 | 常時0 | |
4 | 常時0 | |
3 | 常時0 | |
2 | 常時0 | |
1 | 常時0 | |
0 | Direction of rotation | 0:Normal (CCW方向を+、CW方向を-) 1:Reverse (CCW方向を-、CW方向を+) |
動作モードを選択します。Valueに記載が無い値は予約済みのため、指定してはなりません。^ なお、MX-28は電流センサを備えていないため、設定可能なモードが限られます。
Value | Mode | Description |
0 | Current Control Mode | 電流制御。位置及び速度制御は行わない。 MX-28は指定不可 |
1 | Velocity Control Mode | 速度制御(電流制御併用)。位置制御は行わない。 |
3 | Position Control Mode | 位置制御(速度・電流制御併用)。GoalPositionは0~360°の1回転分の制御範囲に制限。 |
4 | Extended Position Control Mode | 拡張位置制御。GoalPositionの範囲が拡大され、最大±256回転まで対応。 |
16 | PWM Control Mode | PWMのデューティー比を制御。 |
DynamixelのSecondary IDを設定します。Secondary IDは、IDと同様に各Dynamixelを識別するために用いられます。なお、Secondary IDに253以上の値が設定されている場合、Secondary IDは機能しません。
この値が真の現在位置に加算されPresent Positionに反映されます。オフセット位置をホスト側では無くDynamixel側に持たせる際に使用します。
Position [deg] = Value * 360 [deg] / Resolution
Model | Resolution for 1 revolution |
PH54-200-S500-R | 1003846 |
PH54-100-S500-R | 1003846 |
PH42-020-S300-R | 607500 |
PM54-060-S250-R | 502834 |
PM54-040-S250-R | 502834 |
PM42-010-S260-R | 526374 |
H54-200-S500-R(A) | 1003846 |
H54-100-S500-R(A) | 1003846 |
H42-20-S300-R(A) | 607500 |
M54-60-S250-R(A) | 502834 |
M54-40-S250-R(A) | 502834 |
M42-10-S260-R(A) | 526374 |
Present Velocityの絶対値とこの値を比較した結果がMovingに示されます。
Velocity [rpm] = Value * 0.01 [rpm]
Model | Devault value | Range |
PH54-200-S500-R | 50 | 0~2900 |
PH54-100-S500-R | 20 | 0~2920 |
PH42-020-S300-R | 20 | 0~2920 |
PM54-060-S250-R | 20 | 0~2830 |
PM54-040-S250-R | 20 | 0~2840 |
PM42-010-S260-R | 20 | 0~2600 |
H54-200-S500-R(A) | 50 | 0~2900 |
H54-100-S500-R(A) | 20 | 0~2920 |
H42-20-S300-R(A) | 20 | 0~2920 |
M54-60-S250-R(A) | 20 | 0~2830 |
M54-40-S250-R(A) | 20 | 0~2840 |
M42-10-S260-R(A) | 20 | 0~2600 |
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 Currentの絶対値はこの値以下に制限されます。
Current [mA] = Value * 1 [mA]
Model | Default value | Range |
PH54-200-S500-R | 22740 | 0~22740 |
PH54-100-S500-R | 15900 | 0~15900 |
PH42-020-S300-R | 4500 | 0~4500 |
PM54-060-S250-R | 7980 | 0~7980 |
PM54-040-S250-R | 4470 | 0~4470 |
PM42-010-S260-R | 1461 | 0~1461 |
H54-200-S500-R(A) | 22740 | 0~22740 |
H54-100-S500-R(A) | 15900 | 0~15900 |
H42-20-S300-R(A) | 4500 | 0~4500 |
M54-60-S250-R(A) | 7980 | 0~7980 |
M54-40-S250-R(A) | 4470 | 0~4470 |
M42-10-S260-R(A) | 1461 | 0~1461 |
Goal Accelerationはこの値以下に制限されます。
Acceleration [rpm²] = Value * 58000 [rpm²]
Model | Default value | Range |
PH54-200-S500-R | 9982 | 0~3992644 |
PH54-100-S500-R | 10639 | 0~4255632 |
PH42-020-S300-R | 10765 | 0~4306173 |
PM54-060-S250-R | 11145 | 0~4457932 |
PM54-040-S250-R | 11037 | 0~4414976 |
PM42-010-S260-R | 10867 | 0~4346756 |
H54-200-S500-R(A) | 9982 | 0~3992644 |
H54-100-S500-R(A) | 10639 | 0~4255632 |
H42-20-S300-R(A) | 10765 | 0~4306173 |
M54-60-S250-R(A) | 11145 | 0~4457932 |
M54-40-S250-R(A) | 11037 | 0~4414976 |
M42-10-S260-R(A) | 10867 | 0~4346756 |
Goal Velocityの絶対値はこの値以下に制限されます。
Velocity [rpm] = Value * 0.01 [rpm]
Model | Default value | Range |
PH54-200-S500-R | 2900 | 0~2900 |
PH54-100-S500-R | 2920 | 0~2920 |
PH42-020-S300-R | 2920 | 0~2920 |
PM54-060-S250-R | 2830 | 0~2830 |
PM54-040-S250-R | 2840 | 0~2840 |
PM42-010-S260-R | 2600 | 0~2600 |
H54-200-S500-R(A) | 2900 | 0~2900 |
H54-100-S500-R(A) | 2920 | 0~2920 |
H42-20-S300-R(A) | 2920 | 0~2920 |
M54-60-S250-R(A) | 2830 | 0~2830 |
M54-40-S250-R(A) | 2840 | 0~2840 |
M42-10-S260-R(A) | 2600 | 0~2600 |
Operating ModeにPosition Control Modeが設定されている時にGoal Positionはこの値の範囲内に制限されます。
Position [deg] = Value * 360 [deg] / Resolution
モデル毎のResolutionはこちら。
Model | Default value | |
Max | Min | |
PH54-200-S500-R | 501923 | -501923 |
PH54-100-S500-R | 501923 | -501923 |
PH42-020-S300-R | 303750 | -303750 |
PM54-060-S250-R | 251417 | -251417 |
PM54-040-S250-R | 251417 | -251417 |
PM42-010-S260-R | 263187 | -263187 |
H54-200-S500-R(A) | 501923 | -501923 |
H54-100-S500-R(A) | 501923 | -501923 |
H42-20-S300-R(A) | 303750 | -303750 |
M54-60-S250-R(A) | 251417 | -251417 |
M54-40-S250-R(A) | 251417 | -251417 |
M42-10-S260-R(A) | 263187 | -263187 |
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領域のアイテムロック |
ステータスパケットを返信するインストラクションパケットを選択します。
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の範囲を超えた |
速度制御演算における各種制御ゲインを指定します。
Operating ModeにVelocity Control Modeが設定されている時に有効です。
Model | Default Value | |
I | P | |
PH54-200-S500-R | ? | ? |
PH54-100-S500-R | ? | ? |
PH42-020-S300-R | ? | ? |
PM54-060-S250-R | ? | ? |
PM54-040-S250-R | ? | ? |
PM42-010-S260-R | ? | ? |
H54-200-S500-R(A) | ? | ? |
H54-100-S500-R(A) | ? | ? |
H42-20-S300-R(A) | ? | ? |
M54-60-S250-R(A) | ? | ? |
M54-40-S250-R(A) | ? | ? |
M42-10-S260-R(A) | ? | ? |
位置制御演算における各種制御ゲインを指定します。
Operating ModeにPosition Control Mode・Extended Position Control Modeが設定されている時に有効な値です。
Model | Default Value | ||
D | I | P | |
PH54-200-S500-R | ? | ? | ? |
PH54-100-S500-R | ? | ? | ? |
PH42-020-S300-R | ? | ? | ? |
PM54-060-S250-R | ? | ? | ? |
PM54-040-S250-R | ? | ? | ? |
PM42-010-S260-R | ? | ? | ? |
H54-200-S500-R(A) | ? | ? | ? |
H54-100-S500-R(A) | ? | ? | ? |
H42-20-S300-R(A) | ? | ? | ? |
M54-60-S250-R(A) | ? | ? | ? |
M54-40-S250-R(A) | ? | ? | ? |
M42-10-S260-R(A) | ? | ? | ? |
無通信状態を監視する時間を指定します。
Bus Watchdogが1以上でかつTorque Enableが1である場合、ホストコントローラとDynamixel間の通信間隔を監視します。その間隔が指定時間よりも大きい場合にDynamixelは停止し、Bus Watchdogは-1に変更されます。Bus Watchdog Error状態になると、Goal PWM・Goal Current・Goal Velocity・Goal Positionの各アイテムは読み取り専用に変更されます。Bus Wathdogの値を0に変更すると、Bus Watchdog Errorは解除されます。
Value | Description |
0 | Bus Watchdog無効, Bus Watchdog Error状態を解除 |
1~127 | Bus Watchdog有効 (Value * 20[ms]) |
-1 | Bus Watchdog Error状態 |
PWMのデューティー比を指定します。
Operating ModeにPWM Modeが設定されている事はもとより、全てのModeにおける制御演算結果はPWMのデューティ比として算出されるため、必ず制御の最終段においてこの値以下にデューティー比が制限されモータへ印加されます。
Duty [%] = Value * 100 [%] / 2009
電流制御の目標値を指定します。
Operating ModeにPosition Control Mode・Extended Position Control Mode・Velocity Control Mode・Current Control Modeが設定されている時に有効な値です。
Current [mA] = Value [mA]
速度制御の目標値を指定します。
Operating ModeにVelocity Control Modeが設定されている時に有効な値です。
Velocity [rpm] = Value * 0.01 [rpm]
Profileの加速度を指定します。
Operating ModeがCurrent Control Modeである時を除くModeに有効です。
加速度は以下の式で決まります。
Acceleration [rpm²] = Value * 1 [rpm²]
詳細はProfile Velocityを参照ください。
Profileの最大速度を指定します。
Operating ModeがCurrent Control ModeないしVelocity Control Modeである時を除くModeに有効です。なお、Velocity Control Mode時はGoal Velocityが最大速度として採用されます。
Max Velocity [rpm] = Value * 0.01 [rpm]
加速度・最大速度・目標位置の値によって最終的に3種類の軌跡が得られます。位置制御時における設定値による位置と速度のProfileを以下に示します。
Profile | Condition, Waveform |
ステップ | Profile Velocity = 0, Acceleration = don't care |
![]() | |
矩形 | Profile Velocity ≠ 0, Acceleration = 0 |
![]() | |
台形 | Profile Velocity ≠ 0, Acceleration ≠ 0 |
![]() |
適当な加速度と最大速度を設定した上で目標位置を指令する事で、急峻な加速度を伴う位置決め制御による機械的なショックを軽減できます。また、目標位置への到達時間が決まっている場合は、時間から加速度と最大速度を求めて設定する事で対応できます。
なお、上記波形のt1は、概ね以下の数式で求められます。
t1 = 600 * (Goal Velocity / Profile Acceleration))
また、これらの他に急峻な加速度変化を抑える制御を行っているため、最終的な目標到達時間はt3よりも長くなる場合があります。
位置制御の目標値を指定します。
Operating ModeにPosition Control Mode・Extended Position Control Modeが設定されている時に有効で、各Mode毎に指摘できる数値範囲が異なります。
Operating Mode | Value Range | Max Turnover Number |
3 | Min Position Limit~Max Position Limit | 1 |
4 | -2147483647~+2147483647 | -256~+256 |
Position [deg] = Value * 360 / Resolution
モデル毎のResolutionはこちら。
Present Velocityの絶対値とMoving Thresholdの比較結果を示します。
Value | Description |
0 | Moving Threshold ≥ |Present Velocity| |
1 | Moving Threshold < |Present Velocity| |
動作中の状況を示します。
Bit | Name | Description |
7 | - | 常時0 |
6 | - | 常時0 |
5 | Profile Type | 11:台形速度Profile 01:矩形速度Profile 00:Step速度Profile |
4 | ||
3 | - | 常時0 |
2 | - | 常時0 |
1 | - | 常時0 |
0 | In-Position | 位置制御時、目標位置到達 |
真の位置からHoming Offsetを除した出力軸の位置です。
Torque Enableが0の状態ではレンジフローするまで回転に応じた増減をしますが、Torque Enableを1にした瞬間にOperating Modeに依存した値でクリップされます。
Position [deg] = Value * 360 [deg] / Resolution
なおPresent Positionは次の場合にリセットされます。
モデル毎のResolutionはこちら。
コントロールテーブル上のアドレスを再構成します。
Indirect Address N(N=1~128)とIndirect Data N(N=1~128)は対になっており、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からの連続した634番地にアクセスする事は、再配置したアイテムへ個々に間接的にアクセスした事になります。
なお、Indirect Addressがデフォルト値のままであれば、Indirect Data領域はユーザ任意のRAM領域として扱うことができます。