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号电梯曾在无任务状态下连续巡检十层楼,后来发现是状态机漏掉了空闲状态——像极了找不到停车位的自动驾驶汽车。

WinCC画面里的彩蛋比代码更有意思。我给每部电梯的楼层显示加了个隐藏特效:当两部电梯同时到达同一层时,数字会变成闪烁的爱心。监控视频拍到过评委老师盯着这个彩蛋笑出声的画面,这可能是我们拿到创新分的关键。

动画脚本里藏着这样的骚操作:

SetPropValue("电梯1位置", "Top", 原位置 - (当前楼层*30));

用简单的矩形移动模拟轿厢升降,30像素对应一层楼高。调试时发现电梯偶尔会穿模到楼顶,最后发现是WINCC的全局变量更新频率太高,像极了动画师手滑做出来的鬼畜效果。

凌晨五点的最后一次联调,三台电梯突然跳起了整齐的广场舞——每隔十秒同时开关门一次。查遍所有逻辑才发现是某个测试用的定时器没注释掉。这场景让我想起答辩时评委的问题:"你们的电梯怎么看起来很有团队精神?"

现在看到商场电梯还会条件反射地分析调度算法,这大概就是工控人的职业病吧。那些在博图里熬红的眼睛,最终都变成了电梯按钮上跳动的LED。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值