式エバリュエーター
整数、小数点、数値変数、文字列比較用の文字列変数、算術演算子とブール値演算子、または一連の関数を使用して、式の結果を計算します。
プロパティ
プロパティ | 説明 |
---|---|
式 | 計算する式。 式には、正しく開かれた括弧と閉じられた括弧をいくつでも含めることができます。式が正しい構文に従っていない場合、コンバータは計算を実行しません。 |
モード | ダイナミックリンクの方向:
|
ソース
以下によって識別される 1 つ以上の変数:
- {プレースホルダindex_number}
- 0 以上の累進整数。例:{1}
- {#プレースホルダplaceholder_identifier}
- #を先頭に付けた文字列。例:{#speed}
ヒント:
プレースホルダの任意の組み合わせを任意の順序で使用します。式では任意の数のプレースホルダを使用します。
リテラル
- ブール値。
- 整数。
- 小数点以下の区切りはポイントである必要があります。
- 接頭辞0xが付いた 16 進数。
- 二重引用符で区切られた文字列などのテキスト。ヒント: ダブルクォーテーションを 2 回繰り返す ("") と、エスケープ シーケンスとして解釈されます。
- 日時。たとえば、2017-06-28T15:26:06.0790910。
オペレーター
カテゴリー | オペレーター | 結合 | コメント |
---|---|---|---|
単項 | 単項マイナス: - ビット単位 NOT: ~ キャスト演算子: (type) | 右から左 | キャスト演算子 (type) は、すべての数値データタイプとブール値のみに適用されます。 |
乗算 | * 、/ 、% | 左から右 | |
加法 | + 、- | 左から右 | |
シフト | << 、>> | 左から右 | シフト演算子と関係演算子は、次のデータタイプに適用されます。
|
関係 | < , <= , > , >= | 左から右 | |
等価 | == 、!= | 左から右 | 等価演算子は、次のデータタイプに適用されます。
|
ビット単位 AND、XOR、OR | & 、^ 、| | 左から右 | |
論理 AND | && | 左から右 | |
論理 OR | || | 左から右 |
データタイプ
式エバリュエーターのデータタイプ規則:
- リテラル整数は Int32 です。
- 10 進リテラルは Double です。
- 数値は Int32 と見なされます。
- リテラル値の真と偽は Boolean 値として解釈されます。
- / 演算子は、常に Double 値を返します。
- % 演算子は、剰余ゼロによる除算がある場合に例外を生成します。
- % 演算子は、Float と Double のオペランドを受け入れます。
- Int32 値を返す符号を除き、すべての関数は Double 値を返します。
単項キャスト演算子の
type
には、次のデータタイプを指定することができます。- bool、Boolean
- sbyte、SByte
- short、Int16
- int、Int32
- long、Int64
- byte、Byte
- ushort、UInt16
- uint、UInt32
- ulong、UInt64
- float、Float
- double、Double
特定のデータタイプに適用される演算子:
オペレーター | Operand1 | Operand2 | 説明 |
---|---|---|---|
プラス | DateTime | 積分数 | Operand2 はミリ秒として解釈されます。 |
プラス | 積分数 | DateTime | Operand1 はミリ秒として解釈されます。 |
プラス | DateTime | TimeZone (Struct) | Operand2 は分 (TimeZone.Offset) として解釈されます。 |
プラス | TimeZone (Struct) | DateTime | Operand1 は分 (TimeZone.Offset) として解釈されます。 |
プラス | TimeZone | 積分数 | Operand1 は分 (TimeZone.Offset) として解釈されます。Operand2 は分として解釈されます。 |
プラス | 積分数 | TimeZone | Operand1 は分として解釈されます。Operand2 は分 (TimeZone.Offset) として解釈されます。 |
マイナス | DateTime | 積分数 | Operand2 はミリ秒として解釈されます。 |
マイナス | DateTime | TimeZone (Struct) | Operand2 は分 (TimeZone.Offset) として解釈されます。 |
マイナス | TimeZone | 積分数 | Operand1 は分 (TimeZone.Offset) として解釈されます。Operand2 は分として解釈されます。 |
関数
式エバリュエーターで使用する関数:
関数 | 構文 | 説明 | 返されるデータタイプ |
---|---|---|---|
max | max( value1 , value2 , value3 , ...) | 最大値を返します。 | Double |
min | min( value1 , value2 , value3 , ...) | 最小値を返します。 | Double |
avg | avg( value1 , value2 , value3 , ...) | 指定された値の平均を返します。 | Double |
abs | abs( value ) | 指定された数値の絶対値を返します。 | Double |
trunc | trunc( value ) | 10 進数の整数部分を返します。 | Double |
ceil | ceil( value ) | excess による近似値を返します。 | Double |
floor | floor( value ) | 欠陥別の近似値を返します。 | Double |
round | round( value ) | 最も近い整数への近似値を返します。 | Double |
sqrt | sqrt( value ) | 指定された数値の平方根を返します。 | Double |
sign | sign( value ) | 指定された浮動小数点数が負であるかどうかを確認します。真の場合は [0] を返し、偽の場合は [1] を返します。 | Int32 |
like | like( string_value , pattern ) | String、QualifiedName、および LocalizedText データタイプにのみ適用されます。 [真] を返すのは string_value パラメータが pattern パラメータと一致する場合です。この [パターン] は、先頭または末尾で % ワイルドカードを受け入れます。例:
| Boolean |
isempty | isempty( variable ) | 指定された NodeID、String、LocalizedText または DataTime が空であるかどうかを確認します。 | Boolean |
if | if( condition , value_if_true , value_if_false ) | condition が [真] であるかどうかを確認し、value_if_true または value_if_false のいずれかを返します構文は、次の要件を満たす必要があります。
| value_if_true データタイプ |
left_of | left_of(string, pattern) | 正規表現パターンが最初に出現する部分文字列の左側にある部分文字列を返します。
重要:
パターンではワイルドカードを使用しないでください。
| String |
right_of | right_of(string, pattern) | 正規表現パターンが最初に出現する部分文字列の右側にある部分文字列を返します。
重要:
パターンではワイルドカードを使用しないでください。
| String |
like(string_value, pattern) String 、QualifiedName 、および LocalizedText データタイプにのみ適用されます。string_value パラメータが指定されたパターン と一致する場合に [真] を返します。この [パターン] は、先頭または末尾で % ワイルドカードを受け入れます。例
|
出力
式の結果の値。
例
変数の絶対値を返します

変数値が 40 より大きい場合、グラフィックオブジェクトの表示/非表示を切り替えます

変数値が 50 より大きい場合は、グラフィックオブジェクトの背景色を青に変更します

変数値が 30 〜 40 の場合、アクティブなときに緑色の LED オブジェクトが点滅します

テキストボックスの境界線の色が赤の場合は、ボタンが有効です

ラベルテキストが「WARNING」と等しい場合は、ラベルテキストの色を赤に変更します

式
式エバリュエーター
ご質問やご意見