Kuka机器人设计通用码垛程序

news/2024/7/7 22:43:04

假设需要一个码垛程序, 从输送线抓到托盘, 托盘每层4个, 需要码5层, 可以用以下程序架构设计:

1, 再config中定义层数cengshu , 每层码垛的个数(码垛的次数)cishu , 每层的高度levelHeight , 码垛放置点的集合putPoint[,] ,预放点1集合prePut1[,], 预放点2集合prePut2[,]

DECL INT cengshu = 0

DECL INT cishu = 0

DECL INT levelHeight = 200

DECL FRAME putPoint[10,10]

DECL FRAME prePut1[10,10]

DECL FRAME prePut2[10,10]

码垛放件程序

&ACCESS RVO1
&COMMENT put2
DEF put2 ( )
;FOLD INI
  ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3 
    BAS (#INITMOV,0 )
  ;ENDFOLD (BASISTECH INI)
  ;FOLD USER INI
    ;Make your modifications here

  ;ENDFOLD (USER INI)
;ENDFOLD (INI)

IF FALSE THEN

;FOLD LIN putBase CONT Vel=2 m/s CPDAT0 Tool[1]:Tool1 Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:putBase, 3:C_DIS C_DIS, 5:2, 7:CPDAT0
$BWDSTART=FALSE
LDAT_ACT=LCPDAT0
FDAT_ACT=FputBase
BAS(#CP_PARAMS,2)
LIN XputBase C_DIS C_DIS
;ENDFOLD

ENDIF



IF (cengshu == 1) OR (cengshu == 2) OR (cengshu == 3) OR (cengshu == 4) OR (cengshu == 5) THEN

   IF cishu == 1 THEN
   
   putPoint[cengshu,cishu]= XputBase
   putPoint[cengshu,cishu].X = putPoint[cengshu,cishu].X
   putPoint[cengshu,cishu].Y = putPoint[cengshu,cishu].Y
   putPoint[cengshu,cishu].Z = putPoint[cengshu,cishu].Z+(cengshu-1)*levelHeight
   
   
   ENDIF
   
   
   
   IF cishu == 2 THEN
   
   putPoint[cengshu,cishu]= XputBase
   putPoint[cengshu,cishu].X = putPoint[cengshu,cishu].X+10
   putPoint[cengshu,cishu].Y = putPoint[cengshu,cishu].Y
   putPoint[cengshu,cishu].Z = putPoint[cengshu,cishu].Z+(cengshu-1)*levelHeight
   
   ENDIF
   
   IF cishu == 3 THEN
   
   putPoint[cengshu,cishu]= XputBase
   putPoint[cengshu,cishu].X = putPoint[cengshu,cishu].X+10
   putPoint[cengshu,cishu].Y = putPoint[cengshu,cishu].Y+10
   putPoint[cengshu,cishu].Z = putPoint[cengshu,cishu].Z+(cengshu-1)*levelHeight
   
   ENDIF
   
   
   IF cishu == 3 THEN
   
   putPoint[cengshu,cishu]= XputBase
   putPoint[cengshu,cishu].X = putPoint[cengshu,cishu].X
   putPoint[cengshu,cishu].Y = putPoint[cengshu,cishu].Y+10
   putPoint[cengshu,cishu].Z = putPoint[cengshu,cishu].Z+(cengshu-1)*levelHeight
   
   ENDIF


ENDIF







;shoudong dao preput1 

prePut1[cengshu,cishu]= putPoint[cengshu,cishu]

prePut1[cengshu,cishu].X = prePut1[cengshu,cishu].X+200

prePut1[cengshu,cishu].Y = prePut1[cengshu,cishu].Y+200

prePut1[cengshu,cishu].Z = prePut1[cengshu,cishu].Z+200


prePut2[cengshu,cishu]= putPoint[cengshu,cishu]

prePut2[cengshu,cishu].X = prePut2[cengshu,cishu].X+100

prePut2[cengshu,cishu].Y = prePut2[cengshu,cishu].Y+100

prePut2[cengshu,cishu].Z = prePut2[cengshu,cishu].Z+100



PTP prePut1[cengshu,cishu] C_DIS

PTP prePut2[cengshu,cishu] C_DIS 

LIN putPoint[cengshu,cishu] C_DIS

$out[1]=FALSE ;fangjian

WAIT SEC 0.5

PTP prePut2[cengshu,cishu] C_PTP 

PTP prePut1[cengshu,cishu] C_PTP





END

主程序:

c&ACCESS RVO
&REL 7
&PARAM EDITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM DISKPATH = KRC:\R1\Program\PRO
DEF test( )
;FOLD INI;%{PE}
  ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3 
    BAS (#INITMOV,0 )
  ;ENDFOLD (BASISTECH INI)
  ;FOLD USER INI
    ;Make your modifications here

  ;ENDFOLD (USER INI)
;ENDFOLD (INI)

$out[1]=FALSE

$out[2]=FALSE


;FOLD PTP HOME  Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP  XHOME
;ENDFOLD

LOOP

FOR cengshu = 1 TO 5

   FOR cishu = 1 TO 4

WAIT FOR $in[1]

pick ()

;FOLD PTP p1 CONT Vel=100 % DEFAULT Tool[1]:Tool1 Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:p1, 3:C_PTP, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=Fp1
BAS(#PTP_PARAMS,100)
PTP Xp1 C_PTP
;ENDFOLD

put2 ()

;FOLD PTP HOME  Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP  XHOME
;ENDFOLD

    ENDFOR
ENDFOR

$out[3]=TRUE

WAIT SEC 1

$out[3]=FALSE

ENDLOOP 

END

取件程序:

&ACCESS RVO1
&COMMENT put1
DEF pick ( )
;FOLD INI
  ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3 
    BAS (#INITMOV,0 )
  ;ENDFOLD (BASISTECH INI)
  ;FOLD USER INI
    ;Make your modifications here

  ;ENDFOLD (USER INI)
;ENDFOLD (INI)


;FOLD PTP p2 CONT Vel=100 % DEFAULT Tool[1]:Tool1 Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:p2, 3:C_PTP, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=Fp2
BAS(#PTP_PARAMS,100)
PTP Xp2 C_PTP
;ENDFOLD

;FOLD LIN p3 CONT Vel=2 m/s CPDAT0 Tool[1]:Tool1 Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:p3, 3:C_DIS C_DIS, 5:2, 7:CPDAT0
$BWDSTART=FALSE
LDAT_ACT=LCPDAT0
FDAT_ACT=Fp3
BAS(#CP_PARAMS,2)
LIN Xp3 C_DIS C_DIS
;ENDFOLD

$OUT[1]=TRUE

WAIT SEC 1

;FOLD LIN p4 CONT Vel=2 m/s CPDAT0 Tool[1]:Tool1 Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:p4, 3:C_DIS C_DIS, 5:2, 7:CPDAT0
$BWDSTART=FALSE
LDAT_ACT=LCPDAT0
FDAT_ACT=Fp4
BAS(#CP_PARAMS,2)
LIN Xp4 C_DIS C_DIS
;ENDFOLD

END

http://lihuaxi.xjx100.cn/news/1490618.html

相关文章

国际站腾讯云容器镜像服务介绍!!

腾讯云容器镜像服务: 腾讯云的容器镜像服务Tencent Cloud Container Registry(TCR)旨在为开发者和企业供给高效、安全的容器镜像办理和存储平台,以处理容器镜像的保管、分发和办理问题。容器镜像是一种轻量级、可移植的软件包&…

【Python】python 打印本地代理

前言 在 Python 中,如果需要访问被墙的网站或者需要隐藏本机 IP 地址,可以通过使用代理服务器来实现。本文将介绍如何打印本地代理的方法,并提供相应的代码和实例。 一、什么是代理服务器 代理服务器(Proxy Server)是…

爬虫逆向实战(二十四)--某鸟记录中心

一、数据接口分析 主页地址:某鸟记录中心 1、抓包 通过抓包可以发现数据接口是front/record/search/page 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现,请求参数是加密的 请求头是否加密? 通过查…

Web Components详解-Custom Elements

目录 引言 演变过程 概述 使用方式 创建标签 定义标签 使用标签 获取标签 异步定义标签 升级标签 完整案例 结语 相关代码 参考文章 引言 随着项目体量的增大,组件化和模块化的优势也愈发明显了,构建可重复使用、独立、可互操作的组件变得…

HDLBits-Verilog学习记录 | Verilog Language-Modules(2)

文章目录 25.Adder 1 | Module add26.Adder 2 | Module fadd27.Carry-select adder28.Adder-subtractor 25.Adder 1 | Module add practice: You are given a module add16 that performs a 16-bit addition. Instantiate two of them to create a 32-bit adder. O…

React 生命周期新旧对比

前言 React16.4版本之后使用了新的生命周期,它使用了一些新的生命周期钩子(getDerivedStateFromProps、getSnapshotBeforeUpdate),并且即将废弃老版的3个生命周期钩子(componentWillMount、componentWillReceiveProps…

ON_WM_INITMENUPOPUP

本文展示了在打 开特定的弹出菜单时,如何轻松有效地调用handler函数。 这个问题 使用MFC时,你需要在打开弹出菜单时从框架中得到一个回调函数,您可以通过 ON_WM_INITMENUPOPUP() 轻松获得到 OnInitMenuPopup() 但是请注意,这个处…

AIGC文生图技术是如何让AI成为“摄影师”的?

837年,法国人路易斯达盖尔和约瑟夫尼斯弗勒发明了银版摄影法。 1839年8月19日,法国政府购买了这项专利,并宣布这个发明是“免费送给世界的礼物”。 为了纪念这个重要的日子,8月19日被确定为世界摄影日,旨在庆祝摄影艺术…