电梯程序,西门子博图仿真程序 单部五层电梯 四层 博图16 全自动仿真程序(包含程序和画面),西门子1200,PCstation仿真! 博图16 不需要plc实物,不需要EET,全部是仿真完成!
最近在折腾西门子博图V16的仿真功能,发现用PLCSIM Advanced+WinCC做电梯控制特别有意思。今天带大家从零开始实现一套五层楼电梯的自动控制系统,不用PLC硬件不用EET,纯靠仿真就能看到电梯上下跑动,HMI还能实时显示状态。(文末附完整项目文件)
一、硬件组态三板斧
在TIA Portal里新建项目,直接拖入1214C DC/DC/DC型号的PLC。重点来了:在PC station里添加WinCC Runtime,这才是实现HMI仿真的关键。注意把两个设备的IP设在同一个网段,我习惯用192.168.0.1和192.168.0.2这种兄弟地址。
组态完别急着写程序,先建好变量表。电梯控制的核心变量就这几类:
// 输入信号 电梯呼叫按钮:Call_1..Call_5 (Bool) 楼层到位信号:FloorSensor_1..FloorSensor_5 (Bool) // 输出信号 电梯方向灯:Up_Light, Down_Light (Bool) 楼层显示:CurrentFloor (Int) 开门信号:Door_Open (Bool)二、核心控制逻辑拆解
电梯程序最有趣的当属运动控制逻辑。用SCL写了个状态机函数块,比梯形图更直观:
FUNCTION_BLOCK Elevator_Control VAR_INPUT CallButtons : ARRAY[1..5] OF Bool; FloorSensors : ARRAY[1..5] OF Bool; END_VAR VAR_OUTPUT Direction : Int; //0-停止 1-上行 2-下行 CurrentFloor : Int; END_VAR VAR TargetFloor : Int := 1; MoveTimer : TON; END_VAR // 楼层请求处理 IF Direction = 0 THEN TargetFloor := FindNextRequest(); END_IF // 运动控制 CASE Direction OF 1: //上行 IF CurrentFloor >= TargetFloor THEN Direction := 0; ELSE CurrentFloor := CurrentFloor + 1; MoveTimer(IN:=TRUE, PT:=T#2S); END_IF; 2: //下行 //...类似上行逻辑 END_CASE;这段代码实现了基本的楼层请求队列处理,用FindNextRequest函数(未展示)判断最近的请求楼层。MoveTimer定时器模拟电梯移动耗时,2秒/层的速度比较接近真实场景。
三、HMI画面灵魂设计
WinCC画面要抓住两个重点:操作直观+状态可视。我做了个立体感楼层显示面板:
!电梯HMI示意图
关键动画设置:
- 楼层数字绑定CurrentFloor变量
- 上下箭头用方向信号控制颜色
- 门开动画用Door_Open变量触发缩放效果
- 呼叫按钮用「按下时置位,到达楼层时复位」的逻辑
四、仿真调试骚操作
同时打开PLCSIM Advanced和WinCC Runtime,记得勾选「允许远程连接」。调试时经常遇到这两种情况:
- 电梯在两层之间抖动
检查楼层传感器信号是否出现重叠,加个RS触发器去抖:ladder
// 梯形图去抖逻辑
FloorSensor1 RSTrigger
---| |-----------(S)
CurrentFloor=1 RS_Trigger
---| |-----------(R)
- HMI按钮无响应
检查变量连接和PLC-HMI的关联,经常是HMI变量名前缀没设置对
五、效果展示
点击仿真运行后,你会看到:
- 点击3楼呼叫按钮→电梯上行→到达后自动开门5秒
- 运行中按下更高楼层→加入请求队列
- 无请求时停靠最后到达楼层
- 急停按钮可中断所有操作
完整项目已打包,包含:
- TIA V16完整程序(含SCL源码)
- WinCC HMI画面文件
- 仿真配置说明
- 常见问题排查手册
(项目获取方式:评论区留言「电梯」自动发送下载链接)
搞工控的乐趣不就在于,用代码让虚拟设备动起来的那一刻么?这个电梯项目虽然简单,但涵盖了状态机、HMI联动、运动控制等核心知识点,下次咱们可以试试四部电梯联控!