KUKA机器人CELL程序分析

描述

呵呵......这次纯理论。

程序结构:

DEF  CELL()

;FOLDAUTOMATIK EXTERN ;%{SE}%MKUKATPVW,%C,%V

Folgenummerberechnen

Folgestarten

关键词:机器人原位,外部自动,SPS程序状态,程序号

-CELL的功能:只能检测是否在原点,PLC给入得程序号是否正确,打开FOLGEN程序。

AUTOMATIK EXTERN  -外部自动

-主要是初始化设置,检测机器人是否在原位,是否在外部自动状态。

INT I,J,CELL_CNT

BOOL IS_ANY_BIT

STEP=0-变量规0,证明在CELL程序的开始步

PGNO=0-执行的程序号规0

CELL_CNT=0-变量规0,

P0_MERKER=TRUE -返回在原位条件

-$OUT[PF0]=(P0_MERKER OR(DownLoadActive AND ($Mode_OP==#EX))) AND $IN_HOME

- 发出机器人在原位的条件-

$OUT[LPKT]=FALSE -关闭A14结束机器人程序在最后一点

VW_INB=FALSE ; -外部自动程序还没有运行

VW_CBY_CELL=TRUE–已经在CELL

VW_CALL_CELL=FALSE–关闭调用CELL

IF $MODE_OP==#EX THEN -工作模式:外部自动

IF  NOT $IN_HOME THEN-如果没有在机器人原点会提示:

$LOOP_MSG[]="            "

$LOOP_MSG[]="KeyWord_WaitingForPF0"–等在钥匙语言——PF0机器人在原位

$LOOP_CONT=TRUE

WAITFOR($IN_HOME) OR ( NOT $LOOP_CONT AND($MODE_OP<>#EX))

$LOOP_MSG[]="             "

ENDIF

ENDIF

;ENDFOLD

;FOLDFolgenummerberechnen- 程序号的核实

-检查程序号是否大于0 ,- 机器人状态是否在轨迹上,-SPS指令是否在执行-是否在外部自动;%{SE}%MKUKATPVW,%C,%V

IF(P_OLD<>0) AND ($MODE_OP==#EX)THEN

-上次的程序号- 外部自动状态-

IF P_TYPE==0 THEN;外部自动号输入方式:0

PGNO=P_SELECT–上次的程序号的存储

STEP=1

ELSE;-其他程序控制方式时,如1

IF(P_SELECT>0) AND (P_SELECT<17)THEN -如果程序号在范围内0-17

PGNO=1

FOR I=1 TO(P_SELECT-1)-程序号的换算

PGNO=PGNO*2

ENDFOR

STEP=1

ELSE–不在程序号在范围内0-17,进行清0

STEP=0

PGNO=0

ENDIF

ENDIF

ENDIF

IF(P_SELECT>0) AND ($MODE_OP<>#EX)THEN–不是外部自动-

IF P_TYPE==0 THEN

PGNO=P_SELECT

STEP=1

ELSE;1 AUS N

IF(P_SELECT>0) AND (P_SELECT<17)THEN-如果程序号在范围内0-17

PGNO=1

FOR I=1 TO(P_SELECT-1)

PGNO=PGNO*2

ENDFOR

STEP=1

ELSE–不在程序号在范围内0-17,进行清0

CELL_CNT=1

STEP=0

PGNO=0

ENDIF

ENDIF

ENDIF

LOOP

IF(( NOT $ON_PATH) AND ($MODE_OP<>#EX))THEN;

-机器人没在轨迹上-也没不外部自动

IF CELL_CNT==1 THEN

IF P_TYPE==0 THEN;

PGNO=P_OLD

STEP=1

ELSE;1 AUS N

IF(P_OLD>0) AND (P_OLD<17)THEN

PGNO=1

FOR I=1 TO(P_OLD-1)

PGNO=PGNO*2

ENDFOR

STEP=1

ELSE

PGNO=0

STEP=0

ENDIF

ENDIF

ENDIF

CELL_CNT=CELL_CNT+1

ELSE

IF $ON_PATH THEN-机器人在轨迹上

STEP=0

ENDIF

ENDIF

IF($PRO_STATE0<>#P_ACTIVE)THEN-SPS程序没有在激活状态-

$LOOP_MSG[]="                                           "

$LOOP_MSG[]="Keyword_StartSpsSub                     "

-提示激活SPS后台程序-

$LOOP_CONT=TRUE

WAITFOR($PRO_STATE0==#P_ACTIVE)-SPS程序激活状态-

$LOOP_MSG[]="                                           "

ENDIF

$LOOP_MSG[]="KeyWord_WarteAufGueltigeFolgenummer            "

-提示等待机器人程序号给入

IFSTEP==0 THEN

IS_ANY_BIT=FALSE

REPEAT-循环执行指令

OUT_WPROZ=FALSE

OUT_WSLAV=TRUE

IF(PRG_NR <= 0)THEN–程序号给入不正确(A1 – A8)

IS_ANY_BIT = FALSE

PGNO=0

ELSE

IS_ANY_BIT = TRUE–程序号位检测正确

PGNO = PRG_NR-正确,给入程序号大于0

ENDIF

UNTIL IS_ANY_BIT-退出指令条件

OUT_WPROZ=FALSE

OUT_WSLAV=FALSE

ENDIF

STEP=0

;ENDFOLD

;FOLDFolgestarten打开Folge程序

-程序启动-

SWITCH  P_TYPE -程序使用类型选择

CASE 0 ;-以整数形式接受发出程序号

SWITCH PGNO

CASE 10-如程序满足选择程序10

FOLGE10()-执行程序10

CASE 124

FOLGE124()

CASE 125

FOLGE125()

ENDSWITCH

CASE 1 以2进制控制程序号

SWITCH PGNO

CASE 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768

SWITCH  PGNO

CASE-1

ENDSWITCH

ENDSWITCH

ENDSWITCH

WAITSEC 0.001

ENDLOOP

END

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分