1. 项目概述:五层电梯控制系统的仿真开发
五层电梯控制系统是工业自动化领域中一个经典的教学与实训项目,它综合了PLC编程、HMI组态和运动控制等多个技术要点。这次分享的是基于MCGS7.7触摸屏和西门子S7-200PLC的完整仿真方案,这个组合在中小型自动化项目中非常典型——S7-200PLC以其稳定性和性价比著称,而MCGS作为国产HMI的代表,在界面友好度和价格方面具有明显优势。
这个仿真项目的核心价值在于:它完整复现了真实电梯的控制逻辑,包括楼层呼叫响应、运行方向判断、开关门控制等关键功能,同时通过MCGS触摸屏实现了状态监控和人工干预。不同于简单的教学演示程序,我们在开发中特别注重以下几个实用细节:
- 加入了电梯启动前的自检流程(包括门锁状态、平层信号等)
- 实现了基于时间窗的呼叫请求优化算法
- 设计了故障模拟与恢复机制
- 提供了完整的IO分配表和注释规范
2. 硬件架构与信号规划
2.1 控制系统组成
这套仿真系统的硬件架构虽然简单,但完全遵循工业现场的标准配置:
-
主控制器:西门子S7-200PLC CPU224XP(14DI/10DO + 2AI/1AO)
- 选择这款PLC是因为它自带一个RS485端口(Port0)和一个PPI端口(Port1),可以同时连接触摸屏和调试电脑
- 内置的模拟量接口方便后期扩展重量检测等功能
-
人机界面:MCGS TPC7062KX 7寸触摸屏
- 支持与S7-200的PPI直接通信
- 800×480分辨率足够显示五层电梯的全部状态信息
-
仿真接口:
- 输入信号:通过PLC的I0.0-I0.7和I1.0-I1.5接入16个物理按钮(实际项目会用矩阵扫描)
- 输出信号:Q0.0-Q0.7驱动8个LED指示灯模拟电梯运行状态
2.2 IO地址分配规范
为了便于后期维护,我们制定了严格的地址分配规则:
| 信号类型 | 地址范围 | 功能说明 |
|---|---|---|
| 输入信号 | I0.0-I0.4 | 1-5层上行呼叫按钮 |
| I0.5-I0.7 | 2-5层下行呼叫按钮 | |
| I1.0-I1.4 | 轿厢内1-5层选层按钮 | |
| I1.5 | 开门限位开关信号 | |
| 输出信号 | Q0.0-Q0.4 | 1-5层上行呼叫指示灯 |
| Q0.5-Q0.7 | 2-5层下行呼叫指示灯 | |
| Q1.0-Q1.4 | 轿厢内1-5层选层指示灯 | |
| Q1.5 | 电梯运行方向指示(0=下/1=上) |
注意:实际工程中建议保留至少20%的地址余量,为后期功能扩展预留空间。我们习惯在IO分配表中用黄色标注已使用地址,灰色标注预留地址。
3. PLC程序设计要点
3.1 主控制流程设计
电梯控制程序采用状态机模式编写,这是工业控制中处理顺序流程的经典方法。我们将电梯运行划分为6个主要状态:
- 初始化状态(S0):上电后检测各楼层平层信号,确认电梯初始位置
- 待机状态(S1):等待呼叫请求,进行呼叫登记和方向判断
- 启动加速(S2):变频器加速到额定速度(仿真中用定时器模拟)
- 匀速运行(S3):检测接近目标楼层的减速点
- 减速停止(S4):平滑减速到停止位置
- 开关门控制(S5):完成开门→等待→关门流程
每个状态的转换条件都通过一个独立的网络段实现,例如从待机状态到启动加速的转换逻辑如下:
ladder复制NETWORK 1
LD SM0.1 // 首次扫描
S S0, 1 // 进入初始化状态
NETWORK 2
LD S0 // 初始化状态
A I1.5 // 检测到开门限位
R S0, 1 // 退出初始化
S S1, 1 // 进入待机状态
3.2 呼叫登记与调度算法
电梯调度的核心是如何高效响应内呼和外呼请求。我们实现了一个基于"方向优先"的经典算法:
-
呼叫登记:将所有按钮信号通过上升沿检测存入保持寄存器
- 内呼登记:VB100-VB104(对应1-5层)
- 外呼上行:VB105-VB108(2-5层)
- 外呼下行:VB109-VB112(1-4层)
-
方向判断:
- 当前运行方向上的同向呼叫优先响应
- 无同向呼叫时判断最近的反向呼叫
- 采用"扫描法"检查各楼层呼叫状态
ladder复制// 上行方向判断示例
NETWORK 3
LD V200.0 // 当前运行方向标志(0=下,1=上)
MOVB &VB105, VB10 // 将上行呼叫寄存器复制到临时区
AENO
MOVB &VB100, VB11 // 内呼寄存器复制
调试心得:在实际测试中发现,简单的"先到先服务"算法会导致电梯出现"饿死"现象(高层持续有请求导致低层长期得不到响应)。后来增加了"最长等待时间"判断,当某层等待超过30秒时,无论方向如何都优先响应。
4. MCGS触摸屏界面开发
4.1 画面组态设计
MCGS7.7的组态界面分为三个主要画面:
-
主监控画面:
- 五层电梯的剖面示意图
- 实时显示轿厢位置(用填充矩形的高度表示)
- 各楼层呼叫状态指示灯
- 运行方向箭头动画
-
参数设置画面:
- 楼层停靠时间设置(默认3秒)
- 加速度/减速度参数
- 故障模拟触发按钮
-
运行记录画面:
- 滚动显示最近的100条操作记录
- 支持按时间筛选和导出CSV
关键动画的实现方法是:将轿厢位置(VW200)映射到矩形对象的"顶部"属性,使用线性变换公式:
code复制矩形顶部 = 画面高度 - (VW200 × 每层像素高度)
4.2 通信参数配置
MCGS与S7-200通过PPI协议通信,需要特别注意以下参数:
- 设备窗口 → 设备管理 添加"西门子S7-200PPI"驱动
- 设置PLC站地址为2(默认值)
- 通信参数:
- 波特率:19200bps
- 数据位:8
- 停止位:1
- 校验方式:偶校验
常见问题:如果通信不稳定,可以尝试在MCGS的"设备属性"中增加"通信超时"(建议500ms)和"重试次数"(建议3次)。我们曾遇到因接地不良导致通信断续的情况,后来在PLC和触摸屏间加装信号隔离器解决了问题。
5. 仿真调试技巧
5.1 分段调试方法
建议按照以下顺序逐步验证功能:
- 先测试单层运行(如1→2→1的往返)
- 验证呼叫登记功能(检查VB100-VB112寄存器)
- 测试同方向多楼层连续响应
- 验证反向呼叫的截停功能
- 最后测试故障恢复流程
5.2 典型问题排查
根据我们的项目经验,整理了几个常见问题及解决方法:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 电梯不响应外呼 | 呼叫登记寄存器未正确更新 | 检查按钮信号的上升沿检测逻辑 |
| 运行到错误楼层 | 平层信号检测异常 | 重新校准楼层高度参数 |
| 触摸屏显示数据不同步 | 通信周期设置过长 | 将MCGS采集周期调整为200ms |
| 开关门动作不执行 | 门锁信号未接通 | 检查I1.5输入点的接线 |
| 多楼层呼叫时逻辑混乱 | 方向判断条件冲突 | 在状态转换处增加互锁逻辑 |
5.3 性能优化建议
-
扫描周期优化:
- 将实时性要求高的逻辑(如安全检测)放在主程序开头
- 使用子程序处理复杂计算(如调度算法)
- 关键网络段添加"//!!"标记便于快速定位
-
内存管理:
- 定期清除已完成任务的呼叫登记(每5秒扫描一次)
- 使用S7-200的"填充指令"(FILL)初始化数据块
- 将频繁访问的数据放在VW0-VW199区域(这是S7-200的快速访问区)
这个仿真项目虽然规模不大,但涵盖了工业控制系统开发的完整流程。在实际教学中,学生可以通过修改调度算法、增加节能模式等功能进行二次开发。我们团队在原有基础上又扩展了手机监控功能(通过Modbus TCP转接),这需要额外增加一个通信模块。
