十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

S7-200自动售货机PLC控制:梯形图、SFC与TON定时互锁设计

S7-200自动售货机PLC控制:梯形图、SFC与TON定时互锁设计 简介这份文档面向自动化、机电一体化专业学生及PLC初学者围绕西门子S7-200系列PLC在自动售货机监控系统中的应用展开可用于课程设计、毕业设计选题或自学参考帮助解决从硬件选型到梯形图编写缺乏完整案例的问题。资源为单个doc文档压缩包约490KB内容按绪论、PLC概述、自动售货机设计、工作流程与结论组织涵盖自动售货机的发展背景与国内外现状、方案论证、PLC的组成特点与循环扫描原理、定时器与数学运算指令的使用、I/O点分配、顺序功能图与梯形图设计以及外部接线图的绘制并采用STEP7软件完成程序编写。文中以一次交易过程为例将识别、分拣、存储、出货拆分为多个程序块分别实现便于读者理解S7-200在售货机中的控制作用与调试思路。目前已有183人学习下载。1. 一台自动售货机的控制难点不在机械结构上自动售货机最容易被低估的部分是时间边界。投币后两分钟不按任何键要原路退币购买成功后二十秒无操作要把余额吐出来出货瞬间指示灯要闪而不是常亮缺货时对应按键要按了没反应还不扣余额——这四类需求全部是定时器与状态互锁的活和弹簧、货道、电机关系不大。这份基于西门子 S7-200 的设计文档把一台支持食品、饮料、日用三大类共六种商品的售货机拆成了 36 个 I/O 点用选择性分支加并发分支的顺序功能图SFC描述流程再落到 STEP7 里的梯形图。它适合两类人看一类是刚接触 PLC、想找一个完整项目练梯形图的另一类是手上有 S7-200 老设备、需要把控制逻辑重新梳理一遍的。下面按照硬件接线、计价运算、流程分支、仿真排错的顺序把这份设计拆开讲。2. S7-200 的 I/O 点分配与外部接线落地2.1 CPU 选型与点数预算这份设计用到 18 个输入点、18 个输出点合计 36 点。S7-200 系列里 CPU226 本体就有 24 入 / 16 出加上一个 8 点输出扩展模块如 EM222刚好覆盖如果选 CPU22414 入 / 10 出则需要补两块扩展模块。常见做法是先把输入输出清点一遍留出 15% 左右的余量再定 CPU 型号因为缺货信号、备用按键这类需求在调试阶段经常冒出来。选 S7-200 而不是继电器硬接线的理由很直接六种商品的价格比较、余额判断、找零组合本质是六路并行的数值比较用继电器搭要几十个中间继电器和比较电路改一次价格就要重新接线。PLC 里改一个常数就完事。2.2 36 个 I/O 点的功能映射原始设计的 I/O 分配如下表编号和符号沿用文档方便和后面的梯形图地址对上。序号符号功能序号符号功能I0.0SB1找零按钮Q3.1—食品五角红灯售完I0.1SB2食品五角按钮Q3.2—食品一元红灯售完I0.2SB3食品一元按钮Q3.3—饮料一元红灯售完I0.3SB4饮料一元按钮Q3.4—饮料二元红灯售完I0.4SB5饮料二元按钮Q3.5—日用二元红灯售完I0.5SB6日用二元按钮Q3.6—日用三元红灯售完I0.6SB7日用三元按钮Q0.0—找零输出I2.0SB8投五角硬币Q0.1—出食品五角I2.1SB9投一元硬币Q0.2—出食品一元I2.5SB10找零五角Q0.3—出饮料一元I2.6SB11找零一元Q0.4—出饮料二元I3.1SB12食品五角行程开关Q0.5—出日用二元I3.2SB13食品一元行程开关Q0.6—出日用三元I3.3SB14饮料一元行程开关Q2.1—食品五角绿灯I3.4SB15饮料二元行程开关Q2.2—食品一元绿灯I3.5SB16日用二元行程开关Q2.3—饮料一元绿灯I3.6SB17日用三元行程开关Q2.4—饮料二元绿灯Q2.5—日用二元绿灯Q2.6—日用三元绿灯注意输入点并不是连续的I0.x 一组给按键I2.x 给投币和找零面额选择I3.x 给出货行程开关。这样分组不是强迫症而是为了在梯形图里用字节传送指令MOV_B一次性读入一整组状态减少触点数量。2.3 硬币识别信号与行程开关的接入方式硬币识别器投币器输出的是脉冲信号五角一路、一元一路接到 I2.0 和 I2.1。这里有个实际工程上的细节投币器输出的脉冲宽度通常在 30100msS7-200 的普通输入点扫描周期在毫秒级直接接会漏计。常见做法是在投币信号上加一个上升沿检测EU 指令做单次计数或者把输入滤波时间调到合适值。行程开关 I3.1I3.6 装在六个货道的出货口货品落下时触碰作用是确认东西真的出来了而不是仅仅发了出货指令就认为交易完成。这一路信号在梯形图里用来复位对应的出货输出属于典型的闭环确认。2.4 接线图到梯形图地址的对应外部接线做完之后梯形图里用的地址必须和接线图一一对应否则调试时会出现按了按钮灯不亮这类问题。文档里给出的外部接线图遵循一个简单原则输入设备一端接 24V 公共端另一端接 PLC 输入端子输出设备指示灯、出货电机继电器一端接输出端子另一端接负载电源。S7-200 的 1M、2M 是输入公共端1L、2L 是输出公共端接线时不要把它们接反。提示S7-200 的输入点分两组公共端1M 对应 I0.x/I1.x2M 对应 I2.x 及以上如果一组里混接了不同电平的信号会出现部分点读不进来的情况。接线前先把输入点按公共端分组列一遍。3. 计价核心双整数加减与 TON 定时器3.1 币值为什么要放大成整数投币有五角和一元两种商品价格有 0.5、1、2、3 元。如果直接在程序里存 0.5就要走浮点运算ADD_R、SUB_R梯形图里的比较指令和显示都会变复杂。文档采用的做法是把币值统一放大 10 倍五角记为 5一元记为 10二元记为 20三元记为 30全部走整数运算。余额存在一个双整数寄存器里比如 VD100。这个做法在工控里很常见本质是用定点数代替浮点数。优点是运算快、比较可靠、不会出现浮点舍入误差导致余额 0.9999 元不够买 1 元商品这种问题。缺点是编程时要记住所有价格都乘了 10显示给人看的时候要再除回去。3.2 ADD_DI 与 SUB_DI 的指令写法投币和扣款用双整数加减指令。投五角加 5投一元加 10购买成功时减去对应商品的价格。语句表写法如下// 投币五角硬币脉冲上升沿余额 VD100 加 5 LD I2.0 EU D 5, VD100 // 投币一元硬币脉冲上升沿余额 VD100 加 10 LD I2.1 EU D 10, VD100 // 购买食品五角按下按键且余额足够余额减 5 LD I0.1 A D VD100, 5 EU -D 5, VD100指令说明D是双整数加法-D是双整数减法操作数前一个是加数或减数后一个是结果寄存器。EU是上升沿检测只让信号跳变的那一个扫描周期起作用避免按住按钮时余额被反复加。D是双整数比较。这里有个容易踩的坑EU必须和前面的触点在同一逻辑行里连用如果单独放在中间继电器上再检测沿信号会被扫描周期吃掉。另外一个坑是余额寄存器 VD100 要确保没有被别的子程序或中断改写否则会出现余额自己变化的现象。3.3 TON 定时器的时基选择S7-200 的 TON接通延时定时器时基由定时器编号决定不是随便选的定时器编号范围时基最大定时T32、T961 ms32.767 sT33T36、T97T10010 ms327.67 sT37T63、T101T255100 ms3276.7 s这份设计里 T37T56 全部用的是 100ms 时基。原文提到 T37T42 延时 8 秒T43 计时 20 秒T44 与 T43 配合做成投币 2 分钟无操作找零。换算成设定值8 秒 ÷ 100ms 80即 PT 8020 秒 ÷ 100ms 200即 PT 2002 分钟 120 秒 ÷ 100ms 1200即 PT 1200如果用 10ms 时基比如 T33同样 8 秒要写 PT 800。选时基的通用原则是定时时间越长用时基越大的定时器精度反而够用还能省一个编号资源。100ms 时基的绝对误差最大 100ms对售货机这种场景完全够。3.4 三类超时逻辑的参数拆解把文档里的定时器需求整理成参数表定时器触发条件时长PT 值100ms动作T37T42按下对应商品按钮8 s80出货指示灯闪烁T43交易完成后无操作20 s200退余款T43 T44投币后无按键2 min1200退还所投硬币T46T56两两配合周期可调—指示灯闪烁电路T37T42 一共六个对应六种商品按下按钮后各自启动用常开触点驱动指示灯。闪烁的实现方式是让 T37 的常闭触点去复位 T38T38 的常开触点再驱动灯两个定时器互相打断形成固定周期。这种两定时器自复位是 PLC 里最省资源的闪烁电路比用系统时钟存储器位SMB 里的时钟位更可控因为闪烁频率可以自己调。T43 和 T44 的配合是这份设计里比较巧的一处T43 计时 20 秒T44 计时 2 分钟两个定时器的输出都指向同一个退币逻辑。区别在触发条件——T43 在交易完成后启动T44 在投币时启动。这样处理的好处是即使顾客投币后一直不按按键2 分钟后仍然会退币不会出现投币后卡死不动的情况。4. 从 SFC 到梯形图选择性分支与并发分支4.1 主流程为什么用选择性分支顺序功能图里的选择性分支结构是一个控制流进入多个可能分支中的某一个且同一时刻只有一路执行。自动售货机的主流程正好符合顾客可能买食品、买饮料、买日用三者互斥不会同时买两样。用选择性分支描述进入条件分别是各自按键信号加余额判断谁先满足谁执行。反过来如果用并发分支描述主流程就会出现买食品和买饮料同时出货的逻辑这在程序和实际机械上都是灾难。选分支结构前先问自己一句这些动作是选一个还是同时做答案决定了用哪种结构。4.2 并发分支用在找零和出货并发分支用在另一个位置成功的购买动作里出货和找零是同时发生的。顾客按下一元食品键货道电机启动同时余额里减去 10、再扣掉实际价格、剩余部分进入找零队列。这两个动作没有先后依赖用并发分支双水平线表示公共转移条件来组织梯形图里体现为两个并联的输出支路在同一个转移条件下同时置位。注意并发分支的公共转移条件必须写在同一逻辑步里如果写成串联的两个子步实际执行会变成顺序而不是并发找零会延迟一个扫描周期。4.3 缺货互锁与红灯逻辑缺货逻辑是这份设计里互锁做得最细的地方。当某个货道的行程开关连续多次没有触发或者对应商品计数减到零就置位缺货标志对应红灯 Q3.x 点亮而绿灯 Q2.x 熄灭。顾客按下该商品按键时程序里用缺货标志的常闭触点串联在启动条件上所以按键无效、余额不减、不出货。这套互锁的关键在于按键无效和不减余额要同时满足。如果只断开了出货输出却漏了扣款支路就会出现按了没反应但钱少了的严重问题。梯形图里这两种输出通常同处一个逻辑段缺货触点放在共同的上游。4.4 梯形图里的关键段写法把上述互锁和出货逻辑写成语句表结构大致如下// 缺货判断食品五角商品计数为 0置位缺货标志 M1.0 LDW VW200, 0 M1.0 // 启动食品五角出货按键按下、余额够、且不缺货 LD I0.1 A D VD100, 5 AN M1.0 AN Q0.1 EU S Q0.1, 1 // 行程开关确认出货复位出货输出并扣款 LD I3.1 R Q0.1, 1 -D 5, VD100逻辑说明第一段用缺货标志 M1.0 表示该商品库存为零这个标志会被绿灯和出货启动两条支路同时引用。第二段里AN M1.0是缺货互锁AN Q0.1防止重复启动EU保证一次按键只出货一次。第三段用行程开关 I3.1 的上升沿复位输出并扣款-D 5, VD100是双整数减法把五角商品的价格从余额里扣掉。参数上需要注意的是扣款金额和商品价格常量要一致改价时不能只改显示不改运算。常见做法是把六种商品的价格放在连续的数据寄存器里如 VW300VW310梯形图里用间接寻址取值这样改价只需要改数据块不用动程序。5. 仿真验证与几个容易翻车的地方5.1 用 STEP7-Micro/WIN 配合仿真跑单步程序写完之后先在 STEP7-Micro/WIN 里做编译检查再把程序导出给 S7-200 仿真软件常见的 S7-200 仿真工具支持导入 Micro/WIN 的 AWL 文件或项目文件。仿真时重点验证三条时间线投币后 2 分钟不操作是否退币、购买完成后 20 秒是否退余款、按下商品键后指示灯是否闪烁 8 秒后停止。单步验证的操作顺序先手动置位 I2.0 模拟投五角看 VD100 是否变成 5再置位 I2.1 投一元看是否变成 15然后置位 I0.1 按食品五角键观察 Q0.1 是否置位、VD100 是否减到 10最后置位 I3.1 模拟行程开关确认 Q0.1 复位。每一步之间留出足够扫描周期仿真器的定时器是按真实时间走的2 分钟的超时验证不要用加速模式否则定时器行为会和实机不一致。5.2 定时器编号与复位竞争定时器最容易出问题的地方是编号冲突和复位竞争。T37T42 六个定时器分别管六个商品的闪烁如果写程序时不小心把两个商品分到同一个定时器编号会出现买 A 商品 B 商品的灯也闪。检查方法是把定时器编号列一张表和商品一一对应。复位竞争出现在定时器交叉复位的场合。T37 的常闭复位 T38、T38 的常闭复位 T37 这种结构如果两个定时器的 PT 值设成一样可能出现两个都停在中间状态不切换。稳妥的做法是让两个定时器的 PT 值不相等比如一个 10、一个 20保证总有一个能先走完。5.3 闪烁电路的参数调法指示灯闪烁周期由两个定时器的 PT 值之和决定周期 ≈ (PT1 PT2) × 时基。要 1 秒闪一次的视觉效果用 100ms 时基时PT1 PT2 5 就能得到 1 秒周期500ms 亮 500ms 灭。要改闪烁快慢只改 PT 值即可不用动电路结构。调试时如果发现指示灯常亮不闪先查两个定时器是不是都被同一个触点启动了如果灯完全不亮检查闪烁输出后面是不是还串了一个常闭的自锁触点把输出断开了。这两类问题在仿真里比在实机上更容易定位所以上电前把闪烁段单独跑一遍是省时间的做法。本文还有配套的精品资源点击获取
返回列表