news 2026/4/16 16:44:35

No.867 ‘基于西门子S7-200 PLC和组态王自动售货机五种货物‘的概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
No.867 ‘基于西门子S7-200 PLC和组态王自动售货机五种货物‘的概述

No.867 基于西门子S7-200 PLC和组态王自动售货机5种货物五种

大半夜饿得慌,站在自动售货机前哐当哐当按按钮的时候,有没有想过这铁家伙的"大脑"是怎么运转的?今天咱们就扒开这台基于S7-200 PLC的自动售货机外壳,看看它藏着什么硬核操作。

先看PLC的I/O分配表就有意思:

I0.0 硬币传感器 I0.1~I0.5 5个商品选择按钮 Q0.0 退币电机 Q0.1~Q0.5 5路出货电机 M10.0 找零标志位 VD100 当前金额存储

核心逻辑其实就三件事:收钱认账、给货利索、找零痛快。来看这段关键代码:

LDN I0.0 // 硬币进来 EU // 上升沿触发 +D 1, VD100 // 金额+1 MOVW VD100, VW20 // 传给组态王显示 LDW>= VD100, 3 // 可乐3块钱 A I0.1 // 按了可乐按钮 AN M10.0 // 没找零需求 = Q0.1 // 出货电机启动 -D 3, VD100 // 扣款

这段STL代码把自动售货机的"贪婪"暴露无遗——钱到位才给货。特别要注意那个EU指令,保证每次投币只加一次钱,不然熊孩子拿个硬币在投币口摩擦,分分钟刷爆金额计数器。

组态王这边搞了个骚操作,用用户策略脚本实现库存预警:

// 商品库存检测脚本 if(\\本站点\可乐库存 <5){ SetAlarm("可乐即将售罄",1); } if(\\本站点\金额累计 >1000){ FileWrite("销售日志","今日达标"); }

这脚本每天半夜自动跑,搞得售货机比老板还操心库存。那个FileWrite函数生成的日志文件,打开全是销售数据的碎碎念。

调试时有个坑爹问题:出货电机偶尔卡壳。后来发现是PLC的扫描周期搞鬼,加了个50ms的定时中断专门伺候出货动作:

INT_0: // 定时中断程序 LDS>= Q0.1, 1 // 如果可乐电机启动 TON T37, 50 // 0.5秒定时 LD T37 RST Q0.1 // 强制停止

这相当于给电机上了个"闹钟",到点不管货出没出来都停转,硬生生治好了电机的拖延症。

最后来个数据统计彩蛋:在VD200地址藏了个隐形计数器,记录每种商品的销量。组态王画面上长按退币键3秒,会弹出个密码框,输入"1107"就能看到各商品的江湖地位。这后门留的,比老板的Excel报表有意思多了。

说到底,这自动售货机就是个严格执行"钱货两清"原则的铁憨憨。下次买饮料时,想想背后这些跳动的寄存器,说不定投币的手都会带点敬畏——毕竟你是在跟一套跑了20年还没宕机的PLC程序打交道啊。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:28:31

A.每日一题——1970. 你能穿过矩阵的最后一天

题目链接&#xff1a;1970. 你能穿过矩阵的最后一天&#xff08;困难&#xff09; 算法原理&#xff1a; 解法&#xff1a;深搜DFS 方法一&#xff1a;反向dfs 13ms击败94.50% 时间复杂度O(mn) ①初始时网格全是水&#xff0c;从最后一天往回推&#xff0c;每天把一个水单元格变…

作者头像 李华
网站建设 2026/4/16 14:26:21

Jenkins流水线配置的两种方式

在Jenkins的项目配置里面&#xff0c;如果创建的是流水线项目。在流水线配置的地方&#xff0c;有两种方式&#xff0c;如下图所示&#xff1a;方式一&#xff1a;pipiline script&#xff0c;直接在配置页面上写流水线脚本。方式二&#xff1a;pipeline script from SCM&#…

作者头像 李华
网站建设 2026/4/16 10:59:32

深度解析 CherryECAT:国产 EtherCAT 协议栈与国外主流方案的全方位对比及项目实战(上)

目录 工业以太网的 “顶流”:EtherCAT 协议基础认知 EtherCAT 核心原理与关键算法(新手也能懂) CherryECAT 与国外协议栈基础信息全景对比 核心技术原理与算法深度拆解 功能特性全方位对比 性能指标实测对比(含测试代码与数据) 代码实战:不同协议栈开发完整示例 应用场景…

作者头像 李华
网站建设 2026/4/16 12:39:36

统计今日、最近一周、最近一个月

结果 req请求参数 Data public class ReportDayWeekMonthReq {//1-day, 2-week, 3-monthprivate Integer flag;}service Overridepublic List<ReportDayWeekMonth> getReportDayWeekMonth(ReportDayWeekMonthReq req) {if (req.getFlag() null){throw new IllegalArg…

作者头像 李华
网站建设 2026/4/16 16:16:44

动态住宅IP:从基础概念到实操指南(开发者必备)

在爬虫开发、跨境业务运营、数据采集分析等场景中&#xff0c;动态住宅IP是解决IP封禁、地域限制的核心工具。但很多开发者在选型和使用过程中&#xff0c;常会遇到“IP被封”“连接失败”“速度卡顿”等问题。本文整理了动态住宅IP的高频核心问题&#xff0c;从基础概念到技术…

作者头像 李华