4. 灌溉阀门与泵的启停控制程序
在智能灌溉系统中,阀门负责把水送到指定轮灌区,水泵负责提供压力水源。两者如果各自独立启停,就会出现“阀开了泵没起、泵起了阀没开”的憋压或干转问题。本节围绕单阀手动启停、泵阀联动、启停互锁与延时保护四个要点,完成变量表定义和梯形图程序块编写,形成一套可直接下载到 S7-1200 上运行的基础控制程序。
一、控制对象与工艺约束
假设系统有 4 个轮灌区电磁阀(YV1~YV4)和 1 台主泵电机(M1)。电磁阀为 24V DC 常闭型,得电开阀;主泵由接触器 KM1 控制,PLC 输出 Q 点驱动中间继电器再带接触器线圈。工艺上有三条硬约束:
- 先开阀后启泵:阀门打开需要 3~5 秒行程时间,泵必须等阀到位后再启动,否则管路瞬间超压;
- 先停泵后关阀:停水时泵先停,阀门延时关闭,避免水锤;
- 互锁:任一时刻只允许一个轮灌区工作;泵未运行时禁止开阀(防止无水干开),阀全关时禁止启泵(防止憋压)。
据此确定延时参数:开阀到位延时 T_VALVE_OPEN = 4 s,停泵后关阀延时 T_VALVE_CLOSE = 5 s,泵最短运行时间 T_PUMP_MIN = 10 s(防止频繁启停),泵故障反馈确认时间 T_FAULT = 2 s。这些数值属于教学示例参数,实际工程应按阀门口径、管路长度和泵功率整定。
二、变量表定义
变量表按“输入—输出—中间—定时器—HMI”五类组织,符号名采用“设备_功能”命名法,便于梯形图注释和后续扩展。下表为 PLC 变量表(节选,示例地址):
| 符号名 | 地址 | 数据类型 | 说明 |
|---|---|---|---|
| SB_Start | I0.0 | Bool | 系统启动按钮(常开) |
| SB_Stop | I0.1 | Bool | 系统停止按钮(常闭) |
| SB_Valve1 | I0.2 | Bool | 1 区手动开阀按钮 |
| SB_Valve1_Off | I0.3 | Bool | 1 区手动关阀按钮 |
| Pump_FB | I0.4 | Bool | 泵运行反馈(KM1 辅助触点) |
| Pump_Fault | I0.5 | Bool | 泵故障(热继电器/变频器故障) |
| Q_Valve1 | Q0.0 | Bool | 1 区电磁阀输出 |
| Q_Pump | Q0.4 | Bool | 主泵接触器输出 |
| M_SysRun | M0.0 | Bool | 系统运行标志 |
| M_Valve1_Cmd | M0.1 | Bool | 1 区开阀指令(保持) |
| M_Pump_Cmd | M0.2 | Bool | 泵启动指令 |
| M_Interlock | M0.3 | Bool | 互锁允许标志 |
| T_ValveOpen | IEC_Timer | TON | 开阀到位延时 4 s |
| T_ValveClose | IEC_Timer | TOF | 停泵后关阀延时 5 s |
| T_PumpMin | IEC_Timer | TON | 泵最短运行 10 s |
在 TIA Portal 的“PLC 变量”表中逐行录入后,编译前务必执行“全部重建”,确认无地址冲突和符号重复。定时器建议使用 IEC 定时器背景数据块,而不是 S5 定时器,便于在 OB1 中多次调用和在线监控。
三、梯形图程序结构与信号流
程序放在 OB1 中,按“系统启停 → 单阀手动控制 → 泵阀联动与互锁 → 延时保护 → 输出驱动”五段顺序编写。下图给出本节程序的核心信号链与互锁关系,可对照梯形图网络逐段理解:
四、梯形图关键网络编写
网络 1:系统启停自保持。用 SB_Start 常开触点与 M_SysRun 常开触点并联,再串 SB_Stop 常闭触点,驱动 M_SysRun 线圈。这是典型的起保停电路,停止按钮接常闭,因此梯形图中用常开触点表示“未按下”。
网络 2:单阀手动开阀。SB_Valve1 上升沿触发置位 M_Valve1_Cmd,SB_Valve1_Off 触发复位。串联条件为 M_SysRun 常开、M_Interlock 常开、Pump_Fault 常闭。这里用置位/复位而非自保持,是为了让 HMI 也能直接置位该指令位。
网络 3:互锁允许标志。M_Interlock 的成立条件是“本阀指令为 1 且其余三阀指令均为 0”,用四个阀指令位的逻辑组合实现。若后续扩展到 4 区轮灌,只需把该网络改为“任一阀指令为 1 时其余阀禁止置位”的互斥逻辑。
网络 4:开阀到位延时与泵启动。M_Valve1_Cmd 常开触点驱动 T_ValveOpen(TON,PT=4s),T_ValveOpen.Q 与 M_SysRun、M_Interlock 串联后置位 M_Pump_Cmd。这样保证阀先得电、4 秒后才允许泵启动。
网络 5:停泵与关阀延时。M_Pump_Cmd 常开触点接 T_ValveClose(TOF,PT=5s),其 Q 输出驱动 Q_Valve1。TOF 的特性是输入断开后输出仍保持 PT 时间,正好实现“泵停后阀延时 5 秒关闭”。
网络 6:输出驱动与保护。Q_Pump 由 M_Pump_Cmd 与 Pump_Fault 常闭、Pump_FB 常开(运行反馈确认)串联驱动;T_PumpMin 用于在停止指令到来时判断泵是否已运行满 10 秒,未满则保持 M_Pump_Cmd 直到计时完成,避免频繁启停。
// 网络 4 等效语句表(SCL 视角,便于理解梯形图逻辑)
"T_ValveOpen".TON(IN := "M_Valve1_Cmd",
PT := T#4S);
"M_Pump_Cmd" := "T_ValveOpen".Q AND "M_SysRun" AND "M_Interlock";
// 网络 5 等效语句表
"T_ValveClose".TOF(IN := "M_Pump_Cmd",
PT := T#5S);
"Q_Valve1" := "T_ValveClose".Q;
五、下载与在线验证
程序编译通过后下载到 CPU,切换到“在线监控”。验证按以下顺序进行:先按 SB_Start,观察 M_SysRun 变绿;再按 SB_Valve1,Q_Valve1 应立即为 1,4 秒后 Q_Pump 变为 1;按 SB_Valve1_Off,Q_Pump 先变 0,5 秒后 Q_Valve1 变 0。若在 Q_Pump 为 1 时强制 Pump_Fault 为 1,应看到泵输出立即切断、开阀指令被复位,且 HMI 报警位动作。
本节程序完成了单阀手动与泵阀联动的基本闭环。变量表中的 M_Interlock、T_PumpMin 等中间位为后续多区轮灌、故障复位和 HMI 画面预留了接口,扩展时只需在互锁网络和输出网络中增加对应阀位,不必改动已调试通过的延时逻辑。