short RobGetMoveStatus ( short idx );
正常終了では移動動作残数を0~999の値の範囲で返却します。
異常終了では1000以上の値が返却されます。
idx:ロボットを指定するインデックス。
指定したロボットにおける移動動作残数を取得します。
RobPtpMove等の移動関数を非同期命令で実行した場合、動作の終了を待つことなく移動関数から戻りますが、本関数にて、残りの動作残数を知ることができます。
動作残数とは、ロボットの軸数に関わらず、未実行の非同期移動関数の行数です。例えば、目標位置を変えながら次の非同期移動関数を連続発行した後、RobGetMoveStatusをループして、発行、監視していると、残数が減っていってゼロになります。
RobPtpMove(1,pos1,3); // 非同期命令
RobPtpMove(1,pos2,3); // 非同期命令
RobPtpMove(1,pos3,3); // 非同期命令
RobPtpMove(1,pos4,3); // 非同期命令
本関数を実行するには、指定ロボットがサーボONの状態であることが必要です。
〇PCベースコントローラ
〇InterMotion
void main() {
double pos[MaxRobAxes];
short rob, Remain;
rob = 1;
//エラーリセット
MwResetSystemError();
RobResetError(rob);
//サーボオンと原点復帰
RobSetManipServoPower(rob, 1);
Sleep(500);
RobReturnHome(rob);
//移動パラメータ設定
RobSetPtpSpeed(rob, 20);
RobSetPtpAccelerations(rob, 0.5, 0.5, 100, 100);
//非同期/相対位置移動開始
for(i = 0; i < 5; i = i + 1) {
pos[0] = 100.0;
RobPtpMove(rob, pos, 4);
}
//動作残数が0になるとループを抜けます
while(1) {
Remain = RobGetMoveStatus(rob);
Printf1("Ptp移動中のRobGetMoveStatus= %d\n", Remain);
Sleep(100);
if(Remain == 0) {
break;
}
}
・・・・
}