1. 西门子PLC在电梯控制领域的应用背景
电梯作为现代建筑中不可或缺的垂直运输设备,其控制系统经历了从继电器逻辑到可编程控制器的技术演进。西门子S7-1200/1500系列PLC凭借其高可靠性、模块化设计和强大的通信能力,已成为电梯控制系统的首选方案之一。
在TIA博途(Totally Integrated Automation Portal)集成开发环境下,工程师可以完成从硬件组态、逻辑编程到HMI设计的全流程开发。相比传统的S7-300/400系列,S7-1200/1500具有更紧凑的硬件结构、更快的处理速度和更丰富的通信接口,特别适合中小型电梯项目的开发需求。
提示:选择1200还是1500主要取决于项目规模,1200适用于7层以下住宅电梯,1500则更适合商业综合体等需要复杂调度的大规模电梯系统。
2. 电梯控制系统的核心功能模块解析
2.1 硬件配置方案
一个完整的电梯PLC控制系统通常包含以下硬件组件:
- 主控制器:S7-1214C DC/DC/DC(基本型)或S7-1511-1 PN(高性能型)
- 数字量输入模块:用于接收轿厢/层站按钮信号、门限位开关等
- 数字量输出模块:控制接触器、指示灯等执行机构
- 模拟量模块:可选配用于称重传感器信号采集
- HMI面板:KTP700 Basic等触摸屏用于状态显示和操作
典型I/O点分配示例:
| 信号类型 | 点位示例 | 备注 |
|---|---|---|
| DI | 0.0-0.7 | 1-8层上行呼叫按钮 |
| DI | 1.0-1.7 | 1-8层下行呼叫按钮 |
| DO | 4.0 | 上行接触器控制 |
| DO | 4.1 | 下行接触器控制 |
2.2 软件架构设计
在博途环境中,电梯控制程序通常采用模块化编程方式,主要包含以下功能块:
- 呼叫登记与消号模块(FB1)
- 运行方向判断模块(FB2)
- 平层控制模块(FB3)
- 开关门控制模块(FB4)
- 安全保护模块(FB5)
每个功能块通过背景数据块(Instance DB)保存运行状态,通过组织块(OB)实现周期扫描和事件响应。例如OB1用于主循环,OB35用于定时中断处理。
3. 关键控制逻辑实现细节
3.1 呼叫信号处理逻辑
pascal复制// 呼叫登记示例代码(SCL语言)
IF "上行按钮1" AND NOT "上行登记1" THEN
"上行登记1" := TRUE;
"上行指示灯1" := TRUE;
END_IF;
// 消号条件判断
IF "当前楼层" = 1 AND "运行方向" = 0 THEN // 到达且方向匹配
"上行登记1" := FALSE;
"上行指示灯1" := FALSE;
END_IF;
3.2 运行方向判断算法
电梯运行方向决策需要考虑三个关键因素:
- 当前运行方向上的待响应呼叫
- 反方向的最远呼叫
- 轿厢内选层指令
采用"扫描-响应"策略时,程序需要周期性扫描所有登记信号,按照以下优先级处理:
- 同方向顺向呼叫
- 轿厢内指令
- 反方向最远呼叫
3.3 平层控制精度优化
为实现精准平层(±5mm),通常采用以下技术组合:
- 旋转编码器脉冲计数(每转1024线)
- 磁开关粗定位
- 光电开关精定位
在S7-1500中可利用高速计数器(HSC)模块直接处理编码器信号,而在S7-1200中可能需要通过OB35中断实现脉冲累加。关键参数计算公式:
code复制实际位移 = (脉冲数 × 钢丝绳周长) / (编码器线数 × 减速比)
4. 通信网络配置要点
4.1 标准通信方案选择
现代电梯控制系统通常采用以下通信架构:
- PLC与变频器:PROFINET RT(实时通信)
- PLC与HMI:PROFINET/以太网
- 群控系统间:PROFIBUS DP或以太网
对于S7-1200/1500,推荐使用PROFINET IRT(等时同步)实现变频器控制,可确保速度指令和反馈信号的实时性。
4.2 通信故障处理机制
在OB86中编写通信中断处理程序:
pascal复制IF "变频器通信故障" THEN
"紧急制动" := TRUE;
"故障代码" := 16#8001;
"蜂鸣器报警" := TRUE;
END_IF;
同时需要在HMI上设计通信状态监控界面,显示各节点的通信质量和实时参数。
5. 安全回路设计与实现
5.1 硬件安全回路
符合EN81-20标准的安全回路应包含:
- 安全继电器(如3TK2828)
- 门锁串联回路
- 限速器开关
- 缓冲器开关
- 紧急停止按钮
PLC通过安全输入模块(如SM1226 F-DI)监测安全回路状态,任何异常都应触发独立于程序的安全制动。
5.2 软件安全逻辑
在程序中实现多重保护:
- 超速检测(比较编码器速度与设定值)
- 运行时间监控(从启动到平层的最大允许时间)
- 门锁状态与运行联锁
- 负载检测与超载保护
pascal复制// 门锁联锁示例
IF NOT "所有门关闭" AND "运行使能" THEN
"允许运行" := FALSE;
"门未关报警" := TRUE;
END_IF;
6. 调试与优化实战技巧
6.1 离线仿真测试
利用博途的PLCSIM Advanced进行前期验证:
- 创建虚拟HMI操作面板
- 模拟各楼层呼叫信号
- 监控运行曲线和状态切换
注意:仿真时需特别注意时间相关逻辑,实际硬件运行时的扫描周期可能与仿真环境存在差异。
6.2 现场调试步骤
- 先静态测试:确认所有输入输出点对应关系正确
- 再动态测试:逐项验证以下功能
- 单层运行测试
- 多层连续运行测试
- 反向截车测试
- 紧急停止测试
- 最后进行负载测试:在不同载重下验证平层精度
6.3 常见问题排查指南
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 平层不准 | 编码器松动 | 检查联轴器紧固情况 |
| 频繁急停 | 安全回路抖动 | 测量回路电压稳定性 |
| 通信中断 | 终端电阻未接 | 检查PROFIBUS两端电阻 |
| 门反复开关 | 光幕干扰 | 调整灵敏度或加屏蔽 |
7. 程序架构优化建议
7.1 采用面向对象编程
将电梯的各子系统封装为独立的FB块:
- Elevator_Core(核心控制)
- Elevator_IO(信号处理)
- Elevator_Safety(安全监控)
- Elevator_HMI(界面交互)
通过接口(Interface)定义模块间的通信规范,提高代码可重用性。
7.2 状态机设计模式
使用Graph编程语言实现主控制状态机:
pascal复制STATE "Idle":
// 等待呼叫
IF "有呼叫" THEN
NEXTSTATE "Accelerating";
END_IF;
STATE "Accelerating":
// 加速过程
"速度给定" := 曲线生成();
IF "达到额定速度" THEN
NEXTSTATE "Cruising";
END_IF;
7.3 数据记录功能
利用S7-1500的Web服务器功能实现:
- 运行数据记录(CSV格式)
- 故障事件存储(环形缓冲区)
- 远程诊断接口(通过OPC UA)
在WinCC中配置趋势图,可直观显示速度、电流等关键参数的历史曲线。
8. 从单梯到群控的扩展思路
当需要实现多台电梯协调控制时,需考虑:
- 分配算法优化(最小等待时间/最少能耗)
- 通信数据交换(通过共享DB或UDT)
- 系统时钟同步(使用NTP或IEEE1588)
在S7-1500中可利用PROFINET IRT的精确时钟同步功能(精度<1μs),确保多PLC间的协同控制。
