1. 项目背景与核心价值
去年参与某商业综合体项目时,客户要求对12部电梯进行独立控制改造。传统PLC电梯控制程序往往存在逻辑复杂、调试周期长的问题,而基于西门子S7-1200/1500系列PLC配合TIA博途平台开发的单部电梯控制方案,通过模块化编程实现了控制逻辑的标准化。这个方案最终将调试时间缩短了60%,至今已稳定运行4000+小时。
这套程序的核心价值在于:
- 采用FB块封装电梯基础功能(楼层呼叫、方向判断、开关门控制)
- 通过OB块实现急停、故障检测等安全逻辑
- 利用DB块统一管理运行参数(如加速度曲线、平层调整值)
- 支持HMI实时监控运行状态(当前楼层、运行方向、故障代码)
2. 硬件配置方案解析
2.1 最小系统配置
plaintext复制S7-1200 CPU 1214C DC/DC/DC (6ES7 214-1AG40-0XB0)
数字量输入模块 (6ES7 221-1BH30-0XB0) x2
数字量输出模块 (6ES7 222-1HF30-0XB0) x1
TP700 Comfort HMI (6AV2 124-0GC01-0AX0)
2.2 1500系列增强配置
对于高速电梯(速度≥2.5m/s)建议采用:
plaintext复制S7-1500 CPU 1511-1 PN (6ES7 511-1AK00-0AB0)
工艺模块 TM PosInput 2 (6ES7 551-1AB00-0AB0) - 用于编码器反馈
安全模块 F-DI 8x24VDC (6ES7 138-4CA00-0AB0) - 安全回路专用
关键提示:急停回路必须采用独立安全继电器(如3SK1),不可直接接入PLC普通输入点
3. 软件架构设计
3.1 程序块组织结构
pascal复制Organization Blocks:
OB1 - 主循环
OB35 - 100ms定时中断(用于速度曲线计算)
OB82 - 诊断错误处理
Function Blocks:
FB1 - 电梯核心控制(含状态机)
FB2 - 门机控制(带力矩监测)
FB3 - 故障自诊断
Data Blocks:
DB1 - 运行参数(加速度、减速度、平层偏移)
DB2 - 楼层映射表(物理层高→逻辑层号)
DB3 - 故障历史记录(循环存储最近20条)
3.2 核心算法实现
3.2.1 呼叫分配逻辑
采用"同向优先+最近距离"算法:
ST复制IF "上行请求" THEN
FOR i := CurrentFloor+1 TO TopFloor DO
IF CallBuffer[i] THEN
NextFloor := i;
EXIT;
END_IF;
END_FOR;
END_IF;
3.2.2 S曲线速度控制
在OB35中实现的梯形速度规划:
SCL复制#RampTime := (#TargetSpeed - #CurrentSpeed) / #Acceleration;
IF #RampTime > #CycleTime THEN
#OutputSpeed := #CurrentSpeed + (#Acceleration * #CycleTime);
ELSE
#OutputSpeed := #TargetSpeed;
END_IF;
4. HMI交互设计要点
4.1 关键监控界面元素
| 组件类型 | 变量链接 | 安全等级 |
|---|---|---|
| 楼层指示灯 | DB2.DBX0.0~DB2.DBX31.0 | 标准 |
| 急停按钮 | I0.0 (硬线+软信号) | SIL2 |
| 运行方向箭头 | DB1.DBW20 | 标准 |
| 故障代码显示 | DB3.DBD0 | 诊断 |
4.2 维护模式设计
通过HMI密码保护界面实现:
- 输入特定操作码(如"159#*")进入维护模式
- 可调整参数包括:
- 平层精度补偿(±5mm)
- 开关门时间(0.5~10s可调)
- 启动转矩限制(30%~100%)
5. 现场调试实录
5.1 平层精度调整步骤
- 在底层放置激光测距仪对准轿厢标记线
- 手动运行到中间楼层,记录实际停靠位置
- 修改DB1中对应参数:
plaintext复制
DB1.DBD4 (1号楼层偏移) += (实测值-理论值) - 重复测试直到各层误差<±2mm
5.2 典型故障处理
| 故障代码 | 可能原因 | 排查方法 |
|---|---|---|
| E102 | 门区信号丢失 | 检查光电开关DC24V供电 |
| E205 | 编码器计数异常 | 核对TM PosInput模块配置 |
| E307 | 接触器反馈信号超时 | 测量输出点Q电压是否正常 |
6. 安全功能实现细节
6.1 安全回路设计
采用双通道冗余检测:
code复制[急停按钮]→[安全继电器]→[F-DI模块]
↘[普通DI模块]→交叉校验
6.2 软件保护措施
- 运行时间监控(W#16#6000)
- 看门狗定时器(500ms)
- 关键数据CRC校验
7. 程序优化建议
-
对于多部电梯群控,建议:
- 添加PROFINET通信功能块
- 采用OPC UA实现与上位机数据交换
- 配置时间同步(精度<1ms)
-
性能提升技巧:
- 将频繁访问的DB块标记为"优化块访问"
- 使用MOVE_BLK指令批量传输楼层数据
- 启用循环中断OB35的优先级提升
这套程序经过5个实际项目验证,最关键的体会是:必须建立完整的信号滤波机制。例如门机到位信号建议采用以下处理方式:
SCL复制IF #RawSignal THEN
#FilterCounter := MIN(10, #FilterCounter+1);
ELSE
#FilterCounter := MAX(0, #FilterCounter-1);
END_IF;
#ValidSignal := (#FilterCounter >= 7);