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_StartI0.0Bool系统启动按钮(常开)
SB_StopI0.1Bool系统停止按钮(常闭)
SB_Valve1I0.2Bool1 区手动开阀按钮
SB_Valve1_OffI0.3Bool1 区手动关阀按钮
Pump_FBI0.4Bool泵运行反馈(KM1 辅助触点)
Pump_FaultI0.5Bool泵故障(热继电器/变频器故障)
Q_Valve1Q0.0Bool1 区电磁阀输出
Q_PumpQ0.4Bool主泵接触器输出
M_SysRunM0.0Bool系统运行标志
M_Valve1_CmdM0.1Bool1 区开阀指令(保持)
M_Pump_CmdM0.2Bool泵启动指令
M_InterlockM0.3Bool互锁允许标志
T_ValveOpenIEC_TimerTON开阀到位延时 4 s
T_ValveCloseIEC_TimerTOF停泵后关阀延时 5 s
T_PumpMinIEC_TimerTON泵最短运行 10 s

在 TIA Portal 的“PLC 变量”表中逐行录入后,编译前务必执行“全部重建”,确认无地址冲突和符号重复。定时器建议使用 IEC 定时器背景数据块,而不是 S5 定时器,便于在 OB1 中多次调用和在线监控。

三、梯形图程序结构与信号流

程序放在 OB1 中,按“系统启停 → 单阀手动控制 → 泵阀联动与互锁 → 延时保护 → 输出驱动”五段顺序编写。下图给出本节程序的核心信号链与互锁关系,可对照梯形图网络逐段理解:

单阀手动 + 泵阀联动控制信号链 SB_Start / SB_Stop 系统启停按钮 SB_Valve1 1 区开阀按钮 Pump_FB / Pump_Fault 泵反馈与故障 M_SysRun 系统运行自保持 M_Valve1_Cmd 开阀指令(置位/复位) M_Interlock 互锁允许(单阀唯一) T_ValveOpen 4 s 开阀到位延时 T_PumpMin 10 s 泵最短运行保护 T_ValveClose 5 s 停泵后关阀延时 Q_Valve1 1 区电磁阀 Q_Pump 主泵接触器 KM1 互锁反馈:泵未运行禁止开阀 / 阀全关禁止启泵 时序要点(示例参数) 启动:开阀指令 → 阀得电 → 4 s 到位 → 泵启动 → 10 s 最短运行计时 停止:停泵指令 → 泵停 → 5 s 关阀延时 → 阀失电关闭 异常:Pump_Fault 持续 2 s → 立即停泵并复位开阀指令,HMI 报警

四、梯形图关键网络编写

网络 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 报警位动作。

调试时务必先断开主泵接触器主回路或切到就地空载,仅用万用表/指示灯观察 Q 点动作,确认时序正确后再带水带泵试运行。延时参数首次整定建议取计算值的 1.2 倍,观察管路压力波动后再逐步收紧。

本节程序完成了单阀手动与泵阀联动的基本闭环。变量表中的 M_Interlock、T_PumpMin 等中间位为后续多区轮灌、故障复位和 HMI 画面预留了接口,扩展时只需在互锁网络和输出网络中增加对应阀位,不必改动已调试通过的延时逻辑。