自动化立体仓库PLC控制系统手动运行功能

IF NOT "模式手动I" THEN

"堆垛机过程数据块".手动模式封锁 := 0;

"堆垛机过程数据块".手动点动保持显示 := 0;

RETURN;

END_IF;

IF NOT "堆垛机过程数据块".手动模式封锁 THEN

"FC41 系统总清占位"();

"堆垛机过程数据块".自检完成 := 0;

"DB5 发送电报数据块".缓存状态电报[1] := '0';

"堆垛机过程数据块".GRAPH运行关闭 := 1;

"堆垛机过程数据块".GRAPH运行启动 := 0;

"堆垛机过程数据块".动作总清完成 := 0;

"堆垛机过程数据块".状态堆垛机当前状态[1] := 0;

"堆垛机过程数据块".手动模式封锁 := 1;

END_IF;

"点动保持设置"();

(*

//手动故障解除

IF "模式手动I" AND ("DB9 触摸屏功能数据块".触屏手动按钮解故障 OR "故障解除I")

AND "堆垛机过程数据块".状态堆垛机当前状态[2] THEN

" 系统总清占位"();

"堆垛机过程数据块".动作总清完成 := 0;

END_IF;

*)

//手动待机判定

IF NOT ("运行电机抱闸打开" OR "起升电机抱闸打开" OR "货叉电机抱闸打开" )

AND NOT "堆垛机过程数据块".状态堆垛机当前状态[2] THEN

"堆垛机过程数据块".状态堆垛机当前状态[1] := 1;

ELSE

"堆垛机过程数据块".状态堆垛机当前状态[1] := 0;

END_IF;

"堆垛机过程数据块".状态堆垛机当前状态[3] := NOT "堆垛机过程数据块".状态堆垛机当前状态[1];

//接通

IF NOT "堆垛机过程数据块".手动内部按钮主封锁

OR "堆垛机过程数据块".手动按钮下降沿检测 THEN

"运行变频器状态控制":P := W#16#047E;

"运行变频器速度控制":P := 0;

"起升变频器状态控制":P := W#16#047E;

"起升变频器速度控制":P := 0;

"货叉变频器状态控制":P := W#16#047E;

"货叉变频器速度控制":P := 0;

RETURN;

END_IF;

//货偏禁止高速

IF "堆垛机过程数据块".故障标识[16] THEN

"堆垛机过程数据块".手动内部换速功能 := 0;

END_IF;

//水平运行

//前进低速

