数学函数
计算与算法
从简单的加法到复杂的方程式,数学函数将您的原始数据转化为可用于流程控制的操作信息。
什么是 TIA Portal 中的数学函数?
TIA Portal 中的数学函数允许在不同的数据类型(整数、实数)上执行算术、三角和对数计算。它们对于传感器缩放、轨迹计算或 PID 回路调节至关重要。
TIA Portal 的特色在于 CALCULATE 指令,它允许在单个块中编写复杂的表达式(例如:(in1 + in2) * in3 / in4),与一系列独立的 ADD/MUL 块相比,提高了可读性。
基础算术
数据处理的基本操作
CALCULATE — 计算
CALC功能
允许定义结合多个输入 (IN1...INn) 的自由数学表达式。您输入公式,TIA Portal 就会生成相应的引脚。
适用场景
只要计算需要两个以上的步骤。非常适合流量、体积计算或任何复杂的物理公式。
专家提示
您可以直接在 CALCULATE 表达式中使用 ABS、SQRT 或 SIN 等函数。
始终检查输出数据类型 (OUT) 以避免溢出 (Overflow)。
在 SCL 中,它是直接赋值的自然等价物:out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+功能
标准算术指令:加法、减法、乘法和除法。
适用场景
用于两个值之间的简单快速运算。
专家提示
在除法 (DIV) 中,始终使用 |OK| 测试或检查除数是否不为零,以避免 CPU 停机。
通过单击块上的黄色图标,ADD 指令可以接受两个以上的输入。
对于整数,DIV 返回整数商。使用 MOD 获取余数。
MOD — 取模
MOD功能
返回 IN1 和 IN2 之间整数除法的余数。
适用场景
管理循环缓冲区 (ring buffers)、循环交替(例如:泵 1 和 2)或单位转换(例如:秒到分/秒)。
专家提示
对于每 'N' 个循环触发一次动作非常有用。
仅适用于整数数据类型(Int、DInt 等)。
SCL: remainder := value1 MOD value2;
符号与递增
符号管理和快速单位操作
INC / DEC — 递增 / 递减
++功能
对指定的变量 (InOut) 加 1 或减 1。
适用场景
简单的零件计数器、循环索引、队列管理。
专家提示
比编写完整的 ADD 或 SUB 块更快。
注意数据类型:对 32767 的 Int 进行递增将变为 -32768。
在 SCL 中:i := i + 1; 或 INC(i);
ABS — 绝对值
ABS功能
返回一个数的正值,无论初始值是正还是负。
适用场景
计算测量值与设定值之间的偏差、距离测量、PID 误差计算。
专家提示
对于计算绝对误差 (|设定值 - 测量值|) 至关重要。
支持整数和实数。
SCL: positiveVal := ABS(originalVal);
最小 / 最大 / 限制
值的选择与边界限制
MIN / MAX — 最小值 / 最大值
MIN功能
比较 N 个值并返回最小值 (MIN) 或最大值 (MAX)。
适用场景
从多个探头中选择最高温度,确定最小允许速度。
专家提示
您可以根据需要向块中添加任意数量的输入。
对于多传感器诊断非常有用。
SCL: peakValue := MAX(val1, val2, val3);
LIMIT — 限制
LIMIT功能
将输入值 (IN) 限制在最小值 (MN) 和最大值 (MX) 之间。
适用场景
模拟量输出的安全保护(例如:防止阀门打开超过 80%),限制用户设定值。
专家提示
有效地替代了 MIN 和 MAX 的组合。
如果 MN > MX,输出取决于 CPU 类型,但通常取 MX。
SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
乘方与开方
指数与根式计算
SQRT / SQR / EXPT
SQRT功能
SQRT (平方根), SQR (平方), EXPT (自定义幂)。
适用场景
几何计算、非线性信号转换、流体物理。
专家提示
负数的 SQRT 会产生 NaN。始终测试输入或使用 ABS。
EXPT 比较消耗 CPU 周期,简单的平方请使用 SQR。
SCL: area := 3.14 * SQR(radius);
三角函数
角度与旋转计算
SIN / COS / TAN / ASIN...
SIN功能
标准三角函数计算及其逆函数 (arcsin, arccos, arctan)。角度始终以弧度 (RADIANS) 为单位。
适用场景
机器人运动学、角度定位计算、振荡信号处理。
专家提示
角度转弧度:弧度 = 角度 * (PI / 180)。
TAN(PI/2) 趋于无穷大,请监控您的输入。
使用 PI 的系统常量以确保精度。
高级函数
对数与小数部分
LN / EXP / FRAC
LN功能
LN (自然对数), EXP (指数 e^x), FRAC (提取小数部分)。
适用场景
化学过程建模、指数增长或单位分离 (FRAC)。
专家提示
FRAC(12.34) 返回 0.34。在时间精度计算中非常实用。
EXP 是 LN 的精确反函数。
SCL: fraction := FRAC(totalValue);
计算方法对比
LAD vs SCL — 如何选择?
| 计算类型 | 推荐方法 | 为什么? |
|---|---|---|
| 简单加法 | ADD 块 (LAD) | 直观且易于跟踪 |
| 复杂公式 | CALCULATE 块 | 紧凑并减少程序段数量 |
| 数学算法 | SCL 语言 | 语法接近 C/Pascal,非常适合公式 |
| 三角函数计算 | SCL 或 CALCULATE | 独立的块太占空间 |
| 信号限制 | LIMIT 块 | 西门子标准,非常鲁棒 |
| 索引复位 | INC/DEC 指令 | 实现速度非常快 |
常见问题
与多个 ADD/MUL 块相比,CALCULATE 有什么优势?
CALCULATE 显著减少了程序占用的空间。无需 5 个带有中间临时变量的程序段,您只需一个带有可读公式的块。如果公式发生变化,也更容易维护。
TIA Portal 如何处理计算错误(例如:除以零)?
在 S7-1200/1500 上,数学错误不一定会停止 CPU(取决于配置),但结果会变为 NaN。在关键计算之后使用 |OK| 指令在结果使用前进行验证是至关重要的。
三角函数使用的是角度还是弧度?
所有函数(SIN、COS、TAN 等)均排他性地使用弧度 (RADIANS)。如果您的 HMI 提供角度,则必须在将值注入块之前乘以 0.01745329 (PI/180)。
我可以执行 64 位 (LReal) 计算吗?
可以,S7-1500 原生支持 LReal (Long Real) 类型以提高精度。大多数数学函数都接受此类型。