24.複合演算命令

24.1.概要

複合演算命令は、TPプログラムの代入文、条件比較文、および待機命令文においてさまざまな演算子とデータの組み合わせを可能にします。複合演算命令は否定演算子「!」と括弧「()」もサポートします。

複合演算命令は、レジスタ命令、I/O命令、モシ命令、待機命令で使用できます。

複合演算命令は、以下のように括弧内に指定します。

  • DO[1]=(DI[1] カツ !DI[2])

  • モシ (DI[1]) ジャンプ、ラベル[1]

  • タイキ (DI[1])

文に括弧がない場合は、通常の演算命令になります。

複合演算命令では、フラグ、マーカというブール型のデータと、実行条件命令を使用できます。

複合演算命令は、代入文だけを持つTPプログラムを8個まで、同時に、連続して、繰り返し実行できるバックグランド演算を使用できます。

24.2.データ型

複合演算命令では、次のデータ型を使用できます。

表29.データ型

データ

数値

データとして数値を扱うことができます。整数と実数の両方を使用できます。

レジスタ、定数、GI/O、AI/O、位置レジスタの要素、引数、システム変数

ブール

データはオンかオフのどちらかの値となります。

DI/O、RI/O、UI/O、SI/O、WI/O、オン、オフ、フラグ、マーカ


位置型データとパレタイジング型データを複合演算命令で使用することはできません。

24.3.演算子

複合演算命令では、次の演算子を使用できます。

表30.算術演算子

演算子 演算

+

加算

-

減算

*

乗算

/

除算

MOD

除算の剰余

DIV

除算の商の整数部分


  • 算術演算子は数値型のデータにだけ使用できます。ブール型データに算術演算子を使用すると、「ジッコウ-203 変数タイプ ミスマッチ」が発生します。

  • 算術演算子の出力データは常に数値型になります。

表31.論理演算子

演算子 演算

カツ

論理積

マタハ

論理和

!

論理否定


  • 論理演算子はブール型データにだけ使用されます。数値型データに論理演算子を使用すると、「ジッコウ-203 変数タイプ ミスマッチ」が発生します。

  • 論理演算子の出力データは常にブール型になります。

表32.比較演算子

演算子 演算

=

左辺と右辺が等しい場合、オンを返します。等しくない場合、オフを返します。

<>

左辺と右辺が等しくない場合、オンを返します。等しい場合、オフを返します。

<

左辺が右辺より小さい場合、オンを返します。より大きい場合、オフを返します。

>

左辺が右辺より大きい場合、オンを返します。より小さい場合、オフを返します。

<=

左辺が右辺より小さいか右辺に等しい場合、オンを返します。より大きい場合、オフを返します。

>=

左辺が右辺より大きいか右辺に等しい場合、オンを返します。より小さい場合、オフを返します。


  • 「=」と「<>」は数値型データとブール型データの両方に使用できます。

  • 「<」、「>」、「<=」、および「>=」は、数値データだけに使用できます。これらをブール型データに使用すると、「ジッコウ-203 変数タイプ ミスマッチ」のエラーになります。

次の表に演算子の優先順位を示します。

表33.演算子の優先順位

優先順位

演算子

!

  *、/、DIV、MOD
  +、-

<、>、<=、>=

  =、<>
  カツ

マタハ


24.4.式

複合演算命令は、代入文、条件分岐命令、および待機命令で使用できます。

代入文

次に複合演算代入文の例を示します。

レジ[1] = ((GI[1] + レジ[1]) * AI[1])
DO[1] = (DI[1] カツ (GI[1] - GI[2]))
  • 最も左にある=は代入文を表します。それ以外の=は比較を表します。右辺の式の結果が左辺のデータに代入されます。

  • 左辺のデータがブール型で右辺の式の計算結果が数値型の場合、右辺の値が1未満かつ-1より大きければ左辺のデータはオフになり、右辺の値が1より大きい又は-1未満であれば左辺のデータはオンになります。この動作は通常の代入文と同じです。

  • 左辺のデータが数値型で右辺の式の計算結果がブール型の場合、右辺の値がオフであれば左辺のデータは0になり、右辺の値がオンであれば左辺のデータは1になります。この動作は通常の代入文と同じです。

  • GO、AO、または整数型のシステム変数に実数値を代入すると、小数部分は切り捨てられます。

  • 複合演算命令で「パルス」を指定することはできません。「パルス」を指定するには、通常の演算命令を使用する必要があります。

  • 位置型データとパレタイジング型データを複合演算命令の左辺または右辺に指定することはできません。位置型データまたはパレタイジング型データを指定するには、通常の演算命令を使用する必要があります。

  • 代入文で使用できる項目(データまたは演算子)の最大数は、およそ20個です。使用可能な正確な最大数は、データ型に応じて異なります。

