LabVIEW电梯项目:如何重启While循环?队列异常求助
LabVIEW简易电梯项目逻辑异常求助
项目背景
- 开发简易电梯控制系统,每层配置上下两个呼叫按钮,通过Case Structure实现电梯的上行、下行、等待三种状态逻辑。
遇到的问题
单次While Loop实现的异常
将包含Event Structure(处理按钮按压事件)的逻辑放入单个While Loop时,出现以下问题:
- 按钮按压需多次操作才会触发响应
- 仅执行楼层请求数组(队列)中的第三个请求
- 已处理完成的楼层请求不会从数组中删除
双层嵌套While Loop的异常
改为双层嵌套While Loop后,新问题出现:
- 仅能处理数组中的前两个请求(一个呼叫楼层、一个目标楼层)
- 处理完成后电梯卡在等待状态,后续新增的楼层请求无法触发电梯运行
- 推测核心原因:内层While Loop的Shift Registers未同步Event Structure更新后的请求数组,始终使用上一次迭代的旧数据
已尝试的方案及问题
尝试添加计时器,让电梯在等待状态超时后停止内层Loop,但仅能实现停止而非重启,还引发了楼层系统异常,出现负楼层的错误情况。
程序框图
- 程序框图1:

- 程序框图2:

求助需求
如何实现电梯等待超时后重启内层While Loop?或者有没有更合理的架构方案解决当前的请求数组同步问题?
内容的提问来源于stack exchange,提问作者Ana Ci
相关产品推荐
相关产品推荐

