简介:一份基于PLC的电梯控制系统设计PDF文档,面向自动化、建筑智能化及电气工程相关专业学生与工程技术人员,尤其适合正在开展PLC课程设计或毕业设计的读者参考。文档从电梯基本结构与可编程控制器工作原理入手,针对传统继电器接触器控制可靠性差、成本高、故障率高等问题,设计了一套基于西门子S7-200 PLC的四层电梯控制系统,涵盖轿内指令与厅外召唤信号的登记消除、选层定向、开关门运行、上下行控制及指层显示等功能模块,并使用组态王6.53完成上位机仿真验证,内容完整且贴近工程应用。整个资源为1个PDF文件,大小3.07MB,简洁便携,便于离线查阅与打印。目前该文档已有184人浏览学习,搭配原文的摘要、目录和详细设计流程,可帮助读者快速理清PLC电梯控制系统的整体架构与实现思路,也可作为相关课程报告或论文撰写的有力参考。
1. 电梯控制系统的核心不是电机正反转,而是状态机和安全联锁
电梯控制看起来就是“按下按钮,电梯走,到了停”,真动手做课程设计或整机调试时你会发现,大部分 PLC 程序都花在“能不能走”而不是“怎么走”上。门锁是否闭合、平层开关是否有效、安全回路是否断开、超载信号是否误报,任何一条不满足,电机都必须停下来。基于 PLC 的电梯控制系统设计,本质是把电梯运行过程拆成一组离散状态,再用 PLC 把这些状态的安全条件串起来。这套设计能直接用在三菱 FX5U、西门子 S7-200 SMART 上,也能搬到 Codesys 平台。适合做毕业设计、PLC 课程设计,也适合刚接触变频驱动和运动控制的电气工程师。
2. 基于 PLC 的电梯控制系统硬件架构与 I/O 分配
2.1 从电梯工艺到 PLC 的输入输出信号
先别急着写程序,把 I/O 点列清楚。轿内指令、厅外召唤是输入,门锁、平层、限位、超载也是输入;输出则是方向、开门、关门、楼层显示。以三菱 FX5U 为例,我在课程设计里常用下面的分配表。注意传感器极性:三菱漏型输入模块接 NPN 型传感器,源型接 PNP,接反了输入信号一直不亮,排查半天找不到原因。
| 信号类型 | 地址 | 说明 | 正常状态 |
|---|---|---|---|
| 急停 | X0 | 安全回路常闭触点 | 1 |
| 门锁继电器 | X1 | 所有厅门轿门串联 | 1 |
| 上平层开关 | X2 | 磁开关或光电 | 0 |
| 下平层开关 | X3 | 磁开关或光电 | 0 |
| 上限位 | X4 | 井道顶部 | 1 |
| 下限位 | X5 | 井道底部 | 1 |
| 超载 | X6 | 超载继电器常开 | 0 |
| 检修开关 | X7 | 轿顶检修 | 1(运行) |
| 轿内 1 楼按钮 | X10 | 自复位 | 0 |
| 轿内 2 楼按钮 | X11 | 自复位 | 0 |
| 厅外上召 | X12 | 自复位 | 0 |
| 厅外下召 | X13 | 自复位 | 0 |
| 开门按钮 | X14 | 自复位 | 0 |
| 关门按钮 | X15 | 自复位 | 0 |
| 运行接触器 | Y0 | 变频器 RUN 信号 | 0 |
| 方向上行 | Y1 | 变频器正转端子 | 0 |
| 方向下行 | Y2 | 变频器反转端子 | 0 |
| 开门继电器 | Y3 | 门机开门 | 0 |
| 关门继电器 | Y4 | 门机关门 | 0 |
| 变频器故障复位 | Y5 | 复位 | 0 |
| 抱闸继电器 | Y6 | 电磁制动器 | 0 |
| 楼层显示 | Y10~Y13 | BCD 码 | 0 |
X4、X5 为什么正常状态是 1?因为限位开关在正常时闭合,碰到挡块断开,这样断线也能被 PLC 发现。这个设计原则同样适用于急停和门锁,凡是涉及安全的信号,一律用常闭触点接入,正常时输入点为 1,异常或断线时变成 0。
2.2 安全回路设计:常闭触点串联比单独接点更可靠
安全回路要把急停、安全钳、限速器、门锁、上下限位串成一条硬线,再接到 PLC 的 X0 和 X1。用常闭触点而不是常开:当线路断线或开关动作时,信号从 1 变 0,程序立刻进故障状态。如果用常开触点,线断了程序反而以为安全回路一直正常,这是最危险的。门锁继电器要单独提供触点给 PLC,不要直接从门锁开关上取电,避免感性负载干扰输入信号。
安全链梯形图写起来很直接,三菱指令表如下:
// 安全链联锁,M10 为安全链有效标志 LD X0 // 急停,1=正常 AND X1 // 门锁,1=全部闭合 AND X4 // 上限位,1=正常 AND X5 // 下限位,1=正常 OUT M10 // 安全链有效这段指令的逻辑很简单:四个输入全部为 1 时,M10 才为 1。程序里所有运行输出都串联 M10 的常开触点,M10 一旦掉电,Y0、Y1、Y2 全部断开。有些老师会要求加一个故障锁存,M10 变 0 后必须按复位按钮才能重新置位,防止安全回路恢复后电梯自己跑起来。可以加一个 M11 故障记忆:
// 故障锁存:M10 掉电时置位 M11,复位按钮 X20 清除 LD M10 ANI X20 OUT M11注意:M11 在梯形图中要放在 M10 输出之后,扫描顺序别反了。实际电梯上还有相序继电器和断相保护,同样串联在安全链里,PLC 侧看到的依旧是 X0 这一路信号。
2.3 主回路与变频器控制方式:从星角降压启动到变频驱动
电梯曳引电机有两种控制路线:老式星角降压启动和现代变频驱动。星角降压启动用在不需要调速的三相异步电机上,PLC 需要控制星形接触器和角形接触器切换,启动电流小但速度无法连续调节,电梯平层只能靠惯性停车。变频驱动则把调速交给变频器,PLC 只需输出方向、启停和频率给定,程序更简洁,乘坐舒适度也高。
做基于 PLC 的电梯控制系统设计时,我一般直接用变频器方案。若题目明确要求星角降压启动,则 PLC 要控制三个接触器:主接触器、星形接触器、角形接触器,用定时器完成星形到角形的切换,切换时间取 3~5 秒,具体看电机功率。主回路接线顺序为断路器、接触器、变频器、电抗器(可选)、电机。接触器装在变频器上游,紧急时切断主电源;方向由变频器端子决定,不要在变频器输出侧再接换向接触器。抱闸继电器 Y6 接电磁制动器,由 PLC 单独控制,不受变频器启停信号约束。
I/O 点要多留 20% 余量,后续加消防联动或语音播报时不需要换 CPU。电梯控制柜里变频器和 PLC 的距离尽量短,模拟量和通讯线分开走线槽,动力线屏蔽层单端接地,否则 Modbus 通讯帧错误率会高得离谱。
3. 电梯 PLC 程序的核心:状态机与梯形图实现
3.1 为什么电梯程序要写成状态机而不是自锁回路
很多 PLC 编程入门教材一上来就是电机启停自锁,但电梯不能这么写。电梯在运行中不能响应开门,开门中不能启动上行,检修时不能理会外呼,这些行为用自锁回路散着写,改一处逻辑容易把另一处破坏。常见做法是维护一组状态字,把电梯切成空闲、运行、减速、开门、关门、故障几个状态,每个状态下只处理该状态该做的事。
状态表如下:
| 状态 | 进入条件 | 退出条件 |
|---|---|---|
| IDLE | 门锁闭合,无指令 | 有方向指令 |
| RUN | 目标楼层不等于当前楼层 | 碰到平层开关 |
| DECEL | 运行中碰到任一平层开关 | 两个平层开关都有效 |
| DOOR_OPEN | 平层到位 | 开门延时到 |
| DOOR_CLOSE | 开门延时到 | 门锁闭合 |
| FAULT | 安全链断开 | 手动复位 |
这里平层到位为什么要求两个平层开关都有效?因为轿厢只有在平层区域时,上平层和下平层开关同时插入隔磁板,才能确认轿厢地坎与层门地坎在同一平面。只碰到一个只是开始减速的信号。
3.2 用 ST 语言写可复现的状态机
三菱 GX Works3 支持在 FB/FUN 里写结构化文本(ST),西门子博途也支持。下面这段 ST 直接描述电梯主流程,抄进 PLC 后需要把 call_floor、current_floor、dir 这些变量改成你定义的软元件。
// 电梯主状态机 - 适用三菱 FX5U 与 S7-1200(ST) CASE state OF IDLE: // 安全链正常,且有调度指令 IF m10 AND (call_floor <> current_floor) THEN IF call_floor > current_floor THEN dir := UP; ELSE dir := DOWN; END_IF; state := RUN; END_IF; RUN: // 运行中碰到第一个平层开关,进入减速段 IF up_level_sw OR down_level_sw THEN state := DECEL; END_IF; DECEL: // 两个平层开关同时有效,说明轿厢在平层区 IF up_level_sw AND down_level_sw THEN state := DOOR_OPEN; END_IF; DOOR_OPEN: // 开门,并启动定时器 door_open_ctr := door_open_ctr + 1; IF door_open_ctr >= 300 THEN state := DOOR_CLOSE; END_IF; DOOR_CLOSE: // 关门后等待门锁反馈 IF x1 THEN state := IDLE; END_IF; FAULT: // 安全链断,必须复位 IF x20 THEN state := IDLE; END_IF; END_CASE;参数说明:m10是上一章的安全链标志,call_floor是目标楼层,current_floor由平层开关和方向推算更新。door_open_ctr是自增计数器,程序扫描周期 30ms 时 300 对应 9 秒,这个值要按实际扫描周期换算,别照抄。dir是方向枚举,UP 和 DOWN 分别对应 Y1 和 Y2 输出。ST 里不能用日语指令,变量名直接用英文,仿真和在线监控时更容易读懂。
如果你坚持用梯形图,可以把 CASE state OF 拆成多个 M 位的跳转。比如 M50 表示 IDLE、M51 表示 RUN、M52 表示 DECEL,每个 M 位一段梯形图,最后用比较指令切换。这样写直观,但程序行数会多两三倍,后续加一个消防状态要改动的地方也更分散。
3.3 方向互锁和门锁联锁的梯形图细节
变频器方向端子如果没有硬互锁,PLC 侧也必须做软互锁,否则上下行输出同时为 ON,变频器会报方向冲突或直接不动作。三菱指令如下:
// 上行输出:有上行指令,且无下行输出 LD M20 // 上行请求 ANI Y2 // 下行输出未激活 AND M10 // 安全链 OUT Y1 // 上行方向 // 下行输出:有下行指令,且无上行输出 LD M21 ANI Y1 AND M10 OUT Y2门锁联锁:门锁 X1 闭合是允许运行的条件,但在开门瞬间门锁会断开,如果程序马上置故障,电梯一开门就报警。所以门锁断开后要延时 500ms 再进故障。常见做法是把故障检测放到子程序里,用上升沿判断 X1 从 1 变 0,而不是直接用常闭点。在梯形图里加一个 20ms 的数字滤波,把 X1 先存入 M30,再用 M30 参与状态机,这样触点抖动不会误触发平层逻辑。
电梯调度还有一个容易被忽略的点:同向优先。当电梯在上行途中经过 3 楼,而 3 楼有人按了上召,如果程序只比较目标楼层会直接停下;如果 3 楼是下行召唤,电梯应该先到顶楼再下来接。这个逻辑放在状态机外做一个扫描函数,每隔 100ms 更新一次 call_floor,优先级顺序是轿内指令高于同向厅外召唤,高于反向厅外召唤。
4. 变频器与 PLC 的 Modbus 通讯:连续速度给定与启停控制
4.1 多段速还是 Modbus 通讯,看调速需求
电梯运行速度不是恒定 50Hz,启动要加减速,平层前要降到爬行速度。如果只用多段速端子,变频器只能从 PLC 拿几个固定频率,速度曲线是阶梯状的,舒适度差。Modbus-RTU 通讯可以每秒多次刷新频率,配合变频器内部斜坡时间,做出平滑的 S 曲线。课程设计如果只有 3 个速度等级,用多段速更简单;调试主机用变频器时,我一般选 Modbus 通讯。
选型依据如下:
| 方案 | 硬件成本 | 速度曲线 | 程序复杂度 | 适用场景 |
|---|---|---|---|---|
| 多段速端子 | 低 | 阶梯式 | 低 | 3 速以下,实训 |
| Modbus-RTU | 中 | 连续 | 中 | 主流电梯 |
| Profinet/PROFIBUS | 高 | 连续 | 中 | 西门子整线 |
4.2 Modbus 通讯参数与变频器侧设置
PLC 与变频器之间用 RS485 接线,A 接 A,B 接 B,屏蔽层单端接地。三菱 FX5U 自带 485 口,西门子 S7-200 SMART 需要加信号板。以下参数在两边保持一致:
| 参数 | PLC 设置 | 变频器设置 |
|---|---|---|
| 波特率 | 9600 | 9600 |
| 数据位 | 8 | 8 |
| 校验 | 无 | 无 |
| 停止位 | 1 | 1 |
| 从站地址 | 主站 | 1 |
| 运行命令源 | — | 通讯 |
| 频率给定源 | — | 通讯 |
在变频器手册里把运行命令源和频率给定源都设为通讯后,面板的启停和旋钮就失效了,只剩状态显示。调试前先确认能从面板手动启动,再切通讯状态。遇到过很多次变频器参数设好后出现偶发通讯超时,最后查到是 485 线没有双绞,或者屏蔽层在两端都接地形成了地环路。
4.3 用 ADPRW 指令写频率值
三菱 FX5U 有 ADPRW 指令,专门用来读写 Modbus 从站。下面这段把 D100 里的频率值写入 1 号从站的频率给定寄存器。频率值要放大 100 倍,50.00Hz 写成 5000。
// 三菱 FX5U ADPRW 指令 // ADPRW 通道号 从站号 功能码 寄存器地址 数据软元件 处理字数 ADPRW K1 K1 H10 H6F D100 K1 // 通道1,从站1,H10=写多个保持寄存器,H6F=频率给定地址,D100为数据,写1个字逻辑说明:H10 功能码对应 Modbus 的 16(0x10)写多个寄存器,一次写 1 个寄存器也允许;H6F 是很多变频器通用的速度设定地址,具体看你的变频器手册,汇川 MD500 和台达 VFD 系列都有类似映射。程序里每次改变 D100 后都要调用一次 ADPRW,执行完检查 M8029(指令执行完成)或 M8329(通信错误)。如果变频器返回异常,把 D100 清掉并重试。
如果是三菱 FX3U,没有 ADPRW,只能用 RS 指令搭报文。报文格式固定:从站地址、功能码、寄存器高字节、寄存器低字节、数据高字节、数据低字节、CRC 低、CRC 高。CRC 校验要在 PLC 里写一个小功能块算出来,这里给一个计算要点:多项式 0xA001,初值 0xFFFF,每一位都要做异或和右移。不能直接把 16 进制字节发出,否则变频器会因为 CRC 错误丢弃整帧。调试时先用串口助手看 PLC 发出的报文,再对照手册确认地址和字节序,这一步能省下半天时间。
4.4 启停时序:先抱闸后运行,先停止后抱闸
电梯最容易出事故的地方是抱闸与电机电枢的时序。常见做法是:方向继电器 Y1 或 Y2 先闭合,延时 50ms 等待变频器方向信号稳定;置位 Y6 打开抱闸;延时 100~200ms,抱闸完全打开;置位 Y0 运行。平层减速到位后,先复位 Y0 停止运行,再等待电机转速降到爬行速度或零速,复位 Y6 抱闸闭合,最后关方向。
用三菱指令写一个启停功能块,输入是 start 和 stop,输出是 Y0、Y6。这里的关键是 Y6 不能和 Y0 同时动作,必须加 TON 定时器。博途里用 TON_RT 类型,三菱里用 OUT T0 K2。如果抱闸继电器闭合滞后太多,可以在抱闸线圈上并联续流二极管,把断开时的反向电压钳位到安全范围,防止干扰 PLC 电源。
5. 调试顺序、参数整定与门锁短接排查
5.1 用 GX Works3 仿真先跑状态机
写完程序别急着上电。GX Works3 自带仿真器,能强制 X 输入。先把 X0、X1、X4、X5 设为 1,模拟安全链正常;再改变 call_floor 的值,看状态从 IDLE 切到 RUN。仿真时重点看状态字是否出现不可达状态,比如 DOOR_OPEN 后还没关门就进 RUN。这种逻辑错误在真实电梯上会造成开门走梯,极其危险。
仿真环境里没有真实的平层信号,可以手动将 X2、X3 分别置位来模拟轿厢进入平层区。每改变一次输入,记录当前状态和输出状态,对照状态表检查是否有跳变。三菱的软元件监控可以同时看 M 位和 D 寄存器,把 state 变量添加进去,比看梯形图高亮更直观。
5.2 关键参数整定表
现场调试阶段,我一般先把这些参数设成初值,再根据电梯运行舒适度微调:
| 参数 | 初值 | 调整范围 | 现象 |
|---|---|---|---|
| 变频器加速时间 | 2.5s | 1.5~4s | 太小则过流 |
| 变频器减速时间 | 2.5s | 2~5s | 太大则平层超差 |
| 抱闸打开延时 | 150ms | 100~250ms | 太短则溜车 |
| 抱闸闭合延时 | 200ms | 150~300ms | 太长则停不准 |
| 平层开关滤波 | 30ms | 20~100ms | 太长则冲过平层 |
加速时间和减速时间不是随意填的,要结合电机额定电流和变频器容量。抱闸打开延时若低于抱闸机械动作时间,电机会在抱闸未抬起时堵转,过流报警;抱闸闭合延时若高于零速保持时间,电梯会反拉。调整时以 50ms 为步进,每改一次参数满载跑一次上下行,记录平层精度和变频器电流曲线。
5.3 门锁短接和断线怎么查
门锁短接是电梯维护里最常见的危险操作。程序侧不能依赖外部硬线,要在 PLC 里做门锁寿命检测和短接识别。常规技巧是:门锁 X1 由所有厅门轿门串成,正常时关门到位后 X1 为 1。如果 PLC 收到 X1 为 1 但门位置传感器仍显示门开,就要报警。简单实现是加一个计数器,每次门锁 X1 从 0 变 1 后,如果 10 秒内又变 0,计数加 1;连续超过 3 次,置故障。这个逻辑能挡住大部分短接误接。检查时优先看变频器故障码和 PLC 诊断缓冲,别一上来就短接 X0、X1 试机。调试记录表里把安全链每个触点的动作次数和电平变化时间记下来,对分析偶发故障很有效。
本文还有配套的精品资源,点击获取