次のデータは代入の左辺に指定できます。

表34.データの代入

データ
ブール DO、RO、UO、SO、WO、フラグ、マーカ
数値 レジスタ、GO、AO、位置レジスタの要素、システム変数

条件文

次に条件分岐命令での複合演算命令の使用例を示します。

モシ (レジ[1] = (GI[1] + レジ[1]) * AI[1]) ジャンプ ラベル[1]
モシ (DI[1] カツ (!DI[2] マタハ DI[3])) ジャンプ ラベル[1]
  • 条件分岐命令の条件文に複合演算式を使用できます。

  • 条件文の結果はブール型でなければなりません。

  • 条件文の結果がオンの場合、条件分岐命令の実行文(たとえば、ジャンプ ラベル)が実行されます。

  • 条件文に複合演算を使用する場合、次の文を条件分岐命令の実行部分に使用できます。

    ジャンプ ラベル[ ]
    ヨビダシ
    複合演算代入文
    パルス文
    
  • 条件分岐命令の実行文に複合演算代入文とパルス文を指定できるのは、条件文が複合演算式の場合だけです。次の例を参照してください。

    モシ (DI[1]), DO[1]=(オン)
    モシ (DI[2]), DO[1]=パルス
    
  • 条件文の項目(データまたは演算子)の最大数は、およそ20個です。項目の正確な最大数は、データ型に応じて異なります。

待機命令

次に待機命令での複合演算命令の使用例を示します。

タイキ (DI[1] カツ (!DI[2] マタハ DI[3]))
  • 待機命令の条件文に、複合演算式を指定できます。

  • 条件文の結果はブール型でなければなりません。

  • 待機命令は、式の結果がオンになるまで待機します。

  • 複合演算命令に「タチアガリ」、「タチサガリ」、「エラーバンゴウ」を指定することはできません。これらを指定するには、通常の演算命令を使用する必要があります。

  • 待機命令の条件文の項目(データまたは演算子)の最大数は、およそ20個です。項目の正確な最大数は、データ型に応じて異なります。

24.5.複合演算命令の追加

複合演算命令の編集は通常の命令の編集よりも複雑です。これは、使用できるデータ型と演算子が多様であり、それらの組み合わせも多岐にわたるからです。

編集を簡単にするために、次の機能があります。

  • 複合演算命令の教示を開始するには、括弧を含む文を最初に選択する必要があります。

  • 項目選択メニューでは、文の場所に応じて使用可能な項目が表示されます。

  • 項目の組み合わせが無効な場合(たとえば、演算子が隣接している場合)、空の項目が自動的に挿入され、項目を選択するように要求されます。

  • 項目を削除すると、関連する項目が自動的に削除されます。たとえば、演算子を削除すると、その次の被演算項目が同時に削除されます。

  • カーソルが複合演算式の項目にある場合、式が不正であれば、プロンプト行にエラーメッセージが表示されます。次のメッセージが表示されます。

    表35.複合演算のエラーメッセージ

    エラーメッセージ 説明
    括弧が一致しません 左括弧の数と右括弧の数が異なっています。
    インデックスが違います インデックス番号が正しくありません。
    データの型が一致していません データ型が演算子に適合していません。
    パラメータ名が違います システム変数名が正しくありません。
    未教示項目です 未教示項目(...)が存在しています。
    動作グループが不適切です イチレジ[ ]の特定の動作グループをプログラムで使用できません。
    出力には使用できない命令です 代入文の左辺項目が無効です。
    複合演算で使用できない命令です 項目を複合演算式で使用できません。
    文法エラー 無効な文です。

