移動の途中で速度オーバーライド(タイマー使用)

移動の途中で速度オーバライド(タイマー使用)

2 波形は、+50mmへ移動開始して、70ms後に25%に速度オーバライド。

帰りの+0mm移動は、100%の速度。

ここで新しい用語が登場する。「非同期命令」?

いままでは「同期命令」だった。「非」が付いた。

「非同期命令」とは、命令を解釈したら命令実行が終わったことにしてしまう命令。

今回はRobPtpMoveという移動命令を「非同期命令」として、実行させている。つまり、移動命令を解釈したら、命令事体は終わったことにしてしまう。しかし、移動は完了していない。

2_2 画面の30行目、RobPtpMove命令の変数に「3」がある。これが、絶対座標移動命令の「非同期命令」を示している。

命令がすぐ終了してしまうので、移動途中なのに、次の行のSleep(70);(70ms待ち)が有効になる。そして、70ms後、次の行の速度オーバライドが実行される。

帰りの+0mmへの移動は、速度100%に戻したい。そのため、27行目で100%の速度オーバライドを発行している。

ここで注意が必要。

25%の速度オーバライドは、行きの+50mmまでの移動が完了するまで、有効にしておきたい。意図的に有効を保持しておかないと、帰りの+0mmへの移動で使用したい27行目で100%の速度オーバライドが、行きの+50mmまで移動で有効になってしまう。

行きの+50mmまでの移動が完了するまで、25%の速度オーバライドを有効にして魔法が25行目のRobWaitMoveDone関数。

RobWaitMoveDone関数は、直前に発行した移動命令の移動が完了するまで、命令完了を待っている。