2: 2009-07-02 (木) 13:50:53 sho | 現: 2017-09-07 (木) 00:58:18 takaboo | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | **メモリマップ [#m54c6bba] | + | TITLE:Dynamixel Control Table |
- | Dynamixelの内部機能及び設定は次に示すメモリマップとして提供され、インストラクションパケットを使用して操作されます。Dynamixelはコントロールテーブルに値を書くことで操作され、状態はコントロールテーブルから値を読むことで確認します。~ | + | **適用 [#u16883a0] |
- | 16ビットデータレジスタは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットにおいて同時に書き込まれる必要があります。 | + | 以下のDynamixelに共通のコントロールテーブルです。 |
- | |Address|Item|Access|Initial Value| | + | -DX-113 |
- | |0 (0x0)|Model Number(L)|R|28 (0x1C)| | + | -DX-116 |
- | |1 (0x1)|Model Number(H)|R|0 (0x00)| | + | -DX-117 |
- | |2 (0x2)|Version of Firmware|R|?| | + | -RX-10 |
- | |3 (0x3)|ID|R/W|1 (0x01)| | + | -[[RX-24F]] |
- | |4 (0x4)|Baudrate|R/W|34 (0x22)| | + | -[[RX-28>BTX031 Dynamixel RX-28]] |
- | |5 (0x5)|Return Delay Time|R/W|250 (0xFA)| | + | -[[RX-64>BTX029 Dynamixel RX-64]] |
- | |6 (0x6)|CW Angle Limit (L)|R/W|0 (0x00)| | + | -AX-12 |
- | |7 (0x7)|CW Angle Limit (H)|R/W|0 (0x00)| | + | -[[AX-12+]] |
- | |8 (0x8)|CCW Angle Limit (L)|R/W|255 (0xFF)| | + | -[[AX-12A]] |
- | |9 (0x9)|CCW Angle Limit (H)|R/W|3 (0x03)| | + | -AX-18F |
- | |10 (0xA)|(Reserved)|-|0 (0x00)| | + | -[[AX-18A]] |
- | |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] | + | **アイテム一覧 [#m54c6bba] |
- | -''Address 0, 1 (0x00, 0x01) Model Number''~ | + | Dynamixelの機能及び設定は次のメモリマップ上に1バイトないし2バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。~ |
- | モデルナンバーです。 | + | 2バイトに渡るアイテムは1つのインストラクションパケットにおいて同時に書き込まれる必要があります。 |
+ | |=''Address''|=''Item''|=''Access''|=''Default Value''|=''Range''|h | ||
+ | |CENTER:|LEFT:|CENTER:|CENTER:|CENTER:|c | ||
+ | |0|BGCOLOR(beige):[[Model Number>#f9679b00]]|R|-|uint16| | ||
+ | |1|~|~|~|~| | ||
+ | |2|BGCOLOR(beige):[[Version of Firmware>#c0b99f75]]|R|?|uint8| | ||
+ | |3|BGCOLOR(seashell):[[ID>#afcb4273]]|R/W (NVM)|1|uint8&br;0~253| | ||
+ | |4|BGCOLOR(seashell):[[Baudrate>#a99cb9a8]]|R/W (NVM)|34&br;(AXシリーズは1)|uint8&br;0~254| | ||
+ | |5|BGCOLOR(seashell):[[Return Delay Time>#h9279b18]]|R/W (NVM)|250|uint8&br;0~254| | ||
+ | |6|BGCOLOR(seashell):[[CW Angle Limit>#r26ada5a]]|R/W (NVM)|0|uint16&br;0~1023| | ||
+ | |7|~|~|~|~| | ||
+ | |8|BGCOLOR(seashell):[[CCW Angle Limit>#r26ada5a]]|R/W (NVM)|1023|uint16&br;0~1023| | ||
+ | |9|~|~|~|~| | ||
+ | |10|BGCOLOR(silver):(Reserved)|-|-|uint8| | ||
+ | |11|BGCOLOR(seashell):[[Highest Limit Temperature>#pf1cedb0]]|R/W (NVM)|80|uint8&br;10~99| | ||
+ | |12|BGCOLOR(seashell):[[Lowest Limit Voltage>#p813d1f0]]|R/W (NVM)|60|uint8&br;50~250| | ||
+ | |13|BGCOLOR(seashell):[[Highest Limit Voltage>#p813d1f0]]|R/W (NVM)|190|uint8&br;50~250| | ||
+ | |14|BGCOLOR(seashell):[[Max Torque>#sa69d1ab]]|R/W (NVM)|1023|uint16&br;0~1023| | ||
+ | |15|~|~|~|~| | ||
+ | |16|BGCOLOR(seashell):[[Status Return Level>#fc051727]]|R/W (NVM)|2|uint8&br;0~2| | ||
+ | |17|BGCOLOR(seashell):[[Alarm LED>#m1f363e1]]|R/W (NVM)|0x24|uint8&br;0~127| | ||
+ | |18|BGCOLOR(seashell):[[Alarm Shutdwon>#aa4c7882]]|R/W (NVM)|0x24|uint8&br;0~127| | ||
+ | |19|BGCOLOR(silver):(reserved)|-|-|uint8| | ||
+ | |20|BGCOLOR(beige):[[Down Calibration>#d4af5057]]|R|?|uint16| | ||
+ | |21|~|~|~|~| | ||
+ | |22|BGCOLOR(beige):[[Up Calibration>#d4af5057]]|R|?|uint16| | ||
+ | |23|~|~|~|~| | ||
+ | |24|BGCOLOR(lightcyan):[[Torque Enable>#m041ac16]]|R/W|0|uint8&br;0~1| | ||
+ | |25|BGCOLOR(lightcyan):[[LED>#k6f31590]]|R/W|0|uint8&br;0~1| | ||
+ | |26|BGCOLOR(lightcyan):[[CW Compliance Margin>#ac00ee58]]|R/W|1|uint8&br;0~254| | ||
+ | |27|BGCOLOR(lightcyan):[[CCW Compliance Margin>#ac00ee58]]|R/W|1|uint8&br;0~254| | ||
+ | |28|BGCOLOR(lightcyan):[[CW Compliance Slope>#ac00ee58]]|R/W|32|uint8&br;1~254| | ||
+ | |29|BGCOLOR(lightcyan):[[CCW Compliance Slope>#ac00ee58]]|R/W|32|uint8&br;1~254| | ||
+ | |30|BGCOLOR(lightcyan):[[Goal Position>#ee2d2463]]|R/W|[Addr36]value|uint16&br;0~1023| | ||
+ | |31|~|~|~|~| | ||
+ | |32|BGCOLOR(lightcyan):[[Moving Speed>#i69bf70b]]|R/W|0|uint16&br;0~2047| | ||
+ | |33|~|~|~|~| | ||
+ | |34|BGCOLOR(lightcyan):[[Torque Limit>#sb02896b]]|R/W|[Addr14]value|uint16&br;0~1023| | ||
+ | |35|~|~|~|~| | ||
+ | |36|BGCOLOR(beige):[[Present Position>#g40fd002]]|R|-|uint16| | ||
+ | |37|~|~|~|~| | ||
+ | |38|BGCOLOR(beige):[[Present Speed>#ra254ee8]]|R|-|uint16| | ||
+ | |39|~|~|~|~| | ||
+ | |40|BGCOLOR(beige):[[Present Load>#k921f4f9]]|R|-|uint16| | ||
+ | |41|~|~|~|~| | ||
+ | |42|BGCOLOR(beige):[[Present Voltage>#o9dde163]]|R|-|uint8| | ||
+ | |43|BGCOLOR(beige):[[Present Temperature>#yb6e508c]]|R|-|uint8| | ||
+ | |44|BGCOLOR(beige):[[Registered Instruction>#x5982be7]]|R|0|uint8&br;0~1| | ||
+ | |45|BGCOLOR(silver):(reserved)|-|-|uint8| | ||
+ | |46|BGCOLOR(beige):[[Moving>#jf0f3fa1]]|R|0|uint8| | ||
+ | |47|BGCOLOR(lightcyan):[[Lock>#bb3a2a7c]]|R/W|0|uint8&br;0~1| | ||
+ | |48|BGCOLOR(lightcyan):[[Punch>#f79fd083]]|R/W|32|uint16&br;0~1023| | ||
+ | |49|~|~|~|~| | ||
+ | -データ幅が16bitのアイテムはリトルエンディアン(データの下位バイトから順に格納)。 | ||
+ | -Accessに(NVM)とあるアイテムは不揮発メモリとなっており、電源を切っても値が保持される。また頻繁な書き換えは想定されていないため、書き換えは必要最低限にとどめること。 | ||
+ | -Accessに(NVM)とあるアイテムとIndirect Addressを変更する場合は、Torque Enalbeが0でなくてはならない。 | ||
+ | -(reserve)はシステムで予約され、読み出した値に有効性はない。また、書き込みを行ってはならない。 | ||
+ | -Default Valueは出荷時ないしファクトリーリセットを行った際の値。又、ファームウェアのバージョンによって値が変更される場合がある。 | ||
- | -''Address 2 (0x02) Version of Firmware''~ | + | ***各アイテム詳細 [#bb158fce] |
- | ファームウェアのバージョンです。 | + | |
- | -''Address 3 (0x03) ID''~ | + | ****0~1: Model Number [#f9679b00] |
- | 各Dynamixelを特定するための固有のIDナンバーです。同じネットワークの各Dynamixelに異なるIDが必要です。 | + | モデル固有の値を保持します。異なる種類のDynamixelを混在して使用する際の個体識別などに使用できます。 |
- | -''Address 4 (0x04) Baudrate''~ | + | ****2: Version of Firmware [#c0b99f75] |
- | 通信速度を決定します。以下の公式で計算します。~ | + | 内蔵されるCPUに書き込まれたプログラムのバージョンです。ファームウェアの更新を行った際に合わせて自動的に変更されます。 |
- | 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''~ | + | ****3: ID [#afcb4273] |
- | インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間です。遅延時間は2uSec * Address5の値です。 | + | 各Dynamixelを特定するための固有の値で0~253の範囲の数値で設定します。同一ネットワーク内に存在するDynamixelには各々異なるIDが要求されます。 |
- | -''Address 6, 7, 8, 9 (0x06, 0x07, 0x08, 0x09) CW Angle Limit, CCW Angle Limit''~ | + | ****4: Baudrate [#a99cb9a8] |
- | Dynamixelの動作角を設定します。Goal Positionは以下の範囲にある必要があります。~ | + | 通信速度を決める分周値で、通信速度は次式で導かれます。~ |
+ | Baudrate[bps] = 2000000[bps] / (Value + 1) | ||
+ | |||
+ | 主なBaudrate~ | ||
+ | | Value | Actual Baudrate[bps] | Specified Baudrate[bps] | Error[%] |h | ||
+ | | 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%以下が要求されます。 | ||
+ | |||
+ | ****5: Return Delay Time [#h9279b18] | ||
+ | インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。~ | ||
+ | ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、[[DXHUB]]を使用する限りでは0を設定しても問題ありません。 | ||
+ | Delay Time [us] = Value * 2 [us] | ||
+ | |||
+ | ****6~7: CW Angle Limit [#r2daa6da] | ||
+ | ****8~9: CCW Angle Limit [#r26ada5a] | ||
+ | 動作角の範囲です。[[Goal Position>#ee2d2463]]は以下の範囲に設定する必要があります。~ | ||
CW Angle Limit <= Goal Position <= CCW Angle Limit~ | CW Angle Limit <= Goal Position <= CCW Angle Limit~ | ||
Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 | Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 | ||
- | -''Address 11 (0x0B) Highest Limit Temperature''~ | + | CW Angle Limit及びCCW Angle Limitを両方0に設定すると[[Endless Turn>#j6a51fa3]]モードになります。 |
- | Dynamixelの動作温度の上限です。Dynamixelの内部温度がこの値より高くなるとOverheating Errorが起こります。値は℃です。 | + | |
+ | ****11: Highest Limit Temperature [#pf1cedb0] | ||
+ | [[Present Temperature>#yb6e508c]]がこの値を超えるとOverheating Errorの該当ビットがONになります。 | ||
+ | |||
+ | Temperature [degC] = Value * 1 [degC] | ||
+ | |||
+ | ****12: Lowest Limit Voltage [#zb0073ac] | ||
+ | ****13: Highest Limit Voltage [#p813d1f0] | ||
+ | [[Present Voltage>#o9dde163]]がこの値の範囲を超えるとInput Voltage Errorの該当ビットはONになります。 | ||
+ | Voltage [V] = Value * 0.1 [V] | ||
+ | |||
+ | ****14~15: Max Torque [#sa69d1ab] | ||
+ | 最大出力トルクの初期値です。起動直後にこの値が[[Torque Limit>#sb02896b]]へコピーされ、以後使用されません。~ | ||
+ | 単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。 | ||
+ | |||
+ | ****16: Status Return Level [#fc051727] | ||
+ | ステータスパケットを返信するインストラクションパケットを選択します。 | ||
+ | |CENTER:|LEFT:|c | ||
+ | |Value|CENTER:Instruction to respond|h | ||
+ | |0|Ping| | ||
+ | |1|Ping, Read| | ||
+ | |2|Ping, Read, Write, Reg Write, Reset | | ||
+ | |||
+ | ****17: Alarm LED [#m1f363e1] | ||
+ | 対応するビットを1に設定すると、エラーが発生した時にステータスLEDが点滅します。~ | ||
+ | すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。 | ||
+ | | Bit | Name | Description |h | ||
+ | |=7| - | - | | ||
+ | |=6| Instruction Error |未定義のインストラクションが指定された、もしくはreg_writeなしでactionが指定された| | ||
+ | |=5| Overload Error |指定された最大トルクで現在の負荷を制御できない| | ||
+ | |=4| Checksum Error |インストラクションパケットのチェックサムが正しく無い| | ||
+ | |=3| Range Error |パラメータの設定範囲を超えた| | ||
+ | |=2| Overheating Error |内部温度が設定温度を超えた| | ||
+ | |=1| Angle Limit Error |Angle Limitの範囲外にGoal Positionが指定された| | ||
+ | |=0| Input Voltage Error |電源電圧が指定動作電圧の範囲を超えた| | ||
+ | |||
+ | ****18: Alarm Shutdown [#aa4c7882] | ||
+ | 対応するビットを1に設定すると、エラーが発生した時にTorque Limitを0に設定し、モータの出力を遮断します。~ | ||
+ | エラーが発生した後、正常状態に戻ってもTorque Limitは0が維持されますので、[[Torque Limit>#m041ac16]]に値を再設定する必要があります。 | ||
+ | | Bit | Name | Description |h | ||
+ | |=7| - | - | | ||
+ | |=6| Instruction Error |未定義のインストラクションが指定された、もしくはreg_writeなしでactionが指定された| | ||
+ | |=5| Overload Error |指定された最大トルクで現在の負荷を制御できない| | ||
+ | |=4| Checksum Error |インストラクションパケットのチェックサムが正しく無い| | ||
+ | |=3| Range Error |パラメータの設定範囲を超えた| | ||
+ | |=2| Overheating Error |内部温度が設定温度を超えた| | ||
+ | |=1| Angle Limit Error |Angle Limitの範囲外にGoal Positionが指定された| | ||
+ | |=0| Input Voltage Error |電源電圧が指定動作電圧の範囲を超えた| | ||
- | -''Address 12, 13 (0x0C, 0x0D) Lowest Limit Voltage, Highest Limit Voltage''~ | + | ****20~21: Down Calibration [#za300029] |
- | Dynamixelの動作電圧の上限下限です。現在の電圧(Address42)が指定した範囲から出ると、Input Voltage Errorが起こります。値は実際の電圧の10倍です。例えばAddress12が80なら、電圧の下限は8Vに設定されます。 | + | ****22~23: Up Calibration [#d4af5057] |
+ | ポテンショメータの誤差を補うのに使用されるデータです。ユーザは変更できません。 | ||
- | -''Address 14, 15, 34, 35 (0x0E, 0x0F, 0x22, 0x23) Max Torque, Torque Limit''~ | + | ****24: Torque Enable [#m041ac16] |
- | Dynamixelの最大トルク出力です。この値が0に設定されるとDynamixelはトルクがかかっていないFree Runモードになります。EEPROM(Address14, 15)とRAM(Address34, 35)の2つに最大トルクが定義されます。電源を入れるとEEPROMの最大トルク値がRAMの最大トルク値にコピーされます。DynamixelのトルクはRAM(Address34, 35)の値によって制限されます。 | + | 電源を入れた時、出力軸はフリーの状態です。Torque Enableを1に設定するとトルクが有効になります。 |
+ | [[Goal Position>#ee2d2463]]を指定した場合も1になります。 | ||
- | -''Address 16 (0x10) Status Return Level''~ | + | ****25: LED [#k6f31590] |
- | インストラクションパケットを受けた後にDynamixelがステータスパケットを返すかどうかを決定します。 | + | 本体に装備されたLEDを点灯ないし消灯します。 |
- | |Adress16|ステータスパケット| | + | |CENTER:|LEFT:|c |
- | |0|どんなインストラクションにも応答しない| | + | |Value|CENTER:Description|h |
- | |1|READ_DATAだけに応答する| | + | |0|消灯| |
- | |2|すべてのインストラクションに応答する| | + | |1|点灯| |
- | Broadcast ID(0xFE)を使ったインストラクションの場合は、Address16の値に関わらずステータスパケットを返しません。 | + | |
- | -''Address 17 (0x11) Alarm LED''~ | + | ****26: CW Compliance Margin [#u3d18477] |
- | 対応するBitが1に設定されると、Errorが起こったときにステータスLEDが点滅します。 | + | ****27: CCW Compliance Margin [#y5859c4a] |
- | |Bit|Function| | + | ****28: CW Compliance Slope [#ubd4963c] |
- | |Bit7|0| | + | ****29: CCW Compliance Slope [#ac00ee58] |
- | |Bit6|1に設定されていたら、Instruction Errorが起こるとLEDが点滅します| | + | Dynamixelはコンプライアンスを設定することで出力軸に柔軟性を持たせます。グラフはポジションと出力の相関を表し、A~Dは各コンプライアンス値です。 |
- | |Bit5|1に設定されていたら、Overload Errorが起こるとLEDが点滅します| | + | #ref(DxCntTable1.png,100%) |
- | |Bit4|1に設定されていたら、Checksum Errorが起こるとLEDが点滅します| | + | A : CCW Compliance Slope~ |
- | |Bit3|1に設定されていたら、Range Errorが起こるとLEDが点滅します| | + | B : CCW Compliance Margin~ |
- | |Bit2|1に設定されていたら、Overheating Errorが起こるとLEDが点滅します| | + | C : CW Compliance Margin~ |
- | |Bit1|1に設定されていたら、Angle Errorが起こるとLEDが点滅します| | + | D : CW Compliance Slope~ |
- | |Bit0|1に設定されていたら、Input Voltage Errorが起こるとLEDが点滅します| | + | E : Punch~ |
- | すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。エラー状態から正常状態に戻るとLEDは2秒後に点滅を止めます。 | + | |
- | -''Address 18 (0x12) Alarm Shutdown''~ | + | ****30~31: Goal Position [#ee2d2463] |
- | 対応するビットが1に設定されていて、エラーが発生するとDynamixelのトルクがオフになります。Alarm LEDとは異なり、Errorが発生した後、正常状態に戻ってもトルクオフの状態が維持されます。復帰するためにはTorque Enable(Address24)を1に再設定しなければなりません。 | + | 出力軸の位置を設定します。出力軸0~300°に対し、0~1023の値を与えます。 |
- | |Bit|Function| | + | [[Endless Turn>#j6a51fa3]]モードでは使用しません。 |
- | |Bit7|0| | + | #ref(DxCntTable2.png) |
- | |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''~ | + | ****32~33: Moving Speed [#i69bf70b] |
- | Dynamixelで使用されるPotentiomerterの誤差を補うのに使用されるデータです。ユーザーはこのデータを変更できません。 | + | 出力軸が動く際の回転数を指定します。 |
+ | Velocity [rpm] = Value * 0.111 [rpm] | ||
+ | 但し該当モデルの最大回転数以上では動作しません。0に設定すると供給電圧で可能な最大速度になります。 | ||
- | 以下はRAMエリアです。~ | + | Endless Turnモードで使用する場合は[[Endless Turn>#j6a51fa3]]参照。 |
- | -''Address 24 (0x18) Torque Enable''~ | + | ****34~35: Torque Limit [#sb02896b] |
- | 最初に電源を入れるとDynamixelはTorque Free Run(ゼロトルク)になります。Address24に1を設定するとトルクが有効になります。 | + | 最大出力の上限値です。 |
+ | 単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。~ | ||
+ | 電源を入れると[[Max Torque>#sa69d1ab]]の値を初期値として使用します。 | ||
- | -''Address 25 (0x19) LED''~ | + | ****36~37: Present Position [#g40fd002] |
- | 1が設定されるとLEDが点灯し、0が設定されると消灯します。 | + | 出力軸の現在位置です。出力軸0~300°に対し、0~1023の値をとります。 |
- | -''Address 26~29 (0x1A~0x1D) CW Compliance Margin, CCW Compliance Margin, CW Compliance Slope, CCW Compliance Slope''~ | + | [[Endless Turn>#j6a51fa3]]モードでは300~360°の間は不定値となります。 |
- | 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''~ | + | ****38~39: Present Speed [#ra254ee8] |
- | Dynamixelの出力角の位置を要求します。0x3ffを設定すると出力軸が300°の位置まで動きます。 | + | 出力軸の現在の角速度です。10番目のビットは回転方向を表します。~ |
- | #ref(DxCntTable2.png,80%) | + | Present Speed [rpm] = Value * 0.111 [rpm] |
- | -''Address 32, 33 (0x20, 0x21) Moving Speed''~ | + | Endless Turnモードの場合は[[Endless Turn>#j6a51fa3]]参照。 |
- | 出力軸が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%) | + | |BGCOLOR(#d0d8e0): Bit | 15~11 | 10 | 9~0 | |
+ | |BGCOLOR(#d0d8e0): Value | 0 | Direction | Speed | | ||
+ | Direction = 0 : CCW, Direction = 1 : CW | ||
- | -''Address 36, 37 (0x24, 0x25) Present Position''~ | + | ****40~41: Present Load [#k921f4f9] |
- | 出力軸の現在の角度です。 | + | 出力に基づいて算出された負荷の大きさです。10番目のビットは負荷の方向です。~ |
+ | 単位は最大出力に対する割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の負荷となります。 | ||
+ | |BGCOLOR(#d0d8e0): Bit | 15~11 | 10 | 9~0 | | ||
+ | |BGCOLOR(#d0d8e0): Value | 0 | Direction | Load | | ||
+ | Direction = 0 : CCW, Direction = 1 : CW | ||
- | -''Address 38, 39 (0x26, 0x27) Present Speed''~ | + | ****42: Present Voltage [#o9dde163] |
- | 出力軸の現在の角速度です。 | + | 現在供給されている電圧です。値は電圧(V)の10倍値です。例えば10Vは100となります。 |
- | -''Address 40, 41 (0x28, 0x29) Present Load''~ | + | ****43: Present Temperature [#yb6e508c] |
- | 操作するDynamixelの負荷の大きさです。ビット10は負荷の向きです。 | + | 内部温度(℃)です。例えば30℃は30です。 |
- | | 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''~ | + | ****44: Registered Instruction [#x5982be7] |
- | 現在のDynamixelに供給されている電圧です。値は実際の電圧の10倍です。例えば、10Vは100(0x64)と表します。 | + | REG_WRITEコマンドでインストラクションが格納されたとき1になり、ACTIONコマンドでインストラクションが完了したら0になります。 |
- | -''Address 43 (0x2B) Present Temperature''~ | + | ****46: Moving [#jf0f3fa1] |
- | Dynamixelの内部温度(℃)です。 | + | 供給された電力で出力軸が回転しているときに1、それ以外は0が設定されます。外力によって出力軸が動いても1にはなりません。 |
- | -''Address 44 (0x2C) Registered Instruction''~ | + | ****47: Lock [#bb3a2a7c] |
- | REG_WRITEコマンドでインストラクションが格納されたとき1が設定され、ACTIONコマンドによって格納されたインストラクションが完了したら0が設定されます。 | + | 1を設定するとコントロールテーブルの不揮発エリア(アドレス0~23)が書き換え不能になります。ロックの解除するには電源を入れ直す必要があります。 |
- | -''Address 46 (0x2E) Moving''~ | + | ****48~49: Punch [#f79fd083] |
- | Dynamixelが供給された電力で動いているときに1が設定されます。 | + | ''現バージョンのファームウェアでは使用していません。'' |
- | -''Address 47 (0x2F) Lock''~ | + | 操作時にモータに供給される最小の電流です。 |
- | 1が設定されるとAddress24からAddress35以外のエリアが書き換え不能となります。ロックを解除する方法は、電源を切る以外にありません。 | + | |
- | -''Address 48, 49 (0x30, 0x31) Punch''~ | + | ****Endless Turn [#j6a51fa3] |
- | 操作時にモータに供給される最小の電流です。初期値は0x20に設定されていて、最大値は0x3ffです。 | + | [[CW Angle Limit>#r2daa6da]]と[[CWW Angle Limit>#r26ada5a]]を0に設定することで、車輪のような役割として使用できるEndless Turnモードになります。[[Moving Speed>#i69bf70b]]で回転速度を指定します。 |
- | **Range [#p2cb2df8] | + | Endless TurnモードでのMoving Speed及び[[Present Speed>#ra254ee8]]は、最大出力に対する出力の割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の出力で制御します。負荷の大きさによって回転速度は変わります。 |
- | 各データには有効な最小値、最大値があります。この有効値外に書き込まれたインストラクションはエラーを返します。下表に各レジスタのデータ範囲と長さをまとめています。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] | + | Moving Speedの設定 |
- | Address0から23はEEPROMエリア、Address24から49まではRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。EEPROMのデータは電源を切ってもその時の値が残ります。~ | + | |BGCOLOR(#d0d8e0): Bit | 15~11 | 10 | 9~0 | |
- | コントロールテーブルの右側のInitial ValueはEEPROMエリアデータの製造時の初期値と、RAMエリアデータの電源を入れた時の初期値です。~ | + | |BGCOLOR(#d0d8e0): Value | 0 | Turn Direction | Speed | |
- | EEPROMエリアデータの書き換え回数には制限があります。必要な時のみ書き換えられるような運用を行って下さい。~ | + | Trun Direction = 0 : CCW, Trun Direction = 1 : CW |