プログラムに複合演算命令を追加するには、

  1. 編集画面で、F1[命令]を押し命令メニューを表示します。

  2. 追加する命令の種類をレジスタ、I/O、モシ/センタク、待機から選択します。

  3. 命令のメニューで、括弧の付いた複合演算命令を選択します。

    (...)
    

  4. 通常の命令と同様に命令を教示します。

  5. 複合演算命令の項目を変更するためには、変更する項目にカーソルがある時に、F4[選択]を押します。変更できる項目が表示されます。

  6. 代入文の左辺以外では、複合演算命令に項目を挿入することができます。項目を挿入するためには、F1「挿入」を押します。

    “...”
    

    が、カーソルの前に挿入され、項目選択メニューが表示されます。

    演算子を選択した場合、空の項目が演算子の後に挿入され、データメニューが表示されます。

  7. 代入文の左辺以外では、複合演算命令に項目を削除することができます。項目を削除するためには、項目にカーソルを移動し、F4[選択]を押し、F2「削除」を押します。演算子を削除すると、それに続くデータ項目も削除されます。

  8. 否定演算子(!)を追加または削除するには、代入文の左辺を除いて、複合演算式のデジタルI/O項目にカーソルがあるときにF5(!)を押します。否定演算子(!)が追加または削除されます。

  9. 代入文の右辺が複合演算命令である場合に代入文の左辺を変更するには、カーソルを左辺の項目に移動し、F4[選択]を押します。代入文の左辺に指定できる項目が選択メニューに表示されます。

24.6.バックグランド演算

24.6.1.概要

バックグランド演算を使用すると、バックグランド演算に対応している命令だけを含むTPプログラムをバックグランドで実行できます。プログラムは最初から終わりまで繰り返し実行されます。この実行は、非常停止、ホールド、アラームの影響を受けません。

バックグランド演算には、標準モードと優先モードの2つの実行モードがあります。

  • 標準モードでは、すべての複合演算命令をバックグランドで実行できます。標準モードでITPごと(ITPは通常8ミリ秒です)に実行できる項目の数は、標準モードと高速モードでスキャンされる項目の総数によります。「項目」はデータ、演算子、または許可された命令です。

  • 優先モードでは、すべての複合演算命令をバックグランドで実行できます。540までの項目は8ミリ秒ごとに実行されます。

バックグランド演算実行モードについては、表36."バックグランド演算実行モード"を参照ください。

バックグランド演算を実行するには、バックグランド演算の設定を参照ください。

表36.バックグランド演算実行モード

モード 項目の最大数 スキャン時間 使用可能なデータ 使用可能な演算子 使用可能な命令

標準モード

無制限

(標準モードの項目数 / (600 - 優先モードの項目数))* ITP

項目数は、そのモードのすべてのプログラムの項目数の合計を意味します。ITPは通常は8ミリ秒です。

F[]、 M[]*、

DI[]、DO[]、

AI[]、AO[]、

GI[]、GO[]、

SI[]、SO[]、

UI[]、UO[]、

RI[]、RO[]

WI[]、WO[]

オン、 オフ

レジ[]、イチレジ[i.j]、

ヒキスウ[]

定数

パラメータ

タイマ、タイマオーバラン

(、 )、 !、

カツ、マタハ

=、<>、

<、< =、>、>=、

+、-、*、/、

DIV、MOD

全ての複合演算の演算子

ジャンプ ラベル[...] (下方向へのジャンプのみ)、

ジッコウ、

ユーザザヒョウ[...]

優先モード 540 8ミリ秒

標準モードと同様

標準モードと同様

