2026/4/18 13:19:53
网站建设
项目流程
做网站要注意些什么,哪里有网站开发团队,网络营销推广代理,WordPress主题VR插件基于plc的单部6层#xff0c;单部六层电梯控制系统。
具体实现内容看看视频。
支持软件为博途v15.1。
wincc监控画面画好了电梯的模型#xff0c;无需eet仿真即可看到电梯运行过程#xff0c;可以呈现出电梯运行时的状态。有lw#xff0c;ppt可选这个六层电梯控制系统项目用…基于plc的单部6层单部六层电梯控制系统。 具体实现内容看看视频。 支持软件为博途v15.1。 wincc监控画面画好了电梯的模型无需eet仿真即可看到电梯运行过程可以呈现出电梯运行时的状态。 有lwppt可选这个六层电梯控制系统项目用TIA Portal V15.1开发挺有意思的。我直接在西门子1200 PLC上撸代码WinCC的监控画面自己用矢量图拼了个动态电梯模型比用EET那些预制组件灵活多了。硬件配置简单粗暴数字量输入接24个按钮每层内外呼输出点控制接触器和指示灯。重点在于程序架构——我用了状态机时间片轮询的方式。核心是下面这个状态枚举TYPE E_ElevatorState : ( IDLE : 1, //待机 MOVING_UP : 2, //上行 MOVING_DOWN : 3, //下行 DOOR_OPEN : 4, //开门中 DOOR_CLOSE : 5 //关门中 ); END_TYPE每次扫描周期先处理呼叫信号这里用了个小技巧——把内外呼信号存入两个数组VAR InternalCall: ARRAY[1..6] OF Bool; //内呼 ExternalUp: ARRAY[1..5] OF Bool; //外呼上行 ExternalDown: ARRAY[2..6] OF Bool; //外呼下行 END_VAR楼层判断用光电开关的上升沿触发这里要注意消抖处理。比如到达3楼时的处理逻辑IF Floor3_Sensor AND NOT Pre_Floor3 THEN CurrentFloor : 3; Brake : 0; //抱闸释放 //检查该层是否有呼叫... END_IF Pre_Floor3 : Floor3_Sensor;方向决策算法是重头戏。我参考了电梯调度中的SCAN算法但做了简化。核心是这个优先级判断当前运行方向上的同向呼叫反向最远端点呼叫当前楼层反向呼叫用WinCC做动画监控时电梯轿厢位置通过PLC的Real型变量传递。这里有个坑——直接绑定整型变量会出现跳帧所以我在OB30循环中断里做了平滑处理//每100ms执行 ActualPosition : ActualPosition (TargetPosition - ActualPosition) * 0.2;开门动画最折腾用WinCC的C脚本控制门扇移动int door_state GetTagByte(DoorState); if(door_state 4){ //开门中 left_door 3; right_door - 3; SetTagValue(LeftDoor, left_door); }调试时建议多用变量表监控特别是这个状态变迁视图当电梯停在2楼收到4楼上呼时应该先上升到4楼途中响应3楼的内呼。这时候看directionflag和targetfloor的变化特别明显。项目包里有个叫Elevator_Scheduler的FB块里面的调度算法模块可以单独移植。比如这个判断是否要改变运行方向的逻辑IF (CurrentDirection UP) AND (HighestCall CurrentFloor) THEN NeedReverse : TRUE; ELSIF (CurrentDirection DOWN) AND (LowestCall CurrentFloor) THEN NeedReverse : TRUE; END_IF实际跑起来发现个有趣现象早高峰时电梯会更频繁地在一楼逗留这时候程序里的peak_mode标志位会临时调整停靠策略——允许同方向连续停靠牺牲部分效率来提升吞吐量。源码里有个E_Stop处理很多人容易忽略。急停不仅要切断动力还要用沿检测保存最后楼层IF Emergency_Stop THEN LastKnownFloor : CurrentFloor; //...其他安全处理 END_IF这个项目改改参数就能套用在立体车库或传送带系统上特别是那个带权重值的调度算法调整下响应系数就能实现不同策略——比如医疗电梯优先、货梯避开高峰之类的需求。