int RobConstVelMove ( int idx, double MoveRate[MaxRobAxes], int MoveType );
0が返却されます。
idx:ロボットを指定するインデックス。
MoveRate:RobSetPtpSpeed関数の設定に対する速度比率を各軸ごとに設定します。配列要素にマイナスの値を設定すると逆方向となります。配列要素の数値は-1.0~1.0の範囲で設定してください。1.0または-1.0を設定すると、RobSetPtpSpeed関数の設定速度で移動します。0を設定すると移動しません。配列要素数はMaxRobAxesにしてください。
MoveType:動作の種別。以下の値が有効です。相対移動は指定できません。
1…同期命令
3…非同期命令
指定ロボットを一定の速度で連続移動します。
ロボットが複数軸で構成されている場合、MoveRateの配列要素に各軸の速度比率を設定できます。
移動動作の中止はRobStopMove関数やRobStopMove2関数で行ってください。特にMoveTypeに1を指定した場合は、本関数は移動完了まで次のプログラム行の実行を保留しますので、移動動作の中止は他のプロセスからのみ行うことができます。
速度比率を設定する配列は配列要素[0]から順番に使用されます。例えば、2軸ロボットであれば1軸目の速度比率は配列要素[0]に、2軸目の速度比率は配列要素[1]に設定しておきます。詳細はロボットと軸(モータ軸)リソースを参照してください。
加速時間の設定はRobSetPtpAccelerations関数で行います。
〇PCベースコントローラ
〇InterMotion
次のプログラムは、本関数を動作種別に3を指定して移動開始した後、ポート5121をwhile文で監視し、ポートの値が1になったらRobStopMove関数で移動を中止する例です。動作種別に1を指定して移動開始すると、プログラム行の実行が進まないので、同じプロセスの中では移動を中止することができなくなります。
void main() {
・・・・
// MaxRobAxesの値はシステム内部で定義されており、ユーザが変更することはできません
double MoveRate[MaxRobAxes];
short i;
・・・・
RobSetPtpAccelerations(1, 1.0, 1.0, 100, 100); // Robot1加減速時間設定
RobSetPtpSpeed(1, 10); // Robot1の移動速度設定
RobSetManipServoPower(1, 1); // Robot1を全軸サーボオン
RobReturnHome(1); // Robot1を原点復帰
MoveRate[0] = 1.0; // 1軸目は100%の速度で正方向移動
MoveRate[1] = -0.5; // 2軸目は50%の速度で逆方向移動
WritePort(5121, 0);
RobConstVelMove(1, MoveRate, 3); //Robot1を連続移動開始
while(1) {
i = ReadPort(5121); // ポート5121が1になったら
if(i == 1) {
RobStopMove(1); // 移動を中止する
break;
}
Sleep(100);
}
・・・・
}