.单部六层电梯程序.基于西门子1200,博图V15.1版本 单部六层电梯清单:plc程序 HMI组态画面wincc编写 电气接线图 硬件框架图 io表 功能:顺向接梯、逆向接梯、屏蔽开关实现指定楼层直上直下、超时自动返回指定楼层、 开关控制长时间开门、超重功能,报警常开门,检修自动回到一楼敞开门 一台电脑就可以仿真运行,该程序只需点击外呼内呼即可根据逻辑自动运行上行下行以及开关门
最近完成了一个基于西门子1200的单部六层电梯程序项目,使用博图V15.1版本进行开发,今天来和大家分享一下这个过程。
一、项目清单
- plc程序:这是整个电梯运行逻辑的核心,控制电梯的升降、开关门等动作。
- HMI组态画面(wincc编写):用户与电梯交互的界面,通过它可以直观地操作和监控电梯状态。
- 电气接线图:明确各个电气部件之间的连接关系,确保硬件系统的稳定运行。
- 硬件框架图:展示电梯硬件系统的整体架构,便于理解各部分的布局和相互关系。
- io表:记录输入输出信号的对应关系,方便程序编写和调试。
二、核心功能与代码示例
1. 顺向接梯与逆向接梯
顺向接梯和逆向接梯功能,让电梯能够高效地响应不同方向的呼叫。
// 假设使用梯形图语言,这里简单示意逻辑 // 定义变量 BOOL upCall[6]; // 各楼层向上呼叫按钮信号 BOOL downCall[6]; // 各楼层向下呼叫按钮信号 INT currentFloor; // 当前楼层 BOOL isGoingUp; // 是否向上运行 // 顺向接梯逻辑 FOR (INT i = currentFloor; i < 6; i++) { IF (upCall[i]) { isGoingUp := TRUE; // 这里添加电梯向上运行的控制逻辑,例如设置电机运行方向等 BREAK; } } // 逆向接梯逻辑 FOR (INT i = currentFloor; i >= 0; i--) { IF (downCall[i]) { isGoingUp := FALSE; // 这里添加电梯向下运行的控制逻辑,例如设置电机运行方向等 BREAK; } }这段代码通过遍历各楼层的呼叫信号,根据当前楼层判断电梯应该向上还是向下运行,实现了顺向和逆向接梯的基本逻辑。
2. 屏蔽开关实现指定楼层直上直下
通过屏蔽开关,用户可以设定电梯直接到达指定楼层,绕过其他楼层的呼叫。
BOOL floorShield[6]; // 各楼层屏蔽开关信号 INT targetFloor; // 指定的目标楼层 // 屏蔽开关逻辑 IF (floorShield[targetFloor]) { // 清除其他楼层呼叫信号 FOR (INT i = 0; i < 6; i++) { upCall[i] := FALSE; downCall[i] := FALSE; } // 设置电梯直接前往目标楼层的逻辑 // 例如根据目标楼层与当前楼层比较设置运行方向等 IF (targetFloor > currentFloor) { isGoingUp := TRUE; } ELSE { isGoingUp := FALSE; } }此代码当检测到某个楼层的屏蔽开关开启时,会清除其他楼层呼叫,并控制电梯直接前往指定目标楼层。
3. 超时自动返回指定楼层
为防止电梯长时间停留,设置了超时自动返回功能。
TIME timeout; // 超时时间 BOOL isTimeout; // 是否超时标志 INT returnFloor; // 返回楼层 // 超时检测逻辑 IF (timeElapsed >= timeout) { isTimeout := TRUE; } // 超时返回逻辑 IF (isTimeout) { // 设置电梯前往返回楼层的逻辑 IF (returnFloor > currentFloor) { isGoingUp := TRUE; } ELSE { isGoingUp := FALSE; } }这里通过检测时间是否超过设定的超时时间,若超时则控制电梯返回指定楼层。
4. 开关控制长时间开门
通过一个特殊开关,可实现电梯门长时间保持打开状态。
BOOL longOpenSwitch; // 长时间开门开关信号 // 开门逻辑 IF (longOpenSwitch) { // 设置电梯门保持打开的逻辑,例如停止关门动作等 doorClose := FALSE; } ELSE { // 正常的开关门逻辑 // 根据电梯状态等判断是否应该开门或关门 }当长时间开门开关信号有效时,电梯门将保持打开,直到开关关闭。
5. 超重功能,报警常开门
检测到超重时,电梯发出报警并保持门打开。
BOOL isOverweight; // 是否超重信号 BOOL alarm; // 报警信号 // 超重逻辑 IF (isOverweight) { alarm := TRUE; // 保持门打开 doorClose := FALSE; } ELSE { alarm := FALSE; // 正常开关门逻辑 }一旦检测到超重,报警信号置位并阻止门关闭。
6. 检修自动回到一楼敞开门
在检修模式下,电梯自动回到一楼并敞开电梯门。
BOOL maintenanceMode; // 检修模式信号 // 检修逻辑 IF (maintenanceMode) { // 设置电梯前往一楼的逻辑 isGoingUp := FALSE; // 电梯到达一楼后,保持门打开 doorClose := FALSE; }当进入检修模式,电梯会自动向下运行至一楼并保持门敞开。
三、仿真运行
这个程序最大的亮点是一台电脑就可以仿真运行。在博图V15.1环境下,只需简单点击外呼内呼按钮,电梯就能根据预设的逻辑自动运行上行下行以及开关门。通过仿真,可以快速验证程序的正确性,大大提高了开发效率。
在开发这个单部六层电梯程序过程中,从功能实现到代码编写,再到最后的仿真调试,每一步都充满挑战,但最终看到它能按照预期运行,成就感满满。希望我的分享能给大家在类似项目开发中带来一些启发。