1: 2010-06-16 (水) 13:17:01 sho ソース
Line 1: Line 1:
 +**メモリマップ [#x4eb66a5]
 +Dynamixelの内部機能及び設定は次に示すメモリマップとして提供され、インストラクションパケットを使用して操作されます。Dynamixelはコントロールテーブルに値を書くことで操作され、状態はコントロールテーブルから値を読むことで確認します。~
 +16ビットデータレジスタは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットにおいて同時に書き込まれる必要があります。
 +|Address|Item|Access|Initial Value|
 +|0 (0x0)|[[Model Number(L)>#f9679b00]]|R|-|
 +|1 (0x1)|[[Model Number(H)>#f9679b00]]|R|-|
 +|2 (0x2)|[[Version of Firmware>#c0b99f75]]|R|-|
 +|3 (0x3)|[[ID>#afcb4273]]|R/W|1 (0x01)|
 +|4 (0x4)|[[Baudrate>#a99cb9a8]]|R/W|34 (0x22)|
 +|5 (0x5)|[[Return Delay Time>#h9279b18]]|R/W|250 (0xFA)|
 +|6 (0x6)|[[CW Angle Limit (L)>#r26ada5a]]|R/W|0 (0x00)|
 +|7 (0x7)|[[CW Angle Limit (H)>#r26ada5a]]|R/W|0 (0x00)|
 +|8 (0x8)|[[CCW Angle Limit (L)>#r26ada5a]]|R/W|255 (0xFF)|
 +|9 (0x9)|[[CCW Angle Limit (H)>#r26ada5a]]|R/W|3 (0x03)|
 +|10 (0xA)|(Reserved)|-|0 (0x00)|
 +|11 (0xB)|[[Highest Limit Temperature>#pf1cedb0]]|R/W|80 (0x50)|
 +|12 (0xC)|[[Lowest Limit Voltage>#p813d1f0]]|R/W|60 (0x3C)|
 +|13 (0xD)|[[Highest Limit Voltage>#p813d1f0]]|R/W|190 (0xBE)|
 +|14 (0xE)|[[Max Torque (L)>#sa69d1ab]]|R/W|255 (0xFF)|
 +|15 (0xF)|[[Max Torque (H)>#sa69d1ab]]|R/W|3 (0x03)|
 +|16 (0x10)|[[Status Return Level>#fc051727]]|R/W|2 (0x02)|
 +|17 (0x11)|[[Alarm LED>#m1f363e1]]|R/W|36 (0x24)|
 +|18 (0x12)|[[Alarm Shutdwon>#aa4c7882]]|R/W|36 (0x24)|
 +|19 (0x13)|(Reserved)|RW|0 (0x00)|
 +|20 (0x14)|[[Down Calibration (L)>#d4af5057]]|R|?|
 +|21 (0x15)|[[Down Calibration (H)>#d4af5057]]|R|?|
 +|22 (0x16)|[[Up Calibration (L)>#d4af5057]]|R|?|
 +|23 (0x17)|[[Up Calibration (H)>#d4af5057]]|R|?|
 +|24 (0x18)|[[Torque Enable>#m041ac16]]|R/W|0 (0x00)|
 +|25 (0x19)|[[LED>#k6f31590]]|R/W|0 (0x00)|
 +|26 (0x1A)|[[CW Compliance Margin>#ac00ee58]]|R/W|1 (0x00)|
 +|27 (0x1B)|[[CCW Compliance Margin>#ac00ee58]]|R/W|1 (0x00)|
 +|28 (0x1C)|[[CW Compliance Slope>#ac00ee58]]|R/W|32 (0x20)|
 +|29 (0x1D)|[[CCW Compliance Slope>#ac00ee58]]|R/W|32 (0x20)|
 +|30 (0x1E)|[[Goal Position (L)>#ee2d2463]]|R/W|[Addr36]value|
 +|31 (0x1F)|[[Goal Position (H)>#ee2d2463]]|R/W|[Addr37]value|
 +|32 (0x20)|[[Moving Speed (L)>#i69bf70b]]|R/W|0 (0x00)|
 +|33 (0x21)|[[Moving Speed (H)>#i69bf70b]]|R/W|0 (0x00)|
 +|34 (0x22)|[[Torque Limit (L)>#sa69d1ab]]|R/W|[Addr14]value|
 +|35 (0x23)|[[Torque Limit (H)>#sa69d1ab]]|R/W|[Addr15]value|
 +|36 (0x24)|[[Present Position (L)>#g40fd002]]|R|?|
 +|37 (0x25)|[[Present Position (H)>#g40fd002]]|R|?|
 +|38 (0x26)|[[Present Speed (L)>#ra254ee8]]|R|?|
 +|39 (0x27)|[[Present Speed (H)>#ra254ee8]]|R|?|
 +|40 (0x28)|[[Present Load (L)>#k921f4f9]]|R|?|
 +|41 (0x29)|[[Present Load (H)>#k921f4f9]]|R|?|
 +|42 (0x2A)|[[Present Voltage>#o9dde163]]|R|?|
 +|43 (0x2B)|[[Present Temperature>#yb6e508c]]|R|?|
 +|44 (0x2C)|[[Registered Instruction>#x5982be7]]|R/W|0 (0x00)|
 +|45 (0x2D)|(Reserved)|-|0 (0x00)|
 +|46 (0x2E)|[[Moving>#jf0f3fa1]]|R|0 (0x00)|
 +|47 (0x2F)|[[Lock>#bb3a2a7c]]|R/W|0 (0x00)|
 +|48 (0x30)|[[Punch (L)>#f79fd083]]|R/W|32 (0x20)|
 +|49 (0x31)|[[Punch (H)>#f79fd083]]|R/W|0 (0x00)|
 +**各アイテムの詳細 [#hd8e7c4e]
 +***Model Number [#ta493b6c]
 +モデルナンバーです。
 +
 +***Version of Firmware [#x2b21b74]
 +ファームウェアのバージョンです。
 +
 +***ID [#n563922f]
 +各Dynamixelを特定するための固有のIDナンバーです。同じネットワークの各Dynamixelに異なるIDが必要です。
 +
 +***Baudrate [#r27c0a5d]
 +通信速度を決定します。以下の公式で計算します。~
 +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%以下の許容誤差が一般に通信可能な範囲です。
 +
 +***Return Delay Time [#z6a035d0]
 +インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間です。遅延時間は2uSec * Address5の値です。
 +
 +***CW Angle Limit, CCW Angle Limit [#u752e406]
 +Dynamixelの動作角を設定します。Goal Positionは以下の範囲にある必要があります。~
 +CW Angle Limit <= Goal Position <= CCW Angle Limit~
 +Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。
 +
 +***Highest Limit Temperature [#eae67652]
 +Dynamixelの動作温度の上限です。Dynamixelの内部温度がこの値より高くなるとOverheating Errorが起こります。値は℃です。
 +
 +***Lowest Limit Voltage, Highest Limit Voltage [#sf36842f]
 +Dynamixelの動作電圧の上限下限です。現在の電圧(Address42)が指定した範囲から出ると、Input Voltage Errorが起こります。値は実際の電圧の10倍です。例えばAddress12が80なら、電圧の下限は8Vに設定されます。
 +
 +***Max Torque, Torque Limit [#m8848974]
 +Dynamixelの最大トルク出力です。この値が0に設定されるとDynamixelはトルクがかかっていないFree Runモードになります。EEPROM(Address14, 15)とRAM(Address34, 35)の2つに最大トルクが定義されます。電源を入れるとEEPROMの最大トルク値がRAMの最大トルク値にコピーされます。DynamixelのトルクはRAM(Address34, 35)の値によって制限されます。
 +
 +***Status Return Level [#mc2f793d]
 +インストラクションパケットを受けた後にDynamixelがステータスパケットを返すかどうかを決定します。
 +|Adress16|ステータスパケット|
 +|0|どんなインストラクションにも応答しない|
 +|1|READ_DATAだけに応答する|
 +|2|すべてのインストラクションに応答する|
 +Broadcast ID(0xFE)を使ったインストラクションの場合は、Address16の値に関わらずステータスパケットを返しません。
 +
 +***Alarm LED [#q8d97e3d]
 +対応する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秒後に点滅を止めます。
 +
 +***Alarm Shutdown [#y219e63a]
 +対応するビットが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が起こるとトルクをオフにします|
 +
 +***Down Calibration, Up Calibration [#hceb4e38]
 +Dynamixelで使用されるPotentiomerterの誤差を補うのに使用されるデータです。ユーザーはこのデータを変更できません。
 +
 +以下はRAMエリアです。~
 +
 +***Torque Enable [#ae42664f]
 +最初に電源を入れるとDynamixelはTorque Free Run(ゼロトルク)になります。Address24に1を設定するとトルクが有効になります。
 +
 +***LED [#j0f1ab3d]
 +1が設定されるとLEDが点灯し、0が設定されると消灯します。
 +
 +***CW Compliance Margin, CCW Compliance Margin, CW Compliance Slope, CCW Compliance Slope [#re44c84d]
 +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)~
 +また[[Endless Turn>#j6a51fa3]]モードにする際に使用します。詳細は[[Endless Turn>#j6a51fa3]]参照。
 +
 +***Goal Position [#i10660fa]
 +Dynamixelの出力角の位置を要求します。0x3ffを設定すると出力軸が300°の位置まで動きます。
 +#ref(DxCntTable2.png,80%)
 +
 +***Moving Speed [#s3139326]
 +出力軸がGoal Positionへ動く時の角速度です。0に設定すると速度調節が適用されない供給電圧で可能な最大の速度になります。
 +
 +***Present Position [#v2f847df]
 +出力軸の現在の角度です。
 +
 +***Present Speed [#qeda324a]
 +出力軸の現在の角速度です。
 +
 +***Present Load [#j002f18d]
 +操作する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
 +
 +***Present Voltage [#r74e7fb8]
 +現在のDynamixelに供給されている電圧です。値は実際の電圧の10倍です。例えば、10Vは100(0x64)と表します。
 +
 +***Present Temperature [#i9d8fe30]
 +Dynamixelの内部温度(℃)です。
 +
 +***Registered Instruction [#oc452a69]
 +REG_WRITEコマンドでインストラクションが格納されたとき1が設定され、ACTIONコマンドによって格納されたインストラクションが完了したら0が設定されます。
 +
 +***Moving [#vc953eee]
 +Dynamixelが供給された電力で動いているときに1が設定されます。
 +
 +***Lock [#ib2c369f]
 +1が設定されるとAddress24からAddress35以外のエリアが書き換え不能となります。ロックを解除する方法は、電源を切る以外にありません。
 +
 +***Punch [#edd9e980]
 +操作時にモータに供給される最小の電流です。初期値は0x20に設定されていて、最大値は0x3ffです。
 +
 +***Endless Turn [#m81274a2]
 +Address 0x1A~0x1DのCW Angle Limit、CWW Angle Limitを0に設定し、Address 0x20,0x21に以下の通りMoving Speedを設定するとEndless Turnモードになります。車輪のような役割で使用する際にこのモードに設定します。~
 +~
 +Moving Speedの設定
 +| BIT | Bit15~11 | Bit10 | Bit9,Bit8,Bit7,Bit6,Bit5,Bit4,Bit3,Bit2,​Bit1,Bit0 |
 +| Value | 0 | Turn Direction | Speed Value |
 +
 +**Range [#f13ed204]
 +各データには有効な最小値、最大値があります。この有効値外に書き込まれたインストラクションはエラーを返します。下表に各レジスタのデータ範囲と長さをまとめています。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 [#be8cd93b]
 +Address0から23はEEPROMエリア、Address24から49まではRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。EEPROMのデータは電源を切ってもその時の値が残ります。~
 +コントロールテーブルの右側のInitial ValueはEEPROMエリアデータの製造時の初期値と、RAMエリアデータの電源を入れた時の初期値です。~
 +EEPROMエリアデータの書き換え回数には制限があります。必要な時のみ書き換えられるような運用を行って下さい。~


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom