计算公式应用
英文名也称为公式(Formula)。
当您不想直接使用PLC发送的原始值,而是需要进行单位转换 / 零点校正 / 缩放调整时使用此功能。
常见示例:
- 压力传感器发送整数
1638,但实际单位是163.8 kPa时 →${VALUE}*0.1 - 摄氏度 → 华氏度转换 →
${VALUE}*1.8+32 - mV → V 转换 →
${VALUE}/1000
在何处输入
在标签注册/修改表单的**[计算公式]**栏中输入公式。注册后,转换后的值将在下一个采集周期显示在屏幕上。
- 留空则直接使用原始值。
- 输入一次后,之后每次采集都会自动应用。
基本用法
${VALUE} 表示刚从PLC读取的原始值。
| 想要实现的功能 | 计算公式 | 输入 → 输出 |
|---|---|---|
| 直接使用 | (留空) | 100 → 100 |
| 放大10倍 | ${VALUE}*10 | 5 → 50 |
| 缩小为1/10(整数→小数) | ${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} |
| 两个标签求和 | ${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(角度 → 弧度) |
若要将角度(度)输入转换为弧度,请乘以 *pi/180。例如:sin(${VALUE}*pi/180)。
适用的数据类型
计算公式仅适用于数值型(Float、Double、Integer、Long)标签。
String、Boolean标签会忽略计算公式并直接使用原始值。- 如果校正后的结果超出整数范围,请将数据类型改为
Float或Double。
容易出错的地方
| 错误模式 | 问题原因 | 正确模式 |
|---|---|---|
VALUE * 0.1 | 缺少 ${...} 符号 | ${VALUE}*0.1 |
${VALUE}*0,1 | 使用了逗号(韩文键盘误输入) | ${VALUE}*0.1(使用小数点) |
if(${VALUE}>0, ...) | 不支持条件语句 | 如果需要有条件逻辑,请在单独系统中处理 |
${VALUE} & 0xFF | 不支持位运算 | 改为可通过算术实现的形式 |
常见问题
问:如何确认计算公式已应用?
标签的[当前值]列中显示的值是转换后的值。若要查看原始值,请将同一地址的标签以无计算公式的方式单独注册,然后进行比较。
问:我想同时发送两种单位转换结果(例如摄氏度和华氏度)
创建两个指向同一PLC地址的标签,一个保持原样,另一个输入类似 ${VALUE}*1.8+32 的转换公式即可。
问:结果输出为 NaN / Infinity
- 除以零的情况 →
Infinity - 负数的平方根 →
NaN
PLC原始值的范围可能与预期不符。请先在没有计算公式的情况下确认原始值。
问:需要更复杂的处理(条件分支 / 多变量 / 外部数据)
仅靠计算公式难以实现。建议将PlantPulse平台的后处理阶段或单独的数据处理工具(如Node-RED)结合使用。请参考应用程序管理页面中的Node-RED部分。
如需完整的函数/变量参考,请参阅高级 — Formula参考页面。