?取消在本中斷程序的優(yōu)先級之下的中斷程序和子程序。
可能導(dǎo)致機(jī)器人的運(yùn)動被終止
RESUME 指令只能在中斷程序中執(zhí)行
當(dāng) RESUME 生效時,advancerun 指針不能在產(chǎn)生中斷的行,而是至少低一行。
機(jī)器人運(yùn)動期間,接近開關(guān)發(fā)現(xiàn)到兩個目標(biāo)并且記錄了它們的位置,所以隨后機(jī)器人可以再移動到該位置。
即使機(jī)器人已經(jīng)知道了兩個目標(biāo),機(jī)器人也會沿著全部的搜索軌跡移動。為節(jié)約時間,一旦發(fā)現(xiàn)了零件的多數(shù)時應(yīng)立即結(jié)束移動。
KRC.。.中機(jī)器人運(yùn)動的取消是可能的,使用語句:
RESUME
RESUME可以取消當(dāng)前中斷被聲明的級別和以下級別的所有運(yùn)行的中斷程序和子程序。
同BRAKE語句,RESUME僅允許在中斷程序中使用。
當(dāng)激活RESUME語句時,提前運(yùn)行指針千萬不要在中斷被聲明的級別,至少應(yīng)低一個級別。
因?yàn)镽ESUME會取消搜索軌跡,所以在子程序中一定要編程搜索軌跡。在下面的例子中,
使用MOVEP()完成該操作;調(diào)用的中斷子程序是IR_PROG()。
在子程序的最后一行前使用RESUME語句停止提前運(yùn)行是重要的。只有這樣才可能確保當(dāng)RESUME語句被激活時,提前運(yùn)行指針不在中斷被聲明的級別。在MOVEP()中,使用$ADVANCE=0分配提前運(yùn)行指針。
在中斷程序中,一旦輸入1的傳感器發(fā)現(xiàn)4個零件,使用BRAKE語句停止搜索軌跡,然后通過RESUME語句取消搜索(因?yàn)镸OVEP()也和IR_PROG()一起被結(jié)束)。不使用BRAKE 語句,在提前運(yùn)行中仍然執(zhí)行搜索運(yùn)動。
RESUME語句后,主程序在子程序調(diào)用的指令后重新開始。也就是說$ADVANCE=3(復(fù)位提前運(yùn)行)。
DEF SEARCH()
;---------聲明部分---------
EXT BAS(BAS_COMMAND:IN,REAL:IN)
DECL AXIS HOME
;----------初始化----------
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM()
INTERRUPT ON3 ;標(biāo)準(zhǔn)缺省服務(wù)函數(shù)
BAS(#INITMOV,0) ;初始化速度;
;加速度,$BASE,$TOOL,等
HOME={AXIS:A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
INTERRUPT DECL 11 WHEN $IN[1] DO IR_PROG()
I[1]=0 ;設(shè)置預(yù)定的計數(shù)器為0;
------------主程序部分 ----------
PTP HOME ;BCO運(yùn)行
INTERRUPT ON1 1
MOVEP() ;沿著搜索軌跡運(yùn)動
$ADVANCE=3 ;復(fù)位提前運(yùn)行
INTERRUPT OFF 11
GRIP()
PTP HOME
END;
--------子程序-----------
DEF MOVEP() ;搜索軌跡運(yùn)動的子程序
PTP{X 1232,Y -263,Z 1000,A 0,B 67,C -90}
LIN{X 1232,Y 608,Z 1000,A 0,B 67,C -90}
$ADVANCE=0 ;停止提前運(yùn)行
END ;
;------中斷程序--------
DEF IR_PROG() ;存儲零件的位置
;INTERRUPT OFF 11
I[1]=I[1]+1
POSITION[I[1]]=$POS_INT ;位置被存儲
IFI [1]==4 THEN ;4個零件被認(rèn)出
BRAKE ;運(yùn)動被停止
RESUME ;IR_PROG&MOVE被取消
ENDIF
;INTERRUPT ON 11
END;
--------子程序------------
DEF GRIP() ;捉住被發(fā)現(xiàn)的零件
INTPOS_NO ;計數(shù)器變量
FOR POS_NR=I[1] TO 1 STEP-1 POSITION[POS_NR].Z=POSITION[POS_NR] .Z+200
LIN POSITION[POS_NR];移動到零件以上200mm處
LIN_REL{Z-200} ;移動到零件的垂直位置;拾起零件
LIN POSITION[POS_NR];移動返回
LIN{X 634,Y 1085,Z 1147,A 49,B 67,C -90}
;設(shè)置零件向下
ENDFOR
END
如果由于傳感器的原因(“觸電跳動”),會產(chǎn)生一個中斷被不正確地觸發(fā)兩次的危險,您可以通過在中斷程序的第一行關(guān)閉中斷的方法避免發(fā)生該危險。但是這樣做,在中斷執(zhí)行期間發(fā)生的真正的中斷現(xiàn)在也不能被識別了。如果要保持中斷有效,必須在返回主程序前重新開啟中斷。
如果使用RESUME語句取消了一個運(yùn)動,就像上面的例子一樣,那么后面的運(yùn)動不要是CIRC運(yùn)動,因?yàn)槠瘘c(diǎn)每次都會不同(產(chǎn)生不同的圓)。
在例8.2編程的搜索動作中,插補(bǔ)循環(huán)速率(當(dāng)前為12ms)輸入被削了頂,最大誤差約為軌跡速度的12ms倍數(shù)。
“快速測量”
如果要消除該誤差,您千萬不要在用戶輸入上連接接近開關(guān);而是應(yīng)該使用外圍設(shè)備插頭X11中的4個專門的輸入。這些輸入可以通過系統(tǒng)變量
$MEAS_PULSE[1]。..MEAS_PULSE[4]來尋址(響應(yīng)時間為125Us)。 當(dāng)中斷被打開時,千萬不要使用測量脈沖,否則會產(chǎn)生相應(yīng)的錯誤信息。
審核編輯 :李倩
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28127瀏覽量
205889 -
KUKA
+關(guān)注
關(guān)注
3文章
217瀏覽量
16472
原文標(biāo)題:KUKA機(jī)器人 RESUME 取消中斷事務(wù) V4.25
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論