呵呵......這次純理論。
程序結構:
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
編輯:黃飛
-
機器人
+關注
關注
211文章
28380瀏覽量
206918 -
KUKA
+關注
關注
3文章
217瀏覽量
16516
原文標題:KUKA機器人CELL程序分析
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論