標準モードと同様


  • M[ ]を、バックグランド演算の代入文の左辺として指定することはできません。

  • 8個のプログラムをバックグランド演算として同時に実行できます。

  • プログラムに使用可能な命令以外が含まれていると、実行時に“ジッコウ-443 複合演算で使用できない命令です”が発生します。

  • プログラムをバックグランドで実行している間は、そのプログラムは編集できず、通常のタスクとして実行することができません。プログラムをバックグランドで実行していない場合、そのプログラムを通常のタスクとして実行することができます。

  • プログラムをバックグランドで実行している場合、同じ名前のプログラムを上書きでロードすることはできません。

  • 電源遮断時にプログラムをバックグランド演算として実行していた場合、そのプログラムは次の電源投入時に、同じ実行モードで自動的に実行されます。

  • バックグランド演算の実行は、通常のプログラムの実行の前に開始されます。バックグランド演算の実行にはITPごとに1ミリ秒かかります。バックグランド演算の実行は、通常のプログラムのサイクル時間に影響することがあります。

    バックグランド演算の実行時間を短くするには、$MIX_LOGIC.$ITEM_COUNTの値を小さくします。$MIX_LOGIC.$ITEM_COUNTは、ITPごとに処理される項目の数を定義しています。標準値は600です。

  • バックグランド演算は、条件式を持つ代入文を実行できます。条件式がオフの場合、代入文は実行されません。次の例において、

    モシ (DI[1]), DO[1]=(DI[2])
    

    DI[1]がオンの場合、DI[2]がDO[1]に代入され、DI[1]がオフの場合、DO[1]は変更されません。

  • バックグランド演算では、パルス命令を使用できます。パルス命令を条件式と組み合わせて、オフディレイタイマを作成できます。次に例を示します。

    モシ (DI[1]), DO[1]=パルス 1sec
    

    DI[1]が1秒より長くオンのまま場合、DO[1]は1秒間オンになります。1秒経過する前にDI[1]がオフになると、DO[1]はすぐにオフになります。DI[1]がオフである間は、この文はDO[1]を設定しません。

    DI[1]が1秒以内にオフになってもDO[1]を1秒間オンにしておくには、次の文を使用します。

    F[1]=(DI[1] マタハ (F[1] カツ DO[1]))
    モシ (F[1]), DO[1]=パルス 1sec
    

  • パルス命令に時間を指定しなかった場合、バックグランド演算の実行では、1スキャンパルスになります。次に例を示します。

    モシ (DI[1]), DO[1]=パルス
    

    この場合、DI[1]がオフからオンに変更されると、DO[1]が1スキャンの間だけオンになります。これはエッジ検出として使用できます。

    時間なしのパルス命令は、通常の実行では$DEFPULSEに設定した時間が使用されますが、バックグランド演算の実行では異なったものになります。

バックグランド演算画面を使用すると、プログラムをバックグランド演算として設定および実行できます。バックグランド演算画面の各項目については、表37."バックグランド演算画面の項目"を参照ください。表38."バックグランド演算画面の操作"に、バックグランド演算画面の操作の一覧を示します。

表37.バックグランド演算画面の項目

項目 説明
プログラム バックグランド演算として実行したいプログラムの名前を入力します。
状態

バックグランド演算プログラムの状態が表示されます。

  • 停止 :プログラムは停止しています。

  • 実行 :プログラムが標準モードで実行されています。

  • 実行(優先) :プログラムが優先モードで実行されています。

モード この項目は、実行モードを選択するのに使用します。
  • 通常: プログラムを常に標準モードで実行します。

    標準は「通常」です。優先モードで実行したいけれども、通常モードで実行されている場合、この項目を「優先」に設定して下さい。

  • 優先: プログラムを常に優先モードで実行します。


表38.バックグランド演算画面の操作

ファンクションキー 説明
実行 プログラムをバックグランド演算として実行するには、このキーを押します。バックグランド演算では使用できない文が含まれている場合、エラーが発生します。
停止 プログラムのバックグランドの実行を停止するには、このキーを押します。
消去 バックグランド演算のプログラムを一覧から削除するには、このキーを押します。(削除する前にプログラムが停止となっている必要があります。)

