LANGUAGE
日本語 English

関数名

RobReturnHome3

定 義

short RobReturnHome3 ( short idx, long Mode );

戻り値

0が返却されます。

引 数

idx:ロボットを指定するインデックス。
Mode:動作の種別。以下の値が有効です。
1…同期命令
3…非同期命令

概 要

指定ロボットの基準機械原点への原点復帰動作を行います。

詳 細

動作の種別に1を指定した場合は、本関数は原点復帰が完了するまで次のプログラム行の実行を保留します。
動作の種別に3を指定した場合は、本関数は原点復帰を開始すると、原点復帰の完了を待たずに次のプログラム行を直ちに実行します。この場合、原点復帰完了状態はRobGetReturnHomeStatus関数で取得することができます。原点復帰のシーケンス状態はRobGetReturnHomeSequence関数で取得することができます。
原点復帰動作を途中で停止したい場合は、RobSetServoPower等の関数を使用してサーボをOFFにしてください。この場合、プログラムはランタイムエラーで停止します。
コンフィギュレーションファイルのEncoderTypeパラメータで、RTEXのアブソリュートシステムを設定した軸を含むロボットに対して本関数を発行するとランタイムエラーとなります。
RobReturnHome関数およびRobReturnHome2関数による原点復帰動作では原点復帰の目標位置は機械原点ですが、RobReturnHome3関数による原点復帰動作では原点復帰の目標位置は基準機械原点です。
コンフィギュレーションファイルのReturnHomeStandardPulseパラメータに適切な値が設定されているとして、RobReturnHome関数またはRobReturnHome2関数で原点復帰を行った場合は原点センサのエッジで停止して機械原点とします。このとき、停止位置は「機械原点と基準機械原点との差異」を示すことになります。RobReturnHome3関数で原点復帰を行った場合は機械原点をサーチ後、「機械原点と基準機械原点との差異」の分だけさらに移動し、0の位置で停止してから原点復帰完了となります。

備考

コンフィギュレーションファイルに、原点復帰動作に関連するパラメータが設定できます。主なパラメータは次の通りです。
原点復帰タイプ:ReturnHomeTypeパラメータ
原点復帰動作順序:ReturnHomeOrderパラメータ
原点サーチ速度:ReturnHomeVelocity1およびReturnHomeVelocity2パラメータ
原点サーチ加減速時間:ReturnHomeAccel1およびReturnHomeDecel1パラメータ
本関数では、原点復帰基準パルス数:ReturnHomeStandardPulseパラメータも関連します。

前処理の候補

後処理の候補

他処理の候補

対応HW

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

使用例


void init_rob() {
	short rc, rc_old;
	・・・・
	RobSetManipServoPower(1, 1); 			// Robot1全軸サーボオン
	RobReturnHome3(1, 3); 				// 基準機械原点への原点復帰(非同期モード)
	・・・・
	while(1) {
		rc = RobGetReturnHomeStatus(1);		// Robot1の原点復帰ステータスを取得
		if(rc == 1 && rc_old == 0) {		// RobReturnHomeStatusの立上りを検出
			Printf0( "原点復帰終了\n");
			break;
		}
		rc_old = rc;
		Sleep(10);
		・・・・
	}
	・・・・


	short	rc, rc_old, i;
	・・・・
	//Robot1~4を初期化
	for(i = 1; i < 5; i = i + 1) {
		RobSetSettle(i, 50);
		RobSetPtpAccelerations(i, 1.0, 1.0, 100, 100);
		RobSetPtpSpeed(i, 100);
		RobSetManipServoPower2(i, 1);	// 即時サーボオン
	}
	//Robot1~4のサーボオンを確認
	for(i = 1; i < 5; i = i + 1) {
		rc_old = 0;
		while(1) {
			rc = RobGetManipServoPowerStatus(i);
			if(rc == 1 && rc_old == 0) {
				Printf1("Rob%d:サーボON終了\n", i);
				break;
			}
			rc_old = rc;
			Sleep(10);
		}
	}
	//Robot1~4の原点復帰
	for(i = 1; i < 5; i = i + 1) {
		RobReturnHome3(i, 3);	// 基準機械原点への原点復帰(非同期モード)
	}
	//Robot1~4の原点復帰終了を確認
	for(i = 1; i < 5; i = i + 1) {
		rc_old = 0;	
		while(1) {
			rc = RobGetReturnHomeStatus(i);
			if(rc == 1 && rc_old == 0) {
				Printf1("Rob%d:原点復帰終了\n", i);
				break;
			}
			rc_old = rc;
			Sleep(10);
		}
	}
	・・・・

}