**メモリマップ [#m54c6bba] Dynamixelの内部機能及び設定は次に示すメモリマップとして提供され、インストラクションパケットを使用して操作されます。Dynamixelはコントロールテーブルに値を書くことで操作され、状態はコントロールテーブルから値を読むことで確認します。~ 16ビットデータレジスタは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットにおいて同時に書き込まれる必要があります。 |Address|Item|Access|Initial Value| |0 (0x0)|Model Number(L)|R|28 (0x1C)| |1 (0x1)|Model Number(H)|R|0 (0x00)| |2 (0x2)|Version of Firmware|R|?| |3 (0x3)|ID|R/W|1 (0x01)| |4 (0x4)|Baudrate|R/W|34 (0x22)| |5 (0x5)|Return Delay Time|R/W|250 (0xFA)| |6 (0x6)|CW Angle Limit (L)|R/W|0 (0x00)| |7 (0x7)|CW Angle Limit (H)|R/W|0 (0x00)| |8 (0x8)|CCW Angle Limit (L)|R/W|255 (0xFF)| |9 (0x9)|CCW Angle Limit (H)|R/W|3 (0x03)| |10 (0xA)|(Reserved)|-|0 (0x00)| |11 (0xB)|Highest Limit Temperature|R/W|80 (0x50)| |12 (0xC)|Lowest Limit Voltage|R/W|60 (0x3C)| |13 (0xD)|Highest Limit Voltage|R/W|190 (0xBE)| |14 (0xE)|Max Torque (L)|R/W|255 (0xFF)| |15 (0xF)|Max Torque (H)|R/W|3 (0x03)| |16 (0x10)|Status Return Level|R/W|2 (0x02)| |17 (0x11)|Alarm LED|R/W|36 (0x24)| |18 (0x12)|Alarm Shutdwon|R/W|36 (0x24)| |19 (0x13)|(Reserved)|RW|0 (0x00)| |20 (0x14)|Down Calibration (L)|R|?| |21 (0x15)|Down Calibration (H)|R|?| |22 (0x16)|Up Calibration (L)|R|?| |23 (0x17)|Up Calibration (H)|R|?| |24 (0x18)|Torque Enable|R/W|0 (0x00)| |25 (0x19)|LED|R/W|0 (0x00)| |26 (0x1A)|CW Compliance Margin|R/W|1 (0x00)| |27 (0x1B)|CCW Compliance Margin|R/W|1 (0x00)| |28 (0x1C)|CW Compliance Slope|R/W|32 (0x20)| |29 (0x1D)|CCW Compliance Slope|R/W|32 (0x20)| |30 (0x1E)|Goal Position (L)|R/W|[Addr36]value| |31 (0x1F)|Goal Position (H)|R/W|[Addr37]value| |32 (0x20)|Moving Speed (L)|R/W|0 (0x00)| |33 (0x21)|Moving Speed (H)|R/W|0 (0x00)| |34 (0x22)|Torque Limit (L)|R/W|[Addr14]value| |35 (0x23)|Torque Limit (H)|R/W|[Addr15]value| |36 (0x24)|Present Position (L)|R|?| |37 (0x25)|Present Position (H)|R|?| |38 (0x26)|Present Speed (L)|R|?| |39 (0x27)|Present Speed (H)|R|?| |40 (0x28)|Present Load (L)|R|?| |41 (0x29)|Present Load (H)|R|?| |42 (0x2A)|Present Voltage|R|?| |43 (0x2B)|Present Temperature|R|?| |44 (0x2C)|Registered Instruction|R/W|0 (0x00)| |45 (0x2D)|(Reserved)|-|0 (0x00)| |46 (0x2E)|Moving|R|0 (0x00)| |47 (0x2F)|Lock|R/W|0 (0x00)| |48 (0x30)|Punch (L)|R/W|32 (0x20)| |49 (0x31)|Punch (H)|R/W|0 (0x00)| **各アイテムの詳細 [#bb158fce] -''Address 0, 1 (0x00, 0x01) Model Number''~ モデルナンバーです。 -''Address 2 (0x02) Version of Firmware''~ ファームウェアのバージョンです。 -''Address 3 (0x03) ID''~ 各Dynamixelを特定するための固有のIDナンバーです。同じネットワークの各Dynamixelに異なるIDが必要です。 -''Address 4 (0x04) Baudrate''~ 通信速度を決定します。以下の公式で計算します。~ Baudrate[BPS]=2000000 / (value + 1)~ ~ 主なBaudrateのデータ値~ |Set value(Dec.)|Set value(Hex.)|Baudrate[BPS]|Target Baudrate[BPS]|Error※[%]| |1|0X01|1000000.0|1000000|0.000| |3|0X03|500000.0|500000|0.000| |4|0X04|400000.0|400000|0.000| |7|0X07|250000.0|250000|0.000| |9|0X09|200000.0|200000|0.000| |16|0X10|117647.1|115200|-2.124| |34|0X22|57142.9|57600|0.794| |103|0X67|19230.8|19200|-0.160| |207|0XCF|9615.4|9600|-0.160| 注意: ±3%以下の許容誤差が一般に通信可能な範囲です。 -''Address 5 (0x05) Return Delay Time''~ インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間です。遅延時間は2uSec * Address5の値です。 -''Address 6, 7, 8, 9 (0x06, 0x07, 0x08, 0x09) CW Angle Limit, CCW Angle Limit''~ Dynamixelの動作角を設定します。Goal Positionは以下の範囲にある必要があります。~ CW Angle Limit <= Goal Position <= CCW Angle Limit~ Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 -''Address 11 (0x0B) Highest Limit Temperature''~ Dynamixelの動作温度の上限です。Dynamixelの内部温度がこの値より高くなるとOverheating Errorが起こります。値は℃です。 -''Address 12, 13 (0x0C, 0x0D) Lowest Limit Voltage, Highest Limit Voltage''~ Dynamixelの動作電圧の上限下限です。現在の電圧(Address42)が指定した範囲から出ると、Input Voltage Errorが起こります。値は実際の電圧の10倍です。例えばAddress12が80なら、電圧の下限は8Vに設定されます。 -''Address 14, 15, 34, 35 (0x0E, 0x0F, 0x22, 0x23) Max Torque, Torque Limit''~ Dynamixelの最大トルク出力です。この値が0に設定されるとDynamixelはトルクがかかっていないFree Runモードになります。EEPROM(Address14, 15)とRAM(Address34, 35)の2つに最大トルクが定義されます。電源を入れるとEEPROMの最大トルク値がRAMの最大トルク値にコピーされます。DynamixelのトルクはRAM(Address34, 35)の値によって制限されます。 -''Address 16 (0x10) Status Return Level''~ インストラクションパケットを受けた後にDynamixelがステータスパケットを返すかどうかを決定します。 |Adress16|ステータスパケット| |0|どんなインストラクションにも応答しない| |1|READ_DATAだけに応答する| |2|すべてのインストラクションに応答する| Broadcast ID(0xFE)を使ったインストラクションの場合は、Address16の値に関わらずステータスパケットを返しません。 -''Address 17 (0x11) Alarm LED''~ 対応するBitが1に設定されると、Errorが起こったときにステータスLEDが点滅します。 |Bit|Function| |Bit7|0| |Bit6|1に設定されていたら、Instruction Errorが起こるとLEDが点滅します| |Bit5|1に設定されていたら、Overload Errorが起こるとLEDが点滅します| |Bit4|1に設定されていたら、Checksum Errorが起こるとLEDが点滅します| |Bit3|1に設定されていたら、Range Errorが起こるとLEDが点滅します| |Bit2|1に設定されていたら、Overheating Errorが起こるとLEDが点滅します| |Bit1|1に設定されていたら、Angle Errorが起こるとLEDが点滅します| |Bit0|1に設定されていたら、Input Voltage Errorが起こるとLEDが点滅します| すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。エラー状態から正常状態に戻るとLEDは2秒後に点滅を止めます。 -''Address 18 (0x12) Alarm Shutdown''~ 対応するビットが1に設定されていて、エラーが発生するとDynamixelのトルクがオフになります。Alarm LEDとは異なり、Errorが発生した後、正常状態に戻ってもトルクオフの状態が維持されます。復帰するためにはTorque Enable(Address24)を1に再設定しなければなりません。 |Bit|Function| |Bit7|0| |Bit6|1に設定されていたら、Instruction Errorが起こるとトルクをオフにします| |Bit5|1に設定されていたら、Overload Errorが起こるとトルクをオフにします| |Bit4|1に設定されていたら、Checksum Errorが起こるとトルクをオフにします| |Bit3|1に設定されていたら、Range Errorが起こるとトルクをオフにします| |Bit2|1に設定されていたら、Overheating Errorが起こるとトルクをオフにします| |Bit1|1に設定されていたら、Angle Errorが起こるとトルクをオフにします| |Bit0|1に設定されていたら、Input Voltage Errorが起こるとトルクをオフにします| -''Address 20~23 (0x14~0x17) Down Calibration, Up Calibration''~ Dynamixelで使用されるPotentiomerterの誤差を補うのに使用されるデータです。ユーザーはこのデータを変更できません。 以下はRAMエリアです。~ -''Address 24 (0x18) Torque Enable''~ 最初に電源を入れるとDynamixelはTorque Free Run(ゼロトルク)になります。Address24に1を設定するとトルクが有効になります。 -''Address 25 (0x19) LED''~ 1が設定されるとLEDが点灯し、0が設定されると消灯します。 -''Address 26~29 (0x1A~0x1D) CW Compliance Margin, CCW Compliance Margin, CW Compliance Slope, CCW Compliance Slope''~ Dynamixelのコンプライアンスは、コンプライアンスのMarginとSlopeを設定することで定義されます。この特徴は出力軸で衝撃を吸収するのに利用します。下のグラフはそれぞれのコンプライアンス値(A、B、C、Dの長さ)がポジションエラーと適用されたトルクによってどう定義されるかを示します。 #ref(DxCntTable1.png,90%) A : CCW Compliance Slope(Address26)~ B : CCW Compliance Margin(Address27)~ C : CW Compliance Margin(Address28)~ D : CW Compliance Slope(Address 29)~ E : Punch(Address48, 49)~ -''Address 30, 31 (0x1E, 0x1F) Goal Position''~ Dynamixelの出力角の位置を要求します。0x3ffを設定すると出力軸が300°の位置まで動きます。 #ref(DxCntTable2.png,80%) -''Address 32, 33 (0x20, 0x21) Moving Speed''~ 出力軸がGoal Positionへ動く時の角速度を設定します。1に設定すると最低速度となります。0に設定すると速度調節が全く適用されない供給電圧で可能な最高の速度となります。~ Moving Speed(Address 32, 33) 及びPresent Speed(Address 38, 39)の値に0.111を掛けるとRPMに変換することができます。すなわち、最大値は1023×0.111=113.6RPMとなります。しかし、RX-28の最大速度は79.4RPM(at 16V)です。速度の範囲を広く設定しているのは、外的要因によって最大速度より速くなる場合を考慮したためです。つまり16Vを供給する場合は、0~79.4RPMの範囲内で速度を制御することが可能です。Moving Speedの値と速度の関係を下図に示します。 #ref(DxCntTable3.png,100%) -''Address 36, 37 (0x24, 0x25) Present Position''~ 出力軸の現在の角度です。 -''Address 38, 39 (0x26, 0x27) Present Speed''~ 出力軸の現在の角速度です。 -''Address 40, 41 (0x28, 0x29) Present Load''~ 操作するDynamixelの負荷の大きさです。ビット10は負荷の向きです。 | Bit | Bit15~11 | Bit10 | Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 | | Value | 0 | Load Direction | Load Value | Load Direction = 0 : CCW Load, Load Direction = 1 : CW Load -''Address 42 (0x2A) Present Voltage''~ 現在のDynamixelに供給されている電圧です。値は実際の電圧の10倍です。例えば、10Vは100(0x64)と表します。 -''Address 43 (0x2B) Present Temperature''~ Dynamixelの内部温度(℃)です。 -''Address 44 (0x2C) Registered Instruction''~ REG_WRITEコマンドでインストラクションが格納されたとき1が設定され、ACTIONコマンドによって格納されたインストラクションが完了したら0が設定されます。 -''Address 46 (0x2E) Moving''~ Dynamixelが供給された電力で動いているときに1が設定されます。 -''Address 47 (0x2F) Lock''~ 1が設定されるとAddress24からAddress35以外のエリアが書き換え不能となります。ロックを解除する方法は、電源を切る以外にありません。 -''Address 48, 49 (0x30, 0x31) Punch''~ 操作時にモータに供給される最小の電流です。初期値は0x20に設定されていて、最大値は0x3ffです。 **Range [#p2cb2df8] 各データには有効な最小値、最大値があります。この有効値外に書き込まれたインストラクションはエラーを返します。下表に各レジスタのデータ範囲と長さをまとめています。16ビットデータレジスタは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットで同時に書き込まれる必要があります。 |Write Address|Writing Item|Length(bytes)|Min|Max| |3(0x03)|ID|1|0|253(0xFD)| |4(0x04)|Baudrate|1|0|254(0xFE)| |5(0x05)|Return Delay Time|1|0|254(0xFE)| |6(0x06)|CW Angle Limit|2|0|1023(0x3FF)| |8(0x08)|CCW Angle Limit|2|0|1023(0x3FF)| |11(0x0B)|Highest Limit Temperature|1|10(0x10)|99(0x63)| |12(0x0C)|Lowest Limit Voltage|1|50(0x32)|250(0xFA)| |13(0x0D)|Highest Limit Voltage|1|50(0x32)|250(0xFA)| |14(0x0E)|Max Torque|2|0|1023(0x3FF)| |16(0x10)|Status Return Level|1|0|2| |17(0x11)|Alarm LED|1|0|127(0x7F)| |18(0x12)|Alarm Shutdown|1|0|127(0x7F)| |19(0x13)|(Reserved)|1|0|1| |24(0x18)|Torque Enable|1|0|1| |25(0x19)|LED|1|0|1| |26(0x1A)|CW Compliance Margin|1|0|254(0xFE)| |27(0x1B)|CCW Compliance Margin|1|0|254(0xFE)| |28(0x1C)|CW Compliance Slope|1|1|254(0xFE)| |29(0x1D)|CCW Compliance Slope|1|1|254(0xFE)| |30(0x1E)|Goal Position|2|0|1023(0x3FF)| |32(0x20)|Moving Speed|2|0|1023(0x3FF)| |34(0x22)|Torque Limit|2|0|1023(0x3FF)| |44(0x2C)|Registered Instruction|1|0|1| |47(0x2F)|Lock|1|1|1| |48(0X30)|Punch|2|0|1023(0x3FF)| **RAM EEPROM [#ub0b5828] Address0から23はEEPROMエリア、Address24から49まではRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。EEPROMのデータは電源を切ってもその時の値が残ります。~ コントロールテーブルの右側のInitial ValueはEEPROMエリアデータの製造時の初期値と、RAMエリアデータの電源を入れた時の初期値です。~ EEPROMエリアデータの書き換え回数には制限があります。必要な時のみ書き換えられるような運用を行って下さい。~
(This host) = http://www.besttechnology.co.jp