short RobSetPulsePosition ( short idx, long mask, long ppos[MaxRobAxes] );
0が返却されます。
idx:ロボットを指定するインデックス。
mask:位置設定の対象となる軸を指定するためのデータをビットイメージで指定します。1で対象、0で対象外です。
ppos:ロボットの各軸のパルス位置をパルス単位で格納するための配列を指定します。配列要素数はMaxRobAxesにしてください。
指定ロボットの指定軸の現在指令位置と現在位置(いずれもパルス単位)を、指定したパルス位置に強制的に設定します。
引数のmaskのデータ形式は次に示すようなビットイメージです。
LSB(ビット0)…論理軸の1軸目に該当するビット
ビット1…論理軸の2軸目に該当するビット
ビット2…論理軸の3軸目に該当するビット
・・・
ビット7…論理軸の8軸目に該当するビット
ビット8以降のビットは意味がありません。
maskの該当ビットに1を指定するとパルス位置設定の対象となります。該当ビットに0を指定すると対象外となります。
例)mask=0x2として本関数を実行した場合は、2軸目の現在指令位置と現在位置のみを指定のパルス位置で更新します。それ以外の軸は対象外なので現在指令位置と現在位置は更新されません。
本関数はサーボOFF状態、原点復帰未完了状態でも使用できます。
本関数はRobPtpMove等による移動動作中に実行しないように注意してください。また、軸が整定されていない状態で本関数を実行すると位置ズレの原因になりますので、充分ご注意ください。
論理軸はコンフィギュレーションファイルのAxisパラメータの「Axis=」に続くの8つの数字の並び順で定義されます。左から順に論理1軸目、同2軸目、…、同8軸目です。
ロボットと軸(モータ軸)リソースにも説明がありますので参照してください。
各座標系で使用するMOS関数一覧はこちらを参照してください。
〇PCベースコントローラ
〇InterMotion
void main() {
long ppos[MaxRobAxes], mask;
・・・・
// Robot1の初期化
RobSetPtpAccelerations(1, 50, 50, 0, 0); // 加減速時間設定
RobSetPtpSpeed(1, 50); // 移動速度設定
RobSetManipServoPower(1, 1); // 全軸サーボオン
RobReturnHome(1); // 原点復帰
mask = 1;
ppos[0] = -1000;
RobSetPulsePosition(1, mask, ppos); // 1軸目の原点復帰後の位置を強制的に-1000パルスの位置に設定
・・・・
}