short RobCircularMove ( short idx, double PassPos1[MaxRobAxes], double PassPos2[MaxRobAxes], long MoveType );
0が返却されます。
idx:ロボットを指定するインデックス。
PassPos1:ロボットの各軸の動作中継位置1を直交座標系で指定します。配列要素数はMaxRobAxesにしてください。
PassPos2:ロボットの各軸の動作中継位置2を直交座標系で指定します。配列要素数はMaxRobAxesにしてください。
MoveType:動作の種別。以下の値が有効です。
1…絶対位置指定、同期命令
2…相対位置指定、同期命令
3…絶対位置指定、非同期命令
4…相対位置指定、非同期命令
指定ロボットを、指定された平面上の中継位置1、2を経由し、最終目標位置(=現在位置)まで真円補間動作にて移動します。
本関数での補間の対象は論理軸の1~2軸で、直交座標系のXY平面上でのみ動作します。
補間対象外の軸は移動を行いません。
加減速時間の設定はRobSetCpAccelerations関数で行います。移動速度の設定はRobSetCpSpeed関数で行います。
目標位置の単位は[ユーザ単位]です。
中継位置を設定する配列は配列要素[0]と[1]が使用されます。3軸目(配列要素[2])以降の中継位置は無視されます。
詳細はロボットと軸(モータ軸)リソースを参照してください。
各座標系で使用するMOS関数一覧はこちらを参照してください。
〇PCベースコントローラ
〇InterMotion
次のプログラムは、4軸で構成されたRobot1を真円補間でポーズ停止しながら無限回数移動する例です
void main() {
double ppos[MaxRobAxes], gpos[MaxRobAxes];
short rob;
・・・・
rob = 1;
//エラーリセット、サーボON、原点復帰
MwResetSystemError();
RobResetError(rob);
RobSetManipServoPower(rob, 1);
RobReturnHome(rob);
//初期設定
RobSetCpSpeed(rob, 200); // 移動速度設定
RobSetPtpAccelerations(rob, 0.5, 0.5, 0, 0); // 加減速時間設定
pos1[0] = 292.0;
pos1[1] = -41.0;
pos1[2] = 0.0;
pos1[3] = 0.0;
RobLinearMove(rob, pos1, 1); // 移動の初期位置への移動
//1軸目(X)と2軸目(Y)で真円補間を行います
//1軸目と2軸目(X,Y)は(292, -41)の位置から(-32, 16)を経由して再び(292, -41)の位置へ戻る真円補間動作で移動します
//3軸目と4軸目は移動動作を行いません
while(1) {
pos1[0] = 209.0; //Xの中継位置1
pos1[1] = 104.0; //Yの中継位置1
pos1[2] = 300.0; //XY平面以外は動作しません(無視されます)
pos1[3] = 500.0; //XY平面以外は動作しません(無視されます)
pos2[0] = -32.0; //Xの中継位置2
pos2[1] = 16.0; //Yの中継位置2
pos2[2] = 200.0; //XY平面以外は動作しません(無視されます)
pos2[3] = 600.0; //XY平面以外は動作しません(無視されます)
RobCircularMove(rob, pos1, pos2, 1);
Pause(1); //ポーズ停止
}
・・・・
}