操作12.バックグランド演算の設定

  1. 画面選択キーを押します。

  2. 「設定」を選択します。

  3. F1[画面]を押します。

  4. 「バックグランド演算」を選択します。以下のような画面が表示されます。

    バックグランド演算
      通常モード 実行周期:    8 msec    3/8
        プログラム      状態           モード
        1 LOGIC1     実行           通常
        2 LOGIC2     停止           優先
        3 LOGIC3     実行(優先)   優先
        4            停止           通常
        5            停止           通常
        6            停止           通常
        7            停止           通常
        8            停止           通常
    
  5. バックグランド演算として実行したいプログラムの名前を「プログラム」列に入力します。F4[選択]を押すとプログラムの一覧が表示されます。一覧からプログラムを選択します。

    「状態」列には、バックグランド演算プログラムの状態が表示されます。

    • 停止 : プログラムは停止しています。

    • 実行 : プログラムが標準モードで実行されています。

    • 実行(優先) : プログラムが優先モードで実行されています。

  6. 「モード」列で、実行モードを選択します。F4[選択]を押すとモードの一覧が表示されます。一覧からモードを選択します。

    • 通常 : プログラムを標準モードで実行します。

    • 優先 : プログラムを優先モードで実行します。

    標準モードの実行の実行周期は画面の上の行に表示されます。

  7. プログラムをバックグランド演算として実行するには、F2「実行」を押します。

    プログラムが実行されます。バックグランド演算では使用できない文が含まれている場合、エラーが発生します。

  8. プログラムのバックグランド実行を停止するには、F3「停止」を押します。

  9. バックグランド演算で実行するプログラムの一覧からプログラムを削除するためには、F5「消去」を押します。

24.6.2.フラグ

フラグ(F[ ])は、読み取りと設定が可能な内部I/Oポートです。フラグは実際のI/Oデバイスには接続されておらず、ブール型の変数と同様のものです。

フラグの値は、停電回復機能(ホットスタート)によって回復できます。これは他の出力ポート(たとえば、DO)と同じです。

次の場合、すべてのフラグがオフに設定されます。

  • コールドスタート

  • コントロールスタート

  • イニシャルスタート

  • ホットスタートであっても、I/O割付が変更された場合

  • ホットスタートであっても、I/O構成が変更された場合

DI、DO、UI、UO、GI、およびGOをラック34、スロット1、開始点1〜1024として設定することで、これらをフラグに割り当てることができます。

UI/UOがフラグに割りつけられた時、プログラム実行をTPプログラムやバックグランド演算によって制御することができます。例えば、

          Rack Slot Start Pt.
UI[1-18]   34    1     1

この場合、F[6]がオンからオフに変更されると、UI[6:START]がオンからオフに変更され、選択されているプログラムが実行されます。

フラグ画面を表示するには、次の手順に従います。

  1. 画面選択キーを押します。

  2. 「I/O」を押します。

  3. F1[画面]を押します。

  4. 「フラグ」を選択します。次のような画面が表示されます。

    フラグ
            #      状態              1/1024
       F[   1]      オン   [              ]  
       F[   2]       オフ  [              ]  
       F[   3]       オフ  [              ]  
       F[   4]      オン   [              ]  
       F[   5]       オフ  [              ]  
       F[   6]       オフ  [              ]  
       F[   7]       オフ  [              ]  
       F[   8]       オフ  [              ]  
       F[   9]       オフ  [              ]  
       F[  10]       オフ  [              ]  
     
    

    この画面でフラグの値を変更できます。

  5. 信号詳細画面を表示するには、F2「詳細」を押します。次のような画面が表示されます。

    信号詳細
        フラグ                  [   1]   
        コメント :  [                     ]
    

    この画面でフラグのコメントを変更できます。

優先モードのバックグランド演算での立上がり検出、カウンタ、タイマの例

優先モードは標準モードに比べて実行能力が高く、標準モードの実行に影響を与えません。ただし、優先モードは数値演算とパルス命令が使用できません。

例1:立上がり検出

次のプログラムはDI[1]の立上がり検出です。DO[1]はDI[1]がオフからオンに変わった時だけオンになります。

1: DO[1]=(DI[1] カツ !F[1])
2: F[1]=(DI[1])
 

F[1]は前回スキャンした時のDI[1]の値が設定されています。DI[1]がオンでDI[1]の前の値がオフの時DO[1]がオンになります。

例2:カウンタ

以下の例はDI[1]の立ち上がリの4ビットカウンタの例です。カウンタの値はF[41-44]に設定されます。GI[1]をラック34、スロット1、開始点41、点数4として割りつけておけば、GI[1]でカウンタの値を読み込むことができます。

