程序結(jié)構(gòu):
DEF CELL()
AUTOMATIK EXTERN
Folgenummerberechnen
Folgestarten
關(guān)鍵詞:機(jī)器人原位,外部自動(dòng),SPS程序狀態(tài),程序號(hào)
-CELL的功能:只能檢測是否在原點(diǎn),PLC給入的程序號(hào)是否正確,打開FOLGEN程序。
AUTOMATIK EXTERN -外部自動(dòng)
-主要是初始化設(shè)置,檢測機(jī)器人是否在原位,是否在外部自動(dòng)狀態(tài)。
INT I,J,CELL_CNT
BOOL IS_ANY_BIT
STEP=0-變量置0,證明在CELL程序的開始步
PGNO=0-執(zhí)行的程序號(hào)置0
CELL_CNT=0-變量置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 ; -外部自動(dòng)程序還沒有運(yùn)行
VW_CBY_CELL=TRUE–已經(jīng)在CELL
VW_CALL_CELL=FALSE–關(guān)閉調(diào)用CELL
IF $MODE_OP==#EX THEN -工作模式:外部自動(dòng)
IF NOT $IN_HOME THEN-如果沒有在機(jī)器人原點(diǎn)會(huì)提示:
$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
Folgenummerberechnen- 程序號(hào)的核實(shí)
-檢查程序號(hào)是否大于0 ,- 機(jī)器人狀態(tài)是否在軌跡上,-SPS指令是否在執(zhí)行-是否在外部自動(dòng)
IF(P_OLD<>0) AND ($MODE_OP==#EX)THEN
-上次的程序號(hào)- 外部自動(dòng)狀態(tài)-
IF P_TYPE==0 THEN;外部自動(dòng)號(hào)輸入方式:0
PGNO=P_SELECT–上次的程序號(hào)的存儲(chǔ)
STEP=1
ELSE;-其他程序控制方式時(shí),如1
IF(P_SELECT>0) AND (P_SELECT<17)THEN -如果程序號(hào)在范圍內(nèi)0-17
PGNO=1
FOR I=1 TO(P_SELECT-1)-程序號(hào)的換算
PGNO=PGNO*2
ENDFOR
STEP=1
ELSE–不在程序號(hào)在范圍內(nèi)0-17,進(jìn)行清0
STEP=0
PGNO=0
ENDIF
ENDIF
ENDIF
IF(P_SELECT>0) AND ($MODE_OP<>#EX)THEN–不是外部自動(dòng)-
IF P_TYPE==0 THEN
PGNO=P_SELECT
STEP=1
ELSE;1 AUS N
IF(P_SELECT>0) AND (P_SELECT<17)THEN-如果程序號(hào)在范圍內(nèi)0-17
PGNO=1
FOR I=1 TO(P_SELECT-1)
PGNO=PGNO*2
ENDFOR
STEP=1
ELSE–不在程序號(hào)在范圍內(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ī)器人沒在軌跡上-也沒不外部自動(dòng)
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后臺(tái)程序-
$LOOP_CONT=TRUE
WAITFOR($PRO_STATE0==#P_ACTIVE)-SPS程序激活狀態(tài)-
$LOOP_MSG[]=""
ENDIF
$LOOP_MSG[]="KeyWord_WarteAufGueltigeFolgenummer "
-提示等待機(jī)器人程序號(hào)給輸入
IFSTEP==0 THEN
IS_ANY_BIT=FALSE
REPEAT-循環(huán)執(zhí)行指令
OUT_WPROZ=FALSE
OUT_WSLAV=TRUE
IF(PRG_NR <= 0)THEN–程序號(hào)輸入不正確(A1 – A8)
IS_ANY_BIT = FALSE
PGNO=0
ELSE
IS_ANY_BIT = TRUE–程序號(hào)位檢測正確
PGNO = PRG_NR-正確,輸入程序號(hào)大于0
ENDIF
UNTIL IS_ANY_BIT-退出指令條件
OUT_WPROZ=FALSE
OUT_WSLAV=FALSE
ENDIF
STEP=0
Folgestarten打開Folge程序
-程序啟動(dòng)-
SWITCH P_TYPE -程序使用類型選擇
CASE 0 ;-以整數(shù)形式接受發(fā)出程序號(hào)
SWITCH PGNO
CASE 10-如程序滿足選擇程序10
FOLGE10()-執(zhí)行程序10
CASE 124
FOLGE124()
CASE 125
FOLGE125()
ENDSWITCH
CASE 1 以2進(jìn)制控制程序號(hào)
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
原文標(biāo)題:KUKA CELL()程序的分析解讀
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論