マルチタスク
アプリケーションによっては、コンベヤーや給除材装置など、ロボット以外の装置を制御する場合があります。マルチタスクを使用することにより、このような他の装置をそのタスクで制御することができます。
SPEL+は、通常タスク32タスクと、バックグラウンドタスク16タスクの合計48タスクのマルチタスクをサポートします。タスクとは、システム、またはXqtステートメントにより開始されたファンクションです。
1つのファンクションの中から、別のタスクを開始するにはXqtを使用してください。Xqtステートメントで1~32までのタスク番号が指定できます。
バックグラウンドタスクより起動されたタスクは、バックグラウンドタスクとして起動されます。最大16タスクのバックグラウンドタスクを起動することができます。
次の表は、マルチタスクのために使用されるプログラム命令を示します。
| ステートメント | 解説 |
|---|---|
| Xqt | ファンクション名で指定したタスクを実行します。 |
| Halt | 実行中のタスクを一時停止します。 |
| Resume | 一時停止中のタスクを継続実行します。 |
| Quit | タスクを終了します。 |
| Signal | 同期シグナルを発信します。 |
| SyncLock | 現在のタスクが使用するリソースをロックして、SyncUnlockが実行されるまで、他のタスクがリソースを使用しないようにします。 |
| WaitSig | シグナルの受信を待ちます。 |
| Pause | すべてのタスクを一時停止します。 |
別のタスクを開始する1つの例として、ロボットワークセルのコンベヤーシステムを稼動します。
Program: MAINTASK.PRG
Function Main
Xqt Conveyor ' コンベヤータスク開始
Do
...
...
Loop
Fend
Program: CONVTASK.PRG
Function Conveyor
Do
Select True
Case Sw(10) = On
Off convCtrl
Case Sw(11) = On
On convCtrl
Send
Loop
Fend