1:  F[2]=(DI[1] カツ !F[1]) ;
2:  F[1]=(DI[1]) ;
3:  ! BIT1 ;
4:  F[3]=(F[41]) ;
5:  F[41]=((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3])) ;
6:  F[2]=(F[2] カツ F[3]) ;
7:  ! BIT2 ;
8:  F[3]=(F[42]) ;
9:  F[42]=((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3])) ;
10:  F[2]=(F[2] カツ F[3]) ;
11:  ! BIT3 ;
12:  F[3]=(F[43]) ;
13:  F[43]=((F[801] カツ !F[3]) マタハ (!F[801] カツ F[3])) ;
14:  F[2]=(F[2] カツ F[3]) ;
15:  ! BIT4 ;
16:  F[3]=(F[44]) ;
17:  F[44]=((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3])) ;
18:  F[2]=(F[2] カツ F[3]) ;

最初の2行はDI[1]の立ち上がりを検出します。F[2]はDI[1]がオフからオンに変わった時に1スキャンだけオンになります。

4-6行目は、カウンタの最初のビット(F[41])のカウントアップを行います。F[3]は元の値を保持する変数です。5行目では、F[2]がオンになった時にはF[41]は反転し、F[2]がオフの時には変更されません。6行目では、元のF[41]がオフの時、F[2]はオフになり、オーバフローが起こらないことを意味します。

8行目から10行目は2番目のビット(F[42])の処理、12行目から14行目は3番目のビット(F[43])の処理、16行目から18行目は4番目のビット(F[44])の処理です。

例3:タイマ

優先モードのスキャン時間が常に8ミリ秒であるので、カウンタを使ってタイマをプログラムすることができます。以下の例は、80ミリ秒のパルスの例です。このプログラムは、モシ (DI[1])、DO[1]=パルス 80msecと同じように働きます。

1:  F[1]=(DI[1]);
2:  F[2]=(F[1] カツ !F[4]);
3:  DO[1]=F[2]
4:  ! BIT1 ;
5:  F[3]=(F[41]) ;
6:  F[41]=(F[1] カツ ((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3]))) ;
7:  F[2]=(F[2] カツ F[3]) ;
8:  ! BIT2 ;
9:  F[3]=(F[42]) ;
10:  F[42]=(F[1] カツ ((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3]))) ;
11:  F[2]=(F[2] カツ F[3]) ;
12:  ! BIT3 ;
13:  F[3]=(F[43]) ;
14:  F[43]=(F[1] カツ ((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3]))) ;
15:  F[2]=(F[2] カツ F[3]) ;
16:  ! BIT4 ;
17:  F[3]=(F[44]) ;
18:  F[44]=(F[1] カツ ((F[2] カツ !F[3]) マタハ (!F[2] カツ F[3]))) ;
19:  F[2]=(F[2] カツ F[3]) ;
20:  ! 80msec is 10 * 8msec. 10=0b1010 ;
21:  F[4]=(F[44] カツ !F[43] カツ F[42] カツ !F[41])

F[1]はDI[1]の値を保持する変数です。

カウンタの全てのビット(F[41-44])はF[1]がオフの時クリアされます。

F[2]がオンの時カウンタが増加します。

カウンタの値が10(F[41]:オン、F[42]:オフ、F[43]:オン、F[44]:オフ)の時、F[4]がオンになり、F[2]がオフになります。カウンタはDI[1]がオフになるまで増加しません。

24.6.3.マーカ

マーカ画面では、マーカの状態を監視できます。

マーカ(M[ ])はフラグと同様ですが、マーカの値を直接編集することはできません。マーカ(M[ ])がTPプログラムの代入(=)の左辺に指定されていて、その文が実行される場合、式は内部的にバックグランド演算として定義され、反復して実行されます。マーカ(M[ ])には常に式の結果が入ります。

標準では、マーカ機能は無効になっていて、マーカメニューは表示されず、M[ ]をTPプログラムで教示することはできません。マーカ機能を使用するには、$MIX_LOGIC.$USE_MKRをTRUEに設定します。

例:

M[1]=(DI[1] カツ DI[2])

