▎西门子博途 LGF 库详解 · 18:信号发生器(上)——SinusCI、CosinusCI、TriangleCI
信号发生器是 LGF 库中最"好玩"的一组块——能在 PLC 里产生正弦波、余弦波、三角波、锯齿波和方波。配合第 07 篇讲的 LSim 仿真库,可以在完全不接硬件的情况下搭建完整的控制系统测试环境。
本篇(上)讲前 3 个:正弦、余弦和三角波。文末有 CI 系列块共享的周期计算公式,设置错了频率会偏 10 倍。
一、3 个块一览
信号发生器组(4.13 Signal generators,上半)
| 块名 | 类型 | 版本 | 波形 | 输出范围(默认) |
|------|------|------|------|-----------------|
| LGF_SinusCI | FB | V3.0.2 | 正弦波 | [-amplitude, +amplitude] + offset |
| LGF_CosinusCI | FB | V3.0.2 | 余弦波 | 同上(相位偏移 90°) |
| LGF_TriangleCI | FB | V3.0.1 | 三角波 | 同上(线性升降) |
所有 CI 系列块共享统一的接口设计,都是 FB(有状态),需要背景 DB。
二、引脚详解
三个块接口完全一致,以 LGF_SinusCI 为例:
引脚 | 类型 | 方向 | 默认值 | 说明 |
enable | Bool | IN | FALSE | 使能。FALSE 时输出保持最后值不变 |
amplitude | LReal | IN | 1.0 | 幅值(峰值,非峰-峰值) |
period | LReal | IN | 10.0 | 周期参数(与实际调用间隔配合计算实际周期) |
offset | LReal | IN | 0.0 | 直流偏移量 |
cycleTime | LReal | IN | — | 块的调用间隔时间(秒) |
output | LReal | OUT | — | 当前波形输出值 |
实际周期计算公式
实际周期(秒)= period × cycleTime
例如:period = 100,cycleTime = 0.01s(OB1 周期 10ms),则实际周期 = 100 × 0.01 = 1.0 秒,输出为 1Hz 的正弦波。
如果 cycleTime 设置错误(比如实际调用间隔是 10ms 但 cycleTime 填了 1ms),频率会偏 10 倍。
三、实战案例
#### 案例 1:模拟 50Hz 振动传感器信号
测试振动监测系统需要 50Hz、幅值 2.5g 的正弦波:
SinusCI 振动仿真
在 100μs 循环中断 OB 中调用:
cycleTime := 0.0001, period := 200, amplitude := 2.5, offset := 0.0
→ 200 × 0.0001 = 0.02s = 50Hz,输出 -2.5g ~ +2.5g
#### 案例 2:三角波做定位往复扫描
伺服轴在 0 到 100mm 之间线性往复:
TriangleCI 定位扫描
amplitude := 50.0, offset := 50.0, period := 1000, cycleTime := 0.01
→ 1000 × 0.01 = 10 秒周期,输出 0.0 ~ 100.0 线性往复
#### 案例 3:余弦波做相位补偿
两路信号需要 90° 相位差(如旋转变压器仿真):
SinusCI + CosinusCI 正交信号
sinSignal := LGF_SinusCI(...); cosSignal := LGF_CosinusCI(...);
// 两路幅值、频率、偏移相同,相位差恒为 90°
四、总结与下载
下载信息
| 项目 | 内容 |
|------|------|
| 库名称 | Library of General Functions (LGF) |
| SIOS-ID | 109479728 |
下篇预告:LGF 库详解 · 19——信号发生器(下)。SawToothCI 锯齿波、RectangleCI 方波(含占空比设置)、以及 Legency 旧版 SawTooth。欢迎点赞、在看、转发。
往期热门干货