200plc,经典案例,两台水泵,一用一备 水泵控制要求 1,有一个总启动和总停止,控制这两路的启停 2,两台水泵,水泵一备一用,系统上电后1#电机先工作,24小时后,2#电机工作,此后电机以此交替工作 3,两台电机任意一台工作时故障,管路上另外一台立即启动接替工作,同时系统发出报警 4,若电机启动后,plc在2s内没有收到电机运行信号,或者运行过程中收到故障信号,都视为电机有故障 24小时自动循环使用,及上位机组态源程序

在工业控制领域,水泵的稳定运行至关重要。今天来分享一个基于 200 PLC 的两台水泵一用一备的经典控制案例,涵盖控制要求实现以及上位机组态源程序相关内容。
水泵控制要求拆解
- 总启动和总停止:设置一个总启动按钮与总停止按钮,用于整体控制两路水泵的启停操作,这是整个系统运行与停止的总开关。
- 一用一备交替工作:系统上电后,1#电机率先投入工作,持续运行 24 小时后,2#电机接替工作,之后两台电机按照此规律交替运行。这种交替运行模式有助于均衡设备损耗,延长整体使用寿命。
- 故障切换与报警:无论哪一台电机在工作时出现故障,管路中的另一台电机会立即启动接替工作,同时系统发出报警信号,提醒工作人员及时处理故障。这保障了系统在突发故障时仍能维持基本运行。
- 故障判断逻辑:若电机启动后,PLC 在 2 秒内未收到电机运行信号,或者在运行过程中接收到故障信号,均判定电机存在故障。这确保了对电机运行状态的实时监测与快速反应。
代码实现
变量定义
在编程开始前,我们先定义一些必要的变量,以西门子 S7 - 200 为例,使用符号表进行变量定义:
text
// 定义总启动按钮
BOOL Start_All := I0.0;
// 定义总停止按钮
BOOL Stop_All := I0.1;
// 1#电机运行信号
BOOL Motor1_Run := I0.2;
// 1#电机故障信号
BOOL Motor1_Fault := I0.3;
// 2#电机运行信号
BOOL Motor2_Run := I0.4;
// 2#电机故障信号
BOOL Motor2_Fault := I0.5;
// 1#电机启动输出
BOOL Motor1_Start := Q0.0;
// 2#电机启动输出
BOOL Motor2_Start := Q0.1;
// 报警输出
BOOL Alarm := Q0.2;
// 时间相关变量
DWORD Timer1 := 0;
DWORD Timer2 := 0;
BOOL Timer1_Flag := FALSE;
BOOL Timer2_Flag := FALSE;
总启动与总停止逻辑
text
// 总启动逻辑
IF Start_All THEN
// 允许电机启动相关逻辑执行
// 这里省略其他关联逻辑开启代码
END_IF;
// 总停止逻辑
IF Stop_All THEN
Motor1_Start := FALSE;
Motor2_Start := FALSE;
// 关闭其他相关设备逻辑代码
END_IF;
这段代码实现了总启动和总停止对电机启动输出的控制。总启动按钮按下后,开启后续电机启动相关逻辑的执行条件;总停止按钮按下,则直接关闭两台电机的启动输出,并可顺带关闭其他相关设备。
电机交替运行逻辑
text
// 系统上电后 1#电机先运行
IF First_Scan THEN
Motor1_Start := TRUE;
END_IF;
// 1#电机运行 24 小时切换到 2#电机
IF Motor1_Start AND NOT Motor1_Fault THEN
Timer1 := Timer1 + 1;
IF Timer1 >= 24 * 3600 * 1000 THEN // 24小时换算为毫秒
Timer1 := 0;
Motor1_Start := FALSE;
Motor2_Start := TRUE;
Timer2_Flag := TRUE;
END_IF;
END_IF;
// 2#电机运行 24 小时切换回 1#电机
IF Motor2_Start AND NOT Motor2_Fault THEN
Timer2 := Timer2 + 1;
IF Timer2 >= 24 * 3600 * 1000 THEN
Timer2 := 0;
Motor2_Start := FALSE;
Motor1_Start := TRUE;
Timer1_Flag := TRUE;
END_IF;
END_IF;
这段代码实现了电机的交替运行。系统首次扫描时,1#电机启动。1#电机正常运行时,定时器 Timer1 开始计时,达到 24 小时后,切换到 2#电机运行,并开启 2#电机的计时。同理,2#电机运行 24 小时后再切换回 1#电机,通过定时器和标志位实现交替逻辑。
故障切换与报警逻辑
text
// 1#电机故障切换及报警
IF Motor1_Fault OR (Motor1_Start AND NOT Motor1_Run AND TON(PT := 2000, IN := TRUE).Q) THEN
Motor1_Start := FALSE;
Motor2_Start := TRUE;
Alarm := TRUE;
END_IF;
// 2#电机故障切换及报警
IF Motor2_Fault OR (Motor2_Start AND NOT Motor2_Run AND TON(PT := 2000, IN := TRUE).Q) THEN
Motor2_Start := FALSE;
Motor1_Start := TRUE;
Alarm := TRUE;
END_IF;
这里实现了故障切换与报警功能。如果 1#电机出现故障信号,或者启动 2 秒内未收到运行信号,就停止 1#电机,启动 2#电机,并触发报警。同理,2#电机出现类似情况时,也进行相应的切换和报警操作。
上位机组态源程序
上位机组态可以使用 WinCC flexible 等软件。以下是大致的组态步骤(因软件版本不同可能有差异):
- 创建项目:打开 WinCC flexible,新建一个针对 S7 - 200 的项目。
- 连接设置:在连接设置中,配置与 PLC 的通信参数,例如选择 PPI 协议,设置正确的波特率和站地址等。
- 画面设计 :
- 创建一个主画面,放置总启动、总停止按钮的图形对象,并关联 PLC 中的相应变量(StartAll 和 Stop All)。
- 放置两台电机的运行、故障状态显示图形,分别关联 Motor1Run、Motor1 Fault、Motor2Run、Motor2 Fault 变量。
- 放置报警显示区域,关联 Alarm 变量,用于显示报警信息。
- 运行测试:完成组态后,下载到触摸屏或者进行模拟运行测试,检查画面与 PLC 的交互是否正常,各项控制和显示功能是否符合预期。
通过以上 PLC 代码编写以及上位机组态,就可以实现两台水泵一用一备,满足各种控制要求的稳定运行系统。这个案例在工业水泵控制场景中具有广泛的应用价值,希望对大家有所帮助。
