PMX C#Lib setMotorHold()
『PMX Library for C#』のsetMotorHold()関数について解説します。
【解説】
setMotorHold()関数は、PMXサーボのトルクスイッチをHoldに指令するための関数です。Holdに設定するとサーボのトルクがONになりますが、その場で保持します。動作指示があっても動作しません。
【構文】
status = setMotorBrake(ID, receiveMode, out receiveData, controlMode);
【例】
1 2 3 4 5 6 7 8 9 10 11 12 13 |
byte writeOpt = 1; // 制御モードを指定する byte controlMode = (byte)ControlMode.Position; // 位置制御モード値 ushort flag = pmx.setControlMode(ServoID, controlMode, writeOpt); // 応答データ指定を指定する byte receiveMode = (byte)ReceiveDataOption.Full; // すべて返す flag = pmx.setMotorReceive(ServoID, receiveMode, writeOpt); // トルクスイッチの設定をHoldにする int[] receiveData; flag = pmx.setMotorHold(ServoID, receiveMode, out receiveData, controlMode); |
【パラメータ】
引数1:ID(byte型)
第一引数の「ID」はサーボIDです。「ID」は、MotorWRITEコマンドの命令の対象になるサーボを指定しています。「ID」を0に指定すると、ID0のサーボを指定することができます。
引数2:receiveMode(byte型)
第二引数の「receiveMode」は「応答データ指定」の設定値を渡します。
引数3:out receiveData(int配列型)
第三引数の「readMotorData」は読み出したデータを格納するための配列です。応答モードが設定されていない項目でも"None"を返しますのでデータ数に関係なく、必ず8個のデータが返ってきます。
outキーワードについては、C#の資料をご参照ください。
引数4:controlMode(byte型)
第四引数の「controlMode」は「制御モード」の設定値を渡します。PMXサーボは位置制御モードを含む場合と、速度制御のみなど無限回転する動作の場合で現在位置の値が異なります。そのため、「制御モード」を渡すことで読み出した現在位置を正しいデータに変換して返してもらいます。
位置制御モードを含む場合=-320度~320度の範囲で検出
無限回転動作の場合=0度~359度の範囲で検出
詳しくは「パラメータ読み出し」をご参照ください。
【戻り値】
戻り値:status(ushort型)
戻り値は、サーボとの通信状態とサーボの状態が正常かどうかのステータスを足したものが返ってきます。データが0であれば問題ありません。0以外の場合は、なんらかの問題が発生していますので、ステータス部がエラーの場合はオンラインマニュアルの『5.エラー状態』、または『PmxStatusErrorList』を、通信部がエラーの場合は『ComError』を参照してください。
status = PMXからの返信のステータス(PmxStatusErrorList) + 送受信の状態(ComError)