200 PLC 两台水泵一用一备经典案例解析

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

在工业控制领域,水泵的稳定运行至关重要。今天来分享一个基于 200 PLC 的两台水泵一用一备的经典控制案例,涵盖控制要求实现以及上位机组态源程序相关内容。

水泵控制要求拆解

  1. 总启动和总停止:设置一个总启动按钮与总停止按钮,用于整体控制两路水泵的启停操作,这是整个系统运行与停止的总开关。
  2. 一用一备交替工作:系统上电后,1#电机率先投入工作,持续运行 24 小时后,2#电机接替工作,之后两台电机按照此规律交替运行。这种交替运行模式有助于均衡设备损耗,延长整体使用寿命。
  3. 故障切换与报警:无论哪一台电机在工作时出现故障,管路中的另一台电机会立即启动接替工作,同时系统发出报警信号,提醒工作人员及时处理故障。这保障了系统在突发故障时仍能维持基本运行。
  4. 故障判断逻辑:若电机启动后,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 等软件。以下是大致的组态步骤(因软件版本不同可能有差异):

  1. 创建项目:打开 WinCC flexible,新建一个针对 S7 - 200 的项目。
  2. 连接设置:在连接设置中,配置与 PLC 的通信参数,例如选择 PPI 协议,设置正确的波特率和站地址等。
  3. 画面设计
    • 创建一个主画面,放置总启动、总停止按钮的图形对象,并关联 PLC 中的相应变量(StartAll 和 Stop All)。
    • 放置两台电机的运行、故障状态显示图形,分别关联 Motor1Run、Motor1 Fault、Motor2Run、Motor2 Fault 变量。
    • 放置报警显示区域,关联 Alarm 变量,用于显示报警信息。
  4. 运行测试:完成组态后,下载到触摸屏或者进行模拟运行测试,检查画面与 PLC 的交互是否正常,各项控制和显示功能是否符合预期。

通过以上 PLC 代码编写以及上位机组态,就可以实现两台水泵一用一备,满足各种控制要求的稳定运行系统。这个案例在工业水泵控制场景中具有广泛的应用价值,希望对大家有所帮助。

相关推荐
橙-极纪元1 个月前
文件存储服务有哪些?他们优缺点分别是什么?FastDFS、MinIO、Ceph、HDFS、MooseFS、TFS、七牛云、阿里云 OSS
hdfs·minio·七牛云·tfs·fastdfs·阿里云 oss·文件存储服务
Christo33 个月前
TFS-2002《Analysis and Efficient Implementation of a Linguistic Fuzzy C-Means》
c语言·支持向量机·tfs
Christo34 个月前
TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》
人工智能·算法·机器学习·支持向量机·tfs
Azure DevOps10 个月前
Azure DevOps Server(TFS):旧版本即将停止支持
运维·microsoft·azure·devops·tfs
风也温柔☆1 年前
Eclipse使用TFS(Team Foundation Server) 超详细
java·eclipse·tfs
大隐、禅2 年前
HDFS、TFS 和 Ceph的对比(通往架构师的路上)
ceph·hdfs·tfs
零二年的冬2 年前
淘宝分布式文件存储系统( 三 ) -TFS
linux·服务器·c++·分布式·ubuntu·tfs
零二年的冬2 年前
淘宝分布式文件存储系统(一) -TFS
linux·服务器·分布式·tfs
零二年的冬2 年前
淘宝分布式文件存储系统( 二 ) -TFS
linux·服务器·c++·分布式·tfs