1. 项目概述
这个三台十层电梯联控系统案例是我几年前用西门子TIA Portal V14开发的一个实战项目。当时是为一个商业综合体做的电梯控制系统改造,主要解决高峰期多台电梯协同效率低下的问题。虽然现在看代码可能不够"优雅",但其中的设计思路和实战经验至今仍然很有参考价值。
系统由三台西门子S7-1200 PLC(具体型号是1215C DC/DC/DC)和WinCC RT Professional组成,每台PLC控制一部电梯,WinCC作为上位机实现集中监控。这种架构既保证了单台电梯的独立性,又通过PLC间的通信实现了协同调度。
特别说明:本文分享的所有代码和方案都经过实际项目验证,但具体实施时请务必根据现场情况调整。工业控制系统对安全性和可靠性要求极高,直接复制代码可能存在风险。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件配置与网络架构
2.1 控制器选型考量
选择S7-1215C DC/DC/DC型号主要基于以下几点考虑:
- 该型号自带16DI/16DO,正好满足单台电梯的I/O需求(10层呼叫按钮+开关门信号+安全回路)
- DC电源版本比继电器输出更可靠,避免了机械触点老化问题
- 内置的PROFINET接口便于实现多PLC间的实时数据交换
- 支持SCL语言编程,适合实现复杂的调度算法
实际项目中,每台PLC的I/O分配如下:
- DI0.0~DI0.9:1~10层上行呼叫按钮
- DI1.0~DI1.9:1~10层下行呼叫按钮
- DI2.0:轿厢开门到位信号
- DI2.1:轿厢关门到位信号
- DI2.2:安全回路正常信号
- DO0.0~DO0.9:1~10层按钮指示灯
- DO1.0:电梯上行接触器
- DO1.1:电梯下行接触器
- DO1.2:开门控制
- DO1.3:关门控制
2.2 网络通信方案
三台PLC通过PROFINET组成线性拓扑,通信周期设置为8ms。关键共享数据包括:
- 各电梯的当前位置(INT型,1-10)
- 运行方向(INT型,-1/0/1)
- 各楼层的呼叫状态(两个BOOL数组,分别记录上行和下行呼叫)
在OB35(循环中断组织块)中处理通信数据同步,周期设置为100ms。这个时间间隔经过实测验证:
- 太短会导致网络负载过高
- 太长会影响调度响应速度
