首页 / 资讯中心 / 文章详情

基于PLC的四层电梯控制系统设计与实现全解析

基于PLC的四层电梯控制系统设计与实现全解析 ★ FEATURED ARTICLE
差不多每个做自动化的人手里都存着一个“四层电梯”的项目。从课程设计到毕业设计从实验室到技能竞赛基于PLC的四层电梯控制系统几乎是一个绕不开的标准题型。我最初做这个题目的时候也以为它简单——四层而已嘛几个按钮一个电机能复杂到哪去真正动手之后才发现电梯的核心难点根本不在楼层多少而在呼梯响应、方向判断、安全互锁这几块逻辑。这篇文章把整套系统的设计过程完整拆开硬件选型、I/O分配、控制逻辑、梯形图实现、调试踩坑再到配套报告和讲解材料怎么组织。不管你是正在做毕设还是刚接触PLC想找个练手项目这套思路都能直接拿来用。1. 四层电梯为什么是PLC课的“经典题型”1.1 题目背后的核心考核点自动化方向的学生课程设计十有八九绕不开电梯。别看电梯只是上下几层楼它其实是一个典型的多输入多输出逻辑系统有按钮类输入内选、外呼有状态类输入平层、限位、门开关有执行输出方向、开关门、显示还有时序控制延时、停靠和安全保护互锁、急停。四层电梯这个规模不多不少恰好能把这一套考核点都装进去又不至于像高层电梯那样要处理复杂的群控调度算法。我最初做四层电梯的时候以为难点是“怎么让电机转”写过几段程序之后才意识到真正的难点是“怎么正确地决定什么时候转、往哪转、在哪停”。这个问题要想清楚就要同时想清楚输入输出关系、控制逻辑和状态记忆三个层次。所以四层电梯最锻炼人的地方不是编程语法而是结构化思维能力——这也是为什么很多老师都爱用这个题目来检验学生。不少同学拿到题目就开始写梯形图最后程序乱成一团。正确做法恰好相反先定义清楚输入输出再用状态图和规则表把逻辑捋顺最后才动手写程序。顺序反了后面每一步都要返工。1.2 先看懂电梯的物理模型设计前先把物理对象拆开看。一套四层电梯模拟控制系统主要由四部分组成井道与轿厢、平层检测元件、上下行驱动与门机构、操作与显示面板。轿厢在井道里上下运行每一层都装有限位或接近开关用于检测轿厢是否平层轿厢上还装有门机构门开到位、门关到位各有一个信号反馈每层候梯厅有上下行呼梯按钮轿厢内则有各层选层按钮。控制信号流大致是这样乘客按下呼梯按钮按钮信号进入PLC输入端子PLC在输入映像区读到这个信号用户程序根据当前楼层、已有呼梯记录、当前运行方向做判断再通过输出映像区驱动输出端子进而控制上下行接触器和门继电器。楼层显示和方向指示灯也是同一套输出回路里的执行机构。这个信号流其实就是后面报告里“总体方案”一节的骨架。我习惯把每个信号用一条线画在纸上从按钮到PLC再到执行机构画完再设计I/O表思路会特别顺。如果连这个都懒得画后面接线和写程序时就会反复翻图纸。1.3 设计任务不是“写程序”一件事标题里写了“设计源文件万字报告讲解”说明这个项目交付的不只是梯形图。完整交付一般有四条线硬件设计选型、I/O分配、接线图、软件设计程序结构、梯形图段、验证调试仿真、实物运行、测试记录、文档讲解报告、PPT、现场演示。这四条线不是四个独立文档而是同一个设计的不同侧面。程序里的每个I/O点都能在I/O表里找到I/O表里的每个点都能在接线图上找到报告里的每个测试记录都能在程序逻辑里复现。做项目时保持这种“一一映射”意识后面写报告会轻松很多。很多人最后写报告痛苦就是因为前面没有留过程记录所有内容都是凭借记忆重新编自然又费劲又容易漏洞百出。2. 硬件选型与输入输出分配先把点数和接线算清楚2.1 先算点数再选PLC很多人第一步就跑去选PLC其实不对。无论如何先把手头的信号数清楚。四层电梯的输入信号包括4个轿厢内呼按钮1层到4层各一个、6个厅外呼梯按钮1层只有上行、4层只有下行2层和3层各有上行和下行、4个平层检测信号每层一个这是常规简化方案、2个门状态信号门开到位、门关到位、2个上下极限保护开关、1个急停按钮合计19个输入。输出信号包括2个方向接触器上行、下行、2个门继电器开门、关门、4个楼层显示位做BCD编码时4位足够也可以直接驱动七段码、2个方向指示灯、1个到站指示蜂鸣器或到站钟。按精简显示方案输出大约9到11个点。考虑到以后可能要加东西也考虑到I/O模块的点数是一块一块买的我习惯按计算点数的1.2倍到1.5倍选型。按19个输入、9个输出来看选一台总点数为24的入门级小型PLC最合适如果入门级是16入16出的基本型输入侧可能要用扩展模块补几个点。这个数量级的选择在实验室和课程设计里非常常见。补充一点选型思路如果只是做模型演示继电器输出型就够了价格低接线直观如果要驱动变频器做速度闭环再考虑晶体管输出。四层电梯用继电器输出完全没问题性价比也最高。2.2 一套可直接参考的I/O分配表I/O分配没有唯一答案但原则一致同类信号集中编址运行相关、门相关、显示相关分开输入点从低地址到高地址分层排列方便程序里对照。下面是我常用的一套分配点号按常见编址方式举例具体数值可以按你手里的PLC型号平移。输入信号分配点号示例信号名功能说明I0.0内呼1F轿厢内1层选层按钮I0.1内呼2F轿厢内2层选层按钮I0.2内呼3F轿厢内3层选层按钮I0.3内呼4F轿厢内4层选层按钮I0.4外呼1F上行1层厅外上行按钮I0.5外呼2F上行2层厅外上行按钮I0.6外呼3F上行3层厅外上行按钮I0.7外呼2F下行2层厅外下行按钮I1.0外呼3F下行3层厅外下行按钮I1.1外呼4F下行4层厅外下行按钮I1.2平层1F1层平层/限位信号I1.3平层2F2层平层/限位信号I1.4平层3F3层平层/限位信号I1.5平层4F4层平层/限位信号I1.6门开到位门完全打开反馈I1.7门关到位门完全关闭反馈I2.0急停急停按钮常闭I2.1上限位井道超上限保护I2.2下限位井道超下限保护输出信号分配点号示例信号名功能说明Q0.0上行接触器驱动轿厢上行Q0.1下行接触器驱动轿厢下行Q0.2开门继电器驱动开门Q0.3关门继电器驱动关门Q0.4楼层显示ABCD码第1位Q0.5楼层显示BBCD码第2位Q0.6楼层显示CBCD码第3位Q0.7楼层显示DBCD码第4位Q1.0上行指示灯方向指示Q1.1下行指示灯方向指示Q1.2到站钟到站提示这套分配的好处是层次分明I0.0到I0.3是内呼I0.4到I1.1是外呼I1.2到I1.5是平层写梯形图时查点号几乎不用翻表。你可以保留这个分组结构只修改点号值去匹配自己的PLC。2.3 外围元件接线细节I/O表只是纸上规划真正接线的时候有几个细节直接影响稳定性和安全性。按钮类输入建议用常开触点急停、极限保护这类安全信号用常闭触点。原因很简单常闭接线一旦断线或掉线PLC读到的信号就相当于急停生效如果急停用常开线断了控制器根本不知道。这个习惯要养成很多现场事故就是这种细节引起的。平层检测开关要根据现场机械结构选。模型上常用行程限位开关或光电接近开关实梯上常用感应式接近开关或门区传感器。用接近开关时要注意极性匹配NPN和PNP的输出极性不同接到PLC输入公共端时很容易接反输入指示灯不亮这是最常见的低级错误。接线前务必先看PLC输入电路图和接近开关的接线定义。接触器线圈是感性负载断开瞬间会产生反向电动势。PLC输出触点直接驱动继电器或接触器时最好在感性负载两端并联RC吸收回路或续流二极管直流负载用二极管交流负载用压敏电阻或RC。不加吸收的后果是触点寿命下降严重时会让PLC输出点烧坏。很多课程设计省略这一步也能跑但我建议你加上这也是报告里“可靠性设计”的加分项。3. 控制逻辑设计抓住电梯的三条基本原则3.1 单方向连续运行与最远换向如果把控制逻辑比作人做事的规则电梯最重要的规矩就是“单方向连续运行”轿厢一旦确定方向就坚持跑完这个方向上的任务优先处理同方向的呼梯把反方向的呼梯先记在账上等换向之后再处理。为什么会定这条规则举个反例就明白了。电梯在1楼2楼下呼、3楼上呼同时亮。如果采用“就近优先”先上到2楼接人关门后下行可是3楼还有人等着要下楼于是电梯又要掉头上行再下来。一趟活跑出三次方向变化乘客体验差电机频繁启停也容易坏。采用“同向最远”策略电梯从1楼出发先把高于1楼的所有呼梯处理完——3楼上呼算顺路到了3楼再接去低层的乘客下行过程中顺路处理2楼下呼。一次上行、一次下行所有呼梯清空。所以在控制程序里运行方向一旦建立就不会因为一个反向呼梯而立刻改变电梯一直按当前方向跑直到当前方向上没有呼梯了才开始下一个方向的任务。这个“直到上方或下方呼梯清空”的判断就是换向条件。3.2 空闲状态的方向选择与目标层判断电梯停在某层没有方向时怎么选方向常见做法是先看轿厢上方有没有呼梯有则设方向为上行并取所有呼梯中的最高层作为本次上行目标如果上方没有呼梯再看下方有则设方向为下行取所有呼梯中的最低层作为目标。上下都没有呼梯就保持待机开门状态。拿刚才的例子再推一遍电梯在1楼待机2楼下呼、3楼上呼、4楼内呼都在。因为上方有3楼和4楼的呼梯电梯设为上行本次上行目标取最高层4楼上行过程中3楼上呼、4楼内呼到达后都会停2楼下呼先记录不响应。到达4楼后上方呼梯清空电梯换向为下行下行过程中再处理2楼下呼。整个过程方向变化只发生一次停靠两次上行加一次下行非常干净。这套逻辑在梯形图里落地时要先把“上方是否有呼梯”和“下方是否有呼梯”算出来而不是直接对每一层单独判断。我习惯用两个中间变量UpRemain表示当前方向为上行时还有没有该响应的呼梯DownRemain类似。方向输出和这两个变量配合程序结构会非常清爽。3.3 开关门与安全保护的双重互锁开关门逻辑看起来只是两个继电器但它是事故高发区。电梯不能在运行中开门门没关好也不能走。对应到程序里就是两个互锁运行输出上行或下行断开时才能开门运行输出得电时门状态必须先满足“门关到位”。另一个必须做的是方向互锁。上行接触器和下行接触器在物理上绝对不能同时吸合否则电机绕组短路控制柜直接冒火花。程序里要把上行输出、下行输出互相串联对方的常闭触点硬件上更要在接触器线圈回路里做机械互锁常见接法是上行接触器线圈回路串下行接触器的辅助常闭触点。两套互锁同时做才是可靠方案。除此以外急停信号要直接接入PLC程序的最前端并用常闭触点串联到所有输出逻辑里上下极限保护信号触发时即使是程序异常导致电梯越过平层也必须强制切断方向输出。这些安全逻辑在测试时看着“用不上”但万一出现问题它们是最后一道防线。4. 把逻辑翻译成梯形图程序结构与关键段实现4.1 程序总体框架一段式梯形图也能写但四层电梯逻辑比较多全塞在主程序里后期很难查。我习惯按功能拆成几个子程序主程序每一扫描周期顺序调用一遍。大致模块划分初始化子程序负责清空呼梯记录、把当前楼层复位为1楼或读取掉电保持值楼层检测子程序负责根据平层信号刷新当前楼层呼梯处理子程序负责登记内外呼、到达后消号方向与目标层子程序负责生成方向状态和本次目标层运行控制子程序负责启动、停靠、换向开关门子程序负责开门、延时、关门显示子程序负责给楼层显示和方向灯输出编码。写梯形图时我习惯先写一个总框架把子程序调用和主流程搭好再挨个子程序填空。这样即使写一半被打断回来也知道哪个功能去哪找。下面是一段用于说明思路的伪代码不是任何品牌的具体指令翻译成梯形图时逐条对应即可主程序 调用 初始化 调用 楼层检测 调用 呼梯处理 调用 方向与目标层 调用 运行控制 调用 开关门 调用 显示 楼层检测 如果有 平层1F 的上升沿设置 当前楼层 : 1 如果有 平层2F 的上升沿设置 当前楼层 : 2 如果有 平层3F 的上升沿设置 当前楼层 : 3 如果有 平层4F 的上升沿设置 当前楼层 : 44.2 楼层位置检测与方向互锁的实现楼层检测最稳的做法是取平层信号的上升沿。为什么不用电平直接用因为轿厢经过某层时平层开关可能被碰一下又弹回来产生脉冲抖动。如果是电平判断抖动可能让当前楼层连续跳变两三次用上升沿加滤波后一个抖动只产生一次有效的“到达”事件。梯形图里可以用一个定时器做20毫秒延时滤波再把滤波后的信号接到上升沿指令上。方向互锁在梯形图里很直白上行输出线圈的回路串入下行输出的常闭触点下行输出线圈的回路串入上行输出的常闭触点。这一条在梯形图里加两个触点就够了但很多初学者漏掉。如果硬件互锁没接只靠程序里这两个触点也算一道软件防线最理想是硬件加软件都上。运行控制段落里换向停靠的逻辑是上行过程中一旦当前位置平层且当前层号等于本次目标层即同向最远呼梯层先清方向输出再启动开门请求如果还没到目标层但到了顺路呼梯层停靠开门后继续原方向。这个“停靠但保持方向”的判断要靠呼梯消除逻辑配合。4.3 呼梯记忆与消除呼梯记忆是状态保持的经典应用。最直接的错误写法是把呼梯按钮信号直接接指示灯按钮一松灯就灭乘客的呼梯记录就丢了。正确做法是用置位指令登记呼梯用复位指令在响应后消除。内呼和外呼要分开存储。最稳妥是把每一层的内呼、上行外呼、下行外呼各自分配一个保持继电器。到达某个楼层后内呼和当前方向的同向外呼都消号反方向外呼不消。例如电梯上行到3楼停靠3楼上呼消号但3楼下呼不消因为下行乘客需要在电梯换向后继续被服务。这一点在程序里写漏的话电梯会漏接乘客。呼梯记忆的物理意义可以用便签纸类比电梯系统里挂着一排便签写着“3楼有人要去更低楼层”电梯经过3楼时把这张便签撕掉如果电梯只是经过但方向不对便签就必须留着不然任务就丢了。4.4 停靠与开关门状态机开关门很适合用一个简单的状态机描述空闲、运行、开门等待、关门中。电梯停靠后输出开门信号门开到位反馈到来后启动开门维持延时一般设5到8秒延时结束开始关门关门到位反馈到来后清除当前层呼梯并继续判断剩余呼梯如果没有呼梯就转入空闲状态。关门过程中如果安全触板被触发要立即停止关门并重新开门。课程设计模型上不一定有真实安全触板可以用一个模拟输入点接入常闭触点来仿真这个功能。报告里把这部分写成“安全保护功能”是从控制逻辑走向工程实用必须补上的一块。开门与运行的互锁在梯形图里的位置是运行条件中必须串联“门关到位”的常开触点开门条件中必须串联“上行输出下行输出同时断开”的组合判断。这两处写好了逻辑上就不会出现“电梯一边走一边开门”的荒唐局面。4.5 楼层显示与方向指示显示部分可以做成BCD编码输出四个点外接译码电路驱动七段数码管也可以直接用PLC输出七段码那样要用7个输出点。四层电梯只需显示1到4四个BCD输出点足够了还能省点。如果不外接触码芯片程序里要用比较指令或译码表把当前楼层值翻译成对应的BCD码。方向指示灯有个容易被忽略的细节灯不应该直接接在接触器输出上而应该由程序里“方向状态变量”来点亮。原因是电梯到站时接触器已经断电但乘客需要知道下一步运行方向如果灯跟着接触器走停靠时灯会熄灭很不合理。我一般增加两个保持型状态位方向状态上行、方向状态下行它们决定方向灯接触器只是执行机构的命令。5. 从仿真到调试三个典型坑5.1 仿真阶段怎么验证逻辑程序写完先别急着上实物用仿真把逻辑跑通能省大量时间。仿真的核心方法是把输入点当按钮开关手动强制点位观察输出状态。不要随机乱按要有测试清单。我的测试清单一般覆盖几类典型场景单层内呼、多层内呼、同向多个外呼、顺路加反向呼梯同时存在、本层呼梯、急停触发、运行中开门请求。每一个用例都要记录“初始状态、操作、预期输出、实际输出”。例如用例初始状态操作预期输出1电梯1楼待机按3楼内呼上行灯亮、轿厢上行、到3楼停、开门延时、关门后待机2电梯1楼待机按3楼上呼4楼下呼先上行到3楼开门关门后继续上行到4楼之后换向下行3电梯2楼待机按2楼下呼开门接下方乘客方向为下行4电梯上行中按当前层外呼到达该层后停靠并开门保持原方向这类表格留在后面调试记录里报告“系统调试”一章直接可用。仿真阶段能发现大部分逻辑顺序问题尤其是方向判断和呼梯消除的配合。5.2 典型坑一平层开关抖动导致楼层误判这个坑我在模型上踩过。用行程限位开关做平层检测轿厢经过楼层时开关被压合由于机械撞击信号在几个毫秒内来回抖动如果程序直接用电平判断楼层当前楼层寄存器会连续更新两三次轿厢明明停在3楼显示却跳到4楼又回到3楼严重影响停靠判断。解决办法有两层。第一层用定时器做20毫秒左右的输入滤波只有信号持续稳定后才生效第二层只用上升沿更新当前楼层一个抖动只产生一次有效到达。两层都加上后楼层显示基本不乱跳了。这个问题在仿真里很难发现上了实物才会遇到所以实物联调阶段一定优先测试平层信号的稳定性。5.3 典型坑二方向切换瞬间的接触器短路风险上下行切换是电梯调试里最容易出火花的地方。程序逻辑上先把上行输出复位再置位下行输出看起来是先断后合但PLC扫描周期、电磁接触器的机械释放时间都可能造成短暂重叠释放时间一般有几十到几百毫秒。如果上下行接触器同时闭合电源直接短接控制柜会跳闸甚至烧接触器。应对措施就是前面反复强调的双重互锁这里还要加一个“换向死区”检测到需要换向时先输出停止信号延时300到500毫秒再输出反向信号。延时可以用定时器实现。很多真实电梯的接触器控制都有这一小段死区时间不是多余是保护。5.4 典型坑三断电重启后电梯不知道自己在哪层当前楼层这个变量如果存在普通寄存器里PLC断电后就清零了。重新上电电梯不知道轿厢在几楼程序逻辑全乱。解决方法有两个层次如果PLC支持断电保持寄存器就把当前楼层、呼梯记录放进保持区如果不支持或不想依赖保持就在初始化子程序里做“回1楼找平层”的动作上电后清除方向强制下行直到1楼平层信号到位然后停止、开门、待机。回1楼初始化对课程设计来说最直观演示时也很有说服力按下启动键电梯自动回到1楼并开门观众一看就明白系统状态复位了。如果项目要求断电前停在哪层就保持在哪层那就用掉电保持寄存器再把当前楼层值写入保持区上电后直接读取。6. 配套报告与讲解怎么组织才能拿得出手6.1 万字报告的框架从需求到结论的逻辑闭环标题里提到“万字报告”这类报告最怕堆字数不怕没内容。其实设计做完之后报告只是把前面每一步的记录整理成文。我习惯按六个章节组织和实际工作顺序一致绪论与任务书、需求分析与总体方案、硬件设计、软件设计、系统调试与结果分析、总结与展望。章节之间要有逻辑链条需求分析里的每个功能在总体方案里要有对应模块总体方案里的模块在硬件设计和软件设计里要能看到具体实现调试章节要能回应前面提出的功能比如“方向互锁功能测试通过”“断电重启初始化测试通过”。每章都拿前面的内容当论据报告读起来就扎实不会空。写报告的时间安排也有讲究。我建议边做边记录不要等项目做完再补。调试时随手记的测试数据和现象到写报告时就是现成的“系统调试”素材I/O表在选型阶段就定稿硬件章节直接抄进去。6.2 讲解与演示的演示线索有程序也有报告之后讲解环节的核心是让人听懂“你是怎么设计的”而不是背概念。我的讲解顺序很固定先演示电梯完整跑一遍让所有人看到现象然后回到I/O表说明输入输出各管什么最后只挑两段核心逻辑展开讲——方向判定和停靠换向这是整个电梯最有含金量的地方。演示时不要即兴发挥提前把测试用例按顺序排好每到一种情况就说出对应预期。比如先演示“电梯在1楼2楼下呼、3楼上呼、4楼内呼同时按下时电梯会先上到4楼再下行处理2楼”这叫多次呼梯优先组合评委最关注的就是这种场景。如果现场出意外优先检查急停和门开关这两个最基础的信号大部分“电梯不动”的问题都出在安全链路上。6.3 拿到参考资料后怎么快速改成自己的设计很多同学会拿到别人整理的设计源文件、I/O表和报告作为参考是好事但直接改名提交一定会被问倒。正确用法是把它当对照检查清单自己先根据需求重新画I/O表和状态转移简图再去读参考程序的每一段搞清楚为什么这样写最后再看自己的模型和选型有哪些差异。具体来说拿到参考工程包后先花半小时把对方的I/O表和你的需求对一遍哪些信号多出来哪些信号缺了然后打开梯形图按模块逐个翻译成文字注释再用参考程序在仿真环境里跑一遍测试用例。完成这三步之后你已经理解得七七八八了剩下的就是按自己的命名规范重新组织程序、按自己的实物接线调整点号。如果只是照搬答辩时任何一个“为什么”都能按下暂停键。参考资料里的图片和接线图尤其要小心不同PLC的端子编号不同不同型号的公共端极性也可能不同。图片上画的是A端子你的实物可能是B端子直接照着接就会踩上面说过的极性坑。图纸只能用来理解原理不能用来替代自己选型的接线图。最后说一点个人习惯。我做这类控制系统从来都是先画I/O表和状态转移图再写梯形图。I/O表是系统跟外界打交道的接口状态转移图是程序运行的大脑这两张图出了问题后面全白搭。四层电梯做完之后你再去碰五层、六层甚至带群控的电梯调度思路都一样先把输入输出定义清楚再把运行规则说清楚最后才谈程序怎么编码。你只要把四层版本从头到尾完整走一遍这个顺序就会长在身上。
阅读完成 · 觉得有帮助?
咨询建站