Skip to main content

オペレーター

標準 IEC 関数のサブセットを表す組み込みの標準関数は演算子と呼ばれます。安全プログラミングではユーザー定義関数を作成することはできません。

演算子は、 CODESYS 標準。

両方に接続できます SAFExxx そして データ型 標準。

演算子の挿入

演算子は、 挿入ボックス または 空のボックスを挿入 指示。

演算子は、 ツールボックス ビュー。Safety FBD エディターのツールボックスには、次のカテゴリが含まれています。

  • ブール演算子

  • 数学演算子

  • その他のオペレーター

入力アシスタント

入力アシスタントの演算子には次のカテゴリが表示されます。

  • オペレーター

  • コンバージョン (基礎レベルではありません)

拡張可能な演算子

. 追加入力によって拡張可能な演算子
  • AND

  • OR

  • ADD (拡張レベルのみ)

  • MUL (拡張レベルのみ)

  • MUX (拡張レベルのみ)

EQLTLEGT、 そして GE 同様に IEC に従って拡張可能な演算子は、2 つの入力でのみ使用できます (標準の場合と同様)。

入力を挿入 コマンドは、拡張可能なオペレータ ボックスにさらに入力を追加します。

基本レベルの演算子

. ブール演算子
  • AND (2入力)

  • AND (3入力)

  • OR (2入力)

  • OR (3入力)

すべてのオペランド OR でなければなりません SAFEBOOL

拡張レベルの演算子

. ブール演算子
  • AND (2入力)

  • AND (3入力)

  • OR (2入力)

  • OR (3入力)

  • XOR

  • NOT

重要

の不注意な使用 XOR そして NOT オペレータは、フェイルセーフ特性の喪失につながる可能性がある SAFExxx 変数。このような構造に対しては、安全性チェッカーによって警告は生成されません。

XOR そして NOT オペレータは、 SAFExxx 変数なので、 SAFE 変数はフェイルセーフ特性を失い、つまり「非フェイルセーフ」になります。これにより、プラントが意図せず起動する可能性があります。

プログラミングルール: SAFExxx の出力 NOT そして XOR 決定されなければならない。その後、これらの NOT/XOR 出力は出力 (I/O) に接続されていません。

. 数学演算子
  • ADD (2入力): 算術 ADD オペレーター

  • ADD (3入力): 3入力の加算

  • SUB: 減算

  • MUL: 掛け算

  • DIV: 分割

  • EQ: 同等性の比較

  • NE: 不平等の比較

  • LT: 「より小さい」の比較

  • LE: 「より小さい」または「等しい」の比較

  • GT: 「より大きい」の比較

  • GE: 「より大きい」または「等しい」の比較

. その他のオペレーター
  • SEL

  • MUX

. コンバージョン
  • BOOL_TO_INT

  • BOOL_TO_DINT

  • BOOL_TO_TIME

  • BOOL_TO_WORD

  • BYTE_TO_INT

  • BYTE_TO_DINT

  • BYTE_TO_TIME

  • BYTE_TO_WORD

  • DINT_TO_BOOL

  • DINT_TO_BYTE

  • DINT_TO_INT

  • DINT_TO_TIME

  • DINT_TO_WORD

  • DINT_TO_DWORD

  • DWORD_TO_DINT

  • DWORD_TO_TIME

  • INT_TO_BOOL

  • INT_TO_BYTE

  • INT_TO_DINT

  • INT_TO_DWORD

  • INT_TO_TIME

  • INT_TO_WORD

  • TIME_TO_BOOL

  • TIME_TO_BYTE

  • TIME_TO_INT

  • TIME_TO_DINT

  • TIME_TO_WORD

  • TIME_TO_DWORD

  • WORD_TO_BOOL

  • WORD_TO_BYTE

  • WORD_TO_DINT

  • WORD_TO_INT

  • WORD_TO_TIME

  • WORD_TO_DWORD

安全特性を持つオペレータ

に特有のいくつかの演算子の特性については、次のセクションで説明します。

拡張レベルで演算子の範囲外の場合の実行時エラー

重要

実行時エラーが発生しないようにプログラム ロジックを設計するのは開発者の責任です。

以下の範囲外の場合には、 ランタイムエラーその結果、アプリケーションが停止され、ログ エントリが生成されます。

レベル

言語要素

ランタイムエラーの場合

拡張

DIV

0による除算

拡張

MUX

最初の入力に負の値、または入力数から 1 を引いた値 N を指定して呼び出します。例: MUX(2, 16#8000, 16#8001)

拡張

DINT_TO_INT

TIME_TO_DINT

TIME_TO_INT

DINT_TO_TIME

INT_TO_TIME

DINT_TO_WORD

TIME_TO_WORD

DINT_TO_BYTE

INT_TO_BYTE

TIME_TO_BYTEWORD_TO_BYTE

出力値がターゲット型の値の範囲外です: 2つの ANY_MAGNITUDE 種類 (INTDINTTIME)、数値出力値はターゲット型の値の範囲内になければなりません(ここで TIME 値はミリ秒数としてカウントされます)。ビット文字列型から/への変換(BYTEWORDDWORD) の場合、出力値のビットパターンはターゲット タイプのビットパターンである必要があります。例:

DINT_TO_INT(16#0000FFFF)、なぜなら216-1は INT 価値、

同じく DINT_TO_TIME(-1)否定的な意見はないので TIME- 価値観

TIME_TO_DINT(t#365d)365日 = 3,153,600,000ミリ秒 = 16#BBF81E00 であり、最大のDINT数2より大きいためである。31-1 = 16#7FFFFFFF

INT_TO_BYTE(-1)、 なぜなら BYTE 0から255までしか含まれません。

WORD_TO_BYTE(0xFFFF)、 なぜなら BYTE 0xFF までのみ拡張されます。

ヒント

標準的な動作 SEL/MUX (つまり、入力値が大きすぎる場合は最大値が選択され、入力値が負の場合は 0 が選択される) を安全アプリケーションでプログラムする必要があります。

40. 標準的な動作のプログラミング SEL: k<0の場合
標準的な動作のプログラミング SEL: k<0の場合


41. 標準的な動作のプログラミング SEL: k>maxの場合、n...最大値
標準的な動作のプログラミング SEL: k>maxの場合、n...最大値


42. 標準的な動作のプログラミング MUX k<0の場合
標準的な動作のプログラミング MUX k<0の場合


43. 標準的な動作のプログラミング MUX k>0の場合
標準的な動作のプログラミング MUX k>0の場合