ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于西门子PLC的自动售货机控制系统设计与调试实战

基于西门子PLC的自动售货机控制系统设计与调试实战 上个学期连着有几位学生来找我题目都一样基于西门子PLC的自动售货机控制系统设计。问得最多的不是线路怎么接而是这套系统里PLC到底要干什么、梯形图怎么写、I/O怎么分配、拿到源文件之后从哪看起。后来我把这套设计资料整理成“源文件加万字报告加讲解”的形式陆续也帮不少人做过适配定制今天就把这套系统的完整设计思路、选型逻辑和调试经验从头到尾聊一遍。这套内容适合三类人参考正在做自动售货机相关课设或毕设的学生刚接触西门子PLC、想找一个完整控制案例练手的工程师准备把手动或半自动售货机改造成PLC控制的设备维护人员。下面提到的I/O地址、电机驱动参数都是基于常见配置给出的参考值具体型号和地址映射以你手头工程里的符号表为准。1. 自动售货机到底要控制什么需求拆解与方案定型1.1 售货机的现场动作与控制信号很多人一听“自动售货机”就觉得很复杂实际上把它拆开看就是一串非常固定的动作循环投币、显示金额、选货、判断够不够钱、执行出货、确认商品掉落、找零、回到待机。每个动作对应到PLC侧就是一组输入和一组输出。输入信号大约有这些投币识别器的合格币脉冲和币值信号货道选择按钮货道出口的商品掉落检测光电信号退币出口的硬币计数脉冲零钱不足检测门开关或防撬开关输出信号也不复杂货道电机启动控制找零电机控制状态指示灯蜂鸣器触摸屏或数码管显示这就是一个典型的数字量控制系统。除了少数高端机型会用到模拟量或通信模块大部分教学和中小型非标售货机用一台小型PLC加十几个开关量点就能完整覆盖。明白了这个边界后面选型和编程就不会发怵。1.2 为什么这类项目总选PLC而不是单片机我常跟学生说一句话商用大批量售货机的主控确实是单片机和专用主板因为成本是硬道理但作为教学设计、课程设计以及中小批量非标定制PLC方案的优势极其明显。首先是可靠性。售货机部署在走廊、地铁站、便利店门口现场环境并不好——电机启停频繁开关门撞击电源波动电磁干扰随处可见。PLC的输入滤波、继电器隔离和光电隔离比裸单片机抗造得多很少出现“程序跑飞”和“I/O读到幽灵信号”的情况。其次是开发效率。梯形图看得见摸得着逻辑可以一段一段推敲改一个输出条件不用重新画PCB、重新烧录固件直接在编程软件里改几行就完了。对学生而言这意味着你可以在有限时间内真正把系统调通而不是把时间耗在硬件焊接和驱动电路调试上。再就是题目指定。西门子S7-200 SMART在国内工控教学里保有量极大编程软件Micro/WIN SMART免费且对初学者友好配套资料到处都是。这也是为什么大量课设毕设题目直接写“基于西门子PLC的自动售货机控制系统设计”——因为平台成熟、容易验收。1.3 系统整体结构怎么搭整套系统的电气结构大致分四层电源、输入采集、PLC核心、输出驱动与人机交互。电源部分用一只24V开关电源给PLC、传感器、继电器线圈供电功率选5A左右基本够用。电机不直接挂在24V上还是单独走驱动器或中间继电器回路别让电机启动瞬间的压降把传感器电源拉垮。输入采集部分把硬币识别器、光电传感器、按钮的开关量信号接入PLC的数字量输入端子。输出驱动部分通过继电器或接触器控制货道电机、找零电机。人机交互用触摸屏或者传统的数码管加按钮面板两者选其一就能做出完整系统。我在给这套资料配说明时总强调一个原则先认清售货机只是一个“输入输出很多、逻辑循环很固定”的示范项目。一旦你把它的信号关系梳理清楚后面做冷库监控、大棚灌溉、交通灯控制换的只是设备思维方式一模一样。2. 西门子PLC选型与电气件匹配一份可以直接抄的I/O配置表2.1 CPU型号到底怎么选西门子小型PLC在这个场景里最常用的两代产品是S7-200 SMART和S7-1200。两者选谁取决于你手头有没有实物以及题目要求。如果你只有S7-200 SMART的源文件那就按S7-200 SMART来。具体到点型建议选SR40或ST40。这两个型号都是24点输入、16点继电器输出点数对一套8货道自动售货机来说非常宽裕不用加扩展模块。SR40和ST40的区别只在输出类型SR是继电器输出ST是晶体管输出。如果控制对象里有步进电机或者出货机构要求高频脉冲控制必须选ST40因为晶体管输出能发高速脉冲。如果只是驱动普通直流减速电机和电磁铁选SR40就行继电器输出带载能力强接线也直观。如果拿到的工程是TIA Portal平台的S7-1200那我建议不要强行改到S7-200 SMART。两个平台的程序结构、数据块、寻址方式都有差异迁移不是复制粘贴的事。S7-1200的好处是博途自带S7-PLCSIM仿真没硬件也能把逻辑完整跑一遍适合在家先写程序后上机。价格比200 SMART贵不少按手头条件来。2.2 传感器、执行机构与关键电气件选型自动售货机的执行机构主要有两种流派螺旋弹簧式和多层履带式。螺旋弹簧式是最常见的瓶装饮料机结构货道电机带动螺旋弹簧转动一圈把饮料往前推一格然后掉落到取货口。这种结构控制简单PLC只负责启动电机并等待“商品掉落”的反馈。履带式多用于袋装零食和盒装食品电机带动履带把商品运送到前端再掉落控制逻辑和螺旋式几乎一样只是到位检测的位置有差别。配套传感器里最重要的有三个投币识别器、掉落检测光电、退币计数光电。投币识别器负责判断真假币和面额输出合格脉冲和币值信号掉落检测光电装在出货口下方商品掉落瞬间遮挡光路退币计数光电装在找零硬币出口每掉出一枚硬币就产生一个脉冲。电源配置上控制回路统一用24V直流PLC和传感器都从这里取电电机功率稍大或需要正反转的机构用中间继电器转接PLC输出只驱动继电器线圈让电机主回路与PLC完全隔离。这个做法成本增加不多但能显著延长PLC输出点寿命。2.3 一套8货道自动售货机的I/O分配参考表下面是这套系统常用的一份I/O分配表。做真实项目或者交作业时先用这张表对照源文件里的符号表确认一致再继续否则后面改地址会改到怀疑人生。PLC地址信号名称信号类型说明I0.0投币合格脉冲数字量输入每投一枚合格币产生一个脉冲I0.1五角币识别数字量输入配合I0.0确认币值I0.2一元币识别数字量输入配合I0.0确认币值I0.3货道1选择按钮数字量输入对应1号货道I0.4货道2选择按钮数字量输入对应2号货道I0.5货道3选择按钮数字量输入对应3号货道I0.6货道4选择按钮数字量输入对应4号货道I0.7货道5选择按钮数字量输入对应5号货道I1.0货道6选择按钮数字量输入对应6号货道I1.1货道7选择按钮数字量输入对应7号货道I1.2货道8选择按钮数字量输入对应8号货道I1.3掉落检测光电数字量输入商品落入取货口信号I1.4退币计数光电数字量输入每退出一枚硬币一个脉冲I1.5零钱不足传感器数字量输入零钱筒低液位报警I1.6门开关数字量输入维修门/取货门状态PLC地址信号名称信号类型说明Q0.0货道1电机数字量输出控制1号货道出货Q0.1货道2电机数字量输出控制2号货道出货Q0.2货道3电机数字量输出控制3号货道出货Q0.3货道4电机数字量输出控制4号货道出货Q0.4货道5电机数字量输出控制5号货道出货Q0.5货道6电机数字量输出控制6号货道出货Q0.6货道7电机数字量输出控制7号货道出货Q0.7货道8电机数字量输出控制8号货道出货Q1.0找零电机数字量输出每次动作退出一枚硬币Q1.1状态指示灯数字量输出正常/故障指示Q1.2蜂鸣器数字量输出操作提示与报警Q1.3售罄指示灯数字量输出对应货道无货提示如果你的项目用触摸屏选货而不是物理按钮那选货输入就不是走DI点了而是通过触摸屏向PLC的V区变量写入货道号。这样能省掉8个输入点但讲解复杂度会高一点课设阶段我更推荐物理按钮方案逻辑直观答辩的时候好讲。3. 核心控制逻辑拆解投币、售卖、找零的状态机如何用梯形图实现3.1 程序整体框架与状态划分这套程序的本质是一个有限状态机待机、投币累计、选择校验、执行出货、找零、故障报警。梯形图里没有“state”这种高级变量习惯做法是用一组M中间继电器做状态标志再用常开常闭触点互锁保证同一时刻只有一个状态激活。我给的框架是五个状态位M0.0待机M0.1投币累计M0.2选货校验M0.3出货执行M0.4找零执行。再加一个M0.5故障报警。这套标志位方案在触摸屏上也很方便监控做模拟量动画或状态显示时直接把M区变量拖上去就行。上电用SM0.1触发一次初始化子程序把价格表、库存表、当前金额全部写入V区初值。这一步别省否则第一次上电运行时变量区全是随机数售罄判断和价格比较全会乱套。3.2 投币累加沿检测与金额存储投币逻辑是整个系统最容易出错的地方核心问题是怎么把一个硬币准确计成一次。硬币识别器输出的是电平信号投一枚一元币I0.2会保持几十毫秒到几百毫秒的高电平。如果不加处理直接读PLC一个扫描周期几毫秒遇到时间较长的高电平会把金额累加好多次。这就是所谓“投一元显示十元”的经典问题。正确做法是加起沿检测指令EU让信号从0变1的瞬间只触发一次。下面这个网络是典型写法之一LD I0.2 EU AN M0.3 I 10, VW10我习惯把金额单位定成“角”一元币加10五角币加5这样找零计算全程是整数运算不用碰浮点数。VW10就是当前已投入金额放在断电保持区防止机器断电后金额丢失。3.3 货道价格表和库存表设计价格表我把8个货道做成8个连续的VW地址VW100到VW114每个货道占一个字存放该货道单价。库存表从VW200到VW214存放每个货道的当前数量。初始化程序里用MOVW指令把每路的价格和初始库存写进去比如VW100放250即2元5角VW200放20代表1号货道有20瓶。这个表设计对修改非常友好以后改价格、改库存只动初始化里的MOVW值不动梯形图逻辑。当用户按下货道选择按钮程序要做两件事一是比较当前金额VW10是否大于等于对应价格VW100x二是检查对应库存VW200x是否大于0。两个条件同时满足才置位出货状态M0.3。如果库存为0置位售罄指示灯如果钱不够不作清零操作让金额保留提示用户继续投币。3.4 出货执行用闭环掉落检测代替纯定时很多人写这个逻辑习惯用定时器按下选货启动电机延时两秒停电机。这种方式在课设里能跑通但实际机器上问题很大。不同货道的弹簧摩擦阻力不一样商品重量不一样固定时间到了可能商品还没落或者商品早就落下来电机还在转把下一瓶也带出来。我推荐的做法是闭环控制启动电机的同时启动一个2秒定时器作为“等待掉落超时”然后一直监视掉落检测光电信号I1.3。一旦I1.3从0变1说明商品已经掉入取货口立即停止电机库存减1然后判断是否需要找零。如果2秒定时到而I1.3始终没有动作说明卡货或电机异常停止电机置位故障报警M0.5。这个过程看起来复杂实际梯形图只用两个网络就能写完。关键是理解“启动电机只是发令枪掉落光电才是终点线”。3.5 找零执行与超时保护找零逻辑的算法很直接找零金额等于当前金额减售价。如果找零金额大于0开启找零电机Q1.0每检测到一次退币脉冲I1.4待退金额就减一次减到0时关闭电机把VW10清零回到待机状态。这里有两个隐藏问题。第一个是退币脉冲同样要做沿检测否则一枚硬币落下的时间足够PLC误计多次。第二个是必须加超时保护。找零机构很容易因为硬币卡滞而一直空转如果程序永远等那个退币脉冲电机就会一直通电线圈很快就会发烫烧毁。我给这套系统的做法是找零电机启动时同时启动一个5秒定时器5秒内如果退币脉冲数量没有达到期望值强制关闭电机并置位故障报警提示人工检查零钱机构。这套保护在答辩时是加分项因为它体现的不只是会写梯形图而是考虑到了现场安全。4. 实机调试实录信号抖动、卡币与计数漂移的完整排查链路这一节写的都是我实际调试过程中踩过的坑有些问题看起来是程序错误最后发现根本不在程序里。4.1 投一枚硬币显示两块钱边沿与抖动问题第一次装上实机测试就翻车。投一元硬币触摸屏上金额直接加了2有时还加3。我先怀疑识别器输出问题用万用表测量投币一次确实只输出一个高电平。然后打开PLC在线监控表观察I0.2发现问题出在信号质量上投币机构机械撞击瞬间开关电源带载波动导致输入信号在几百毫秒内反复翻转。识别器本身只输出一次但PLC的输入端被干扰反复触发。解决分两步。第一步在程序里给投币信号加延时滤波让I0.2先经过一个20毫秒的TON定时器确认信号稳定持续后才进入后续逻辑。第二步是电气整改把开关电源的0V和传感器回路的0V统一共地消除参考电位差。改完这两处投币计数就干净了。这个案例让我形成一个条件反射实验室里信号干干净净一上现场就出问题十有八九是共地和滤波别急着怀疑传感器坏。4.2 电机转到底但商品没出来掉落检测位置问题调试货道时遇到过一个很隐蔽的问题程序显示出货成功电机也确实转了但取货口里什么都没有。在线监控看程序逻辑电机启动后I1.3闪了一下程序认为商品掉落正常完成流程。实际跑到机器后面看发现商品卡在货道出口边缘并没有掉下来。原因在光电传感器的安装位置。我把掉落检测安装在出货口的侧壁商品下落时只有部分遮挡光路周边轻微震动就会让信号闪断误报。后来把传感器移到出货口正下方让商品必须以最大横截面通过光路误报问题彻底解决。这里还有第二个坑电机停止时机。如果商品刚掉落瞬间就停电机螺旋弹簧可能停在非起始位置下一轮出货时弹簧阻力变大容易卡货。我在程序里改成“检测到掉落后延时0.3秒停电机”让弹簧多转一点回到起始角后面出货稳定很多。4.3 找零口退币退不停机械轨迹和检测缺失找零调试时出现吓人的一幕按了找零电机一直转硬币哗哗往外掉地上一堆程序还停留在找零状态。排查过程是这样的先看退币计数光电I1.4有没有脉冲结果一个都没有。再量光电传感器本身用手遮挡能正常翻转。最后蹲下来看硬币飞出的轨迹发现挡板把硬币弹出的方向稍有偏移硬币从传感器感应区旁边飞过去了PLC自然永远收不到“退出一枚”的信号。解决方法是调整导向槽让硬币必须经过传感器感应区。同时程序里把那条5秒超时保护加上——如果没有这条保护那天的电机估计已经烧了。这个案例给我的教训是机械限位和检测位置的安装精度比PLC逻辑更值得花时间。程序写得再漂亮传感器没感应到信号一切都是白搭。4.4 断电再上电库存数全乱了保持区问题系统调试稳定后做过一次断电重启测试结果触摸屏显示所有货道售罄打开库存表一看全是随机数。这是典型的保持区设置问题。S7-200 SMART的V存储区需要手动指定掉电保持范围。如果库存和价格表所在地址没有被划进保持区断电后内容全部丢失重新上电也不会自动恢复。S7-200 SMART默认只保持部分区域不一定覆盖你用的VW200。解决方法是在系统块的“保持范围”配置里把VW10、VW100到VW214这一整段都设为保持。对于S7-1200用户对应操作是在全局数据块里把相关变量勾选为“保持性”原理一样。4.5 触摸屏和PLC通讯莫名断开IP与网络问题用Smart 700 IE触摸屏搭配SMART plc时遇到过通讯反复中断的怪问题重新上电恢复运行几分钟又断开。查到最后是触摸屏和PLC的IP地址不在同一子网还有一部分原因是网线接头氧化。交换机测试一切正常但现场环境震动大、温度高劣质水晶头接触不良导致时通时断。处理办法很简单给触摸屏和PLC各设一个固定的静态IP保持同一网段不要依赖自动获取网线用成品工业级线缆接头做好防护固定下载顺序上先断电下载PLC再下载HMI组态避免握手冲突。这五条做完再没出过问题。5. 拿到设计与源文件之后从课设/毕设要求到可落地项目的适配思路5.1 先仿真还是先接硬件拿到一套陌生源文件别急着买PLC。先判断工程文件的平台如果是TIA Portal的S7-1200工程直接用博途里的S7-PLCSIM把投币累加、出货确认、找零减法这几段关键逻辑跑通确认没有语法和逻辑错误再考虑硬件。如果是S7-200 SMART的工程情况和1200不太一样——S7-200 SMART没有官方独立仿真器网上流传的仿真插件只能验部分指令遇到复杂程序容易报错。我的建议是没有实物时就对着I/O表手工推演关键流程把每一步的状态位变化、计数变化写在纸上过程虽然原始但印象极深。有硬件的就跑一套真实测试流程投币、选货、出货、找零。跑通以后再做边界测试——钱不够、售罄、卡货这些边界场景才是答辩老师最爱问的。5.2 改成自己的题目时到底改哪里很多学生拿到资料以后第一件事是给注释改名这是最危险的。一个货道从8路改4路、改20路可不是改注释的事。你想改货道数量就必须同步改三处I/O分配表里按钮地址和电机输出地址价格表、库存表的V区范围和初始化MOVW值触摸屏或面板上对应的显示对象。只改注释不动地址现场演示时按下新的按钮PLC动作的还是旧地址一下就会穿帮。想加扫码支付这是目前最热门的扩展方向。PLC方案通常外接一个支付模块扫码成功后模块输出一个干接点或串口信号给PLCPLC收到“支付成功”信号后再开放选货。这里要理解一点支付验证是在支付模块侧完成的PLC不做那种联网鉴权工作只负责接收完成信号并放行。答辩时把这个边界讲清楚非常加分。想加远程监控方向就是通过以太网或4G网关把PLC里的库存数、销售额、故障代码用Modbus TCP或OPC UA协议上传到上位机。S7-200 SMART支持Modbus RTUS7-1200配合博途做Modbus TCP更方便。这个方向适合做进阶课题不建议在课设阶段铺太大。5.3 答辩和现场演示前重点补什么带学生做了几轮题目之后我总结出答辩现场反问概率最高的几个问题为什么选SR40而不是ST40反过来也一样投币金额为什么不会重复累加出货电机为什么不直接定时控制库存断电之后会不会丢两个按钮同时按下会出现什么情况第五个问题很有意思。如果程序里没有互锁两个按钮同时按下可能导致两个货道电机同时启动逻辑上虽不致命但演示时很狼狈。我的程序里选货状态M0.2和出货状态M0.3是互锁的一旦进入出货流程选择按钮的全部后续逻辑被切断这就是为了保证同一时间只能执行一次出货。建议所有拿到这套资料的人至少要做到不看源文件能把I/O分配表和状态流程图默写出来再谈修改和扩展。资料是用来理解系统的不是用来背的。最后分享一个我自己的习惯不论资料多全拿到第一件事不是打开梯形图而是把I/O分配表打印出来拿一张A4纸从左到右过一遍信号构成。PLC系统里绝大部分故障都不是程序写错是地址对不上、地没共好、传感器位置偏了这老三样。把这套售货机系统跑通之后你会发现它本质上就是一个输入输出很多、逻辑循环很固定的项目。真正理解了这个心智模型后面改做冷库监控、大棚灌溉、交通灯控制你只需要换一套I/O表思维完全是同一个套路。
返回列表