マルチタスク

アプリケーションによっては、コンベヤーや給除材装置など、ロボット以外の装置を制御する場合があります。マルチタスクを使用することにより、このような他の装置をそのタスクで制御することができます。

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