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 ON
    MOVE P,J0
    J0へ動作中にステップ停止させても、次の動作MOVE P,J1は動作されます。
    その後、ステップ停止します。
    MOVE P,J1
    SET IO[1]
    IOBLOCK OFF

  • IOBLOCKの有効範囲は、定義したプログラムでのみ有効であり、サブプログラムでは有効でありません。
    以下のようなプログラムがある場合、SUB1ではPRO1で定義したIOBLOCKは有効ではありません。IOBLOCKの有効範囲はプログラムごとに独立です。
    例:
    PROGRAM PRO1
    TAKEARM
    DEFPOS lp1,lp2
    IOBLOCK ON
    CALL SUB1
    MOVE P,lp1,lp2
    SET 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