一、三角波(最常用:匀速上升 + 匀速下降)
实现思路
从最小值 → 匀速上升 → 到最大值 → 匀速下降 → 到最小值 → 循环
通用程序逻辑(所有 PLC / 组态王都能写)
你只需要定义 3 个变量:
AO:输出模拟量(0~100 或 4~20mA 对应工程量)Step:步长(变化速度,比如 0.5)Dir:方向(0 = 上升,1 = 下降)
定时程序(100ms 执行一次)
plaintext
// 三角波核心逻辑 IF Dir = 0 THEN // 上升 AO = AO + Step; IF AO >= 100 THEN // 到上限,开始下降 Dir = 1; END_IF; ELSE // 下降 AO = AO - Step; IF AO <= 0 THEN // 到下限,开始上升 Dir = 0; END_IF; END_IF;
效果
0 → 100 → 0 → 100 → 0 匀速来回完美用于:
模拟液位 / 温度 / 压力变化
测试模拟量输出
调试组态王曲线
二、正弦波(平滑、柔和、波浪式变化)
实现思路
平滑的波浪形,不是匀速,两头慢、中间快,最接近真实物理波动。
通用程序(直接用,不用懂数学)
只需要 2 个变量:
Angle:角度(0~360 循环)AO:输出模拟量(0~100)
定时程序(100ms 执行一次)
plaintext
// 角度自增(控制速度) Angle = Angle + 5; // 超过360度归零 IF Angle > 360 THEN Angle = 0; END_IF; // 正弦波输出 0~100 AO = 50 + 50 * SIN(Angle * 3.14159 / 180);
效果
平滑波浪:0 → 50 → 100 → 50 → 0 →...非常适合:
模拟流量波动
模拟液位晃动
模拟温度波动
三、最关键:速度怎么调?
三角波:改
Step步长越大 → 越快
正弦波:改角度增量
Angle = Angle + XX 越大 → 波浪越快
四、你直接复制的版本(0~100 标准量程)
三角波(复制即用)
plaintext
IF Dir = 0 THEN AO := AO + 0.5; IF AO >= 100 THEN Dir := 1; END_IF; ELSE AO := AO - 0.5; IF AO <= 0 THEN Dir := 0; END_IF; END_IF;
正弦波(复制即用)
plaintext
Angle := Angle + 5; IF Angle > 360 THEN Angle := 0; END_IF; AO := 50 + 50 * SIN(Angle * 3.14159 / 180);
五、如果你要 4~20mA 输出
直接把范围映射一下即可:
三角波:下限 = 4,上限 = 20
正弦波:
AO = 12 + 8 * SIN(...)


