IOBLOCK ON/OFF
(ステートメント)
【SLIM準拠】

動作命令を実行中に、I/O命令や演算命令などの非動作命令を並列に実行します。

IOBLOCK {ON|OFF}

IOBLOCK ONとIOBLOCK OFFは対に用いられ、それに囲まれた範囲内では、ロボットが動作命令を実行中に、その動作命令に引き続く複数のI/O命令や演算命令などの非動作命令が並列に実行されます。
ロボット動作命令が現れると、一度並列実行は打ち切られ、現在実行中の動作命令が完了(パス動作時はパス開始)するのを待って、次の動作命令を実行します。次の動作命令のあとに、非動作命令が続く場合、これらも動作命令と並列に実行されます。IOBLOCK内の動作命令実行中に、IOBLOCK OFFが実行されると、動作命令の実行を待って、次ステップへ進みます。

-
以下の場合、並列処理を行ないません。いずれの場合も動作命令が完了(パス動作指定時はパス動作開始)するまで、次ステップの実行は待たされます。
-
動作命令に動作オプションを付加した場合。
-
CHANGEWORK,CHANGETOOL,SPEED,JSPEED,ACCEL,JACCELを実行する場合。
-
従来言語ライブラリ「aspChange」、「aspACLD」、アーム動作ライブラリ「mvSetPulseWidth」、「mvSetTimeOut」、「mvReverseFlip」、「mvResetPulseWidth」、「mvResetTimeOut」を実行する場合。
-
ロボット動作中にステップ停止・瞬時停止などをかけ、その後再開した場合には、非動作コマンドとの並列動作を行なわない場合もあります。
-
IOBLOCK内で動作命令が2回続くとき、最初の動作実行中にステップ停止させた場合、次の動作が終了してからステップ停止します。最初の動作実行中に、瞬時停止を行ない次にステップ起動させた場合も、次の動作が終了してからステップ停止します。例:IOBLOCK ONMOVE P,J0←J0へ動作中にステップ停止させても、次の動作MOVE P,J1は動作されます。その後、ステップ停止します。MOVE P,J1SET IO[1]IOBLOCK OFF
-
IOBLOCKの有効範囲は、定義したプログラムでのみ有効であり、サブプログラムでは有効でありません。以下のようなプログラムがある場合、SUB1ではPRO1で定義したIOBLOCKは有効ではありません。IOBLOCKの有効範囲はプログラムごとに独立です。例:PROGRAM PRO1TAKEARMDEFPOS lp1,lp2IOBLOCK ONCALL SUB1MOVE P,lp1,lp2SET IO[1]SET IO[2]IOBLOCK OFF::
-
ティーチチェックモードではIOBLOCKは無効になります。

TAKEARM
|
'ロボット制御権を取得します
|
IOBLOCK ON
|
'次の動作命令と並列にI/O命令が実行されます。
|
MOVE P (902.7, 0, 415.3, 180, 50, 180, 1)
|
|
|
'(902.7,0,415.3,180,50,180,1)の座標へ(PTP
'制御)移動します。
|
SET IO[240]
|
'BIT型ポート240をONにします。
|
SET IO[241], 40
|
'BIT型ポート241を40ms間ONにします。
|
SET IO[SOL1]
|
'I/O変数SOL1で示されるポートをONにします。
|
SET IO[104 TO 110]
|
'BIT型ポート104~110をONにします。
|
IF IO[242] THEN
|
|
RESET IO[240]
|
'BIT型ポート240をOFFにします。
|
RESET IO[SOL1]
|
'I/O変数SOL1で示されるポートをOFFにします。
|
RESET IO[104 TO 110]
|
'BIT型ポート104~110をOFFにします。
|
ENDIF
|
|
IOBLOCK OFF
|
|