計算式(数式)の適用
英語名称で フォーミュラ (Formula) と呼ばれることもあります。
PLC が送ってくる raw 値をそのまま使わずに、単位変換 / ゼロ点補正 / スケール調整 を行いたい場合に使用します。
よくある事例:
- 圧力センサーが整数
1638を送ってくるが、実際には163.8 kPaである場合 →${VALUE}*0.1 - 摂氏 → 華氏 変換 →
${VALUE}*1.8+32 - mV → V 変換 →
${VALUE}/1000
どこに入力しますか
タグ登録 / 修正フォームの [計算式] 欄に数式を記述します。登録すると直後の収集周期から変換後の値が画面に表示されます。
- 空欄にすると raw 値がそのまま使用されます。
- 一度入力しておけば、以降は収集ごとに自動的に適用されます。
基本の使い方
${VALUE} は PLC から読み取ったばかりの raw 値を意味します。
| やりたいこと | 計算式 | 入力 → 出力 |
|---|---|---|
| そのまま使う | (空欄) | 100 → 100 |
| 10 倍にする | ${VALUE}*10 | 5 → 50 |
| 10 分の 1 にする (整数→小数) | ${VALUE}*0.1 | 1638 → 163.8 |
| 1000 で割る (mV → V) | ${VALUE}/1000 | 3300 → 3.3 |
| 加算 (摂氏 → ケルビン) | ${VALUE}+273.15 | 25 → 298.15 |
| 減算 (ゼロ点補正) | ${VALUE}-100 | 1024 → 924 |
| 華氏変換 | ${VALUE}*1.8+32 | 25 → 77.0 |
| 二乗 | ${VALUE}*${VALUE} または ${VALUE}^2 | 5 → 25 |
| 平方根 | sqrt(${VALUE}) | 144 → 12.0 |
| 毎分回転数 → Hz | ${VALUE}/60 | 1800 → 30.0 |
他のタグの値を参照
他のタグの最終値を ${태그ID} の形式で取得できます。ゼロ点値を別タグで管理する場合や、補正係数を別に持たせるパターンで便利です。
| やりたいこと | 計算式 |
|---|---|
| 他のタグをゼロ点として減算 | ${VALUE}-${TAG_ZERO} |
| 2 つのタグを合算 | ${VALUE}+${TAG_OFFSET} |
| 補正 (gain × x + offset) | ${VALUE}*${TAG_GAIN}+${TAG_OFFSET} |
ここで TAG_ZERO、TAG_OFFSET、TAG_GAIN は他のタグの タグ ID です。あらかじめ別のタグとして登録されている必要があります。
${TAG_ZERO} と記述したものの、そのタグが一度も収集されていない場合は計算に失敗します (当該タグのステータスに「計算式変数値なし」といったエラーが表示されます)。ゲートウェイが一巡すれば自動的に正常化しますので、しばらくお待ちください。
使用可能な関数
四則演算だけでなく、よく使う数学関数も使用できます。
| 種類 | 表記 | 例 |
|---|---|---|
| 四則演算 | +, -, *, / | ${VALUE}+1 |
| べき乗 | ^ | ${VALUE}^2 (= 二乗) |
| 括弧 | (, ) | (${VALUE}+10)*2 |
| 平方根 | sqrt(...) | sqrt(${VALUE}) |
| 立方根 | cbrt(...) | cbrt(${VALUE}) |
| 自然対数 | ln(...) | ln(${VALUE}) |
| 常用対数 (底10) | log(...) | log(${VALUE}) |
| サイン/コサイン/タンジェント (ラジアン) | sin, cos, tan | sin(${VALUE}) |
| 逆三角関数 | asin, acos, atan | atan(${VALUE}) |
| 双曲線関数 | sinh, cosh, tanh | tanh(${VALUE}) |
| 定数 | pi, e | ${VALUE}*pi/180 (角度 → ラジアン) |
角度(degree)入力をラジアンに変換するには *pi/180 を掛けてください。例: sin(${VALUE}*pi/180)。
適用されるデータ形式
計算式は 数値型 (Float, Double, Integer, Long) のタグにのみ適用されます。
String、Booleanタグでは計算式が無視され、raw 値がそのまま出力されます。- 補正後の結果が整数範囲を超える場合は、データ形式を
FloatまたはDoubleに変更してください。
間違いやすい点
| 誤ったパターン | 何が問題か | 正しいパターン |
|---|---|---|
VALUE * 0.1 | ${...} 表記が抜けている | ${VALUE}*0.1 |
${VALUE}*0,1 | カンマの使用 (韓国語キーボードでの入力ミス) | ${VALUE}*0.1 (ピリオドを使用) |
if(${VALUE}>0, ...) | 条件文は非対応 | 条件が必要な場合は別システムで処理 |
${VALUE} & 0xFF | ビット演算は非対応 | 算術で表現できる形に変更 |
よくある質問
Q. 計算式が適用されたかどうかはどう確認しますか?
タグの [現在値] 欄に表示される値が 変換後の値 です。raw 値を確認したい場合は、同じアドレスを計算式なしで別のタグとして登録し、比較してください。
Q. 単位変換を 2 種類 (例: 摂氏と華氏) 同時に送信したいです
同じ PLC アドレスを指すタグを 2 つ作成し、一方はそのまま、もう一方に ${VALUE}*1.8+32 のような変換式を入力してください。
Q. 結果が NaN / Infinity になります
- 0 で除算した場合 →
Infinity - 負数の平方根 →
NaN
PLC の raw 値の範囲が想定と異なる可能性が高いです。まず計算式なしで raw 値を確認してみてください。
Q. さらに複雑な加工が必要です (条件分岐 / 多変数 / 外部データ)
計算式のみでは困難です。PlantPulse プラットフォームの後処理段、または別のデータ加工ツール (Node-RED など) を併用することを推奨します。アプリケーション管理 ページの Node-RED 項目を参照してください。
関数 / 変数の全リファレンスが必要な場合は 高度な設定 — Formula リファレンス ページを参照してください。