!!暫定版注意!!
ファームウェア 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[2] | 54024(0xD308) |
H54-100-S500-R[3] | 53768(0xD208) |
H42-20-S300-R[4] | 51200(0xC800) |
M54-60-S250-R[5] | 46352(0xB510) |
M54-40-S250-R[6] | 46096(0xB410) |
M42-10-S260-R[7] | 43288(0xA918) |
L54-50-S290-R[8] | 38176(0x9520) |
L54-50-S500-R[9] | 38152(0x9508) |
L54-30-S400-R[10] | 37928(0x9428) |
L54-30-S500-R[11] | 37896(0x9408) |
L42-10-S300-R[12] | 35072(0x8900) |
内蔵されるCPUに書き込まれたプログラムのバージョンです。ファームウェアの更新を行った際に合わせて自動的に変更されます。
各Dynamixelを特定するための固有の値で0~252の範囲の数値で設定します。同一ネットワーク内に存在するDynamixelには各々異なるIDが要求されます。
通信する際のボーレートです。ホストとDynamixelのボーレートは一致させなくてはなりません。
Value | Baudrate [bps] |
0 | 9600 |
1 | 57600 |
2 | 115200 |
3 | 1000000 |
4 | 2000000 |
5 | 3000000 |
6 | 4000000 |
7 | 4500000 |
8 | 10500000 |
インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。
ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、DXHUB[20]を使用する限りでは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[2] | 501923 |
H54-100-S500-R[3] | 501923 |
H42-20-S300-R[4] | 303750 |
M54-60-S250-R[5] | 251417 |
M54-40-S250-R[6] | 251417 |
M42-10-S260-R[7] | 263187 |
L54-50-S290-R[8] | 207692 |
L54-50-S500-R[9] | 361384 |
L54-30-S400-R[10] | 288395 |
L54-30-S500-R[11] | 316384 |
L42-10-S300-R[12] | 4096 |
Present Velocityの絶対値とこの値を比較した結果がMovingに示されます。
Velocity [rpm] = Value * VelocityScalingFactor [rpm]
Model | Velocity Scaling Factor[rpm] |
H54-200-S500-R[2] | 1/501.923 |
H54-100-S500-R[3] | 1/501.923 |
H42-20-S300-R[4] | 1/303.750 |
M54-60-S250-R[5] | 1/251.417 |
M54-40-S250-R[6] | 1/251.417 |
M42-10-S260-R[7] | 1/257.019 |
L54-50-S290-R[8] | 1/288.461 |
L54-50-S500-R[9] | 1/501.923 |
L54-30-S400-R[10] | 1/400.550 |
L54-30-S500-R[11] | 1/501.923 |
L42-10-S300-R[12] | 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[2] | ? | ? | 33000/2048 |
H54-100-S500-R[3] | ? | ? | |
M54-60-S250-R[5] | ? | ? | |
M54-40-S250-R[6] | ? | ? | |
L54-50-S290-R[8] | ? | ? | |
L54-50-S500-R[9] | ? | ? | |
L54-30-S400-R[10] | ? | ? | |
L54-30-S500-R[11] | ? | ? | |
H42-20-S300-R[4] | ? | ? | 8250/2048 |
M42-10-S260-R[7] | 300 | 0~900 | |
L42-10-S300-R[12] | 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[2] | 250961 | -250961 |
H54-100-S500-R[3] | 250961 | -250961 |
H42-20-S300-R[4] | 151875 | -151875 |
M54-60-S250-R[5] | 125708 | -125708 |
M54-40-S250-R[6] | 125708 | -125708 |
M42-10-S260-R[7] | 131593 | -131593 |
L54-50-S290-R[8] | 103846 | -103846 |
L54-50-S500-R[9] | 180692 | -180692 |
L54-30-S400-R[10] | 144197 | -144197 |
L54-30-S500-R[11] | 180692 | -180692 |
L42-10-S300-R[12] | 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[2] | ? | ? |
H54-100-S500-R[3] | ? | ? |
H42-20-S300-R[4] | ? | ? |
M54-60-S250-R[5] | ? | ? |
M54-40-S250-R[6] | ? | ? |
M42-10-S260-R[7] | 72 | 520 |
L54-50-S290-R[8] | ? | ? |
L54-50-S500-R[9] | ? | ? |
L54-30-S400-R[10] | ? | ? |
L54-30-S500-R[11] | ? | ? |
L42-10-S300-R[12] | 40 | 440 |
位置制御演算における各種制御ゲインを指定します。
Operating ModeにPosition Control Mode・Extended Position Control Modeが設定されている時に有効な値です。
位置制御の目標値を指定します。
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領域として扱うことができます。
Reg Writeインストラクションパケットを受信すると1、その後Actionインストラクションパケットを受信すると0になります。
ステータスパケットを返信するインストラクションパケットを選択します。
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の範囲を超えた |
(This host) = https://www.besttechnology.co.jp