コンテンツにスキップ

4.14 演算式・条件式

ここでは、SpeeDBee Synapseで利用可能な演算式、条件式について説明します。

4.14.1 概要#

SpeeDBee Synapse内で、演算式と条件式が使える機能を示します。

項目 演算式 条件式 説明
演算コレクタ - 任意の演算結果をコレクタのデータとして登録
イベント
データ
- 条件式が真となる場合に、条件に合致したデータとして登録
イベント
トリガ
- 条件式が真となる場合に、そのイベント区間の情報を出力
出力ポート
数値変換
- 任意の演算結果をコレクタのデータとして登録
出力ポート
登録条件
- 条件式が真となる場合に、対象のデータを登録

4.14.2 演算式と条件式(共通)#

演算式と条件式、共通で使用できる式について、説明します。

項目
($VALUE + 10) * ABS(5)
使用可能な比較演算 =,<>,!=,<,>,<=,>=
使用可能な算術演算 (),+,-,*,/,%
使用可能な論理演算 AND,OR,NOT
制御文 IF
使用可能な変数 説明
$VALUE コレクタから受け取った値、もしくは、変換式による計算結果
$PVALUE 前回DBに登録された値
$GVAR0~63 グローバル変数
$PVAR0~63 永続化グローバル変数
※グローバル変数についてはこちらを参照してください。
使用可能な定数 説明
M_E ネイピア数、自然数の底(e)
M_LOG2E log_e(e)
M_LOG10E log_10(e)
M_LN2 log_e(2)
M_LN10 log_10(e)
M_PI 円周率(Pi)
M_PI_2 Pi/2
M_PI_4 Pi/4
M_1_PI 1/Pi
M_2_SQRTPI 2/Pi
M_SQRT2 sqrt(2)
M_SQRT1_2 1/sqrt(2)
使用可能な関数 説明
ABS 絶対値(整数)
ACOS 三角関数 逆余弦
ASIN 三角関数 逆正弦
ATAN 三角関数 逆正接
CEIL 小数点以下切り上げ
COS 三角関数 余弦
COSH 双曲線余弦
EXP 底がネイピア数eである指数関数
FABS 絶対値(倍精度浮動小数)
FLOOR 小数点以下切り捨て
FMOD 剰余
LOG 自然対数
LOG10 10を底とする対数
POW べき剰
ROUND 小数点以下四捨五入
SIN 三角関数 正弦
SINH 双曲線正弦
SQRT 平方根
TAN 三角関数 正接
TANH 双曲線正接

4.14.3 演算式#

演算式について、説明します。演算式は、任意の演算結果を算出する場合に指定する式です。コレクタから取得した値に、何らかの演算が必要な場合などに利用できます。

項目
($VALUE + 10) * ABS(5)
グローバル変数の代入について(参考
GVAR1 :=(式)
  • 代入するグローバル変数の先頭には$は必要ありません。
  • "GVAR1 := $VALUE * 2"のように代入を指定すると、演算結果としても$VALUEに2を乗算した値が返されます。

GVAR1 := ($VALUE * 3)
($VALUEを2と仮定した場合)
①GVAR1 には 2 * 3 = 6 の値が格納されます。
②演算結果は、GVAR1に代入された値(6)と同じになります。
IF文を使った代入
IF(条件式,真の場合の値,偽の場合の値)
GVAR1 := IF($VALUE = 1,$GVAR1 + 1, $GVAR1)
上記の場合、$VALUEが1の場合に、真となれば$GVAR1+1の結果が返されます。
偽の場合は、$GVAR1が元の値のまま代入されます。
注意点として、「真の場合の値」と「偽の値の場合」内で、代入を行うと、真偽に関係なく毎回評価されてしまいます。
IF($VALUE=1,GVAR1 := $GVAR1 + 1, $GVAR1)
このような指定をすると、真偽に関係なく「真の場合の値」が式として評価され、毎回代入されてしまいます。意図せぬ値となる可能性があるので、代入は、IF文の外で指定してください。

4.14.4 条件式#

条件式について、説明します。条件式は、任意の条件の真偽を得る場合に指定する式です。真偽を得ることで、その先の出力への制御に利用できます。

項目
($VALUE + 10) * ABS(5) < 100
グローバル変数の代入について(参考
1 < (PVAR5 :=(式))
  • 代入するグローバル変数の先頭には$は必要ありません。
  • "PVAR5 := ($VALUE * 2)"のように代入のみを指定することはできません。条件式としての指定が必要です。

GVAR1 := ($VALUE * 3)
($VALUEを2と仮定した場合)
①GVAR1 には 2 * 3 = 6 の値が格納されます。
②演算結果は、GVAR1に代入された値(6)と同じになります。