自动售货机的PLC控制
从I/O分配到梯形图编程,吃透售货机控制系统的完整设计流程
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
自动售货机的PLC控制
从I/O分配到梯形图编程,吃透售货机控制系统的完整设计流程
自动售货机工作原理
想象你在地铁站买了一瓶水——投币、按键、'咚'的一声,饮料掉下来。这一两秒里,机器内部走完了'认钱→比价→出货→找零'的完整流程,而PLC(可编程逻辑控制器)就是这场流程的'大脑'。
看菜单选菜↔按键选品;报价够不够↔PLC比价;出餐↔出货;退钱↔找零
PLC控制系统的组成
从左到右读这张图:现场信号→输入单元→CPU→输出单元→执行器,CPU 还连着程序存储器。
高速计数器的引入
上一节我们认识了 PLC 控制系统由 CPU 循环扫描完成。自动售货机的投币器、编码器送来的不是稳定电平,而是一连串极快的电脉冲——普通计数器在这个速度下靠得住吗?
眨眼太慢、鸟已经飞走;扫描间隔太长、脉冲就漏掉
编码器测速原理
从物理转动到数字脉冲,编码器如何把连续运动切成 PLC 能数的方波。
HSC指令详解
上一页我们看到编码器一转就甩出几百上千个脉冲——普通计数器(CTU)每个扫描周期才数一次,根本追不上。PLC里专门留了一条「快速通道」处理高频信号,这就是高速计数器HSC。
通道类型(模式)一选定,识别天线(输入点)就固定了;车速(脉冲频率)不能超过通道上限
HSC编程示例
把 HSC 落到完整代码:从 OB100 初始化,到 OB1 用增量法测传送带线速度,含异常值剔除。
程序两段:OB100 用 CTRL_HSC 把 HSC1 清零;OB1 每周期读取 HSC 当前值,用增量法(当前值−上次值)求 Δ脉冲,再除以 PPR 和采样时间得到真实线速度,最后对异常值做限幅。
高速计数vs普通计数
编码器每秒发上千脉冲,普通CTU根本数不过来——必须分清两者的频率边界。
- 计数频率受扫描周期限制
- 每个扫描周期才采样一次
- 适合按钮、限位开关等低速信号
- 用普通CTU/CTD指令即可实现
- 频率可达数十kHz,与扫描周期脱钩
- 由硬件中断实时捕获每个脉冲
- 适合编码器等高频脉冲测量场景
- 需用HSC指令配合高速输入端子
高速计数的边界条件
复位/门控/中断触发时机
脉冲输出基础
前页我们解决了PLC'接收'脉冲的边界问题,那反过来——PLC要主动'发出'脉冲呢?比如让弹簧精确转N圈推出饮料。
转N圈停=PTO数脉冲,持续转调快慢=PWM调占空比
PTO脉冲串输出时序
PTO输出按时间分三段推进,从上往下读时序:装载→启动→加速→恒速→减速→完成。
PTO编程指令
三菱FX的PLSY/PLSR两段真实梯形代码,看清频率、脉冲数、加减速参数如何落到寄存器。
PLSY 三参数(频率/个数/端子);PLSR 多出 S3 加减速时间。参数必须先 MOV 进寄存器;M8029 是脉冲完成标志。
步进电机的速度控制
上一页已经能按节拍发出脉冲:脉冲数管路程,频率管快慢。真正驱动步进电机时,关键不是“能不能转”,而是怎样安全地改变频率,又不丢位置。
起步缓踩油门、中段巡航、到位前松油门;升频太急就像急加速,负载下会失步并冲过目标位
多段脉冲组合
展示 PLC 多段 PTO 流水线程序,用「加速—恒速—减速」三段组合实现完整运动轨迹。
多段 PTO 把复杂轨迹翻译成一张参数流水线表——每段 12 字节,填入起止频率与脉冲数。PLS 一次触发,CPU 硬件在段间无缝衔接,无需程序干预。
中断机制概述
前面用高速计数器抓住了编码器脉冲,可如果PLC正忙着跑主程序,扫描到输入点的那一瞬间信号已经消失——中断,就是给PLC装上的'紧急插队'机制。
急症来了主治医生停下问诊先处理,处理完回来接着看普通病人
中断的分类与优先级
从根节点看PLC中断的三大类型,每条分支展开触发条件与优先级。
中断控制指令详解
上页我们看到中断有三种类型,但CPU并不会自动响应。要让中断真正起作用,需要几条指令配合——开总闸、绑事件、标入口。
门铃按钮=事件;ATCH=安排管家对应开门;DISI=拔掉门铃电源,谁按都听不见
定时中断实例
S7-200 用定时中断实现每100ms自动采样一次温度传感器
定时中断的标准三件套: SMB34定周期、ATCH绑例程、ENI开中断; 中断例程内完成AIW0采样、累加和按需平均的周期任务。
高速计数器中断实例
S7-200 SMART:编码器计数到 1000 时,HSC0 事件 22 进入 INT0,点亮 Q0.0。
HDEF 将 HSC0 设为 2 倍频正交计数;16#F8 允许装入 CV/PV 并打开相等事件中断。事件 22 接入 INT0,计数到 1000 时置位 Q0.0。
中断的边界与陷阱
前页我们让中断能跑起来了——分类、优先级、指令都齐了。但你真把它丢进售货机连续跑一周,会撞上三个隐形坑:嵌套打架、响应太慢、共享变量被撕碎。
主循环是普通窗口,ISR 是 VIP 通道;嵌套=两 VIP 同时办;账户中途被读=数据被撕碎
售货机控制需求分析
货币识别+商品选择+出货的控制逻辑
货币识别与累加程序
S7-200 模式0把 I0.0 的投币脉冲送入 HSC0,并在 100 ms 中断中换算累计金额。
16#F8 选择 HSC0 模式0;先写 SMD38=0,再写 SMB47 并执行 HSC 0。定时读取 HC0,乘每脉冲10分即累计金额。
出货电机控制程序
这段 ST 代码展示 S7-1200 怎么用 PTO1 驱动出货电机:配置频率、按商品选圈数、启动脉冲串、由 Done 信号闭环。
周期 500μs 决定 2kHz 频率,不同商品对应不同脉冲数(即电机圈数);CTRL_PTO_1 是西门子 PTO 控制 FB,Pulse:=TRUE 启动后硬件自动发完全部脉冲,Done 信号通知 PLC。
找零与异常处理程序
用S7-200定时中断实现30秒无操作自动退币——核心是ATCH+ENI建立连接,INT_0按100ms累加。
SMB34定100ms节拍,ATCH把INT_0挂到EVT10;INT_0每拍累加,VW100≥300即30秒,置M0.1驱动退币阀;正常出货与异常退币两处DTCH拆中断。
系统程序框架
实线是主程序扫描顺序,虚线是中断触发:看清主循环与异步例程如何协作。
核心知识自测
在自动售货机中,HSC0 用于累计投币脉冲。当投入金额达到商品价格时,最合理的程序处理方式是?
程序调试步骤
程序写完后,从仿真到现场分四步走,每步都有不可替代的作用。
常见故障与排除
程序框架搭好,仿真也跑通了,可一上实物——硬币器一抖HSC就跳值,电机一转快PTO就丢脉冲,急停按下去中断没响应——三类故障几乎是现场调试的必考题。
人多拥挤重复扫码=计数器跳变;扫码器太快漏掉一人=脉冲丢失;闸机断电刷不开=全局中断关闭
性能优化策略
上节排查故障时,你可能发现很多怪异现象都源于同一个根——程序跑得太慢、负载太重。这页讲三条性能优化策略,以及每条的天花板在哪。
主厨=主扫描、岗位厨师=子程序、加急单=中断;电话问个不停没人做菜=中断过频
课后思考
先合书默想30秒,再点开参考答案;每题都没有唯一正确答案。
参考答案普通计数受扫描周期拖累,HSC在硬件层独立计数,响应不受CPU节奏影响;出货电机转速快、惯性小,普通计数会大量丢脉冲,无法闭环测速。
参考答案在定时窗口内比对当前计数值与上一次值,若无变化即判定断线或卡死,立即触发中断停机、报警,等待人工复位后再恢复业务。
参考答案PLC按优先级排队,优先级高的硬中断先抢占CPU并独占执行;同级中断按事件到达顺序排队,依次响应处理。