基于plc的全自动洗衣机控制设计 采用博途1200仿真,提供程序,设计报告,接线图。 实现要求(详见上方演示视频):PLC投入运行,系统处于初始状态,准备好启动。 启动时开始进水,水满(即水位到达高水位)时停止进水并开始正洗涤。 正转洗涤15s后暂停,暂停3s后开始反转洗涤。 反转洗涤15s后暂停,暂停3s后若正、反洗涤未满3次,则返回从正转洗涤开始的动作;若正、反洗涤满3次时,则开始排水。 排水水位若下降到低位时,开始脱水并继续排水。 脱水10s即完成一次从进水到脱水的工作循环过程。 若未完成3次大循环,则返回从进水开始的全部动作,进行下一次大循环;若完成了3次大循环,则进行洗完报警。 此外,还要求可以按排水按钮以实现手动排水;按停止按钮以实现手动停止进水、排水、脱水及报警。
最近折腾了基于 PLC 的全自动洗衣机控制设计,用的是博途 1200 仿真,和大家分享下成果。
设计准备
在开始编程之前,我们得先了解硬件接线。虽然没有实际的 PLC 硬件,但接线图是很重要的参考。这里简单画一下接线思路(实际接线要严格按照 PLC 手册来):
- 水位传感器连接到 PLC 的输入点,用于检测水位高低。比如高水位传感器接到 I0.0,低水位传感器接到 I0.1。
- 进水阀、排水阀、电机正反转以及报警装置连接到 PLC 的输出点。进水阀接 Q0.0,排水阀接 Q0.1,电机正转 Q0.2,电机反转 Q0.3,报警 Q0.4。
程序设计
下面就是核心的程序部分啦。
初始化及启动
// 初始化部分,将各个状态复位 // 大循环次数、正反转次数、时间计数器等清零 DB1.DBW0 := 0; // 大循环次数 DB1.DBW2 := 0; // 正反转次数 DB1.DBD4 := 0; // 时间计数器// 启动逻辑 IF I0.5 = 1 THEN // I0.5 假设为启动按钮 M0.0 := 1; // 启动标志置 1 END_IF;这部分代码,先把各种计数相关的变量清零,为整个流程做准备。然后通过检测启动按钮(这里假设为 I0.5)来设置启动标志 M0.0。
进水过程
IF M0.0 = 1 AND Q0.0 = 0 AND I0.0 = 0 THEN // 启动且进水阀未开且水位未到高水位 Q0.0 := 1; // 打开进水阀 END_IF; IF I0.0 = 1 THEN // 水位到高水位 Q0.0 := 0; // 关闭进水阀 M0.1 := 1; // 准备正洗涤标志置 1 END_IF;这段代码表示,当启动且进水阀没开,同时水位没到高水位时,打开进水阀。一旦水位到高水位,关闭进水阀,并设置准备正洗涤的标志 M0.1。
洗涤过程
// 正洗涤 IF M0.1 = 1 THEN TON T0, 15s; // 正洗涤定时器开始计时 15s Q0.2 := 1; // 电机正转 IF T0.Q = 1 THEN // 15s 到 Q0.2 := 0; // 电机停止正转 M0.2 := 1; // 暂停标志置 1 TON T1, 3s; // 暂停定时器开始计时 3s END_IF; END_IF; // 反转洗涤 IF M0.2 = 1 AND T1.Q = 1 THEN // 暂停 3s 结束 TON T2, 15s; // 反转洗涤定时器开始计时 15s Q0.3 := 1; // 电机反转 IF T2.Q = 1 THEN // 15s 到 Q0.3 := 0; // 电机停止反转 DB1.DBW2 := DB1.DBW2 + 1; // 正反转次数加 1 M0.3 := 1; // 检查正反转次数标志置 1 TON T3, 3s; // 暂停定时器开始计时 3s END_IF; END_IF;正洗涤时,先启动 15 秒定时器,电机正转。15 秒到了就停止正转,进入 3 秒暂停。暂停结束开始反转洗涤,同样 15 秒,结束后正反转次数加 1,再暂停 3 秒。
循环判断及排水脱水
// 判断正反转次数 IF M0.3 = 1 AND T3.Q = 1 THEN IF DB1.DBW2 < 3 THEN // 正反转未满 3 次 M0.1 := 1; // 重新开始正洗涤 M0.2 := 0; M0.3 := 0; ELSE // 正反转满 3 次 Q0.1 := 1; // 打开排水阀 M0.4 := 1; // 准备脱水标志置 1 END_IF; END_IF; // 排水及脱水 IF M0.4 = 1 AND I0.1 = 1 THEN // 水位到低水位 TON T4, 10s; // 脱水定时器开始计时 10s Q0.5 := 1; // 开始脱水 Q0.1 := 1; // 继续排水 IF T4.Q = 1 THEN // 10s 到 Q0.5 := 0; // 停止脱水 DB1.DBW0 := DB1.DBW0 + 1; // 大循环次数加 1 M0.5 := 1; // 检查大循环次数标志置 1 END_IF; END_IF;这里判断正反转次数,如果未满 3 次,就重新开始正洗涤。满 3 次就打开排水阀,水位到低水位时开始脱水 10 秒,完成一次小循环,大循环次数加 1。
大循环判断及报警
// 判断大循环次数 IF M0.5 = 1 THEN IF DB1.DBW0 < 3 THEN // 大循环未满 3 次 M0.0 := 1; // 重新开始整个流程 M0.1 := 0; M0.2 := 0; M0.3 := 0; M0.4 := 0; M0.5 := 0; DB1.DBW2 := 0; ELSE // 大循环满 3 次 Q0.4 := 1; // 洗完报警 END_IF; END_IF;最后判断大循环次数,未满 3 次就重新开始整个流程,满 3 次就报警。
手动控制
// 手动排水 IF I0.6 = 1 THEN // I0.6 假设为手动排水按钮 Q0.1 := 1; // 打开排水阀 END_IF; // 手动停止 IF I0.7 = 1 THEN // I0.7 假设为手动停止按钮 Q0.0 := 0; // 关闭进水阀 Q0.1 := 0; // 关闭排水阀 Q0.2 := 0; // 停止电机正转 Q0.3 := 0; // 停止电机反转 Q0.4 := 0; // 停止报警 Q0.5 := 0; // 停止脱水 M0.0 := 0; M0.1 := 0; M0.2 := 0; M0.3 := 0; M0.4 := 0; M0.5 := 0; DB1.DBW0 := 0; DB1.DBW2 := 0; END_IF;手动排水和手动停止的代码比较简单,检测对应按钮状态来控制相应的输出和标志变量。
设计报告要点
- 需求分析:详细描述全自动洗衣机的功能需求,如上面提到的各个运行状态和控制要求。
- 硬件设计:介绍 PLC 选型、I/O 分配以及接线图的设计思路。
- 软件设计:说明程序的整体架构,各部分功能模块的设计原理,就像上面代码分析那样。
- 测试与优化:讲述如何进行仿真测试,遇到的问题及解决办法。
通过这样的设计,我们就可以用 PLC 实现一个全自动洗衣机的基本控制逻辑啦,希望对大家有所帮助。
基于plc的全自动洗衣机控制设计 采用博途1200仿真,提供程序,设计报告,接线图。 实现要求(详见上方演示视频):PLC投入运行,系统处于初始状态,准备好启动。 启动时开始进水,水满(即水位到达高水位)时停止进水并开始正洗涤。 正转洗涤15s后暂停,暂停3s后开始反转洗涤。 反转洗涤15s后暂停,暂停3s后若正、反洗涤未满3次,则返回从正转洗涤开始的动作;若正、反洗涤满3次时,则开始排水。 排水水位若下降到低位时,开始脱水并继续排水。 脱水10s即完成一次从进水到脱水的工作循环过程。 若未完成3次大循环,则返回从进水开始的全部动作,进行下一次大循环;若完成了3次大循环,则进行洗完报警。 此外,还要求可以按排水按钮以实现手动排水;按停止按钮以实现手动停止进水、排水、脱水及报警。