1. 项目背景与核心需求
六层电梯控制系统是工业自动化领域的经典实训项目,也是PLC编程入门的绝佳练手案例。西门子S7-1200系列PLC凭借其稳定的性能和友好的开发环境,成为自动化工程师的首选控制器之一。这个项目完整实现了电梯的楼层呼叫、轿厢调度、开关门控制等核心功能,配套HMI界面可直观观察运行状态。
我在工业现场接触过数十套电梯控制系统,发现新手常陷入两个误区:要么过度依赖定时器实现简单逻辑导致响应迟钝,要么堆砌复杂指令造成程序可读性差。这个项目采用结构化编程思路,通过合理的FB块划分和HMI联动设计,既保证了实时性又便于后期维护。
2. 硬件配置与博途环境搭建
2.1 最小系统组成
- PLC主机:6ES7 214-1AG40-0XB0(CPU1214C DC/DC/DC)
- 信号输入:楼层按钮6 + 轿厢内选按钮6 + 开关门限位*2
- 信号输出:楼层指示灯6 + 轿厢方向箭头2 + 门机控制继电器*1
- HMI设备:KTP700 Basic触摸屏(仿真时可用PC运行WinCC Runtime)
提示:实际工程中需增加急停按钮、超载传感器等安全回路,本仿真项目暂未包含
2.2 博途V14环境配置要点
- 安装时勾选"SIMATIC STEP 7 Professional V14"和"SIMATIC WinCC Professional V14"
- 首次启动需激活许可证(试用版有21天全功能期)
- 新建项目时注意选择正确的设备型号:
plaintext复制
控制器 → SIMATIC S7-1200 → CPU 1214C DC/DC/DC HMI → SIMATIC HMI → KTP700 Basic
3. PLC程序架构设计
3.1 功能块划分策略
采用模块化编程结构,主要FB块包括:
- FB_ElevatorCore:处理电梯启停、方向判断、楼层计数
- FB_CallManager:管理内外呼叫信号的登记与清除
- FB_DoorControl:门机动作逻辑(含防夹检测)
- DB_GlobalData:共享数据块存放运行状态、当前楼层等全局变量
3.2 关键算法实现
楼层调度逻辑采用"最短路径优先"原则:
scala复制IF 当前方向=上行 THEN
优先响应上方同向呼叫
ELSEIF 无上方呼叫 THEN
响应下方反向呼叫
END_IF
通过SCL语言编写调度算法,比梯形图更易实现复杂判断。
3.3 典型程序段解析
门机控制逻辑(梯形图实现):
code复制Network 1: 开门条件
I0.0(开门按钮) I0.1(开门限位) M10.0(安全回路)
---| |---+---|/|----+---| |--------( Q0.0 )
| |
T1(开门延时) |
---|/|-----------+
Network 2: 关门条件
I0.2(关门按钮) I0.3(关门限位) T2(停梯时间到)
---| |---+---|/|----+---| |--------( Q0.1 )
4. HMI仿真工程开发
4.1 画面元素设计
-
主界面:
- 6层按钮矩阵(带呼叫状态指示)
- 轿厢位置动态显示(电梯井示意图)
- 运行方向箭头(红/绿双色LED组件)
-
监控界面:
- I/O状态表
- 故障记录列表
- 参数设置窗口
4.2 变量连接技巧
- 使用
HMI_Tag连接PLC变量时,注意设置正确的采集周期:plaintext复制
按钮类:事件触发 状态灯:100ms 动画:50ms - 轿厢移动动画采用
Slider控件,关联DB_GlobalData.CurrentFloor变量
5. 联合调试与问题排查
5.1 常见故障现象
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 轿厢反复震荡 | 平层信号抖动 | 增加软件滤波(OB35中处理) |
| 门机频繁误动作 | 限位开关接触不良 | 修改为CLOSE_END和OPEN_END双信号校验 |
| HMI显示滞后 | 通信负载过高 | 优化变量采集周期,禁用非必要监控 |
5.2 仿真测试流程
- 在PLCSIM中加载硬件配置
- 启动WinCC Runtime Advanced
- 强制触发各楼层呼叫信号(建议测试组合场景):
python复制# 测试用例示例 1. 1楼呼叫→3楼内选→5楼外呼 2. 检查是否按1→3→5顺序停靠 3. 验证下行时2楼外呼能否被响应
6. 工程优化建议
-
安全增强:
- 添加
EmergencyStop功能块(OB82中处理) - 关键输出点采用双线圈冗余控制
- 添加
-
性能提升:
- 将频繁调用的FB块移入
OB35(循环中断组织块) - 使用
MOVE_BLK指令批量处理楼层指示灯
- 将频繁调用的FB块移入
-
扩展功能:
- 增加能耗统计界面(通过
RD_SYS_T读取运行时间) - 开发手机监控APP(通过OPC UA连接)
- 增加能耗统计界面(通过
这个项目最值得分享的经验是:电梯控制程序的楼层判断逻辑一定要与物理编码器信号严格同步。我曾遇到因光电开关安装偏移导致程序楼层与实际差半层的情况,后来在OB1开头添加了Encoder_Calibration子程序才彻底解决。建议在首次调试时,务必手动逐层验证平层信号。
