编写SCL程序▼ ① 第2行 (数据格式转换):
从模拟量通道读进来的反馈值是整数数字,没办法做小数加减运算,先转换成带小数点的实数,放到临时缓存备用
▼ ② 第3行(压力量程换算):
(最关键一行)
例如:PID上限165、下限0;当前原始值=2810
(2810-921)÷4700 ×165 = 66.3MPa,这个结果就是反馈过程值,触摸屏显示的实时水压就是这个数字 设定水压0.5MPa,现在实际管内水压只有0.3MPa
当前误差 = 0.5 - 0.3 = +0.2,正数代表压力偏低,需要PID加大输出、变频器提速增压
取绝对值,不管压差正数负数只看差值大小;
判定条件:死区设定0.5,压差<0.5以内 → 判定压力正常小幅波动
执行:PID输出调节力度直接赋值0,不做任何调节动作
压差超出死区范围,正式执行PI运算公式
积分*当前误差:积分I调节,固定差值持续存在时,积分慢慢累加调节输出,消除静态压差
中转赋值:把PI公式算出来的调节力度,传递给对外输出端口,触摸屏可以实时监控调节力度大小
锁住PID调节最大、最小输出幅度,防止PID运算失控
调节力度超标上限,强制封顶最大值,变频器不会频率拉满超速运行
调节力度低于下限,强制最低输出,变频器不会降到0Hz停机
适配供水场景:限制变频器运行区间20Hz~50Hz,避免低速缺水、高速过载
▼ ⑦ 第16行(误差缓存):
本次扫描周期的压差,保存下来,等到下一轮PLC循环运算,当做「上次误差」对比使用,P运算必须依靠前后两次差值
缓存本次输出力度,留给后续周期运算备用
输出量程反向换算
反向换算,和第3行反过来计算
把MPa单位的调节数值,换算成0~27648区间的标准小数数值
例如:PID需要输出80%开度,对应数值换算成 22118.4
▼ ⑩ 第19行(模拟量输出给变频器):
格式转换:浮点小数 → 整型数字,只有整数才能送入QW80模拟量硬件输出通道,最终输出对应电流给到变频器