自动化立体仓库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;

相关推荐
AC赳赳老秦10 分钟前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主17 分钟前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长1 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
好家伙VCC2 小时前
【无标题】
java
小碗羊肉3 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医3 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载
Byron Loong3 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
hexu_blog4 小时前
vue+java实现图片批量压缩
java·前端·vue.js
头歌实践平台4 小时前
Hadoop开发环境搭建
java·大数据·hadoop
IT_陈寒4 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端