呵呵......這次純理論。
程序結(jié)構(gòu):
DEF CELL()
;FOLDAUTOMATIK EXTERN ;%{SE}%MKUKATPVW,%C,%V
Folgenummerberechnen
Folgestarten
關(guān)鍵詞:機(jī)器人原位,外部自動,SPS程序狀態(tài),程序號
-CELL的功能:只能檢測是否在原點(diǎn),PLC給入得程序號是否正確,打開FOLGEN程序。
AUTOMATIK EXTERN -外部自動
-主要是初始化設(shè)置,檢測機(jī)器人是否在原位,是否在外部自動狀態(tài)。
INT I,J,CELL_CNT
BOOL IS_ANY_BIT
STEP=0-變量規(guī)0,證明在CELL程序的開始步
PGNO=0-執(zhí)行的程序號規(guī)0
CELL_CNT=0-變量規(guī)0,
P0_MERKER=TRUE -返回在原位條件
-$OUT[PF0]=(P0_MERKER OR(DownLoadActive AND ($Mode_OP==#EX))) AND $IN_HOME
- 發(fā)出機(jī)器人在原位的條件-
$OUT[LPKT]=FALSE -關(guān)閉A14結(jié)束機(jī)器人程序在最后一點(diǎn)
VW_INB=FALSE ; -外部自動程序還沒有運(yùn)行
VW_CBY_CELL=TRUE–已經(jīng)在CELL
VW_CALL_CELL=FALSE–關(guān)閉調(diào)用CELL
IF $MODE_OP==#EX THEN -工作模式:外部自動
IF NOT $IN_HOME THEN-如果沒有在機(jī)器人原點(diǎn)會提示:
$LOOP_MSG[]=" "
$LOOP_MSG[]="KeyWord_WaitingForPF0"–等在鑰匙語言——PF0機(jī)器人在原位
$LOOP_CONT=TRUE
WAITFOR($IN_HOME) OR ( NOT $LOOP_CONT AND($MODE_OP<>#EX))
$LOOP_MSG[]=" "
ENDIF
ENDIF
;ENDFOLD
;FOLDFolgenummerberechnen- 程序號的核實(shí)
-檢查程序號是否大于0 ,- 機(jī)器人狀態(tài)是否在軌跡上,-SPS指令是否在執(zhí)行-是否在外部自動;%{SE}%MKUKATPVW,%C,%V
IF(P_OLD<>0) AND ($MODE_OP==#EX)THEN
-上次的程序號- 外部自動狀態(tài)-
IF P_TYPE==0 THEN;外部自動號輸入方式:0
PGNO=P_SELECT–上次的程序號的存儲
STEP=1
ELSE;-其他程序控制方式時(shí),如1
IF(P_SELECT>0) AND (P_SELECT<17)THEN -如果程序號在范圍內(nèi)0-17
PGNO=1
FOR I=1 TO(P_SELECT-1)-程序號的換算
PGNO=PGNO*2
ENDFOR
STEP=1
ELSE–不在程序號在范圍內(nèi)0-17,進(jìn)行清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-如果程序號在范圍內(nèi)0-17
PGNO=1
FOR I=1 TO(P_SELECT-1)
PGNO=PGNO*2
ENDFOR
STEP=1
ELSE–不在程序號在范圍內(nèi)0-17,進(jìn)行清0
CELL_CNT=1
STEP=0
PGNO=0
ENDIF
ENDIF
ENDIF
LOOP
IF(( NOT $ON_PATH) AND ($MODE_OP<>#EX))THEN;
-機(jī)器人沒在軌跡上-也沒不外部自動
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-機(jī)器人在軌跡上
STEP=0
ENDIF
ENDIF
IF($PRO_STATE0<>#P_ACTIVE)THEN-SPS程序沒有在激活狀態(tài)-
$LOOP_MSG[]=""
$LOOP_MSG[]="Keyword_StartSpsSub "
-提示激活SPS后臺程序-
$LOOP_CONT=TRUE
WAITFOR($PRO_STATE0==#P_ACTIVE)-SPS程序激活狀態(tài)-
$LOOP_MSG[]=""
ENDIF
$LOOP_MSG[]="KeyWord_WarteAufGueltigeFolgenummer "
-提示等待機(jī)器人程序號給入
IFSTEP==0 THEN
IS_ANY_BIT=FALSE
REPEAT-循環(huán)執(zhí)行指令
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 ;-以整數(shù)形式接受發(fā)出程序號
SWITCH PGNO
CASE 10-如程序滿足選擇程序10
FOLGE10()-執(zhí)行程序10
CASE 124
FOLGE124()
CASE 125
FOLGE125()
ENDSWITCH
CASE 1 以2進(jìn)制控制程序號
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
編輯:黃飛
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28231瀏覽量
206615 -
KUKA
+關(guān)注
關(guān)注
3文章
217瀏覽量
16491
原文標(biāo)題:KUKA機(jī)器人CELL程序分析
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論