龙空技术网

工控PLC编程ST编程之搬运码垛案例思路

自动化机器人砖家 2541

前言:

而今朋友们对“st算法”大约比较讲究,各位老铁们都想要分析一些“st算法”的相关内容。那么小编同时在网上收集了一些对于“st算法””的相关知识,希望我们能喜欢,同学们快快来学习一下吧!

这次讲一下用ST编程具体做项目的案例,搬运码垛比较简单易懂,应用也比较广泛,下面就是搬运码垛的思路,思路有了,就有了做复杂项目的基础。复杂项目都是简单项目堆积起来的,但是框架思路要对,不然稍微复杂点,那程序就没法看了。

1、搬运码垛项目控制逻辑

逻辑控制主要采用面向过程的编程方法,把所有的分解动作串联在一起。分为两部分。

第一部分是控制传送带和剪断机。

第二部分是码垛。

第一部分中分别用一个NC轴来模拟传送带,剪断机中包括两个气缸,压箱气缸和剪断气缸。除此之外,还用到两个传感器,分别检测箱子进入传送带和箱子进入剪断机。

第二部分是码垛,分别用3个NC轴来模拟机械手的X方向,Y方向和Z方向,其中还包括一个吸嘴气缸,除此之外,还包括一个传感器用于检测是否到达码垛位置。

第一部分的动作流程介绍:

第一个传感器检测到箱子进入到传送带----开启传送带,让传送带匀速运动----第二个传感器检测到箱子进入到剪断机,让压箱气缸动作----当第二个传感器检测不到箱子时,让剪断气缸动作----等待设定时间后,复位压箱气缸和剪断气缸----等待下次循环

第二部分的动作流程介绍:

当传感器检测到箱子在码垛位置----Z轴放下固定距离----让吸嘴动作----当吸嘴到达工作位,Z轴上升到固定位置----X,Y轴移动到对应的码垛位置----Z轴下降----复位吸嘴气缸----Z轴上升---XY轴回到初始位置----等待下次循环

2、控制程序讲解

程序使用功能块APP_Conv,功能块可以自己封装,或者网上下载,找我要也可以!

通过APP_Conv功能块,实现第一部分的流程。

APP_Conv里面调用了一个Axis_PTP_COE功能块和两个FB_Actuator功能块,Axis_PTP_COE用于控制传送带,FB_Actuator用于控制压箱气缸和剪断气缸。

声明变量

APP_Conv包括5个Action,每个Action功能说明:

00_Init:用于系统变量的初始化,以及对伺服轴和气缸命名

10_AUTO:通过Case语句编写动作流程

20_Manual:手动控制传送带轴

30_FB:状态监控及调用气缸功能块

40_Home:让执行器和伺服轴回到初始位置

APP_Conv功能块通过case语句来调用这5个Action,首先进行系统初始化和硬件初始化。接着根据全局变量中的RqSysAutoModeIsActive变量的值,确定到底执行自动或者手动的程序。

具体程序如下:

CASE SysStep OF

0: (*Init*)

00_Init();

SysStep:=100;

100:(*Home*)

40_Home();

IF HomeDone THEN

HomeStep:=0;

SysStep:=200;

END_IF

200:(*Manual*)

IF NOT RqSysAutoModeIsActive THEN

20_Manual();

ELSE

Axis.aMoveOff();(*停止伺服电机的运动*)

SysStep:=300;

END_IF

300:(*Auto*)

IF RqSysAutoModeIsActive

AND RqSysMachineRunInCycle

AND NOT RqSysGoPauseState

AND NOT gbAlarm_NeedPause

AND NOT gbAlarm_StopAlarm THEN

10_AUTO();

ELSE

Axis.aMoveOff();(*停止伺服电机的运动*)

IF NOT RqSysAutoModeIsActive THEN

SysStep:=200;

END_IF

END_IF

END_CASE

30_FB();

通过APP_Clamp实现第二部分的码垛。

APP_Clamp里面调用了三个Axis_PTP_COE功能块和一个FB_Actuator功能块,Axis_PTP_COE用于控制机械手的X方向,Y方向和Z方向,FB_Actuator用于控制吸嘴。

声明变量

APP_Clamp包括5个Action,每个Action功能说明:

00_Init:用于系统变量的初始化,以及对伺服轴和气缸命名

10_AUTO:通过Case语句编写动作流程

20_Manual:手动控制机械手

30_FB: 状态监控及调用气缸功能块

40_Home:让执行器和伺服轴回到初始位置

APP_Clamp功能块通过case语句来调用这5个Action,首先进行系统初始化和硬件初始化。接着根据全局变量中的RqSysAutoModeIsActive变量的值,确定到底执行自动或者手动的程序。

CASE SysStep OF

0: (*Init*)

00_Init();

SysStep:=100;

100:(*Home*)

40_Home();

IF HomeDone THEN

HomeStep:=0;

SysStep:=200;

END_IF

200:(*Manual*)

IF NOT RqSysAutoModeIsActive THEN

20_Manual();

ELSE

AxisX.aMoveOff();(*停止伺服电机的运动*)

AxisY.aMoveOff();(*停止伺服电机的运动*)

AxisZ.aMoveOff();(*停止伺服电机的运动*)

SysStep:=300;

END_IF

300:(*Auto*)

IF RqSysAutoModeIsActive

AND RqSysMachineRunInCycle

AND NOT RqSysGoPauseState

AND NOT gbAlarm_NeedPause

AND NOT gbAlarm_StopAlarm THEN

10_AUTO();

ELSE

AxisX.aMoveOff();(*停止伺服电机的运动*)

AxisY.aMoveOff();(*停止伺服电机的运动*)

AxisZ.aMoveOff();(*停止伺服电机的运动*)

IF NOT RqSysAutoModeIsActive THEN

SysStep:=200;

END_IF

END_IF

END_CASE

30_FB();

标签: #st算法