PMX ArduinoLib MotorREAD()

『PMX Library for Arduino』のMotorREAD()関数について解説します。

 

【解説】

MotorREADコマンドは、モータの動作に関連するデータを読み出すコマンドです。一つの送信パケットで現在位置や速度、電流値など制御に必要な情報を読み出すことができます。「応答データ指定」で読み出すデータを指定することができます。

 

・使用手順

制御モードを設定する

応答データ指定を設定する

③MotorREAD()関数を実行する

 

応答データ指定の内容

Byte 項目 データサイズ
Bit0 現在位置 2Byte
Bit1 現在速度 2Byte
Bit2 現在電流値 2Byte
Bit3 現在推定トルク 2Byte
Bit4 PWM出力割合 2Byte
Bit5 モータ温度 2Byte
Bit6 CPU温度 2Byte
Bit7 入力電圧 2Byte

 

 

【構文】

status = MotorREAD(ID, receiveMode, readMotorData[8], controlMode, &torqueSw);

 

【例】

 

【パラメータ】

引数1:ID(byte型)

第一引数の「ID」はサーボIDです。「ID」は、命令の対象になるサーボを指定しています。「ID」を0に指定すると、ID0のサーボを指定することができます。

 

引数2:receiveMode(byte型)

第二引数の「receiveMode」は「応答データ指定」の設定値を渡します。

 

引数3:readMotorData[8](long配列型)

第三引数の「readMotorData[8]」は読み出したデータを格納するための配列です。応答モードが設定されていない項目でも"None"を返しますのでデータ数に関係なく、必ず8個の配列を用意してください。

 

引数4:controlMode(byte型)

第四引数の「controlMode」は「制御モード」の設定値を渡します。制御モードは読み出しに関係ない項目ですが、PMXサーボは位置制御モードを含む場合と、速度制御のみなど無限回転する動作の場合で現在位置の値が異なります。そのため、「制御モード」を渡すことで読み出した現在位置を正しいデータに変換して返してもらいます。

位置制御モードを含む場合=-320度~320度の範囲で検出

無限回転動作の場合=0度~359度の範囲で検出

詳しくは「パラメータ読み出し」をご参照ください。

 

引数5:torqueSw(byte型)

第五引数の「torqueSw」はトルクスイッチの状態を受け取るための変数のポインタを渡します。

 

【戻り値】

戻り値1:status(unsigned short型)

戻り値は、サーボとの通信状態とサーボの状態が正常かどうかのステータスを足したものが返ってきます。データが0であれば問題ありません。0以外の場合は、なんらかの問題が発生していますので、ステータス部がエラーの場合はオンラインマニュアルの『5.エラー状態』、または『PmxStatusErrorList』を、通信部がエラーの場合は『ComError』を参照してください。

status = PMXからの返信のステータス(PMX::PmxStatusErrorList) + 送受信の状態(PMX::ComError)

 

 

リファレンスの目次に戻る