Skip to main content

オペレーター

CODESYS V3はすべてのIEC 61131-3演算子をサポートしています。これらの演算子はプロジェクト全体で暗黙的に認識されます。これらのIEC演算子に加えて、 CODESYS IEC 61131-3 以外の演算子もいくつかサポートします。

演算子は関数などのブロック内で使用されます。

ヒント

ST 演算子の処理順序 (結合強度) については、「ST 式」の章を参照してください。

注意

浮動小数点データ型の演算の場合、計算結果は適用されるターゲット システムのハードウェアによって異なります。

注意

データ型にオーバーフローまたはアンダーフローがある操作の場合、計算結果は適用されるターゲット システムのハードウェアによって異なります。

データ型のオーバーフロー/アンダーフロー

CODESYS コンパイラはターゲット デバイス用のコードを生成し、常にターゲット デバイスで定義されたネイティブ サイズで一時結果を計算します。たとえば、x86 および ARM システムでは少なくとも 32 ビットの一時値で計算が実行され、x64 システムでは常に 64 ビットの一時値で計算が実行されます。これにより、計算速度が大幅に向上し、多くの場合、目的の結果も得られます。ただし、これは、場合によっては、データ型のオーバーフローまたはアンダーフローが切り捨てられないことも意味します。

104.

例1

この加算の結果は切り捨てられず、 dwVar65536

VAR
wVar : WORD;
dwVar: DWORD;
END_VAR

wVar := 65535;
dwVar := wVar + 1;

例2

データ型のオーバーフローとアンダーフローは切り捨てられず、結果(bVar1, bVar2)は、両方の比較において FALSE 32 ビットおよび 64 ビットのハードウェアで。

VAR
wVar1 : WORD;
wVar2 : WORD;
bVar1 : BOOL;
bVar2 : BOOL;
END_VAR

wVar1 := 65535;
wVar2 := 0;
bVar1 := (wVar1 + 1) = wVar2;
bVar2 := (wVar2 - 1) = wVar1;

例3

割り当てによって wVar3値はターゲットデータ型に切り捨てられます WORD そしてその結果 bvar1TRUE

VAR
wVar1 : WORD;
wVar2 : WORD;
wVar3 : WORD;
bVar1 : BOOL;
END_VAR

wVar1 := 65535;
wVar2 := 0;
wVar3 := (wVar1 + 1);
bVar1 := wVar3 = wVar2;

例4

コンパイラに一時的な結果を強制的に切り捨てさせるには、変換を挿入することができます。

型変換により、両方の比較が16ビットのみになり、結果(bVar1, bVar2)は、両方の比較においてそれぞれ TRUE

VAR
wVar1 : WORD;
wVar2 : WORD;
bVar1 : BOOL;
bVar2 : BOOL;
END_VAR

wVar1 := 65535;
wVar2 := 0;
bVar1 := TO_WORD(wVar1 + 1) = wVar2;
bVar2 := TO_WORD(wVar2 - 1) = wVar1;


算術演算子

ADD

SUB

MUL

DIV

MOD

MOVE

INDEXOF

SIZEOF

XSIZEOF

ビット文字列演算子

AND

OR

XOR

NOT

AND_THEN

OR_ELSE

ビットシフト演算子

SHL

SHR

ROL

ROR

選択演算子

SEL

MAX

MIN

LIMIT

MUX

比較演算子

比較演算子は、2 つの入力 (最初のオペランドと 2 番目のオペランド) を比較するブール値です。

GT

LT

LE

GE

EQ

NE

アドレス演算子

ADR

コンテンツオペレーター

BITADR

オペレーターを呼び出す

CAL

型変換演算子

型変換演算子を明示的に呼び出すことができます。以下に説明する型変換演算子は、ある基本型から別の基本型への型指定変換やオーバーロードに使用できます。「大きい」型から「小さい」型への変換も暗黙的に可能です(たとえば、 INTBYTE または DINTWORD)。

型変換: <elementary data type> _TO_ another elementary data type>

オーバーロードされた変換: TO_ <elementary data type>

基本データ型

<elementary  data type> =
__UXINT | __XINT | __XWORD | BIT | BOOL | BYTE | DATE | DATE_AND_TIME | DINT | DT | DWORD | INT | LDATE | LDATE_AND_TIME | LDT | LINT | LREAL | LTIME | LTOD | LWORD | REAL | SINT | TIME | TOD | UDINT | UINT | ULINT | USINT | WORD

キーワード TTIME_OF_DAY そして DATE_AND_TIME データ型の代替形式 TIMETOD、 そして DTTTIME_OF_DAY そして DATE_AND_TIME 型変換コマンドとしては表されません。

重要

型変換演算子のオペランド値がターゲットデータ型の値の範囲外の場合、結果の出力はプロセッサの種類に依存し、未定義になります。これは、たとえば、負のオペランド値が変換された場合に当てはまります。 LREAL ターゲットデータ型に UINT

大きなデータ型から小さなデータ型に変換すると、情報が失われる可能性があります。

変換時の文字列操作 STRING または WSTRING

型を変換する場合 STRING または WSTRING、型付けされた値は文字列として左揃えされ、長すぎる場合は切り捨てられます。したがって、型変換演算子の戻り変数を宣言します。 <>_TO_STRING そして <>_TO_WSTRING 操作しなくても文字列に十分なスペースが確保されるほど十分に長い。

REAL, LREAL

TIME, LTIME

DATE, DT, TOD, LDATE, LDT, LTOD

STRING, WSTRING

TRUNC

TRUNC_INT

数値演算子

ABS

SQRT

LN

LOG

EXP

EXPT

SIN

ASIN

COS

ACOS

TAN

ATAN

名前空間演算子

名前空間演算子は、IEC 61131-3 演算子から拡張されたものです。これにより、プロジェクト内の変数やモジュールに同じ名前を複数回使用する場合でも、変数やモジュールへの一意のアクセスを提供できるようになります。

グローバル名前空間

グローバル変数リストの名前空間

列挙型名前空間

ライブラリの名前空間

__POOL

マルチコア演算子

異なるタスクを操作するには、これらのタスクを同期する必要があります。これは、マルチコア プラットフォームで作業する場合に特に当てはまります。 CODESYS この同期をサポートするためにいくつかの特別な演算子を提供します。

これらの演算子はIEC-61131-3の拡張です。 TEST_AND_SET そして __COMPARE_AND_SWAP 同様のタスクに使用されます。

TEST_AND_SET

__COMPARE_AND_SWAP

__XADD

その他のオペレーター

__DELETE

__ISVALIDREF

__NEW

__QUERYINTERFACE

__QUERYPOINTER

INI

__TRY, __CATCH, __FINALLY, __ENDTRY

__POSITION

__POUNAME