時間:2020-11-26 09:46:42來源:正運動技術(shù)
之前正運動技術(shù)與大家分享了,運動控制器的固件升級、ZBasic程序開發(fā)、ZPLC程序開發(fā)、與觸摸屏通訊和輸入/輸出IO的應(yīng)用、運動控制器數(shù)據(jù)與存儲的應(yīng)用、運動控制器ZCAN、EtherCAT總線的使用、示波器的應(yīng)用、多任務(wù)運行的特點等。
今天,我們來講解一下正運動技術(shù)運動控制器中斷(掉電中斷、外部中斷、定時器中斷)的應(yīng)用。
視頻教程:《視頻教程:正運動技術(shù)運動控制器中斷的應(yīng)用》
1、材料準備與控制器接線參考
1)材料準備
2)控制器接線參考
2、中斷概念
“中斷”即CPU在執(zhí)行程序的時候出現(xiàn)了某些異?;蛲话l(fā)情況,需要緊急處理,CPU必須暫停當前的任務(wù)去處理緊急突發(fā)事件,處理完之后,返回原程序被打斷的地方。
中斷處理分為三個階段:
1)中斷響應(yīng)
打開中斷總開關(guān),發(fā)送中斷請求。
2)中斷處理
中斷處理包括兩個部分的內(nèi)容:保護斷點和現(xiàn)場,執(zhí)行中斷程序處理。響應(yīng)中斷請求后轉(zhuǎn)到中斷程序的入口,執(zhí)行中斷程序。
3)中斷返回
中斷程序全部處理完成后結(jié)束中斷,等待下次中斷觸發(fā)。
3、三種中斷
控制器的中斷分為三種,分別為掉電中斷、外部中斷、定時器中斷。
使用中斷前必須開啟中斷總開關(guān),為了避免程序沒有初始化完成便進入中斷,控制器上電時中斷開關(guān)缺省是關(guān)閉的。
這三類中斷Basic編程與PLC編程方式均支持。
1)掉電中斷
必須是全局的SUB函數(shù)??刂破髦挥?個掉電中斷。掉電中斷執(zhí)行的時間特別有限,只能寫少數(shù)幾條語句,將數(shù)據(jù)存儲在VR里。
相關(guān)函數(shù):INT_ENABLE,ONPOWEROFF。
2)外部中斷
可設(shè)置上升沿觸發(fā)或下降沿觸發(fā),必須是全局的SUB函數(shù),目前只有中斷IN口0-31可以使用。必須是支持PLC功能的固件才可使用。
相關(guān)函數(shù):上升沿中斷INT_ONn,下降沿中斷INT_OFFn。
3)定時器中斷
達到設(shè)定時間后執(zhí)行定時器中斷函數(shù),必須是全局的SUB函數(shù),定時器個數(shù)根據(jù)控制器型號,使用?*max打印查看。
相關(guān)函數(shù):ONTIMERn,n的取值范圍為:“0”-“定時器最大編號減1”。
4、中斷函數(shù)
1)Basic中斷相關(guān)函數(shù)
INT_ENABLE:中斷總開關(guān),1-開啟,0-關(guān)閉
ONPOWEROFF:掉電中斷
INT_ONn:外部輸入中斷,上升沿有效,n-輸入口編號
INT_OFFn:外部輸入中斷,下降沿有效,n-輸入口編號
ONTIMERn:定時器中斷,n-定時器編號
GLOBAL SUB:定義中斷函數(shù)
END SUB:中斷結(jié)束返回主函數(shù)
2)PLC中斷相關(guān)函數(shù)
EI:允許中斷,同BASIC命令,INT_ENABLE=1開啟
DI:禁止中斷,同BASIC命令,INT_ENABLE=0關(guān)閉
ONPOWEROFF:掉電中斷
INT_ONn:外部輸入中斷,上升沿有效,n-輸入口編號
INT_OFFn:外部輸入中斷,下降沿有效,n-輸入口編號
ONTIMERn:定時器中斷,n-定時器編號
LBL:定義中斷函數(shù)
IRET:中斷結(jié)束返回主函數(shù)
5、三種中斷使用(Basic)
三類中斷運行時,中斷程序單獨占用一個任務(wù)號。
不同類型中斷使用例程如下:
1)掉電中斷中斷使用
僅支持一個,掉電瞬間觸發(fā)執(zhí)行,執(zhí)行時間短,只能寫少數(shù)幾條語句。
示例:
'主程序
INT_ENABLE =1
DPOS(0)=VR(0) '上電讀取保存的數(shù)值,恢復坐標
DPOS(1)=VR(1)
DPOS(2)=VR(2)
END '主程序結(jié)束
GLOBAL SUB ONPOWEROFF () '掉電中斷
VR(0) = DPOS(0) '保存坐標到VR
VR(1) = DPOS(1)
VR(2) = DPOS(2)
END SUB
2)外部中斷(上升沿/下降沿)中斷使用
支持PLC功能的控制器才可以使用外部中斷,必須是全局的SUB過程。INT_ONn()上升沿觸發(fā),INT_OFFn()下降沿觸發(fā),n是IN輸入編號,只能選擇控制器自帶的編號0-31。
示例:
INT_ENABLE=1 '開啟中斷
END '主程序結(jié)束
GLOBAL SUB INT_ON0 () '外部上升沿中斷程序
PRINT "輸入IN0上升沿觸發(fā)"
END SUB
GLOBAL SUB INT_OFF0 () '外部下降沿中斷程序
PRINT "輸入IN0下降沿觸發(fā)"
END SUB
3)定時器中斷使用
定時器中斷支持同時開啟多個,中斷個數(shù)由定時器個數(shù)決定,必須是全局的SUB過程。ONTIMERn()中n是定時器編號。
定時器開啟:TIMER_START(定時器編號,定時時間ms)
定時器結(jié)束:TIMER_STOP (定時器編號)
定時器狀態(tài):value = TIMER_IFEND (定時器編號),只讀參數(shù),返回值:0-正在定時,1-定時完成。
示例:
INT_ENABLE=1 '開啟中斷
TIMER_START(0,100) '定時器0開啟,100ms后執(zhí)行一次
END
GLOBAL SUB ONTIMER0() '中斷程序
PRINT "ontimer0 enter"
'TIMER_START(0,100) '希望周期執(zhí)行中斷,在SUB里再次打開定時器
END SUB
6、三種中斷使用(PLC)
在PLC編程中,使用LBL指令定義要調(diào)用的中斷函數(shù),中斷函數(shù)與Basic通用。
PLC編程下三類中斷使用的簡單示例如梯形圖程序所示。
外部中斷使用時要注意X編號為8進制,如:LBL @INT_ON8定義的外部中斷的觸發(fā)條件為X10的上升沿,實際接線使用IN8輸入口。
中斷程序運行時,占用一個任務(wù)號,此任務(wù)號為自動分配,不用手動設(shè)置。
如下圖,運行定時器中斷時的任務(wù)狀態(tài)。
7、中斷使用注意事項
1)必須支持PLC功能的固件才能使用外部中斷。
2)中斷函數(shù)編寫為全局SUB過程。
3)各中斷之間無優(yōu)先級,支持中斷嵌套,多個中斷可以同時執(zhí)行,同一時間處理的中斷函數(shù)不宜過多。
控制器內(nèi)部只有一個任務(wù)在處理所有的中斷信號響應(yīng),有一個固定的中斷任務(wù)號,如果中斷處理函數(shù)過多,并且中斷處理函數(shù)的代碼太長,會造成所有的中斷響應(yīng)變慢,甚至是中斷堵塞,影響其他中斷執(zhí)行。
解決辦法:
1)盡量減少中斷的數(shù)量,很多應(yīng)用都可以用循環(huán)掃描來處理。
2)如果有一個中斷處理函數(shù)特別長的話,調(diào)用一個單獨的任務(wù)來處理中斷中的復雜任務(wù),這樣就不會堵塞其他的中斷響應(yīng)。
中斷中開啟任務(wù)運行例程如下,定時器中斷0的大段代碼以任務(wù)3運行,此時定時器中斷0和定時器中斷1均能正常觸發(fā),不存在中斷堵塞的情況。
例程:
INT_ENABLE=1 '開啟中斷
TIMER_START(0,1000) '定時器0開啟
TIMER_START(1,1100) '定時器1開啟
END
GLOBAL SUB ONTIMER0() '中斷處理函數(shù)
RUNTASK 3, MyIntHandler() '開任務(wù)運行
END SUB
GLOBAL SUB MyIntHandler()
DELAY 1000 '假設(shè)大量的堵塞性代碼
WAIT UNTIL IN(0) <> 0
?"第一個中斷"
END SUB
GLOBAL SUB ONTIMER1() '中斷處理函數(shù)
?"第二個中斷"
END SUB
8、中斷演示例程(Basic)
'主程序
BASE(0,1)
ATYPE=1,1 '設(shè)為脈沖軸類型
UNITS=100,100
DPOS=0,0
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
SRAMP=100,100
INT_ENABLE=1 '開啟中斷總開關(guān)
TIMER_START(2,1000) '定時器2開啟,1000ms后執(zhí)行一次
DPOS(0)=VR(0) '上電讀取保存的數(shù)值,恢復坐標
DPOS(1)=VR(1)
PRINT "dpos(0),dpos(1)",dpos(0),dpos(1)
WHILE 1
IF SCAN_EVENT(IN(0))>0 THEN
TRIGGERBASE(0,1)
MOVEABS(0,0)
MOVECIRC2(100,100,200,0) '三點畫半圓
ENDIF
WEND '主程序結(jié)束
'中斷程序,均為全局SUB
GLOBAL SUB ONTIMER2() '定時器中斷程序
PRINT "定時器中斷2"
'TIMER_START(2,1000) '在sub里打開定時器,中斷周期執(zhí)行
END SUB
GLOBAL SUB INT_ON2 () '外部上升沿中斷程序
PRINT "輸入IN2下降沿觸發(fā)..."
END SUB
GLOBAL SUB INT_OFF2 () '外部上升沿中斷程序
PRINT "輸入IN2下降沿觸發(fā)..."
END SUB
GLOBAL SUB ONPOWEROFF () '掉電中斷
VR(0) = DPOS(0) '保存坐標到VR
VR(1) = DPOS(1)
END SUB
9、中斷演示例程(PLC)
PLC語句表代碼:
//主程序 X0定時中斷0,X1-定時中斷1,X2-上升沿/下降沿中斷,X3-關(guān)閉所有中斷
LBL @MAIN
LD M8002
EI
EXE @ PRINT "VR(0)",VR(0)
LD X0
TMR T0 K2000
LD T0
OUT Y0
LD X1
ANI Y1
TMR T1 K3000
LD T1
OUT Y1
LD X3
DI
FEND
//外部中斷,由控制器上的輸入口控制
LBL @INT_ON2
LD M8000
EXE @ PRINT "外部中斷2上升沿"
IRET
LBL @INT_OFF2
LD M8000
EXE @ PRINT "外部中斷2下降沿"
IRET
//定時器0中斷,定時器到達預(yù)設(shè)值開啟中斷
LBL @ONTIMER0
LD M8000
EXE @ PRINT "定時器中斷0"
IRET
//定時器1中斷,定時器到達預(yù)設(shè)值開啟中斷
LBL @ONTIMER1
LD M8000
EXE @ PRINT "定時器中斷1"
IRET
//掉電中斷,控制器斷電執(zhí)行此中斷
LBL @ONPOWEROFF
LD M8000
MOV K12345 D0
EXE @ VR(0)=MODBUS_REG(0)
IRET
END
正運動技術(shù)運動控制器中斷(掉電中斷、外部中斷、定時器中斷)的應(yīng)用就分享到這里,更多精彩內(nèi)容,請關(guān)注我們的公眾號。
本文由正運動小助手原創(chuàng),歡迎大家轉(zhuǎn)載,共同學習,一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
標簽:
上一篇:快速入門丨篇十:運動控制器...
中國傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.wangxinlc.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
rpi-image-gen:樹莓派軟件鏡像構(gòu)建的終...
2025-04-08
【產(chǎn)品解讀】全面提升精密制造檢測節(jié)拍...
2025-03-31
激光閃耀 智慧引領(lǐng) | WISE MASER 黑武士...
2025-03-20