INTERRUPT...DECL ...WHEN ...DO ...中斷指令
中斷聲明的原理:
當出現(xiàn)諸如輸入等定義的事件時,控制器中斷當前程序,并處理一個定義的子程序。
事件和子程序用 INTERRUPT...DECL ...WHEN ...DO ... 來定義
中斷聲明是一個指令。它必須位于程序的指令部分,不允許位于聲明部分!
聲明后先將取消中斷 (Interrupt)。必須先激活中斷,然后才能對定義的事件作出反應!
中斷聲明的句法:
Global (全局)
中斷只有從對其進行聲明的層面起才被識別。
在一個子程序中聲明的中斷在主程序中是未知的 (此處為中斷 23)。一個在聲明的開頭寫有關鍵詞 GLOBAL 的中斷在上一層面也是已知的(此處為中斷 2)。
Prio:優(yōu)先級
1.有優(yōu)先級 1、2、4- 39 和 81 - 128 可供選擇。
2.優(yōu)先級 3 和 40 - 80 是預留給系統(tǒng)應用的。
3.某些情況下中斷 19 預留給制動測試。
4.如果多個中斷同時出現(xiàn),則先執(zhí)行最高優(yōu)先級的中斷,然后再執(zhí)行優(yōu).
5.先級低的中斷。(1 = 最高優(yōu)先級)
事件:觸發(fā)中斷的事件。該事件在出現(xiàn)時通過一個脈沖邊沿被識別 (脈沖邊沿觸發(fā))。
中斷程序
1.應處理的中斷程序的名稱。
2.該子程序被稱為中斷程序。
3.運行時間變量不允許作為參數(shù)傳遞給中斷程序
4.允許使用在一個數(shù)據(jù)列表中聲明的變量。
INTERRUPT +操作+<編號>
ON: 激活一個中斷。
OFF : 取消激活一個中斷。
DISABLE: 禁止一個中斷。
ENABLE : 開通一個原本禁止的中斷。
例:INTERRUPT ON 10 中斷被識別并被執(zhí)行 (脈沖正沿)
這種情況下,中斷由狀態(tài)的轉換而觸發(fā),例如,對于$IN[22]==TRUE 而言,通過 FALSE 到 TRUE 的轉換。也就是說,在 INTERRUPT ON 時不允許已是該狀態(tài),否則就無法觸發(fā)中斷!在此情況下,還必須注意:狀態(tài)轉換最早允許在 INTERRUPT ON 后的一個插值周期進行。(可通過在INTERRUPT ON 后編程設定 WAIT SEC 0.012 來實現(xiàn)。若不希望出現(xiàn)預進停止,則可另外在 WAIT SEC 前再編入一個 CONTINUE。)原因是 INTERRUPTON 需要一個插值周期 (= 12ms),直到中斷真正激活。如果先前變換了狀態(tài),中斷不能識別這一變換。
中斷指令與FB_PSPS程序的使用分析:
DEF UP1() UP程序
UP Anfang
SPS_N=-1
SPS_FERTIG=FALSE
IF NOTCALLBYSELECT THEN 在由程序調用UP 時 CALLBYSELECT=false
INTERRUPTDECL 10 WHEN $CYCFLAG[254]==FALSE DO VW(#FB_STOP,TRUE)
由M254 的非來激活中斷,觸發(fā)程序VW(#FB_STOP,TRUE) 中斷的等級是10
INTERRUPT ON10 激活中斷
INT10=TRUE
VW_USR_R(#USR_INIT)執(zhí)行 VW_USR_R初始化
ENDIF
VW(#VW_INIT_UP,TRUE)執(zhí)行 VW初始化
DEF FB_STOP ()聲明程序FB_STOP()
INT INT_N
BOOL EXIT_OK
BOOL IN_APO_1
-
程序
+關注
關注
116文章
3762瀏覽量
80754 -
Global
+關注
關注
0文章
12瀏覽量
8424 -
KUKA機器人
+關注
關注
4文章
143瀏覽量
9031
原文標題:KUKA機器人FB_PSPS由INTERRUPT DECL 中斷程序的觸發(fā)過程分析
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論