▎西门子博途 LGF 库详解 · 07:数学函数(下)——数值积分、时间容差与数学组总结
数学函数组的收官篇,3 个块:数值积分、时间容差检测、以及数学组 21 个块的完整回顾。
一、3 个块一览
数学函数组(4.5,下半部分)
| 块名 | 类型 | 版本 | 功能 |
|------|------|------|------|
| LGF_Integration | FB | V3.0.2 | 梯形法数值积分 |
| LGF_IsValueInToleranceByTime | FB | V1.0.0 | 带时间窗口的容差检测 |
| LGF_StoreMinMax(已在 06 讲过) | FB | V3.0.1 | — |
二、引脚详解
#### LGF_Integration
| 引脚 | 类型 | 方向 | 默认值 | 说明 |
| enable | Bool | IN | FALSE | 使能积分计算。FALSE 时暂停,输出保持最后结果 |
| value | LReal | IN | 0.0 | 瞬时值(如流量,单位/ms) |
| reset | Bool | IN | FALSE | TRUE 将积分结果清零 |
| integral | LReal | OUT | — | 积分结果(累计值) |
| error | Bool | OUT | — | 错误标志 |
| status | Word | OUT | — | 状态码 |
| subfunctionStatus | Word | OUT | — | 子函数状态码 |
梯形法原理:每个扫描周期用 (本次值+上次值)/2 × 周期时间 近似计算增量面积。精度取决于扫描周期的稳定性——周期波动大会引入误差。
#### LGF_IsValueInToleranceByTime
比第四章讲的 IsValueInTolerance 多了时间维度:不仅要求值在容差范围内,还要求持续稳定才能判定为"合格"。还有一个附加功能:检测设定值是否发生了变化(setpointChange)。
| 引脚 | 类型 | 方向 | 默认值 | 说明 |
| value | Real | IN | 0.0 | 待检测的实际值 |
| setpoint | Real | IN | 0.0 | 设定值 |
| lowerMinimum | Real | IN | 0.0 | 容差下限(百分比或绝对值) |
| upperMaximum | Real | IN | 0.0 | 容差上限(百分比或绝对值) |
| reset | Bool | IN | FALSE | 复位 |
| configuration | UDT | IN | — | 配置结构体(检测模式、时间窗口等) |
| overHighLimit | Bool | OUT | — | 超出上限 |
| belowLowLimit | Bool | OUT | — | 低于下限 |
| inLimits | Bool | OUT | — | 在容差范围内 |
| setpointChange | Bool | OUT | — | 设定值发生变化 |
| error | Bool | OUT | — | 错误标志 |
| status | Word | OUT | — | 状态码 |
configuration 类型
使用 LGF_typeIsValueInToleranceByTimeConfiguration(UDT)配置。包含:模式选择(百分比/绝对值)、时间窗口长度、稳定时长要求等。配置前先查阅 PDF 中该 UDT 的字段说明。
三、实战案例
#### 案例 1:按流量累计总产量
瞬时流量 0.5 L/s,需要累计今日总产量。OB1 周期 100ms,每个周期 Integration 自动累加增量:
Integration 流量累计
LGF_Integration(enable := TRUE, value := flowRate, reset := dayStart,
integral => totalVolume);
dayStart 每天零点给一次上升沿清零。其余时间 enable = TRUE,积分持续累加。
#### 案例 2:温度稳定判定
加热炉升温到目标值后,要求在 ±2℃ 范围内持续稳定 30 秒才算"就绪":
IsValueInToleranceByTime 稳定检测
用 TimeWindow = 30s,只有实际温度在 [setpoint-2, setpoint+2] 内连续稳定 30 秒后 inLimits 才为 TRUE。短暂的超调或扰动不会导致误判。
四、数学组 21 个块完整回顾
数学函数组(4.5)21 块全景
| 类型 | 块数 | 覆盖内容 |
|------|------|---------|
| 距离计算 | 2 | CalcDistance_2D / _3D |
| 阶乘 | 1 | GetFactorial |
| 范围判断 | 3 | IsValueInLimits / InRange / InTolerance |
| 根号 | 1 | NthRoot |
| 随机数 | 5 | Random_DInt/Real/UDInt + RandomRange_DInt/Real |
| 最值搜索 | 3 | SearchMinMax_DInt/LReal/UDInt |
| 积分与容差 | 3 | Integration + IsValueInToleranceByTime + StoreMinMax |
| 总计 | 21 | — |
SIOS-ID 109479728 | V5.1.1 | 中文站下载
下篇预告:LGF 库详解 · 08——矩阵运算。矩阵加减、乘法、标量乘、转置、求逆、比较——7 个块把博途的矩阵计算填满。
欢迎点赞、在看、转发。