KUKA堆放件控制USER說明:
PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=0 SPSTrig=5[1/100s] PU
1: FB PSPS = EIN
2: A23 = AUS
3: A18 = EIN
4: GOTO SPSLabel 3 = F940 F940如果抓手上沒件
5: SPSLabel 2
6: WARTE BIS (E61 + E213) & M2 +M1 & F940
7: --重置為容器1-在容器為空時重置--
8: i51 ( E59 ) = 1 ??E59容器1內沒有件,沒有件就重置I51
9: --重置為容器2-在容器為空時重置-- -
10: i52 ( E209 ) = 1 ?E209容器2內沒有件, 沒有件就重置I52
11: i31 ( E61 ) = i51 E61料架1是否合格,可以進入,i31總計數,i51料架1計數器.
12: i31 ( E213 ) = i52 E213料架是否合格,可以進入,i31總計數,i52料架2計數器.
13: bin20 ( EIN ) = i31 反饋上一次計數值給PLC用于比較
14: A61 = E61 & !E213 ??機器人去料架1-A61
15: A213 = !E61 & E213? 機器人去料架2-A213
16: --從PLC讀取計數器狀態--
17: i31 ( EIN ) = binin20 ??PLC將數值發給I31
18: bin20 ( EIN ) = i31 ??反饋計數值給PLC用于比
---下面的F916和F917是用來判斷計數器I31的計數是否正確-----
19: F916? = i31 = 0 ??i31計數值=0就激活F916
20: F917? = i31 > 9 ??i31計數值>9就激活F917
-----------------
21: F918 = (F916 & !E917) +(!F916 & F917) F918是計數數值不正確
22: GOTO SPSLabel 2 = F918 計數數值不正確就再回第2步
23: SPSLabel 3
24: F901 = M2 & !E15 + F941& E15 ??M2/F901抓持上有件
25: WARTE BIS E63 & F901 &!E18 + E212 & F901 & !E18 + F940 & !F901
E63往鼠籠1放件,E212往鼠籠2放件, F940 & !F901抓持器上沒有件
26: A18 = AUS
27: F902? = i51 < 10 ?鼠籠1數量在小于10以內
28: F903? = i52 < 10 ?鼠籠2數量在小于10以內
29: WARTE BIS F901 & (F902 +F903) + F940
等待F901抓持器上有件,F902/F903計數器在正常范圍內或者F940抓持器上沒有件
30: WARTE BIS E23
31: A23 = EIN
32: FB PSPS = M30
UP14 = E63 & F901 & F902 ??去鼠籠1放件
UP15 = E212 & F901 & F903 ???去鼠籠2放件
-------------------------
UP14 放件程序分析:
通過USE程序和計數器I31結合改變BASE值實現向鼠籠料架進行堆放件的程序編寫.
PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=3 SPSTrig=5[1/100s] P
Tech_T_Speicher Platz=Base+i31 FRG S-Platz = 63 EIN
VW_USR_R (#USR_ADV,107,2,1,1,1,63,1,TRUE)
開始放件步
LIN VB=250[mm/s] VE=100% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P
LIN VB=250[mm/s] VE=10% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P
放件點軌跡
LIN VB=250[mm/s] VE=0%ACC=100% RobWzg=1 Base=31 SPSTrig=5[1/100s] P
LIN VB=250[mm/s] VE=0% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P
ADV
CASE 107 ;
; VW_USR_R (#USR_ADV,107,2,1,1,1,63,1,TRUE)
P1 =2 偏移模式
P5 =63 與PLC進行IO通訊反饋
P7 = TRUE 激活USER
零件存放
IF(PAR7==TRUE)THEN 激活位置計算功能
? CONTINUE
? IF(PAR5>0)THEN 如果 PAR5有值
??? IF NOT $IN[PAR5] THEN 如果沒有E63
????? CONTINUE
????? $OUT[PAR5] = TRUE 發出A63給PLC提示機器人開始進行偏移放件
????? nRintMsgNr[10] = 0
????? WHILE NOT $IN[PAR5]
???? 當指令:當沒有E63 時發出提示信息
??????? IF(exists_krlMsg(nRintMsgNr[10])== FALSE)THEN
????????? MLD(40,#StateMsg);零件編號 PLC中缺少
??????? ENDIF?
????? ENDWHILE
????? MSG_DEL = Clear_KrlMsg (nRintMsgNr[10])刪除狀態消息
??? ENDIF
? ENDIF?
? CONTINUE
? $COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp]? BIN20的數給I31
? CONTINUE
? WHILE($COUNT_I[i_T_Speicher]<1) OR ($COUNT_I[i_T_Speicher]>254)
??當指令:? 當I31 小于1,或大于254 發出提示信息
??? MLD(14,#QuitMsg);PLC存儲器位置無效
??? ?$COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp] I31 =Bin20
? ENDWHILE
? $B_OUT[Binout_T_Sp]=$B_IN[Binin_T_Sp]?
? 將個給入的Bin20再發出去BINout20給PLC
? 設置零件存儲位置1-254
? CONTINUE
? IF(BASE_TYPE[VW_MPARA_ACT.BASE_NO]==#BASE)THEN
??只有當BASE_TYPE[1]被設置成#BASE時執行
??? CONTINUE
WHILE(T_Speicher[$COUNT_I[i_T_Speicher]].Z==0.0)
當T_Speicher的Z方向是0時提示信息
????? MLD(15,#QuitMsg);存儲位置的坐標無效
??? ENDWHILE
??? SWITCH Par1 Par1=2
??? CASE 1
???? CONTINUE
???? BASE_DATA[31]=T_Speicher[$COUNT_I[i_T_Speicher]]
?? 當 Par1=1時 BASE_DATA[31]直接由變量T_Speicherge[]給賦值
??? CASE 2 Par1=2時
???? CONTINUE? 改變$BASE31的坐標值:當前使用的BASE值與T_Speicher的計算
BASE_DATA[31]=BASE_DATA[VW_MPARA_ACT.BASE_NO]:T_Speicher[$COUNT_I[i_T_Speicher]]
??? DEFAULT P1要是其他的值
MLD(20,#QuitMsg);選擇錯誤
ENDSWITCH
? ELSE? BASE_TYPE[1]沒有設置成#BASE需要提示報警
??? MLD(31,#QuitMsg);基本類型無效
? ENDIF
;
ENDIF
FRAME T_Speicher[300] 程序中使用了9個空位
T_Speicher[1]={X 0.0,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[2]={X -180.300003,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[3]={X -360.600006,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[4]={X -540.900024,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[5]={X -721.200012,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[6]={X -901.5,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[7]={X -1081.80005,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[8]={X -1262.09998,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
T_Speicher[9]={X -1442.40002,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}
審核編輯:劉清
評論
查看更多