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