尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于S7-200 CPU224的龙门往复自动洗车机PLC控制系统设计

基于S7-200 CPU224的龙门往复自动洗车机PLC控制系统设计 简介这份基于S7-200 PLC的自动洗车机控制系统毕业设计文档面向自动化、电气工程及机电一体化等专业的学生与PLC初学者可用于毕业设计、课程设计选题参考和控制系统实现学习。资源包内为1个doc文档压缩包约3.76MB内容结构完整从摘要、自动洗车机介绍、PLC概述到方案设计、编程元件地址分配、外部引脚分布、控制程序流程图、程序设计思路与系统控制程序再到系统调试及结果分析、设计心得和参考文献均有覆盖。读者可借此了解如何以西门子S7-200 PLC为核心采用梯形图编程实现对投币、喷水、洗刷、喷洒清洗剂和风干等洗车流程的自动控制并参考硬件设计、软件编程、调试排错及结果分析方法。目前已有1752人学习下载适合需要完整设计框架、程序思路和调试参考的读者。1. 从投币到风干S7-200 自动洗车机控制系统长什么样自助洗车机看着是个机械活钻进控制柜一拆里面几乎全是开关量三个投币按钮、一个启动、一个退币、一个复位、左右两个极限行程开关加上启动灯、退币电机、左右行走接触器、毛刷、水泵、清洁剂泵、风机和复位灯一共十七个点。这份毕业设计做的就是这么一套基于西门子 S7-200CPU224的龙门往复式自动洗车机控制系统I/O 地址分配、外部引脚接线、程序流程图、梯形图程序和调试记录都在里面。它比交通灯这类典型课设更值得动手因为流程是完整的闭环投币计费、金额比较、启动互锁、左右往复刷洗、喷清洁剂、清水漂洗、风干、原点复位十个以上的动作节点首尾相接中间还夹着 3s 和 5s 两档定时器。适合自动化、机电一体化专业做课设毕设的人拿来改也适合刚摸 S7-200、想找一个能跑完整顺序控制的项目练手的人。2. S7-200 CPU224 的点数核算与 I/O 地址分配表2.1 从 8 入 9 出反推 CPU 型号选型的顺序应该是先数点再挑 CPU。这份设计的输入信号是 8 个三路投币按钮5 元、10 元、50 元、启动按钮 SB1、退币按钮 SB2、停止复位按钮 SB3、右极限 SQ1、左极限 SQ2。输出信号是 9 个启动灯 HL1、退币动作 KM1、洗车机右移 KM2、左移 KM3、刷子 KM4、喷水 KM5、喷洒清洁剂 KM6、风扇 KM7、复位灯 HL2。CPU224 本体是 14 点输入、10 点输出装下 8 入 9 出之后还剩 6 入 1 出余量接近 40%。工程上一般要求 I/O 余量留 15%20%这个选型不算浪费投币器如果以后换成带找零的型号、或者加一个急停反馈都还有口子。反过来如果按点数卡死选 CPU2228 入 6 出输出就不够了所以这一步的结论只能落在 CPU224 上。输出类型上要注意CPU224 有继电器输出型和晶体管输出型两种。这份设计驱动的全是 KM 接触器线圈和指示灯感性负载用继电器输出型更省心但触点寿命有限机械寿命约千万次带感性负载的电寿命会大幅缩水。常见做法是在 KM 线圈两端并 RC 阻容吸收或续流二极管把断开的反电动势吃掉如果换成晶体管输出型则必须并续流二极管否则容易击穿输出管。2.2 I/O 地址分配表与外部引脚接线原文给的表是整套硬件设计的骨架整理出来就是下面这样类别信号名称编程元件地址编码输入5 元投币按钮I0.0I0.0输入10 元投币按钮I0.1I0.1输入50 元投币按钮I0.2I0.2输入启动按钮 SB1I0.3I0.3输入退币按钮 SB2I0.4I0.4输入停止复位按钮 SB3I0.5I0.5输入右极限信号 SQ1I0.6I0.6输入左极限信号 SQ2I0.7I0.7输出启动灯 HL1Q0.0Q0.0输出退币动作 KM1Q0.1Q0.1输出洗车机右移 KM2Q0.2Q0.2输出洗车机左移 KM3Q0.3Q0.3输出刷子刷洗 KM4Q0.4Q0.4输出喷水动作 KM5Q0.5Q0.5输出喷洒清洁剂 KM6Q0.6Q0.6输出风扇动作 KM7Q0.7Q0.7输出复位灯 HL2Q1.0Q1.0在 STEP 7-Micro/WIN 里把这张表落成符号表比在梯形图里裸写 I0.6 强得多改点的时候只改符号表一处// STEP 7-Micro/WIN 符号表部分 I0.0 Coin5 5元投币按钮 I0.1 Coin10 10元投币按钮 I0.2 Coin50 50元投币按钮 I0.3 StartBtn 启动按钮SB1 I0.4 RefundBtn 退币按钮SB2 I0.5 ResetBtn 停止复位按钮SB3 I0.6 LimitR 右极限SQ1 I0.7 LimitL 左极限SQ2 Q0.2 MoveRight 洗车机右移KM2 Q0.3 MoveLeft 洗车机左移KM3符号名本身不占程序空间编译时会被替换回绝对地址所以不用心疼长度取到能一眼看懂的程度就行。注意KM2 和 KM3 是驱动同一台行走电机的两个方向接触器梯形图里必须做互锁硬件上也建议把对方的常闭触点串进各自线圈回路。软件互锁只能防程序错误防不住接触器触点粘连。2.3 投币信号与极限开关的输入处理细节输入侧有两个容易被忽略的点。第一是投币按钮的抖动和重复计数。机械按钮按下一次I0.0 的状态可能翻转好几次如果一个扫描周期只读一次就累加金额会虚高。S7-200 的布尔指令执行时间是微秒级扫描周期通常在 10ms 以内抖动窗口完全覆盖得住所以每个投币输入都要走上升沿检测EU指令从源头保证一次按键只计一次。第二是极限开关的接线逻辑。安全规范里行程保护开关通常接常闭触点线路断了或开关损坏时会表现为已到极限从而停机属于失效安全。但课设里普遍接常开好处是逻辑直观、调试时看指示灯就能判断。真要做成设备建议右极限和左极限都用常闭接入梯形图里改成常闭逻辑同时保留软件上限位判断作为第二道保护。3. 投币计费、BCD 码显示与退币的梯形图实现3.1 金额载体为什么用 VW 累加而不是计数器三路投币的面额是 5、10、50用三个计数器 C 分别计数最后再做5×C1 10×C2 50×C3的乘法逻辑绕而且占资源。更直接的做法是拿一个字寄存器当累加器用整数加法指令直接叠。这里选 VW0 存当前金额初值 0三个投币按钮各自触发一次I。选整数加法还有个附带好处比较指令直接就能用。金额达标条件就是VW0 100超投退币就是VW0与 100 求差不需要额外的中间换算。唯一要盯住的是字寄存器的数值范围S7-200 的单字整数上限是 32767这个场景下不可能溢出但保险起见还是加一道上限钳位。3.2 三路投币累加与比较的梯形图网络Network 1 // 5元投币累加 LD I0.0 EU I 5, VW0 Network 2 // 10元投币累加 LD I0.1 EU I 10, VW0 Network 3 // 50元投币累加 LD I0.2 EU I 50, VW0 Network 4 // 金额上限钳位防止连续误按把数值顶飞 LDW VW0, 200 MOVW 200, VW0 Network 5 // 投币达标标志 LDW VW0, 100 M0.0前三段结构完全一样只是常数不同读起来一眼就能对上哪个按钮加多少钱。EU放在LD I0.x之后取的是本次扫描的上升沿如果投币器输出的是宽脉冲而不是按钮EU依然有效因为脉冲的上升沿只有一次。第四段的钳位值取 200 而不是 100是因为设计要求里允许超投后退币找零投到 150、200 都得能显示出来。第五段生成 M0.0 这个钱够了的标志位后面启动洗车流程时把它串进启动条件钱不够按启动按钮没反应。3.3 BCD 转换与七段数码管驱动的输出点缺口设计要求金额用 BCD 码通过七段数码管显示S7-200 有现成的转换指令BCD_I把整数直接转成 BCD 码Network 6 // 整数金额转BCD码 LD SM0.0 BCD_I VW0, VW2 Network 7 // BCD码送显示QB2为扩展输出模块首字节 LD SM0.0 MOVW VW2, QB2BCD_I的输入范围是 09999输出是压缩 BCD一个字节放两位十进制数。如果数码管是带译码驱动的如 4511、7447直接吃 BCD 码就完事如果是裸的共阴/共阳段得自己做一张七段段码表用查表指令按位取码代码量会大不少。这里有个原文没交代清楚、实际必须补的坑CPU224 本体的输出是 Q0.0Q0.7 和 Q1.0Q1.1其中九个点已经被 KM 和指示灯占满只剩下 Q1.1 一个点根本接不了数码管。常见做法有两种一是加一块 EM222 八点数字量输出模块地址从 Q2.0 开始占用 QB2 这一个字节驱动两位数码管二是用 74HC595 这类串行移位寄存器只用三个输出点数据、时钟、锁存扫出多位数码管。前者省事后者省点按柜内空间和成本挑。注意BCD 转换只解决显示什么不解决什么时候刷新。金额变化后要在同一扫描周期内更新 BCD 和输出否则显示器会出现短暂的旧值闪烁。用 SM0.0 无条件驱动这两段网络每个扫描周期刷新一次肉眼就看不到跳变了。3.4 退币、上限保护与断电保持退币按钮 I0.4 的处理比投币稍微讲究一点。按下之后要完成三件事金额寄存器清零、退币执行机构动作、数码管回零。金额清零只需一条MOVW 0, VW0但退币执行机构是电机或者电磁铁得给一个持续时间足够动作的脉冲不能只给一个扫描周期。Network 8 // 退币金额清零 退币动作2s LD I0.4 EU MOVW 0, VW0 S M1.0, 1 Network 9 LD M1.0 TON T40, 20 // 100ms基准20次即2s LD T40 R M1.0, 1 Network 10 LD M1.0 Q0.1 // KM1 退币动作T40 属于 100ms 分辨率的定时器预设值 20 对应 2 秒。这个时长要按退币机构的实际动作时间来调电磁铁 0.5s 就够退币电机可能要 3s 以上。调的时候直接改预设值不用动逻辑。断电保持这块VW0 存的是投币金额属于洗车中途停电的场景数据。如果希望停电后恢复金额继续洗需要在 STEP 7-Micro/WIN 的系统块里把 V 存储区的保持范围设为 VB0 起若干个字节配合 S7-200 内置的超级电容典型保持时间 100 小时左右或加装电池卡。如果压根不需要这个功能把保持范围设成 0上电后 VW0 自动归零反而省去了初始化逻辑。4. 龙门往复洗车流程的步进控制与定时器链4.1 SCR 顺序控制与整数状态机的取舍这套流程有十来步而且步骤之间是严格的串行关系用一堆 M 位互相自锁去写改一步就要动好几处逻辑后期基本没法维护。S7-200 内置了 SCR顺序控制继电器指令提供 S0.0S31.7 共 256 个状态位正好干这个。SCR 的用法是段结构LSCR Sx.y开始一个段段内写这一步该有的输出和转步条件SCRT Sn.m转步并自动关掉当前段SCRE结束。同一时刻只有一个段处于激活状态段与段之间的输出天然互斥不用手写一堆互锁。另一种写法是用一个字寄存器存步号配比较指令做分支。整数状态机的好处是步号能直接显示在触摸屏或状态表里调试时一眼看出卡在第几步坏处是每个输出都要写步号 N的比较程序冗长。这套流程分支少、步骤固定用 SCR 更干净。4.2 步号、动作与转步条件对照表把设计要求里的十段动作拆成步对应关系整理如下步动作输出转步条件S0.1右移 喷水 刷子右极限 SQ1 到S0.2左移 喷水 刷子左极限 SQ2 到S0.3右移 清洁剂右极限 SQ1 到S0.4左移 清洁剂左极限 SQ2 到S0.5右移 3sT37 到S0.6刷子洗刷 5sT38 到S0.7右移 3sT39 到S0.8刷子洗刷 5sT40 到S0.9右移 喷水 刷子右极限 SQ1 到S0.10左移 喷水 刷子左极限 SQ2 到S0.11右移 风扇右极限 SQ1 到S0.12左移 风扇左极限 SQ2 到这张表是写梯形图前的必修课。表里的步号和定时器号一旦定下来后面的程序就是照表填空不需要再回头想流程。4.3 关键网络梯形图投币达标后按启动按钮进入第一步这一步要顺手把启动灯点亮Network 11 // 启动投币达标 启动按钮 LD M0.0 A I0.3 EU S S0.1, 1 Q0.0 // 启动灯HL1 Network 12 // 步S0.1右移 喷水 刷子 LSCR S0.1 LD SM0.0 Q0.2 // 右移KM2 Q0.4 // 刷子KM4 Q0.5 // 喷水KM5 LD I0.6 // 右极限SQ1 SCRT S0.2 SCRE Network 13 // 步S0.2左移 喷水 刷子 LSCR S0.2 LD SM0.0 Q0.3 // 左移KM3 Q0.4 Q0.5 LD I0.7 // 左极限SQ2 SCRT S0.3 SCRE段内的LD SM0.0是 S7-200 里的标准写法SM0.0 恒为 1用它给段内所有无条件输出提供一个公共母线。如果没有这一句直接写 Q0.2会编译报错因为 STL 里每个线圈前面都得有条件。带定时器的段写法略有不同转步条件不看极限开关而看定时器位Network 14 // 步S0.5右移3s后停 LSCR S0.5 LD SM0.0 Q0.2 LD SM0.0 TON T37, 30 // 100ms基准30次 3s LD T37 SCRT S0.6 SCRE4.4 3s/5s 定时器分配与复用陷阱S7-200 的定时器按分辨率分三档分配的时候要按精度要求挑定时器号分辨率可计时范围本设计中用途T32、T961ms32.767s未使用T33T36、T97T10010ms327.67s未使用T37T63、T101T255100ms3276.7s3s、5s、退币 2s3s 和 5s 这种量级用 100ms 分辨率就够了误差最大 100ms肉眼看不出来。如果哪天真要精确到毫秒级再换 T33 那档预设值相应改成 300 和 500。这里最容易踩的坑是定时器号复用。SCR 段里写的TON当段不激活时段内的逻辑不执行定时器的输入条件断开TON 会自动复位到零。所以理论上同一个 T 号可以在多个段里用只要它们不同时激活。但实践中强烈不建议这么干一是调试时看状态表T37 一会儿是 3s 一会儿是 5s人会看糊涂二是万一改逻辑导致两个段同时被激活定时器会互相干扰而且这种 bug 极难复现。按表分配一步一个号比省那几个定时器划算得多。4.5 输出互锁与硬接线保护软件层面SCR 段本身保证了 Q0.2右移和 Q0.3左移不会同时接通因为任何时刻只有一个段激活。但这只覆盖了正常流程。异常情况下比如复位按钮触发时想强行停掉所有行走输出就得在段外单独处理。硬件层面KM2 和 KM3 驱动同一台电机的正反转必须做电气互锁把 KM2 的常闭触点串进 KM3 的线圈回路反之亦然再加一个机械互锁。软件互锁再严密也防不住接触器主触点粘连而正反转同时吸合的后果是相间短路。注意如果中途断电恢复后不应继续执行原步骤而是要求先做原点复位。这个逻辑要在上电初始化里处理用 SM0.1首次扫描位把当前激活的 SCR 段全部关掉再置位一个等待复位标志。5. 原点复位与上电调试的排错要点5.1 复位流程的三段式写法复位按钮 I0.5 的处理不能只是把所有输出清零就完事设计要求里写得很清楚按下复位后右移、喷水、刷子、风扇、清洁剂全部停止洗车机执行左移碰到左极限后复位灯亮表示回到原点。这段逻辑单独跑在 SCR 之外用两个 M 位做状态Network 20 // 复位请求 LD I0.5 EU R S0.1, 12 // 关掉S0.1~S0.12全部步 S M2.0, 1 Network 21 // 复位执行左移其余全停 LD M2.0 AN I0.7 Q0.3 Network 22 // 到左极限复位完成 LD M2.0 A I0.7 R M2.0, 1 Q1.0 // 复位灯HL2R S0.1, 12是一次性复位 12 个连续 SCR 位比写十二条复位指令干净。执行左移时其它输出因为 SCR 段已全部关闭自然全部断开不需要逐个复位。上电初始化同样要写Network 23 // 首次扫描清步、清金额、清复位灯 LD SM0.1 R S0.1, 12 MOVW 0, VW0 R Q1.0, 15.2 上电调试的顺序调试不要一上来就跑全流程按三步走能省一半时间。第一步I/O 点动测试把程序下载进去但强制每个 Q 点观察对应的 KM 和灯是否动作确认接线和地址表完全对得上特别是左右极限两个开关用状态表看 I0.6 和 I0.7 的通断是否和实际位置一致。第二步单步流程手动把车停在原位按启动后观察 S0.1 是否被置位用状态表盯着 SCR 位和定时器位看流程卡在哪一步这一步能暴露出 90% 的转步条件写错的问题。第三步整机联调把 3s、5s 这些参数按实际机构动作时间微调重点看毛刷和喷水的时序会不会刮到车身。几个高频故障可以直接照着排查数码管不亮或显示乱码先确认BCD_I的输出有没有送进正确的扩展模块字节再看数码管的共阴共阳接法和段码顺序是否匹配到了极限开关位置不停车多半是上升沿检测被漏掉或者 SR 段的转步条件写成了常闭逻辑第二次洗车时定时器不动作检查是不是把定时器放在了 SCRE 之后的段外或者上一步的 T 位没被复位。一个实用的小技巧在 STEP 7-Micro/WIN 里建一张状态图表把 VW0、S0.1 到 S0.12、T37 到 T40 全加进去下载后一边跑一边看比反复改程序加临时指示灯快得多。状态图表还能直接改 VW0 的当前值不用真投币就能测试金额达标和退币逻辑调试阶段特别省事。本文还有配套的精品资源点击获取
返回列表