LANGUAGE
日本語 English

関数名

RobPtpMove

定 義

short RobPtpMove ( short idx, double Goal[MaxRobAxes], long MoveType );

戻り値

0が返却されます。

引 数

idx:ロボットを指定するインデックス。
Goal:ロボットの各軸の動作目標位置を直交座標系で指定します。配列要素数はMaxRobAxesにしてください。
MoveType:動作の種別。以下の値が有効です。詳細は解説を参照してください。
1…絶対位置指定同期命令
2…相対位置指定、同期命令
3…絶対位置指定、非同期命令
4…相対位置指定、非同期命令

概 要

指定ロボットをPTP動作にて指定位置へ移動します。

詳 細

ロボットが複数軸で構成されている場合、移動開始タイミング、および停止タイミングは軸間で同期動作となります。
加減速時間の設定はRobSetPtpAccelerations関数で行います。移動速度の設定はRobSetPtpSpeed関数で行います。
目標位置の単位は[ユーザ単位]です。
※動作種別の解説
同期命令…移動が完了するまで次の行のプログラムを実行しません。
非同期命令…移動を開始すると、移動の完了を待たずに次の行のプログラムを直ちに実行します。
絶対位置指定…指定された絶対位置への移動を行います。動作目標位置には目標位置を指定します。
相対位置指定…現在位置から指定された移動量にて移動を行います。動作目標位置には移動量を指定します。

備考

目標位置を設定する配列は配列要素[0]から順番に使用されます。例えば、2軸ロボットであれば1軸目の目標位置は配列要素[0]に、2軸目の目標位置は配列要素[1]に設定しておきます。詳細はロボットと軸(モータ軸)リソースを参照してください。
各座標系で使用するMOS関数一覧はこちらを参照してください。

前処理の候補

後処理の候補

他処理の候補

対応HW

〇PCベースコントローラ
〇InterMotion

使用例


使用例1
次のプログラムは、2軸で構成されたRobot1を2次元平面上の座標(0,0)と(-100,-55)との間で無限回数移動する例です
void main() {
	・・・・
	// 目標位置を格納する配列の要素数は必ずMaxRobAxesとしてください
	// MaxRobAxesの値はシステム内部で定義されており、ユーザが変更することはできません
	double pos[MaxRobAxes]; 			// 目標位置を格納する配列を宣言
	・・・・
	RobSetPtpAccelerations(1, 50, 50, 0, 0);	// Robot1の加減速時間設定
	RobSetPtpSpeed(1, 100); 			// Robot1の移動速度設定
	RobSetManipServoPower(1, 1); 			// Robot1を全軸サーボオン
	RobReturnHome(1); 				// Robot1を原点復帰
	while(1) {
		pos[0] = -100;				// 1軸目標位置を設定
		pos[1] = -55; 				// 2軸目標位置を設定
		RobPtpMove(1, pos, 1); 			// 絶対位置(-100,-55)へptp移動
		Sleep(500);				// 500ms処理遅延
		pos[0] = 0;
		pos[1] = 0;
		RobPtpMove(1, pos, 1); 			// 絶対位置(0,0)へptp移動
		Sleep(500); 				// 500ms処理遅延
		・・・・
	}
	・・・・
}

使用例2
次のプログラムは、上記の使用例1と同じRobot1を2次元平面上の座標(0,その時の現在位置)と(-100,その時の現在位置)との間、すなわちY軸を現在位置のまま動かさず、X軸のみ無限回数移動する例です。
CurrentPositionという予約語を使用して配列に代入すると、RobGetCartePosition関数などを使用しなくても現在位置を取得できます。上記の使用例1のwhileループを次のように変更します。
	・・・・
	while(1) {
		pos[0] = -100;				// 1軸目標位置を設定
		pos[1] = CurrentPosition;		// 2軸目標位置を現在位置に設定
		RobPtpMove(1, pos, 1); 			// 絶対位置(-100,*)へ移動
		Sleep(500);				// 500ms処理遅延
		pos[0] = 0;
		pos[1] = CurrentPosition;		// 2軸目標位置を現在位置に設定
		RobPtpMove(1, pos, 1); 			// 絶対位置(0,*)へ移動
		Sleep(500); 				// 500ms処理遅延
		・・・・
	}
	・・・・
ただし、次のようにCurrentPositionを直接的に演算することはできません。配列に代入後、演算してください。
pos[1] = CurrentPosition + 0.1;