TITLE:MX Series Control table **適用 [#q973e381] 以下のDynamixelに共通のコントロールテーブルです。ここに記載されないDynamixelのコントロールテーブルとは異なります。 -MX-12W -MX-28R/MX-28T -MX-64R/MX-64T -MX-106/MX-106T **コントロールテーブル [#x4eb66a5] Dynamixelの機能及び設定は次のメモリマップ上に1~4バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。~ なお、複数バイトに渡るアイテムは、同時性を確保するために1回のインストラクションパケットにおいて読み書きする必要があります。 |=~Control Table|||||h |=''Address''|=''Item''|=''Access''|=''Reset Value''|=''Range''| |CENTER:|LEFT:|CENTER:|CENTER:|CENTER:|c |0 (0x0)|[[Model Number>#ta493b6c]]|R|-|uint16| |1 (0x1)|~|~|~|~| |2 (0x2)|[[Version of Firmware>#x2b21b74]]|R|-|uint8| |3 (0x3)|[[ID>#afcb4273]]|R/W|1|uint8&br;0~253| |4 (0x4)|[[Baudrate>#r27c0a5d]]|R/W (NVM)|34&br;(MX-12Wのみ1)|uint8&br;0~254| |5 (0x5)|[[Return Delay Time>#z6a035d0]]|R/W (NVM)|250|uint8&br;0~254| |6 (0x6)|[[CW Angle Limit>#h4561931]]|R/W (NVM)|0|uint16&br;0~4095| |7 (0x7)|~|~|~|~| |8 (0x8)|[[CCW Angle Limit>#u752e406]]|R/W (NVM)|4095|uint16&br;0~4095| |9 (0x9)|~|~|~|~| |10 (0xA)|[[Drive Mode>#rd7fa695]]|R/W (NVM)|0|uint8&br;0~3| |11 (0xB)|[[Highest Limit Temperature>#eae67652]]|R/W (NVM)|80|uint8&br;10~99| |12 (0xC)|[[Lowest Limit Voltage>#l2901ded]]|R/W (NVM)|60|uint8&br;50~250| |13 (0xD)|[[Highest Limit Voltage>#sf36842f]]|R/W (NVM)|160|uint8&br;50~250| |14 (0xE)|[[Max Torque>#m8848974]]|R/W (NVM)|1023|uint16&br;0~1023| |15 (0xF)|~|~|~|~| |16 (0x10)|[[Status Return Level>#mc2f793d]]|R/W (NVM)|2|uint8&br;0~2| |17 (0x11)|[[Alarm LED>#q8d97e3d]]|R/W (NVM)|36|uint8&br;0~127| |18 (0x12)|[[Alarm Shutdwon>#y219e63a]]|R/W (NVM)|36|uint8&br;0~127| |20 (0x14)|[[Down Calibration>#f95fb07c]]|R|?|uint16| |21 (0x15)|~|~|~|~| |22 (0x16)|[[Up Calibration>#hceb4e38]]|R|?|uint16| |23 (0x17)|~|~|~|~| |24 (0x18)|[[Torque Enable>#ae42664f]]|R/W (NVM)|0|uint8&br;0~1| |25 (0x19)|[[LED>#j0f1ab3d]]|R/W (NVM)|0|uint8&br;0~1| |26 (0x1A)|[[D Gain>#z76ef779]]|R/W|0&br;(MX-12Wのみ8)|uint8&br;0~254| |27 (0x1B)|[[I Gain>#n47ffacd]]|R/W|0|uint8&br;0~254| |28 (0x1C)|[[P Gain>#l6ed04c6]]|R/W|32&br;(MX-12Wのみ8)|uint8&br;1~254| |30 (0x1E)|[[Goal Position>#i10660fa]]|R/W|[Addr36]value|uint16/int16&br;0~4095/-28672~28672| |31 (0x1F)|~|~|~|~| |32 (0x20)|[[Moving Speed>#s3139326]]|R/W|0|uint16&br;-1023~1023| |33 (0x21)|~|~|~|~| |34 (0x22)|[[Torque Limit>#l9afa11c]]|R/W|[Addr14]value|uint16&br;0~1023| |35 (0x23)|~|~|~|~| |36 (0x24)|[[Present Position>#v2f847df]]|R|?|uint16&br;| |37 (0x25)|~|~|~|~| |38 (0x26)|[[Present Speed>#qeda324a]]|R|?|uint16&br;| |39 (0x27)|~|~|~|~| |40 (0x28)|[[Present Load>#j002f18d]]|R|?|uint8&br;| |41 (0x29)|~|~|~|~| |42 (0x2A)|[[Present Voltage>#r74e7fb8]]|R|?|uint8&br;| |43 (0x2B)|[[Present Temperature>#i9d8fe30]]|R|?|uint8&br;| |44 (0x2C)|[[Registered Instruction>#oc452a69]]|R/W|0|uint8&br;0~1| |46 (0x2E)|[[Moving>#vc953eee]]|R|0|uint8&br;| |47 (0x2F)|[[Lock>#ib2c369f]]|R/W|0|uint8&br;0~1| |48 (0x30)|[[Punch>#edd9e980]]|R/W|32|uint16&br;0~1023| |49 (0x31)|~|~|~|~| |68 (0x44)|[[Current>#vfbc0b35]]|R|?|uint16&br;0~4095| |69 (0x45)|~|~|~|~| |70 (0x46)|[[Torque Control Mode Enable>#v4678328]]|R/W|0|uint8&br;0~1| |71 (0x47)|[[Goal Torque>#b7f047a6]]|R/W|0|uint16&br;0~2047| |72 (0x48)|~|~|~|~| |73 (0x49)|[[Goal Acceleration>#z3b818ed]]|R/W|0|uint8&br;0~254| **各アイテムの詳細 [#hd8e7c4e] ***0~1:Model Number [#ta493b6c] モデルナンバーです。各モデルには以下の固有値が割り当てられます。 | Model Name | Value | | MW-12W | 0x0168 | | MX-28R/MX-28T | 0x001D | | MX-64R/MX-64T | 0x0136 | | MX-106R/MX-106T | 0x0140 | ***2:Version of Firmware [#x2b21b74] ファームウェアのバージョンです。 ***3: ID [#afcb4273] 各Dynamixelを特定するための固有の値で0~253の範囲で設定します。同一ネットワーク中のDynamixelには各々異なるIDが要求されます。 254はBroadcast IDとし、全てのDynamixelへパケットを送信する際に使用します。 ***4:Baudrate [#r27c0a5d] 通信速度を決める分周値で、通信速度は次式で導かれます。~ Baudrate[bps]=2000000 / (value + 1)~ 主なBaudrate~ | value | Actual Baudrate[bps] | Specified Baudrate[bps] | Error[%] | | 1| 1000000.0| 1000000| 0.000| | 3| 500000.0| 500000| 0.000| | 4| 400000.0| 400000| 0.000| | 7| 250000.0| 250000| 0.000| | 9| 200000.0| 200000| 0.000| | 16| 117647.1| 115200| -2.124| | 34| 57142.9| 57600| 0.794| | 103| 19230.8| 19200| -0.160| | 207| 9615.4| 9600| -0.160| ※ホストとのボーレートの誤差は±2%以下が要求されます。 なお、MXシリーズのみ以下の値の時にイリガルなボーレートが割り当てられていますので注意が必要です。 | value | Baudrate[BPS] | | 250 | 2250000.0| | 251 | 2500000.0| | 252 | 3000000.0| | 253 | 3500000.0※| | 254 | 4000000.0※| ※MX-64,MX-106のみ ***5:Return Delay Time [#z6a035d0] インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。~ 単位は2[usec]です。 ***6~7:CW Angle Limit [#h4561931] ***8~9:CCW Angle Limit [#u752e406] Jointモード時のDynamixelの動作角度範囲を設定します。Goal Positionは以下の範囲にある必要があります。~ CW Angle Limit <= Goal Position <= CCW Angle Limit~ Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 なお、設定値に応じてDynamixelの動作モードが変わります。 -CW Angle Limit < CCW Angle Limit時~ Jointモードとなり、出荷時の位置決め制御となります。 -CW Angle Limit = CCW Angle Limit = 0~ [[Wheelモード>#m81274a2]]になります。 -CW Angle Limit = CCW Angle Limit = 4095~ [[Multi Turnモード>#m8457ffc]]になります。 ***10:Drive Mode [#rd7fa695] ※MX-106のみ~ デュアルモードにおけるマスタ/スレーブ、及び回転方向を設定します。 | Bit | 機能 | 設定 | | 7~2 | - | - | | 1 |マスター/スレーブ選択 | 0:マスタ, 1:スレーブ | | 0 |回転方向選 | 0:順方向, 1:逆方向 | ****マスター/スレーブ選択ビット [#x1127b7a] スレーブに設定されたDynamixelは、マスターに設定されたDynamixelと同期化用ケーブルで接続すると、マスタに設定されたDynamixelと同期したポジションに自動的に動作します。 1つの関節に対し2つのDynamixelを使用する事で、トルクアップが期待できます。 同期化ケーブルの接続によりスレーブの回転方向が変わり、黒い線を並列に接続した場合は順方向に、クロスして接続した場合は逆方向に回転します。 #ref("dual.png"); ****回転方向選 [#n0bc4bd0] 0の場合は0~360°の範囲を4095~0のGoal Position、1の場合は0~360°の範囲を0~4095 のGoal Positionで位置決め制御を行います。 ***11:Highest Limit Temperature [#eae67652] Dynamixelの動作温度の上限です。Dynamixelの内部温度がこの値より高くなるとOverheating Errorが起こります。値は℃です。 ***12:Lowest Limit Voltage [#l2901ded] ***13:Highest Limit Voltage [#sf36842f] Dynamixelの動作電圧の上限と下限です。現在の電圧(Address42)が指定した範囲から出ると、Input Voltage Errorが起こります。値は実際の電圧の10倍です。例えばAddress12が80なら、電圧の下限は8Vに設定されます。 ***14~15:Max Torque [#m8848974] Dynamixelの最大トルク出力です。この値が0に設定されるとDynamixelはトルクがかかっていないFree Runモードになります。EEPROM(Address14, 15)とRAM(Address34, 35)の2つに最大トルクが定義されます。電源を入れるとEEPROMの最大トルク値がRAMの最大トルク値にコピーされます。DynamixelのトルクはRAM(Address34, 35)の値によって制限されます。 ***16:Status Return Level [#mc2f793d] Dynamixelが返すステータスパケットの措置を設定します。 | Value | 処理 | | 0 |PINGインストラクションパケットのみに応答| | 1 |PING及びREAD_DATAインストラクションパケットのみに応答する| | 2 |全てのインストラクションパケットに応答する| ***17:Alarm LED [#q8d97e3d] 対応するBitが1に設定されると、その要因発生時にステータスLEDが点滅します。要因が解消するとLEDは2秒後に消灯します。 | Bit | 要因 | | 7 |-| | 6 |Instruction Error| | 5 |Overload Error| | 4 |Checksum Error| | 3 |Range Error| | 2 |Overheating Error| | 1 |Angle Error| | 0 |Input Voltage Error| ***18:Alarm Shutdown [#y219e63a] 対応するBitが1に設定されると、その要因発生時にDynamixelのTorque Limit(Address34~35)を0にします。復帰する際はTorque Limit(Address34~35)を再設定する必要があります。 | Bit | 要因 | | 7 |-| | 6 |Instruction Error| | 5 |Overload Error| | 4 |Checksum Error| | 3 |Range Error| | 2 |Overheating Error| | 1 |Angle Error| | 0 |Input Voltage Error| ***20~21:Down Calibration [#f95fb07c] ***22~23:Up Calibration [#hceb4e38] Dynamixelで使用されるPotentiomerterの誤差を補うのに使用されるデータです。ユーザーはこのデータを変更できません。 ***24:Torque Enable [#ae42664f] 最初に電源を入れるとDynamixelはTorque Free Run(ゼロトルク)になります。Address24に1を設定するかゴールポジションが設定されるとトルクが有効になります。 ***25:LED [#j0f1ab3d] 1が設定されるとLEDが点灯し、0が設定されると消灯します。 ***26:D Gain [#z76ef779] ***27:I Gain [#n47ffacd] ***28:P Gain [#l6ed04c6] MXシリーズはPID制御を行います。P Gainは比例、I Gainは積分、D Gainは微分ゲインで、いずれも値の範囲は0〜254です。 #ref(pidcontrol_.png,70%) Kp=(P Gain)/8~ Ki=(I Gain)*1000/2048~ Kd=(D Gain)*4/1000~ ***30~31:Goal Position [#i10660fa] Dynamixelの出力角の位置を設定します。0(0x000)~4095(0xfff)の設定値に対し、出力軸は0°~360°の範囲で動作します。 #ref(DxCntTable2.png) [[Multi Turnモード>#m8457ffc]]時はそのモードに従います。 ***32~33:Moving Speed [#s3139326] 出力軸がGoal Positionへ動く時の速度で、単位は約0.114rpmです。~ 0に設定すると速度制御を無視し、モータの最大速度で運転します。~ 1023に設定すると約117.07rpmで運転します。~ [[Wheelモード>#m8457ffc]]時は10bit目が回転方向を意味します。 | Bit15~11 | Bit10 | Bit9~0 | | 0 | Turn Direction | Speed | Sing = 0 : CCW, 1 : CW ***34~35:Torque Limit [#l9afa11c] 最大出力の上限値です。単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。 電源を入れるとMax Torqueの値を初期値として使用します。 ***36~37:Present Position [#v2f847df] 出力軸の現在の角度です。Goal Positionと同様0(0x000)~4095(0xfff)の値に対し、0°~360°を表します。 [[Wheelモード>#m8457ffc]]では総回転角度を表します。 ***38~39:Present Speed [#qeda324a] 出力軸の現在の角速度です。 ビット10は回転方向を表します。 | Bit15~11 | Bit10 | Bit9~0 | | 0 | Turn Direction | Speed | Trun Direction = 0 : CCW, Trun Direction = 1 : CW ***40~41:Present Load [#j002f18d] 操作するDynamixelの負荷の大きさです。10bit目が負荷の向きを表します。 | Bit15~11 | Bit10 | Bit9~0 | | 0 | Load Direction | Load | Load Direction = 0 : CCW Load, Load Direction = 1 : CW Load ***42:Present Voltage [#r74e7fb8] 現在のDynamixelに供給されている電圧です。値は実際の電圧の10倍です。例えば、10Vは100(0x64)と表します。 ***43:Present Temperature [#i9d8fe30] Dynamixelの内部温度(℃)です。 ***44:Registered Instruction [#oc452a69] REG_WRITEコマンドでインストラクションが格納されたとき1が設定され、ACTIONコマンドによって格納されたインストラクションが完了したら0が設定されます。 ***46:Moving [#vc953eee] Goal Positionが更新され、Dynamixelが目標位置へ移動している間に1となります。 ***47:Lock [#ib2c369f] 1が設定されるとAddress24からAddress35以外のエリアが書き換え不能となります。ロックを解除する方法は、電源を切る以外にありません。 ***48~49:Punch [#edd9e980] 操作時にモータに供給される最小の電流です。初期値は0x20に設定されていて、最大値は0x3ffです。 ***68~69:Current [#vfbc0b35] 現在の電流値です。 単位は4.5mAです。 値が2048より大きい場合は+方向に、2048より小さい場合は-方向に電流が流れている事を意味します。 #ref("mx_current.png"); ***70:Torque Control Mode Enable [#v4678328] ※MX-64及びMX-106のみ~ 0が設定されるとトルク制御モードが停止し位置決め制御ないしエンドレスターンが使用できます。~ 1が設定されるとトルク制御モードが開始され、位置決め制御ないしエンドレスターンが使用できなくなります。~ トルク制御モードは位置及び速度制御を行わずにGoal Torqueで指示された値でのみ運転します。 ***71~72:Goal Torque [#b7f047a6] ※MX-64及びMX-106のみ~ トルク制御モード時のトルクを指定します。単位は4.5mAです。~ 0~1023の範囲でCCW方向、1024~2047の範囲でCW方向にトルクを指示します。なお、Torque Limit以上の値は出力されません。 ***73:Goal Acceleration [#z3b818ed] 目標加速度で、単位は 8.583 deg/sec^2 です。Goal Positionが更新された際のメカニカルなショックを抑止する場合に設定します。~ 0に設定すると加速度制御を行いません。また、加速度制御を行う場合は、Goal Speedを0以外の値に設定する必要があります。 **Wheelモード [#m81274a2] Address 6(0x06)~9(0x09)のCW Angle LimitとCCW Angle Limitを0に設定するとWheelモードになります。車輪として使用する際にこのモードに設定します。~ ~ Moving Speedの設定 | Bit15~11 | Bit10 | Bit9~0 | | 0 | Turn Direction | Speed Value | Trun Direction = 0 : CCW, Trun Direction = 1 : CW Present Positionは車輪の総回転角度を表します。 値はCCW方向に回転すると減少、CW方向に回転すると増加し、積算されます。値が0を下回ると65535になり、65535を超えると0になります。 **Multi Turnモード [#m8457ffc] Address 6(0x06)~9(0x09)のCW Angle LimitとCCW Angle Limitを4095に設定するとMulti Turnモードになります。通常の位置決め制御時の範囲である-180°~180°を超えて、-2520°~2520°の位置決め制御を行う際にこのモードに設定します。~ Goal Positionの設定 | Bit15~0 | | Gola Position -28672~28672 (符号付16bit整数) | **不揮発エリアとRAMエリア [#ub0b5828] Address0から23は不揮発エリア、Address24以降はRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。不揮発エリアのデータは電源を切っても値が保持されます。~ 不揮発エリアのデータ書き換え回数には数万回という制限があります。必要な時だけ書き換を行うような運用を行ってください。~ また、不揮発エリアの書き換えを行った直後は、0.5秒以上間隔をおいてから通信してください。
(This host) = http://www.besttechnology.co.jp