この行が(バックグランド演算ではなく、)通常のTPプログラムの中で実行された後、M[1]には常に右辺の式の結果が入ります。DI[1]とDI[2]の両方がオンの場合、M[1]はオンであり、それ以外の場合、M[1]はオフです。

  • 通常のTPプログラムでマーカ代入文が実行されると、その文がバックグランド演算に登録されます。その文は、別の式がマーカを再定義するまでバックグランド演算として実行されます。その文はバックグランド演算なので、プログラムが一時停止または停止されても、文の実行は停止されません。

  • 標準では、8個のマーカ(M[1]〜M[8])があります。マーカの個数は、システム変数$MIX_LOGIC.$NUM_MARKERSで変更できます。マーカの最大数は100個です。1個のマーカは300バイトのパーマネントメモリ領域を占有します。

  • マーカ代入文を計算するスキャン時間は、標準モードのバックグランド演算のスキャン時間と同じです。マーカ代入文が定義されていると、バックグランド演算のスキャン時間に影響します。

  • 計算を停止するには、定義されたマーカ式をクリアします。定義された式をクリアするには、マーカ詳細メニューで「消去」操作を実行するか、TPプログラムで以下の行を実行します。

    M[1]=()
    

  • マーカが式に割り当てられてなく、そのマーカが別の文で使用されている場合、マーカの値を読み取る時点で「ジッコウ-438 I/O マーカが未定義です」が発生します。

  • バックグランド演算の代入文の左辺にM[ ]を指定することはできません。

マーカ画面を表示するには、

  1. 画面選択キーを押します。

  2. 「I/O」を押します。

  3. F1[画面]を押します。

  4. 「マーカ」を選択します。次のような画面が表示されます。

    マーカ
            #      状態              1/8
       M[   1]      オン   [              ]  
       M[   2]       オフ  [              ]  
       M[   3]       オフ  [              ]  
       M[   4]      オン   [              ]  
       M[   5]       オフ  [              ]  
       M[   6]       オフ  [              ]  
       M[   7]       オフ  [              ]  
       M[   8]       オフ  [              ]
     
    

  5. 信号詳細画面を表示するには、F2「詳細」を押します。次のような画面が表示されます。

    マーカ 詳細
     マーカー                  [   1]          
     コメント:   [                        ]    
     式:
      M[1]=((DI[1] マタハ DI[2]) カツ !DI[3]    
          カツ !(DI[4] カツ DI[5]))            
     モニタ:
      M [1]                  オン
      DI[1]                   オフ
      DI[2]                  オン
      DI[3]                   オフ
      DI[4]                   オフ
      DI[5]                  オン
     
    

    この画面でマーカのコメントを変更できます。

    • マーカ詳細画面には、定義された式が表示されます。

      定義された式をクリアするには、F5「消去」を押します。

      式を消去しますか?
      

      のメッセージが表示されたら、F4「はい」を押します。

    • 定義された式のすべてのデータ項目の現在値が、モニタの欄に表示されます。

24.6.4.実行条件

実行条件はマーカと似ています。実行条件命令は式を定義し、その式はバックグランド演算として計算されます。式の結果がオフである間は、モーショングループを持つすべてのTPプログラムとKARELプログラムの実行は停止されます。

標準では、実行条件機能は無効になっていて、実行条件メニューは表示されず、実行条件命令をTPプログラムで教示することはできません。実行条件機能を使用するには、$MIX_LOGIC.$USE_TCOLをTRUEに設定します。

次に例を示します。

ジッコウ_ジョウケン (DI[1] カツ DI[2])

この行が実行された後、DI[1]またはDI[2]がオフである間は、すべてのTPプログラムが停止されます。表39."実行条件命令"を参照ください。

表39.実行条件命令

ジッコウ_ジョウケン (...) 指定された複合演算命令を実行条件式として定義し、実行条件を有効にします。
ジッコウ_ジョウケン ムコウ* 実行条件を無効にします。実行条件が無効の場合、TPプログラムはジッコウ_ジョウケン (...)では停止されません。
ジッコウ_ジョウケン ユウコウ* 実行条件を有効にします。これは、ジッコウ_ジョウケン ムコウによって無効にされた実行条件を有効にするのに使用します。

