恒压供水闭环

S7-1200 用程序实现 PID。模拟量模块只负责电流和数字量互转,PID 只和工程量打交道。

工程量 · 带单位的过程值 模拟量 · 电流或电压 数字量 · 通道原始值 0~27648
0.40 MPa
40%
把用水负荷加大,看压力先掉下去,PID 再把转速加上去。
CPU 里的程序 量程变换和 PID_Compact 都在这里,不在模块上 模拟量模块 只做转换 现场 变频器把电流理解成频率,变送器把压力变成电流 Σ + − 数字量 mA Hz 压力 mA 数字量 − 反馈 工程量 工程量 压力给定 0.400 MPa 控制器 PID_Compact e = 0.000 MPa 48.2% 程序换算 输出量程 % → 0~27648 13326 数模转换 模拟量输出 DAC · 4~20 mA 11.71 mA 模数转换 模拟量输入 ADC · 0~27648 11059 模块不做 PID 工程量 变频器 4 mA→0 Hz,20 mA→50 Hz 24.1 Hz 被控对象 水泵与管网 0.400 MPa 绿条是压力,蓝线是给定 模拟量 压力变送器 0~1.00 MPa → 4~20 mA 10.40 mA 程序换算 · NORM_X 然后 SCALE_X 输入量程变换:数字量 → 工程量,作为反馈 11059 → 0.400 MPa 送给 PID 的必须是 MPa,不能是毫安,也不能是 27648

模拟量输入:从管网回到 PID

方向向左,进 CPU。变送器和 AI 模块各做一次转换,程序再做一次。

① 工程量
管网压力
0.400 MPa
② 模拟量
变送器电流
10.40 mA
③ 数字量
AI 通道原始值
11059
④ 工程量
程序里的反馈
0.400 MPa

模拟量输出:从 PID 到水泵

方向向右,出 CPU。程序先把百分数变成数字量,AQ 再变成电流,变频器把它当成频率。

① 工程量
PID 输出
48.2%
② 数字量
写入 AQ 的字
13326
③ 模拟量
AQ 输出电流
11.71 mA
④ 工程量
水泵频率
24.1 Hz

量程内按直线换算。4 mA 对应数字量 0,不是 27648 的五分之一

输入,组态为 4~20 mA、量程 0~1.00 MPa 时:

电流 = 4 + 16 × 压力 / 1.00

数字量 = 27648 × (电流 − 4) / 16

反馈 = 数字量 / 27648 × 1.00 MPa

输出,PID 为 0~100%,AQ 为 4~20 mA,变频器为 0~50 Hz 时:

数字量 = 27648 × 百分数 / 100

电流 = 4 + 16 × 数字量 / 27648

频率 = 50 × (电流 − 4) / 16

用当前反馈电流 10.40 mA 对一下:

正确:按 4~20 mA,数字量 11059,压力 0.400 MPa。

若误按 0~20 mA:数字量 = 27648 × 电流 / 20,会把压力算高。

一个模拟量通道占一个字。额定范围是 0~27648,对应你组态的量程上限(10 V、20 mA,或 4~20 mA 的 20 mA)。27649~32511 是超限,32767 是上溢。4~20 mA 时,电流低到约 1.185 mA 以下(数字量低于 −4864)可用来判断断线。

通道在 CPU 本体或 SM 1231 / SM 1232 / SM 1234 上,换算关系相同。0~10 V 时把电流公式换成电压:0 V 对应 0,10 V 对应 27648。上面的 0~1.00 MPa 和 0~50 Hz 是课堂约定,现场改量程时只改上下限。