IF (("堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部换速功能 )

OR ("堆垛机过程数据块".手动内部按钮水平前 AND "堆垛机过程数据块".手动内部换速功能 AND "前进换速I"))

AND NOT "堆垛机过程数据块".手动内部按钮水平后 AND NOT "堆垛机过程数据块".手动内部按钮起升上

AND NOT "堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"运行变频器状态控制":P := W#16#047F;

"运行变频器速度控制":P := 550;//DINT_TO_WORD("堆垛机过程数据块".计算列运行速度低速);

ELSIF

//后退低速

(("堆垛机过程数据块".手动内部按钮水平后 AND NOT "堆垛机过程数据块".手动内部换速功能 )

OR ("堆垛机过程数据块".手动内部按钮水平后 AND "堆垛机过程数据块".手动内部换速功能 AND "后退换速I"))

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮起升上

AND NOT "堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"运行变频器状态控制":P := W#16#0C7F;

"运行变频器速度控制":P := 550;//DINT_TO_WORD("堆垛机过程数据块".计算列运行速度低速);

ELSIF

//前进高速

"堆垛机过程数据块".手动内部按钮水平前 AND "堆垛机过程数据块".手动内部换速功能 AND NOT "前进换速I"

AND NOT "堆垛机过程数据块".手动内部按钮水平后 AND NOT "堆垛机过程数据块".手动内部按钮起升上

AND NOT "堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"运行变频器状态控制":P := W#16#047F;

"运行变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算列运行速度低速 + 6000);

ELSIF

//后退高速

"堆垛机过程数据块".手动内部按钮水平后 AND "堆垛机过程数据块".手动内部换速功能 AND NOT "后退换速I"

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮起升上

AND NOT "堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"运行变频器状态控制":P := W#16#0C7F;

"运行变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算列运行速度低速 + 6000);

ELSE

"运行变频器状态控制":P := W#16#047E;

"运行变频器速度控制":P := 0;

END_IF;

//故障保护

IF ("运行变频器故障" OR(NOT "堆垛机过程数据块".货叉中位模糊对准标识

AND( "堆垛机过程数据块".手动内部按钮水平前 OR "堆垛机过程数据块".手动内部按钮水平后))

OR ("堆垛机过程数据块".手动内部按钮水平前 AND "前进限位I")

OR ("堆垛机过程数据块".手动内部按钮水平后 AND "后退限位I")) THEN

IF "前进限位I" OR "后退限位I" THEN

"堆垛机过程数据块".故障标识[15] := 1;

END_IF;

"运行变频器状态控制":P := W#16#047E;

"运行变频器速度控制":P := 0;

"运行变频器投入Q" := 0;

ELSE

"运行变频器投入Q" := 1;

END_IF;

//起升运行

//起升低速

IF (("堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部换速功能 )

OR ("堆垛机过程数据块".手动内部按钮起升上 AND "堆垛机过程数据块".手动内部换速功能 AND "上换速开关I")

OR ("堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".货叉中位模糊对准标识 ))

AND NOT "堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部按钮水平前

AND NOT "堆垛机过程数据块".手动内部按钮水平后 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"起升变频器状态控制":P := W#16#047F;

"起升变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算层运行速度低速);

ELSIF

//下降低速

(("堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".手动内部换速功能 )

OR ("堆垛机过程数据块".手动内部按钮起升下 AND "堆垛机过程数据块".手动内部换速功能 AND "下换速开关I")

OR ("堆垛机过程数据块".手动内部按钮起升下 AND NOT "堆垛机过程数据块".货叉中位模糊对准标识 ))

AND NOT "堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部按钮水平前

AND NOT "堆垛机过程数据块".手动内部按钮水平后 AND NOT "堆垛机过程数据块".手动内部按钮货叉左

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"起升变频器状态控制":P := W#16#0C7F;

"起升变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算层运行速度低速);

ELSIF

//起升高速

"堆垛机过程数据块".手动内部按钮起升上 AND "堆垛机过程数据块".手动内部换速功能 AND NOT "上换速开关I"

AND "堆垛机过程数据块".货叉中位模糊对准标识 AND NOT "堆垛机过程数据块".手动内部按钮起升下

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮货叉左 AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"起升变频器状态控制":P := W#16#047F;

"起升变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算层运行速度低速+5000);

ELSIF

//下降高速

"堆垛机过程数据块".手动内部按钮起升下 AND "堆垛机过程数据块".手动内部换速功能 AND NOT "下换速开关I"

AND "堆垛机过程数据块".货叉中位模糊对准标识 AND NOT "堆垛机过程数据块".手动内部按钮起升上

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮货叉左 AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"起升变频器状态控制":P := W#16#0C7F;

"起升变频器速度控制":P := DINT_TO_WORD("堆垛机过程数据块".计算层运行速度低速 + 5000);

ELSE

"起升变频器状态控制":P := W#16#047E;

"起升变频器速度控制":P := 0;

END_IF;

//故障保护

IF ("起升变频器故障" OR ("堆垛机过程数据块".手动内部按钮起升上 AND "起升上限位I")

OR ("堆垛机过程数据块".手动内部按钮起升下 AND "起升下限位I")) THEN

IF "起升上限位I" OR "起升下限位I" THEN

"堆垛机过程数据块".故障标识[15] := 1;

END_IF;

"起升变频器状态控制":P := W#16#047E;

"起升变频器速度控制":P := 0;

"起升变频器投入Q" := 0;

ELSE

"起升变频器投入Q" := 1;

END_IF;

//货叉运行//

IF (NOT "货叉电机抱闸打开" AND NOT "堆垛机过程数据块".手动内部按钮货叉左 AND NOT "堆垛机过程数据块".手动内部按钮货叉右)

OR "运行电机抱闸打开" OR "起升电机抱闸打开" THEN

"堆垛机过程数据块".货叉左近中范围标识 := 0;

"堆垛机过程数据块".货叉右近中范围标识 := 0;

"堆垛机过程数据块".手动货叉停止标识 := 0;

END_IF;

//货叉近中判定

IF "堆垛机过程数据块".状态货叉旋编数值 < "货叉位置数据块".货叉手动换速 AND "堆垛机过程数据块".状态货叉旋编数值 >= "货叉位置数据块".货叉停止误差 THEN

"堆垛机过程数据块".货叉左近中范围标识 := 1;

ELSIF

"堆垛机过程数据块".状态货叉旋编数值 > - "货叉位置数据块".货叉手动换速 AND "堆垛机过程数据块".状态货叉旋编数值 <= - "货叉位置数据块".货叉停止误差 THEN

"堆垛机过程数据块".货叉右近中范围标识 := 1;

END_IF;

//手动货叉强制停止

IF ("堆垛机过程数据块".手动内部按钮货叉左 AND "堆垛机过程数据块".货叉中位精确对准标识 AND "堆垛机过程数据块".货叉右近中范围标识)

OR ("堆垛机过程数据块".手动内部按钮货叉左 AND "堆垛机过程数据块".货叉左端精确对准标识)

OR ("堆垛机过程数据块".手动内部按钮货叉右 AND "堆垛机过程数据块".货叉中位精确对准标识 AND "堆垛机过程数据块".货叉左近中范围标识)

OR ("堆垛机过程数据块".手动内部按钮货叉右 AND "堆垛机过程数据块".货叉右端精确对准标识) THEN

"堆垛机过程数据块".手动货叉停止标识 := 1;

END_IF;

IF "堆垛机过程数据块".手动货叉停止标识 THEN

"货叉变频器状态控制":P := W#16#047E;

"货叉变频器速度控制":P := 0;

ELSIF

//货叉左伸低速

("堆垛机过程数据块".手动内部按钮货叉左 AND NOT "堆垛机过程数据块".手动内部换速功能)

OR ("堆垛机过程数据块".手动内部按钮货叉左 AND "堆垛机过程数据块".手动内部换速功能 AND

("堆垛机过程数据块".货叉左端模糊对准标识 OR "堆垛机过程数据块".货叉右近中范围标识))

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部按钮起升下

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"货叉变频器状态控制":P := W#16#047F;

"货叉变频器速度控制":P := 400;

ELSIF

//货叉右伸低速

("堆垛机过程数据块".手动内部按钮货叉右 AND NOT "堆垛机过程数据块".手动内部换速功能)

OR ("堆垛机过程数据块".手动内部按钮货叉右 AND "堆垛机过程数据块".手动内部换速功能 AND

("堆垛机过程数据块".货叉右端模糊对准标识 OR "堆垛机过程数据块".货叉左近中范围标识))

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部按钮起升下

AND NOT "堆垛机过程数据块".手动内部按钮货叉左 THEN

"货叉变频器状态控制":P := W#16#0C7F;

"货叉变频器速度控制":P := 400;

ELSIF

//货叉左伸高速

"堆垛机过程数据块".手动内部按钮货叉左 AND "堆垛机过程数据块".手动内部换速功能

AND NOT "堆垛机过程数据块".货叉左端模糊对准标识 AND NOT "堆垛机过程数据块".货叉右近中范围标识

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部按钮起升下

AND NOT "堆垛机过程数据块".手动内部按钮货叉右 THEN

"货叉变频器状态控制":P := W#16#047F;

"货叉变频器速度控制":P := 6250;

ELSIF

//货叉右伸高速

"堆垛机过程数据块".手动内部按钮货叉右 AND "堆垛机过程数据块".手动内部换速功能

AND NOT "堆垛机过程数据块".货叉右端模糊对准标识 AND NOT "堆垛机过程数据块".货叉左近中范围标识

AND NOT "堆垛机过程数据块".手动内部按钮水平前 AND NOT "堆垛机过程数据块".手动内部按钮水平后

AND NOT "堆垛机过程数据块".手动内部按钮起升上 AND NOT "堆垛机过程数据块".手动内部按钮起升下

AND NOT "堆垛机过程数据块".手动内部按钮货叉左 THEN

"货叉变频器状态控制":P := W#16#0C7F;

"货叉变频器速度控制":P := 6250;

ELSE

"货叉变频器状态控制":P := W#16#047E;

"货叉变频器速度控制":P := 0;

END_IF;

//货叉故障停车 西门子G120变频器

IF "货叉变频器故障" OR "运行电机抱闸打开" OR "起升电机抱闸打开"THEN

"货叉变频器状态控制":P := W#16#047E;

"货叉变频器速度控制":P := 0;

"货叉变频器投入Q" := 0;

ELSE

"货叉变频器投入Q" := 1;

END_IF;

相关推荐
微露清风28 分钟前
系统性学习C++-第五讲-内存管理
java·c++·学习
计算机毕业设计木哥32 分钟前
计算机毕业设计选题推荐:基于SpringBoot和Vue的快递物流仓库管理系统【源码+文档+调试】
java·vue.js·spring boot·后端·课程设计
2351637 分钟前
【LeetCode】146. LRU 缓存
java·后端·算法·leetcode·链表·缓存·职场和发展
聪明的笨猪猪40 分钟前
Java Redis “运维”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
FIavor.1 小时前
怎么办这是Apifox里执行http://localhost:9002/goods/getByUserName?name=“张三“为什么我改了还是500?
java·网络·网络协议·http
编程饭碗1 小时前
【Java集合】
java
岁岁岁平安1 小时前
Java的双重检查锁机制(DCL)与懒加载的单例模式
java·单例模式·synchronized·
Jabes.yang1 小时前
Java面试场景:从Spring Boot到Kubernetes的技术问答
java· 面试· spring boot· 微服务· kubernetes· 技术栈· redis
小咕聊编程1 小时前
【含文档+PPT+源码】基于SpringBoot+Gpt个人健康管理系统
java·gpt·tomcat·毕业设计·hibernate
阿无,1 小时前
Java设计模式之工厂模式
java·开发语言·设计模式