V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
internelp
V2EX  ›  程序员

大家乘电梯的时候会想电梯的程序怎么写吗

  •  
  •   internelp · 2021-07-09 14:26:30 +08:00 · 8312 次点击
    这是一个创建于 993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    75 条回复    2021-07-13 17:14:51 +08:00
    keepeye
        1
    keepeye  
       2021-07-09 14:29:59 +08:00   ❤️ 15
    会啊,被关在电梯里出不来的时候我就想问候写控制程序的哥们
    LiYanHong
        2
    LiYanHong  
       2021-07-09 15:03:28 +08:00   ❤️ 2
    typetraits
        3
    typetraits  
       2021-07-09 15:12:05 +08:00   ❤️ 2
    我现在公司写字楼的电梯,简直令人崩溃
    一共两部电梯,我观察了两个月,有如下发现
    1. 按按钮后,一定是距离当前楼层远的那台电梯过来,不论上下;
    2. 上楼的优先级远高于下楼,在一楼进入电梯,会先到楼上,再返回 B1 ;
    3. 越高的楼层权重越低,在 5 楼基本必停,但是在 12 楼曾经多次看着电梯在低楼层反复十多次也没上来。
    所以我现在选择走楼梯,有等电梯的时间都走几个来回了
    Leonard
        4
    Leonard  
       2021-07-09 15:13:12 +08:00   ❤️ 7
    会思考逻辑,不会思考具体代码。
    感觉有的地方的电梯逻辑有点弱智。
    autoxbc
        5
    autoxbc  
       2021-07-09 15:13:23 +08:00   ❤️ 1
    PLC 课程里有,不考虑复杂场景的话,其实比较简单
    falcon05
        6
    falcon05  
       2021-07-09 15:20:33 +08:00 via iPhone   ❤️ 1
    以前我也想过,后来发现电梯程序很复杂,很多不同的调度算法。
    KevinChan
        7
    KevinChan  
       2021-07-09 15:37:01 +08:00
    感觉莱茵电梯的程序很脑残,V2 上有想装电梯的建议避坑。
    namelosw
        8
    namelosw  
       2021-07-09 16:31:28 +08:00   ❤️ 1


    想到大家都是差不多的程序员,再考虑 sensor 本身的可靠性,所以别太掉以轻心了,剪切这种事情是有几率发生的

    而且我记得电梯是有很多套调度策略可以换的,有时候看它弱智,其实是被改到省电模式了... 毕竟物业和租户的利益并不是一致的

    据说以前还有某些小众奇葩的电梯装的 XP 来支持远程更新,但是也因为这个被搞了很多后门
    SelFree
        9
    SelFree  
       2021-07-09 16:39:06 +08:00   ❤️ 22
    lusi1990
        10
    lusi1990  
       2021-07-09 16:41:08 +08:00
    不会
    la9998372
        11
    la9998372  
       2021-07-09 16:51:02 +08:00   ❤️ 1
    自动化专业的本科生有门 PLC 的课程,一般就会写电梯的程序。西门子还举办过电梯大赛
    Jface
        12
    Jface  
       2021-07-09 16:54:37 +08:00
    每次都想会想电梯去停留的逻辑怎么写的, 同时很多人按下到底咋计算
    还有一个问题: 大家下楼按电梯, 是按往上走 还是往下的那个?
    按往下走的: 我要下去, 所以按往下
    按往上走的: 我要下去, 电梯应该从下面来接我, 所以按上让电梯上来
    mitong3269
        13
    mitong3269  
       2021-07-09 17:00:50 +08:00 via iPhone
    plc 课程上学过,自己写过简单的电梯的梯形图
    那种高楼层,短时间大流量的不知道怎么来了,让人头大
    IgniteWhite
        14
    IgniteWhite  
       2021-07-09 17:02:15 +08:00 via iPhone
    有限状态机。PLC 之类的就够,硬件逻辑直接实现,不用 CPU 跑高级语言
    baiyi
        15
    baiyi  
       2021-07-09 17:06:33 +08:00   ❤️ 6
    我会经常想这个电梯的关门按钮是不是安慰剂效应
    paradoxs
        16
    paradoxs  
       2021-07-09 17:07:07 +08:00
    程序满足不了实际情况。

    你看人稍微多一点的大厦,早高峰期都有配备专门的按电梯的小姐姐
    xiaoyudesu
        17
    xiaoyudesu  
       2021-07-09 17:13:03 +08:00
    @Jface 第一种 去下面就按下
    A388
        18
    A388  
       2021-07-09 17:14:48 +08:00
    @SelFree 实际情况还要考虑人性的问题。比如,一个人坐电梯到 30 楼,但是上升到了 2 楼,这时候 1 楼有人要坐电梯了。最好的办法就是 2 楼的电梯,重新下到 1 楼。但是实际上不行
    krixaar
        19
    krixaar  
       2021-07-09 17:24:46 +08:00
    @Jface 底层一般只有个上按钮,顶层一般只有个下按钮,如果按照“把电梯叫过来”的逻辑,这两个位置说不通,底层需要按按钮的时候,电梯在你上方应该按下,顶层同理。所以我倾向于人下楼按下,上楼按上。
    RyuZheng
        20
    RyuZheng  
       2021-07-09 17:30:28 +08:00
    会,广州高德置地广场的写字楼,电梯是在外面输入楼层的,进去后不能按(其实有按钮,但是是锁起来的用来维修时用的小按钮),进去后不能按,进去后不能按,重要事情说 3 遍;

    外面按去哪个楼层就算了,主要是程序很傻,有一定队列数,比如上班 /下班时间,如果有 5 个楼层按了去 B1 层,第 6 个楼层怎么按都是电梯已满,请稍后;他不是按照电梯是否超载来判断已满的;

    但是你可以按去其他楼层,比如 15 到 10 楼的;

    于是每到上班 /下班时间,就看到很多人在不停地按去不同的楼层,以搭上这个电梯。。。。。。

    据说电梯是外国进口的,可能外国的程序员没想到珠江新城那么多人吧。。。。无力吐槽
    Carlgao
        21
    Carlgao  
       2021-07-09 17:30:40 +08:00
    会想到机械硬盘的调度算法
    kiracyan
        22
    kiracyan  
       2021-07-09 17:37:35 +08:00   ❤️ 1
    多电梯调度才是关键
    RyuZheng
        23
    RyuZheng  
       2021-07-09 17:41:17 +08:00


    给大家看看这个电梯的样子,电梯间很好看很高级,在红色圆圈的面板上输入楼层,但是实际非常不好用
    yyyyda
        24
    yyyyda  
       2021-07-09 18:24:30 +08:00
    @RyuZheng 腾讯大楼好像就是这样的
    agagega
        25
    agagega  
       2021-07-09 19:24:02 +08:00 via iPhone
    写过一次之后就不再想了。而且考虑到电梯随时都有可能有人在任何位置按按钮,所以很难达到整体最优解。
    Cloutain
        26
    Cloutain  
       2021-07-09 19:26:44 +08:00
    要看什么规格的电梯,要是小区里面那种就比较简单。要是大型办公楼那种,可以做很多设置。
    liaojl
        27
    liaojl  
       2021-07-09 19:35:37 +08:00 via iPhone
    我记得大学操作系统里讲磁盘的时候有个电梯调度算法。
    young1lin
        28
    young1lin  
       2021-07-09 19:37:01 +08:00
    国外有个 http://play.elevatorsaga.com/#challenge=2

    我之前玩过,当时玩得不太好
    kensoz
        29
    kensoz  
       2021-07-09 19:39:25 +08:00
    电梯程序,这种涉及硬件的东西,为了安全性,控制程序和测试简直就是噩梦。
    yanzhiling2001
        30
    yanzhiling2001  
       2021-07-09 19:40:55 +08:00
    我还真想过电梯的调度算法。可以电梯来了就打断了,下次还得从头想
    Heartbleed
        31
    Heartbleed  
       2021-07-09 19:49:57 +08:00
    操作系统里讲磁盘,最简单的一般都遵循“顺路“原则吧
    guog
        32
    guog  
       2021-07-09 19:50:31 +08:00 via Android
    @Jface 那是旧式电梯,新式是按目标楼层,没有上下
    tyr0ne
        33
    tyr0ne  
       2021-07-09 20:42:01 +08:00 via iPhone
    坐电梯的时候不会想,等电梯的时候会
    pkookp8
        34
    pkookp8  
       2021-07-09 21:02:32 +08:00 via Android
    会,明明再加一个人就超重,就是每层都停
    mainlong
        35
    mainlong  
       2021-07-09 21:31:45 +08:00
    我观察了楼道的电梯,26 层两部电梯,没用的时候,早上一般都是一台在一楼,一台在 10 楼,下班的时候一般都在一楼。

    也就是,电梯没人用且没人按,会按如上楼层停置,
    ouqihang
        36
    ouqihang  
       2021-07-09 22:40:01 +08:00 via Android
    @pkookp8 有些电梯就很智能,满员了就不停。然后外面的人看到电梯怎么走过了不停,低楼层的噩梦。
    JerryCha
        37
    JerryCha  
       2021-07-09 23:24:57 +08:00
    论电梯集群如何做负载均衡
    someonedeng
        38
    someonedeng  
       2021-07-10 01:09:14 +08:00
    会思考逻辑,然后发现事情没这么简单。。
    ohiu
        39
    ohiu  
       2021-07-10 02:22:56 +08:00
    @RyuZheng 智能分配电梯,本来用的就比较少,至少 4 台同时运行才能体现效率
    HankLu
        40
    HankLu  
       2021-07-10 03:45:19 +08:00   ❤️ 1
    不止电梯,看到任何带电的都会想他是怎么控制的
    lzz120
        41
    lzz120  
       2021-07-10 04:52:36 +08:00
    经典面试题
    dickinpit
        42
    dickinpit  
       2021-07-10 07:15:52 +08:00
    不是程序员,但不爽的电梯体验多了,挤在里面的时候也会想。今天知道了,原来是 PLC
    gyf304
        43
    gyf304  
       2021-07-10 07:23:40 +08:00 via iPhone   ❤️ 1
    电梯逻辑其实非常复杂 一些常见的运作模式: https://elevation.fandom.com/wiki/List_of_elevator_special_modes
    reiji
        44
    reiji  
       2021-07-10 09:42:07 +08:00
    学单片机的时候写过简单的实现,当时觉得做嵌入式的真厉害啊
    chenyu0532
        45
    chenyu0532  
       2021-07-10 09:46:40 +08:00
    据说面试高级游戏策划会考电梯逻辑,不知道真假。。没接触过大牛策划
    736531683
        46
    736531683  
       2021-07-10 09:54:45 +08:00
    人机交互课讲过和电梯交互的逻辑
    fenglangjuxu
        47
    fenglangjuxu  
       2021-07-10 10:01:27 +08:00
    经常会想 不仅是电梯 好多事情都会去想 代码逻辑咋写的
    ligo
        48
    ligo  
       2021-07-10 10:17:26 +08:00 via Android
    搞复杂了不可预测,会焦虑。
    winglight2016
        49
    winglight2016  
       2021-07-10 10:25:38 +08:00
    10 年前给团队布置过这个电梯算法的题目,大家都是口头讨论一下,也没有特别好的方案——据说好的算法可以买个上百万
    zxhy
        50
    zxhy  
       2021-07-10 11:22:34 +08:00
    会看上面的广告,思考怎么切图。。
    xieyingli
        51
    xieyingli  
       2021-07-10 11:33:25 +08:00 via Android
    @baiyi 哈哈哈所以到底是不是
    wdssmq
        52
    wdssmq  
       2021-07-10 11:43:52 +08:00
    我比较好奇 电油汀 的逻辑。一个高中低三档的旋钮,还有另一个旋钮,后一个旋钮转到响一声时灯会亮,运行一段时间就会断掉,再继续转又会亮,或者等温度降下来。

    感觉像是设置温度 阈值,到达温度后就会停止工作,凉下来通电。问题是按这样理解的话阈值只能调高不能调低吧。
    snw
        53
    snw  
       2021-07-10 12:01:11 +08:00 via Android
    @RyuZheng
    我们写字楼比这个好些,不同点在于要去的楼层不是自己按的,而是电梯厅门口闸门刷卡时根据卡来判断去哪层,这样就不存在乱按楼层的情况。刷完卡就自动分配一部电梯。
    snw
        54
    snw  
       2021-07-10 12:12:47 +08:00 via Android
    就算只有一部电梯,我也会想临界情况。
    比如电梯向下经过 10 楼时,9 楼有人按了向下按钮,停不停?同样经过 10 楼时,8 楼按了停不停? 7 楼呢? 6 楼呢?

    大人教育小孩不要乱按楼层时,常常说楼层按太多电梯会出故障,不知道是否真的有电梯程序太烂遇到这种问题。相反的有“电梯下坠时立刻按下所有楼层能自救”这种流言。。。
    corvofeng
        55
    corvofeng  
       2021-07-10 12:14:45 +08:00 via Android
    我会想, 电梯里面有没有特殊的组合能有最高特权。 比如按 3 个 6 能到特权模式, 然后想去哪楼都能马上去(^_^メ)
    Tompes
        56
    Tompes  
       2021-07-10 12:38:06 +08:00
    本科汇编语言实践课就是实现个电梯调度程序
    opentrade
        57
    opentrade  
       2021-07-10 12:50:42 +08:00
    会,一出问题就想到 bug
    Jasonkkk
        58
    Jasonkkk  
       2021-07-10 12:54:35 +08:00
    北航本科会用 java 做多线程电梯,a little smart,和现实里的还是有差距的
    24bit
        59
    24bit  
       2021-07-10 13:37:23 +08:00
    Biwood
        60
    Biwood  
       2021-07-10 13:42:57 +08:00 via iPhone
    一直蛮好奇边界情况的判断是怎么做的,比如正在下行的电梯离我的楼层越来越近,距离最少是几层的时候按按钮它才会停,应该会涉及到电梯质量与惯性等相关的计算
    danhahaha
        61
    danhahaha  
       2021-07-10 14:54:51 +08:00
    @wdssmq 那玩意没有逻辑可言,本质就是 3 档开关接 3 个温度开关,另一个旋钮应该是定时,没有任何芯片代码,纯电路板
    jakec
        62
    jakec  
       2021-07-10 16:51:16 +08:00
    @Jface 这个思路是有点厉害
    WellLee
        63
    WellLee  
       2021-07-10 17:00:38 +08:00
    有些电梯还会在内部设置只有刷卡才能达到别的楼层
    wdlth
        64
    wdlth  
       2021-07-10 17:37:30 +08:00
    公司的那几部很奇葩,经常出现一堆楼层挤到一个电梯,然后每层都停……
    x009ba1
        65
    x009ba1  
       2021-07-11 13:01:43 +08:00
    @liaojl 磁盘的那个电梯调度算法不一样,它不管你是“上”还是“下”的,只要你在它的前进方向上它就会“开门”,现实生活里的电梯用不这个了
    seedscoder
        66
    seedscoder  
       2021-07-11 18:45:46 +08:00
    上个月找工作,就遇到一个一个面试官,问我:“如何设计一套基本可用的电梯程序”
    RyuZheng
        67
    RyuZheng  
       2021-07-11 22:01:50 +08:00
    @yyyyda # 24 我找到这款电梯的型号,TKE zeta300,好像是个德国牌子 https://www.tkelevator.com.cn/cn-zh/products/elevators/zeta300/

    B 站还有人专门拍电梯的 https://www.bilibili.com/video/BV1WJ411P76X?p=2

    @ohiu # 39 你看我发的图,就是 4 台电梯,2 个仪表盘,输入后会分配其中一台的;

    这样更加噩梦,高峰期,电梯间都是人,我站在 D 口,分配到 A 电梯,根本挤不上去,最后只能慢慢等到 D 电梯开门,上去较高楼层,再走楼梯下去。。。

    @snw # 53 刷卡这种比较好,不过这个电梯感觉就是程序有点问题,一开始大家也只会按想要去的楼层,但是它排队得太少,根本排不上;刷卡就让大家只能老老实实地等了。
    bintianbaihua
        68
    bintianbaihua  
       2021-07-11 23:08:49 +08:00
    zhujq
        69
    zhujq  
       2021-07-12 10:03:55 +08:00
    会看进来的妹子好不好看
    ReputationZh
        70
    ReputationZh  
       2021-07-12 11:08:27 +08:00
    @SelFree 兄弟,怎么让电梯在等待时,有人按下上楼或者下楼键,前往按键楼层?没玩懂。
    SelFree
        71
    SelFree  
       2021-07-12 11:16:49 +08:00
    @ReputationZh http://play.elevatorsaga.com/documentation.html#docs

    floor 有`up_button_pressed`、`down_button_pressed`事件
    hitaoguo
        72
    hitaoguo  
       2021-07-12 14:00:26 +08:00
    我们这五部电梯,有三个停一楼,你在其中一个一楼的门口按上楼的按钮,然后另外两个一楼的电梯其中一个开了,就不开你按的这个。
    IvanLi127
        73
    IvanLi127  
       2021-07-12 17:16:39 +08:00
    如果我有时间去想这个电梯的算法,那我一定不会去想它怎么实现的,因为它太差劲了,居然让我等了这么久。
    realpg
        74
    realpg  
       2021-07-13 10:05:17 +08:00
    第一天就发现了电梯程序的不智能甚至想拆了自己写。
    jiangbingo
        75
    jiangbingo  
       2021-07-13 17:14:51 +08:00
    曾从事电扶梯软硬件设计三年,电梯群控逻辑还是相当复杂的,特别是个性化和智能化需求越来越强烈的今天。PLC 早已经淘汰,开关量控制肯定做不到复杂的需求,更别说舒适性的乘坐体验,电梯控制主要有三大方面:逻辑控制,电机控制,安全控制。一条冷知识:不少电梯安装有称重系统,能感知到轿厢里是否有人以及多少。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1040 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:38 · PVG 06:38 · LAX 15:38 · JFK 18:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.