PLC西门子杯比赛:三部十层电梯博图v15.1程序设计与WinCC界面展示
PLC西门子杯比赛三部十层电梯博图v15.1程序带wincc画面。凌晨三点的实验室里咖啡杯在工控机旁边堆成了防御工事。我盯着博图V15.1里那三台虚拟电梯的运行轨迹突然发现它们像极了三个不愿加班的打工人——总想着偷懒却又要假装积极。今天就来聊聊这个让二十多个机械按钮起死回生的电梯控制系统。核心算法用SCL写成毕竟梯形图那点格子可装不下三部电梯的宫斗戏码。先看这段抢单逻辑IF #呼叫队列[楼层].有效 THEN FOR #i : 1 TO 3 DO #距离差 : ABS(电梯[#i].当前位置 - 楼层); IF #距离差 当前最近距离 THEN 当前最近电梯 : #i; 当前最近距离 : #距离差; ELSIF #距离差 当前最近距离 THEN IF 电梯[#i].运行方向 呼叫方向 THEN 当前最近电梯 : #i; END_IF; END_IF; END_FOR; 分配任务(当前最近电梯, 楼层); END_IF;电梯们在这里玩的是现实版抢单模式。距离最近的优先接单距离相同时正在往呼叫方向跑的胜出。调试时发现2号电梯总爱跨楼层抢单后来发现是绝对值函数里藏着个未初始化的临时变量——这bug活像早高峰插队的网约车。方向决策模块藏着点小心机CASE 电梯.运行状态 OF 1: // 上行 IF 没有更高层呼叫 AND 当前层有下降请求 THEN 切换方向(下降); ELSE 保持惰性运行; END_IF; 2: // 下行 ... // 镜像逻辑 ELSE: 开启省电模式; END_CASE;看这惰性运行的注释就知道电梯也懂节能办公哲学。实际测试时3号电梯曾在无任务状态下连续巡检十层楼后来发现是状态机漏掉了空闲状态——像极了找不到停车位的自动驾驶汽车。PLC西门子杯比赛三部十层电梯博图v15.1程序带wincc画面。WinCC画面里的彩蛋比代码更有意思。我给每部电梯的楼层显示加了个隐藏特效当两部电梯同时到达同一层时数字会变成闪烁的爱心。监控视频拍到过评委老师盯着这个彩蛋笑出声的画面这可能是我们拿到创新分的关键。动画脚本里藏着这样的骚操作SetPropValue(电梯1位置, Top, 原位置 - (当前楼层*30));用简单的矩形移动模拟轿厢升降30像素对应一层楼高。调试时发现电梯偶尔会穿模到楼顶最后发现是WINCC的全局变量更新频率太高像极了动画师手滑做出来的鬼畜效果。凌晨五点的最后一次联调三台电梯突然跳起了整齐的广场舞——每隔十秒同时开关门一次。查遍所有逻辑才发现是某个测试用的定时器没注释掉。这场景让我想起答辩时评委的问题你们的电梯怎么看起来很有团队精神现在看到商场电梯还会条件反射地分析调度算法这大概就是工控人的职业病吧。那些在博图里熬红的眼睛最终都变成了电梯按钮上跳动的LED。