計算式の適用
英語名称ではフォーミュラ (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 のような変換式を入力すればOKです。
Q. 結果が NaN / Infinity になります
- 0で割る場合 →
Infinity - 負数の平方根 →
NaN
PLCのraw値の範囲が想定と異なる可能性が高いです。計算式なしでraw値をまず確認してください。
Q. より複雑な加工が必要です (条件分岐 / 複数変数 / 外部データ)
計算式だけでは困難です。PlantPulse プラットフォームの後処理段または別のデータ加工ツール (Node-RED など) を併用することをお勧めします。アプリケーション管理 ページの Node-RED 項目を参照してください。
全関数 / 変数リファレンスが必要な場合は、上級 — Formula リファレンス ページを参照してください。