1. 项目概述:基于PLC与HMI的电梯控制仿真系统
在工业自动化教学与工程验证领域,电梯控制系统一直是最具代表性的实训项目之一。这个基于欧姆龙CP1H PLC和MCGS触摸屏的四层电梯仿真系统,完整复现了真实电梯的核心控制逻辑和人机交互功能。系统采用结构化文本编程与组态动画相结合的方式,实现了包括楼层呼叫响应、运行方向判断、开关门控制、安全防护等关键功能模块。
这个项目的独特价值在于:
- 硬件层面采用工业级PLC+HMI的标准控制架构,与真实电梯控制系统完全一致
- 软件设计上创新性地使用了多层级策略,包括基础运动控制层、逻辑决策层和人机交互层
- 通过MCGS组态软件构建了可视化的电梯井道仿真环境,支持实时状态监控与参数调整
2. 系统架构设计
2.1 硬件组成方案
系统硬件架构采用典型的工业控制配置:
code复制[传感器层] --> [PLC控制层] <--> [HMI交互层]
↑
[执行机构层]
具体硬件选型考虑:
-
欧姆龙CP1H-XA40DR-A PLC
- 选择理由:内置4路模拟量输入,可直接连接称重传感器;继电器输出型适合驱动电梯门机
- 关键参数:24点输入/16点输出,100kHz高速计数器,支持RS232/485通讯
-
MCGS TPC7062K触摸屏
- 7寸高亮度显示屏,支持65535色显示
- 内置RTC实时时钟,可用于记录电梯运行日志
- 双网口设计,可同时连接PLC和上位机
-
信号采集系统
- 楼层定位:采用欧姆龙E6B2-CWZ6C增量式编码器(600P/R)
- 门机检测:OMRON EE-SX671光电传感器(检测距离5mm)
- 称重装置:HBM PW4AH3称重传感器(量程100kg)
2.2 软件架构设计
系统软件采用分层架构设计:
code复制[用户界面层]
↓
[业务逻辑层] ←→ [数据访问层]
↑
[设备驱动层]
特别在PLC程序中采用了模块化编程:
- OB1:主循环组织块
- FC1:电梯运动控制功能
- FC2:呼叫队列管理功能
- FC3:安全监测功能
- DB1:全局数据块(存储所有运行参数)
3. 核心控制逻辑实现
3.1 电梯调度算法
系统采用改进的SCAN(电梯扫描)算法,核心逻辑流程如下:
- 初始化电梯状态(当前楼层=1,方向=停止)
- 扫描内外呼信号,更新请求队列
- 根据当前运行方向处理队列:
- 上行时:优先响应所有上方同向请求
- 下行时:优先响应所有下方同向请求
- 无同向请求时:
- 检查反向请求
- 无任何请求则进入待机状态
关键代码实现(结构化文本):
st复制// 方向判断逻辑
IF CurrentFloor < TargetFloor THEN
Direction := UP;
CALL ProcessUpRequests();
ELSIF CurrentFloor > TargetFloor THEN
Direction := DOWN;
CALL ProcessDownRequests();
ELSE
Direction := IDLE;
CALL CheckPendingRequests();
END_IF;
// 上行请求处理
METHOD ProcessUpRequests : VOID
VAR
i : INT;
BEGIN
FOR i := CurrentFloor+1 TO 4 DO
IF (CallButtons[i] OR InternalRequests[i]) AND NOT StopList[i] THEN
InsertStop(i);
END_IF;
END_FOR;
END_METHOD
3.2 运动曲线控制
电梯运行采用S型加减速曲线,确保乘坐舒适度。速度曲线计算公式:
code复制V(t) = Vmax × [1 - 1/(1 + e^(k(t-t0)))]
其中:
- Vmax:额定速度(1m/s)
- k:曲线陡度系数(取3.0)
- t0:拐点时间(加速段取2s,减速段取1s)
PLC实现方式:
- 使用定时中断(10ms周期)更新速度给定值
- 通过PWM输出控制电机驱动器
- 实时比较编码器反馈值进行闭环修正
4. HMI界面设计与实现
4.1 组态画面架构
MCGS组态工程包含以下主要画面:
- 首页:系统状态概览、运行模式选择
- 电梯主画面:井道动画、楼层显示、操作按钮
- 参数设置:速度、加速度、开关门时间等参数
- 运行监控:实时数据曲线、报警记录
- 维护界面:I/O测试、手动操作模式
4.2 动画效果优化技巧
- 楼层显示防抖处理
lua复制-- 位置滤波算法
local filter_factor = 0.6
local filtered_pos = 0
function onPositionUpdate(new_pos)
filtered_pos = filtered_pos * filter_factor + new_pos * (1 - filter_factor)
if math.abs(filtered_pos - new_pos) < 0.05 then
SetElementPosition("elevator_car", filtered_pos)
end
end
- 门机动画同步
- 采用事件驱动方式更新动画状态
- 定义门状态机:CLOSED → OPENING → OPEN → CLOSING
- 根据PLC发送的门位置信号实时更新动画帧
5. 通讯系统实现
5.1 PLC-HMI通讯配置
采用Modbus RTU协议,关键参数:
- 波特率:19200bps
- 数据位:8位
- 停止位:1位
- 校验方式:偶校验
- 轮询周期:200ms
地址映射表:
| 变量名 | 地址 | 类型 | 说明 |
|---|---|---|---|
| ElevatorFloor | 40001 | INT | 当前楼层(1-4) |
| CallButtons | 40003 | DWORD | 外呼按钮状态 |
| DoorStatus | 40007 | INT | 门状态(0-3) |
| EmergencyStop | 40009 | BOOL | 急停信号 |
5.2 通讯故障处理机制
- 心跳检测
- PLC每1秒发送心跳包(地址0xFFFF)
- HMI在3秒内未收到心跳则判定通讯中断
- 数据校验
- 增加CRC16校验所有通讯帧
- 连续3次校验错误触发通讯报警
- 看门狗设计
st复制// PLC看门狗程序
FUNCTION_BLOCK WatchDog
VAR_INPUT
Timeout : TIME := T#5S;
END_VAR
VAR
Timer : TON;
LastHeartbeat : TIME;
END_VAR
Timer(IN:=TRUE, PT:=Timeout);
IF Timer.Q THEN
ComFault := TRUE;
SystemReset();
END_IF;
6. 安全保护系统
6.1 多层次安全防护
- 机械保护层
- 限速器开关
- 缓冲器检测
- 门锁回路检测
- 电气保护层
- 过电流保护
- 相序检测
- 紧急停止按钮
- 软件保护层
- 运行范围限制(1-4层)
- 速度异常监测
- 门区保护(非平层不开门)
6.2 防夹算法实现
采用三重检测策略:
- 红外光束(2对交叉检测)
- 机械安全触板(检测力>5N)
- 电流检测(门机电机过流判断)
PLC程序片段:
st复制// 防夹中断程序
INTERRUPT INTERRUPT_100US
IF DoorStatus = CLOSING THEN
// 检查所有传感器
IF IR_Sensor1 OR IR_Sensor2 OR
SafetyEdge OR CurrentOverload THEN
DoorMotor(Stop);
DoorStatus = REVERSING;
StartTimer(T#1S);
END_IF;
END_IF;
7. 调试与优化经验
7.1 典型问题排查
-
问题现象:电梯到站后门反复开关
- 原因分析:平层信号抖动
- 解决方案:增加软件滤波,调整磁开关位置
-
问题现象:多楼层呼叫时响应顺序错误
- 原因分析:队列管理算法缺陷
- 修改方案:引入优先级权重计算:
code复制优先级 = 基础权重(内呼>外呼) + 方向系数 + 等待时间因子
-
问题现象:HMI画面卡顿
- 原因分析:动画刷新率过高
- 优化措施:
- 将连续动画改为事件驱动更新
- 使用脏矩形技术局部刷新
7.2 性能优化技巧
- PLC程序优化
- 将频繁执行的逻辑移入定时中断
- 使用位操作替代整数比较
- 提前计算常用参数(如楼层距离)
- HMI优化
- 减少同时显示的动画元素
- 使用位图缓存静态背景
- 优化脚本执行频率
- 通讯优化
- 采用变化传输机制(仅传输变化量)
- 压缩���据包(合并BOOL变量)
- 错开重要数据的轮询时间
8. 系统扩展方向
- 智能调度算法
- 加入时间预测功能,显示到达时间
- 根据人流模式学习优化停靠策略
- 支持VIP模式(优先响应特定楼层)
- 远程监控功能
- 通过OPC UA接入SCADA系统
- 实现手机APP监控
- 增加运行数据统计分析
- 节能模式
- 空闲时自动关闭轿厢照明
- 根据负载调整运行速度
- 错峰用电调度
这个四层电梯仿真系统虽然规模不大,但完整包含了工业控制系统开发的各个环节。从硬件选型到算法实现,从界面设计到安全防护,每个环节都需要严谨的工程思维。在实际调试过程中,最深的体会是:一个好的控制系统不仅要有正确的逻辑,更要考虑人的使用习惯和系统的容错能力。比如在防夹功能实现上,我们先后迭代了三个版本才达到既安全又不影响正常开关门速度的效果。
