1. 项目全景与需求分析

大家好,我是这次嵌入式电梯控制项目的主讲工程师。做嵌入式开发这么多年,电梯控制系统一直是我觉得最有意思的项目之一。为什么?因为它离我们生活最近,却又最容易被忽视。你每天坐电梯上下楼,可能从没想过——背后那套系统是怎么保证你安全到达的?

这一章,我们先从全局视角看看电梯控制系统到底长什么样。说白了,就是搞清楚我们要做什么,以及为什么要这么做。

电梯控制系统概述

电梯控制系统,本质上是一个实时嵌入式系统。它负责接收乘客的指令,控制电机运转,管理开关门,还要时刻盯着各种传感器。

我习惯把电梯系统分成三层来看:

  • 人机交互层:包括轿厢内的楼层按钮、开关门按钮,以及每层楼的外呼按钮。这是乘客直接接触的部分。
  • 控制逻辑层:核心的大脑。它接收按钮信号,结合当前电梯状态,决定下一步动作——是上行、下行,还是开门。
  • 执行与感知层:电机驱动、门机控制、限位开关、称重传感器、平层传感器等。这些是真正干活的硬件。

嗯,这里要注意一点:很多初学者容易把控制逻辑和硬件驱动混在一起写。我在项目中遇到过,代码一多就乱成一锅粥。所以从一开始,就要有分层设计的意识。

核心功能需求

电梯的核心功能,说白了就三件事:呼叫、开关门、楼层定位。我们一个一个来看。

1. 呼叫功能

呼叫分为两种:

  • 轿内呼叫:乘客在轿厢里按楼层按钮,告诉电梯我要去几楼。
  • 外呼:乘客在楼层等电梯,按上行或下行按钮。

你想想看,如果同时有多个呼叫,电梯该怎么响应?这就涉及到调度算法了。最简单的做法是先来先服务,但实际项目中很少这么干。我做过的一个项目里,用的是方向优先算法——电梯先完成当前方向上的所有请求,再掉头处理反方向的。

举个例子:电梯在3楼,正往上走。这时候5楼有人按了下行,2楼也有人按了下行。电梯会先到5楼,再继续上行处理更高楼层的请求,最后才掉头去2楼。这样能减少乘客的等待时间。

2. 开关门功能

开关门看似简单,其实坑不少。我给大家列几个关键点:

  • 开门条件:电梯必须平层且停止,才能开门。这是安全底线。
  • 关门防夹:门在关闭过程中,如果检测到障碍物(比如有人伸手),必须立即停止并重新开门。
  • 超时关门:如果门开着太久没人操作,系统会自动关门,避免浪费能源。

我曾经在一个项目里遇到过这样的问题:电梯门关到一半,突然又弹开了,反复好几次。排查了半天,发现是防夹传感器的灵敏度调得太高了,连门缝里的灰尘都当成障碍物。嗯,这种细节,调试的时候一定要留意。

3. 楼层定位

电梯怎么知道自己当前在几楼?这靠的是平层传感器。通常每层楼都安装一个感应片或磁铁,电梯轿厢上装有传感器。当传感器经过感应片时,系统就知道到哪一层了。

但这里有个问题:如果电梯刚上电,系统不知道自己在哪。这时候需要自学习——电梯从底层开始,以低速运行,逐层记录传感器信号的位置。我建议在项目初期就把自学习功能做进去,不然后面调试会非常痛苦。

核心功能总结:呼叫、开关门、楼层定位,这三者必须协同工作。任何一个环节出问题,电梯都无法正常运行。

非功能需求

功能需求决定了电梯能不能用,非功能需求决定了电梯好不好用、安不安全。我个人认为,非功能需求才是嵌入式系统的灵魂。

1. 实时性

电梯是典型的实时系统。什么叫实时?就是系统必须在规定时间内对外部事件做出响应。

举个例子:乘客按了关门按钮,如果系统要等500毫秒才响应,乘客会觉得很迟钝。我一般要求:

  • 按钮响应时间 < 50ms
  • 开关门指令响应 < 100ms
  • 安全信号(如限位开关触发)响应 < 10ms

为什么会这么严格?因为安全信号一旦延迟,可能造成事故。我在项目中用过FreeRTOS,把安全检测任务放在最高优先级,确保它不会被其他任务阻塞。

2. 安全性

电梯的安全性,再怎么强调都不为过。我把它分成两类:

  • 电气安全:包括过流保护、过压保护、接地保护等。这些通常由硬件电路实现,但软件也要做相应的检测。
  • 功能安全:比如门锁检测、超速保护、限位保护等。软件必须确保在异常情况下能安全停车。

警告:千万不要为了省成本而省略安全功能。我曾经见过一个项目,为了省一个门锁传感器,结果电梯在门没关好的情况下运行,差点出事。安全功能一个都不能少。

3. 可靠性

电梯是7×24小时运行的设备,可靠性要求极高。我常用的几个手段:

  • 看门狗定时器:防止程序跑飞或死锁。一旦系统无响应,看门狗会自动复位。
  • 冗余设计:关键信号(如平层传感器)可以设计双路检测,一路失效时另一路还能工作。
  • 故障记录:把异常事件记录到EEPROM中,方便后期排查。

我记得有一次,客户反映电梯偶尔会停在两层楼之间不动。查了几天没头绪,最后翻看故障记录,发现是平层传感器信号偶尔丢失。后来加了软件滤波,问题就解决了。所以说,故障记录这个功能,平时不起眼,关键时刻能救命。

小技巧:在项目初期就规划好故障码的定义和记录机制。不要等到出了问题再临时加,那样容易遗漏。

需求分析总结

好了,这一章的内容就到这里。我们梳理了电梯控制系统的三层架构,明确了三大核心功能,也讨论了实时性、安全性和可靠性这些非功能需求。

你可能会问:这些需求怎么落地到代码里?别急,后面的章节我们会一步步实现。下一章,我会带大家搭建开发环境,选型主控芯片,然后开始写第一行代码。

记住一句话:需求分析做得越细,后面踩的坑越少。这是我做了十几年嵌入式项目最深的体会。

我们下一章见。