六部十层参考程序博途v15.1.1200系列。 附带设计方案。 需要的DD。在自动化控制领域博途软件广泛应用于各类项目。今天咱聊聊基于博途V15.1针对1200系列PLC的六部十层程序设计。整体设计思路六部十层系统涉及多个动作逻辑比如电梯的上下运行、层门开关、呼叫响应等。我们先规划整个系统的状态机大致可以分为电梯静止、上升、下降等主要状态。程序架构硬件配置在博途V15.1中针对1200系列PLC先进行硬件组态。打开博途软件新建项目后在硬件目录中找到对应的1200PLC型号添加进来配置好CPU模块、通信模块如果有远程I/O或者网络通信需求以及数字量输入输出模块对应连接六部十层系统的各种按钮、传感器和电机控制线路。编程逻辑初始化部分// 初始化一些全局变量 GlobalVar1 : 0; GlobalVar2 : 0; // 将电梯初始位置设为第一层 CurrentFloor : 1;这部分代码在OB1组织块1相当于主程序循环开始执行先把一些全局变量清零并且将电梯的当前楼层设为1楼作为起始状态。呼叫处理逻辑假设每层都有上行和下行呼叫按钮对应数字量输入点。// 处理一楼上行呼叫 IF I0.0 1 THEN CallList[1, 1] : 1; // 将一楼上行呼叫标志位置1 END_IF; // 处理二楼下行呼叫 IF I0.2 1 THEN CallList[2, 0] : 1; // 将二楼下行呼叫标志位置1 END_IF;这里I0.0等代表输入点CallList是一个二维数组第一维表示楼层第二维0代表下行呼叫1代表上行呼叫。通过判断输入点状态来标记呼叫请求。电梯运行逻辑// 如果有上行呼叫且电梯当前不在最高层且当前状态不是上升中 IF (ANY(CallList[CurrentFloor 1 TO 10, 1]) 1) AND (CurrentFloor 10) AND (ElevatorState 1) THEN ElevatorState : 1; // 设置电梯状态为上升 // 启动上升电机相关输出 Q0.0 : 1; END_IF; // 如果有下行呼叫且电梯当前不在最底层且当前状态不是下降中 IF (ANY(CallList[1 TO CurrentFloor - 1, 0]) 1) AND (CurrentFloor 1) AND (ElevatorState 2) THEN ElevatorState : 2; // 设置电梯状态为下降 // 启动下降电机相关输出 Q0.1 : 1; END_IF;这段代码判断是否有合适方向的呼叫请求并且结合电梯当前位置和状态来决定是否改变电梯运行状态并控制电机输出。楼层到达处理假设每层有一个楼层传感器对应输入点。// 假设楼层传感器对应输入点I1.0 - I1.9 FOR i : 1 TO 10 DO IF I1.(i - 1) 1 THEN CurrentFloor : i; // 停止电梯电机 Q0.0 : 0; Q0.1 : 0; // 打开层门相关输出 Q0.2 : 1; // 清除该楼层的呼叫标志 CallList[i, 0] : 0; CallList[i, 1] : 0; END_IF; END_FOR;当楼层传感器触发更新当前楼层停止电梯运行打开层门并清除该楼层已响应的呼叫标志。总结通过上述设计方案和参考程序在博途V15.1下基于1200系列PLC能较好地实现六部十层系统的基本控制逻辑。当然实际项目中可能还需要更多的安全逻辑、优化策略等但这个框架为进一步开发奠定了基础。希望这篇博文对有相关需求的朋友有所帮助需要进一步探讨的欢迎留言交流。六部十层参考程序博途v15.1.1200系列。 附带设计方案。 需要的DD。
博途V15.1下1200系列六部十层参考程序设计方案
六部十层参考程序博途v15.1.1200系列。 附带设计方案。 需要的DD。在自动化控制领域博途软件广泛应用于各类项目。今天咱聊聊基于博途V15.1针对1200系列PLC的六部十层程序设计。整体设计思路六部十层系统涉及多个动作逻辑比如电梯的上下运行、层门开关、呼叫响应等。我们先规划整个系统的状态机大致可以分为电梯静止、上升、下降等主要状态。程序架构硬件配置在博途V15.1中针对1200系列PLC先进行硬件组态。打开博途软件新建项目后在硬件目录中找到对应的1200PLC型号添加进来配置好CPU模块、通信模块如果有远程I/O或者网络通信需求以及数字量输入输出模块对应连接六部十层系统的各种按钮、传感器和电机控制线路。编程逻辑初始化部分// 初始化一些全局变量 GlobalVar1 : 0; GlobalVar2 : 0; // 将电梯初始位置设为第一层 CurrentFloor : 1;这部分代码在OB1组织块1相当于主程序循环开始执行先把一些全局变量清零并且将电梯的当前楼层设为1楼作为起始状态。呼叫处理逻辑假设每层都有上行和下行呼叫按钮对应数字量输入点。// 处理一楼上行呼叫 IF I0.0 1 THEN CallList[1, 1] : 1; // 将一楼上行呼叫标志位置1 END_IF; // 处理二楼下行呼叫 IF I0.2 1 THEN CallList[2, 0] : 1; // 将二楼下行呼叫标志位置1 END_IF;这里I0.0等代表输入点CallList是一个二维数组第一维表示楼层第二维0代表下行呼叫1代表上行呼叫。通过判断输入点状态来标记呼叫请求。电梯运行逻辑// 如果有上行呼叫且电梯当前不在最高层且当前状态不是上升中 IF (ANY(CallList[CurrentFloor 1 TO 10, 1]) 1) AND (CurrentFloor 10) AND (ElevatorState 1) THEN ElevatorState : 1; // 设置电梯状态为上升 // 启动上升电机相关输出 Q0.0 : 1; END_IF; // 如果有下行呼叫且电梯当前不在最底层且当前状态不是下降中 IF (ANY(CallList[1 TO CurrentFloor - 1, 0]) 1) AND (CurrentFloor 1) AND (ElevatorState 2) THEN ElevatorState : 2; // 设置电梯状态为下降 // 启动下降电机相关输出 Q0.1 : 1; END_IF;这段代码判断是否有合适方向的呼叫请求并且结合电梯当前位置和状态来决定是否改变电梯运行状态并控制电机输出。楼层到达处理假设每层有一个楼层传感器对应输入点。// 假设楼层传感器对应输入点I1.0 - I1.9 FOR i : 1 TO 10 DO IF I1.(i - 1) 1 THEN CurrentFloor : i; // 停止电梯电机 Q0.0 : 0; Q0.1 : 0; // 打开层门相关输出 Q0.2 : 1; // 清除该楼层的呼叫标志 CallList[i, 0] : 0; CallList[i, 1] : 0; END_IF; END_FOR;当楼层传感器触发更新当前楼层停止电梯运行打开层门并清除该楼层已响应的呼叫标志。总结通过上述设计方案和参考程序在博途V15.1下基于1200系列PLC能较好地实现六部十层系统的基本控制逻辑。当然实际项目中可能还需要更多的安全逻辑、优化策略等但这个框架为进一步开发奠定了基础。希望这篇博文对有相关需求的朋友有所帮助需要进一步探讨的欢迎留言交流。六部十层参考程序博途v15.1.1200系列。 附带设计方案。 需要的DD。