KUKA堆放件控制USER說(shuō)明:
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如果抓手上沒(méi)件
5: SPSLabel 2
6: WARTE BIS (E61 + E213) & M2 +M1 & F940
7: --重置為容器1-在容器為空時(shí)重置--
8: i51 ( E59 ) = 1 ??E59容器1內(nèi)沒(méi)有件,沒(méi)有件就重置I51
9: --重置為容器2-在容器為空時(shí)重置-- -
10: i52 ( E209 ) = 1 ?E209容器2內(nèi)沒(méi)有件, 沒(méi)有件就重置I52
11: i31 ( E61 ) = i51 E61料架1是否合格,可以進(jìn)入,i31總計(jì)數(shù),i51料架1計(jì)數(shù)器.
12: i31 ( E213 ) = i52 E213料架是否合格,可以進(jìn)入,i31總計(jì)數(shù),i52料架2計(jì)數(shù)器.
13: bin20 ( EIN ) = i31 反饋上一次計(jì)數(shù)值給PLC用于比較
14: A61 = E61 & !E213 ??機(jī)器人去料架1-A61
15: A213 = !E61 & E213? 機(jī)器人去料架2-A213
16: --從PLC讀取計(jì)數(shù)器狀態(tài)--
17: i31 ( EIN ) = binin20 ??PLC將數(shù)值發(fā)給I31
18: bin20 ( EIN ) = i31 ??反饋計(jì)數(shù)值給PLC用于比
---下面的F916和F917是用來(lái)判斷計(jì)數(shù)器I31的計(jì)數(shù)是否正確-----
19: F916? = i31 = 0 ??i31計(jì)數(shù)值=0就激活F916
20: F917? = i31 > 9 ??i31計(jì)數(shù)值>9就激活F917
-----------------
21: F918 = (F916 & !E917) +(!F916 & F917) F918是計(jì)數(shù)數(shù)值不正確
22: GOTO SPSLabel 2 = F918 計(jì)數(shù)數(shù)值不正確就再回第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抓持器上沒(méi)有件
26: A18 = AUS
27: F902? = i51 < 10 ?鼠籠1數(shù)量在小于10以內(nèi)
28: F903? = i52 < 10 ?鼠籠2數(shù)量在小于10以內(nèi)
29: WARTE BIS F901 & (F902 +F903) + F940
等待F901抓持器上有件,F(xiàn)902/F903計(jì)數(shù)器在正常范圍內(nèi)或者F940抓持器上沒(méi)有件
30: WARTE BIS E23
31: A23 = EIN
32: FB PSPS = M30
UP14 = E63 & F901 & F902 ??去鼠籠1放件
UP15 = E212 & F901 & F903 ???去鼠籠2放件
-------------------------
UP14 放件程序分析:
通過(guò)USE程序和計(jì)數(shù)器I31結(jié)合改變BASE值實(shí)現(xiàn)向鼠籠料架進(jìn)行堆放件的程序編寫.
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)
開(kāi)始放件步
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
放件點(diǎn)軌跡
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進(jìn)行IO通訊反饋
P7 = TRUE 激活USER
零件存放
IF(PAR7==TRUE)THEN 激活位置計(jì)算功能
? CONTINUE
? IF(PAR5>0)THEN 如果 PAR5有值
??? IF NOT $IN[PAR5] THEN 如果沒(méi)有E63
????? CONTINUE
????? $OUT[PAR5] = TRUE 發(fā)出A63給PLC提示機(jī)器人開(kāi)始進(jìn)行偏移放件
????? nRintMsgNr[10] = 0
????? WHILE NOT $IN[PAR5]
???? 當(dāng)指令:當(dāng)沒(méi)有E63 時(shí)發(fā)出提示信息
??????? IF(exists_krlMsg(nRintMsgNr[10])== FALSE)THEN
????????? MLD(40,#StateMsg);零件編號(hào) PLC中缺少
??????? ENDIF?
????? ENDWHILE
????? MSG_DEL = Clear_KrlMsg (nRintMsgNr[10])刪除狀態(tài)消息
??? ENDIF
? ENDIF?
? CONTINUE
? $COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp]? BIN20的數(shù)給I31
? CONTINUE
? WHILE($COUNT_I[i_T_Speicher]<1) OR ($COUNT_I[i_T_Speicher]>254)
??當(dāng)指令:? 當(dāng)I31 小于1,或大于254 發(fā)出提示信息
??? MLD(14,#QuitMsg);PLC存儲(chǔ)器位置無(wú)效
??? ?$COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp] I31 =Bin20
? ENDWHILE
? $B_OUT[Binout_T_Sp]=$B_IN[Binin_T_Sp]?
? 將個(gè)給入的Bin20再發(fā)出去BINout20給PLC
? 設(shè)置零件存儲(chǔ)位置1-254
? CONTINUE
? IF(BASE_TYPE[VW_MPARA_ACT.BASE_NO]==#BASE)THEN
??只有當(dāng)BASE_TYPE[1]被設(shè)置成#BASE時(shí)執(zhí)行
??? CONTINUE
WHILE(T_Speicher[$COUNT_I[i_T_Speicher]].Z==0.0)
當(dāng)T_Speicher的Z方向是0時(shí)提示信息
????? MLD(15,#QuitMsg);存儲(chǔ)位置的坐標(biāo)無(wú)效
??? ENDWHILE
??? SWITCH Par1 Par1=2
??? CASE 1
???? CONTINUE
???? BASE_DATA[31]=T_Speicher[$COUNT_I[i_T_Speicher]]
?? 當(dāng) Par1=1時(shí) BASE_DATA[31]直接由變量T_Speicherge[]給賦值
??? CASE 2 Par1=2時(shí)
???? CONTINUE? 改變$BASE31的坐標(biāo)值:當(dāng)前使用的BASE值與T_Speicher的計(jì)算
BASE_DATA[31]=BASE_DATA[VW_MPARA_ACT.BASE_NO]:T_Speicher[$COUNT_I[i_T_Speicher]]
??? DEFAULT P1要是其他的值
MLD(20,#QuitMsg);選擇錯(cuò)誤
ENDSWITCH
? ELSE? BASE_TYPE[1]沒(méi)有設(shè)置成#BASE需要提示報(bào)警
??? MLD(31,#QuitMsg);基本類型無(wú)效
? ENDIF
;
ENDIF
FRAME T_Speicher[300] 程序中使用了9個(gè)空位
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}
審核編輯:劉清
評(píng)論
查看更多