* 標準では、ジッコウ_ジョウケン ムコウとジッコウ_ジョウケン ユウコウは使用できません。これらの命令を使用するには、$MIX_LOGIC.$USE_TCOLSIMをFALSEに設定します。

  • ジッコウ_ジョウケン (...)が実行されると、指定した式が実行条件式として定義されます。

    実行条件が有効な間、定義された式がバックグランド演算として計算されます。

    式の結果がオフである間は、モーショングループを持つすべてのTPプログラムとKARELプログラムは停止されます。

  • 実行条件式がオフの間にプログラムが起動された場合、プログラムはただちに一時停止されます。シフトキー+後退キーを除いて、すべてのタイプの起動が実行条件の影響を受けます。

  • 実行条件式がオフでもプログラムを実行できるのは、シフトキー+後退キーによってプログラムを後退実行する場合だけです。

  • バックグランド演算のスキャン時間がITPより長くても、実行条件式はITPごとに計算されます(ITPは通常は8ミリ秒です)。

  • モーショングループを持たず、かつ「中断無視」が有効になっているプログラムは、実行条件式がオフでも一時停止されません。

  • $MIX_LOGIC.$USE_TCOLSIMがTRUE(標準)の場合、ジッコウ_ジョウケン ムコウとジッコウ_ジョウケン ユウコウを編集メニューで教示することはできません。実行条件の有効/無効の設定を実行条件メニューで変更する必要があります。この場合、動作文の実行が完了すると、実行条件は自動的に有効になります。これは、実行条件が無効になるのは、オペレータがロボットを動作させる一時的な場合だけであることを意味します。

  • $MIX_LOGIC.$USE_TCOLSIMがFALSEの場合、ジッコウ_ジョウケン ムコウとジッコウ_ジョウケン ユウコウを編集メニューで教示することができます。実行条件の有効/無効の設定は、動作文の実行が完了しても自動的には変更されません。

実行条件命令を追加するためには、実行条件命令の追加を参照してください。実行条件メニューを表示するためには、実行条件メニューの表示を参照ください。

操作13.実行条件命令の追加

手順
  1. 編集画面で、F1[命令]を押して命令メニューを表示します。

  2. 実行条件を選択します。

    $MIX_LOGIC.$USE_TCOLSIMがTRUEの場合は、項目を選択し、通常と同じ方法で文を作成します。

    $MIX_LOGIC.$USE_TCOLSIMがFALSEの場合は、次のようにします。

    1. 「(...)」を選択します。

    2. 項目を選択し、通常と同じ方法で文を作成します。

  3. 実行条件文を変更するには、実行条件文の最初の「(」でF4[選択]を押し、「有効」を選択します。

操作14.実行条件メニューの表示

手順
  1. 画面選択を押します。

  2. 「I/O」を押します。

  3. F1[画面]を押します。

  4. 「実行条件」を選択します。次のような画面が表示されます。

    実行条件
                                                1/6
     状態:                            オン    
     有効/無効:                       有効  
     式:                                    
      ((DI[1] マタハ DI[2]) カツ !DI[3] カツ       
      !(DI[4] カツ DI[5]))                    
     モニタ:
      DI[1]                   オン
      DI[2]                    オフ
      DI[3]                   オン
      DI[4]                    オフ
      DI[5]                    オフ
    

    • 「有効/無効」:実行条件が現在有効かどうかが示されます。この項目をこのメニューで変更できます。

    • 「状態」:実行条件の状態が示されます。これは、定義された式の結果です。

    • 定義された式は、「式」の欄に表示されます。

    • 定義された式の各データの現在値は「モニタ」の欄に表示されます。

  5. 定義された式をクリアするには、カーソルを「モニタ」に移動します。

    1. F5「消去」を押します。次のプロンプトが表示されます。

      式を消去しますか?
      

    2. F4「はい」を押します。

24.7.保存/読込み

バックグランド演算命令のすべてのデータは、次のように保存されます。

  • 複合演算命令はプログラムのTPファイルに保存されます。

  • バックグランド演算のプログラムはTPファイルに保存されます。

  • バックグランド演算メニューの設定はMIXLOGIC.SVに保存されます。

    MIXLOGIC.SVには、次のシステム変数の値が保持されます。

    • $MIX_LOGIC

    • $MIX_BG

    • $MIX_MKR

    • $DRYRUN

    • $DRYRUN_PORT

    • $DRYRUN_SUB

  • フラグとマーカのコメントはDIOCFGSV.IOに保存されます。

  • DI/O、UI/O、またはGI/Oがフラグに割り付けられている場合、その割り付けはDIOCFGSV.IOに保存されます。