技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 快速入門 | 篇十一: 正運(yùn)動技術(shù)運(yùn)動控制器中斷的應(yīng)用?

快速入門 | 篇十一: 正運(yùn)動技術(shù)運(yùn)動控制器中斷的應(yīng)用?

時(shí)間:2020-11-26 09:46:42來源:正運(yùn)動技術(shù)

導(dǎo)語:?

  之前正運(yùn)動技術(shù)與大家分享了,運(yùn)動控制器的固件升級、ZBasic程序開發(fā)、ZPLC程序開發(fā)、與觸摸屏通訊和輸入/輸出IO的應(yīng)用、運(yùn)動控制器數(shù)據(jù)與存儲的應(yīng)用、運(yùn)動控制器ZCAN、EtherCAT總線的使用、示波器的應(yīng)用、多任務(wù)運(yùn)行的特點(diǎn)等。

  今天,我們來講解一下正運(yùn)動技術(shù)運(yùn)動控制器中斷(掉電中斷、外部中斷、定時(shí)器中斷)的應(yīng)用。

  視頻教程:《視頻教程:正運(yùn)動技術(shù)運(yùn)動控制器中斷的應(yīng)用》

  

  1、材料準(zhǔn)備與控制器接線參考

  

  1)材料準(zhǔn)備

  

  1.png

  

  2)控制器接線參考

  

  2.png

  

  2、中斷概念

  

  “中斷”即CPU在執(zhí)行程序的時(shí)候出現(xiàn)了某些異?;蛲话l(fā)情況,需要緊急處理,CPU必須暫停當(dāng)前的任務(wù)去處理緊急突發(fā)事件,處理完之后,返回原程序被打斷的地方。

  中斷處理分為三個(gè)階段:

  1)中斷響應(yīng)

  打開中斷總開關(guān),發(fā)送中斷請求。

  2)中斷處理

  中斷處理包括兩個(gè)部分的內(nèi)容:保護(hù)斷點(diǎn)和現(xiàn)場,執(zhí)行中斷程序處理。響應(yī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ù)存儲在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ù)控制器型號,使用?*max打印查看。

  相關(guān)函數(shù):ONTIMERn,n的取值范圍為:“0”-“定時(shí)器最大編號減1”。

  

  4、中斷函數(shù)

  

  1)Basic中斷相關(guān)函數(shù)

  INT_ENABLE:中斷總開關(guān),1-開啟,0-關(guān)閉

  ONPOWEROFF:掉電中斷

  INT_ONn:外部輸入中斷,上升沿有效,n-輸入口編號

  INT_OFFn:外部輸入中斷,下降沿有效,n-輸入口編號

  ONTIMERn:定時(shí)器中斷,n-定時(shí)器編號

  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:定時(shí)器中斷,n-定時(shí)器編號

  LBL:定義中斷函數(shù)

  IRET:中斷結(jié)束返回主函數(shù)

  

  5、三種中斷使用(Basic)

  

  三類中斷運(yùn)行時(shí),中斷程序單獨(dú)占用一個(gè)任務(wù)號。

  不同類型中斷使用例程如下:

  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輸入編號,只能選擇控制器自帶的編號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í)器編號。

  定時(shí)器開啟:TIMER_START(定時(shí)器編號,定時(shí)時(shí)間ms)

  定時(shí)器結(jié)束:TIMER_STOP (定時(shí)器編號)

  定時(shí)器狀態(tài):value = TIMER_IFEND (定時(shí)器編號),只讀參數(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編程下三類中斷使用的簡單示例如梯形圖程序所示。

  

  4.png

  

  

  外部中斷使用時(shí)要注意X編號為8進(jìn)制,如:LBL @INT_ON8定義的外部中斷的觸發(fā)條件為X10的上升沿,實(shí)際接線使用IN8輸入口。

  中斷程序運(yùn)行時(shí),占用一個(gè)任務(wù)號,此任務(wù)號為自動分配,不用手動設(shè)置。

  如下圖,運(yùn)行定時(shí)器中斷時(shí)的任務(wù)狀態(tài)。

  

  5.png

  

  7、中斷使用注意事項(xiàng)

  

  1)必須支持PLC功能的固件才能使用外部中斷。

  2)中斷函數(shù)編寫為全局SUB過程。

  3)各中斷之間無優(yōu)先級,支持中斷嵌套,多個(gè)中斷可以同時(shí)執(zhí)行,同一時(shí)間處理的中斷函數(shù)不宜過多。

  控制器內(nèi)部只有一個(gè)任務(wù)在處理所有的中斷信號響應(yīng),有一個(gè)固定的中斷任務(wù)號,如果中斷處理函數(shù)過多,并且中斷處理函數(shù)的代碼太長,會造成所有的中斷響應(yīng)變慢,甚至是中斷堵塞,影響其他中斷執(zhí)行。

  解決辦法:

  1)盡量減少中斷的數(shù)量,很多應(yīng)用都可以用循環(huán)掃描來處理。

  2)如果有一個(gè)中斷處理函數(shù)特別長的話,調(diào)用一個(gè)單獨(dú)的任務(wù)來處理中斷中的復(fù)雜任務(wù),這樣就不會堵塞其他的中斷響應(yīng)。

  中斷中開啟任務(wù)運(yùn)行例程如下,定時(shí)器中斷0的大段代碼以任務(wù)3運(yùn)行,此時(shí)定時(shí)器中斷0和定時(shí)器中斷1均能正常觸發(fā),不存在中斷堵塞的情況。

  

  6.png

  

  例程:

  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)

  

  7.png

  8.png

  

  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)動技術(shù)運(yùn)動控制器中斷(掉電中斷、外部中斷、定時(shí)器中斷)的應(yīng)用就分享到這里,更多精彩內(nèi)容,請關(guān)注我們的公眾號。

  本文由正運(yùn)動小助手原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:快速入門丨篇十:運(yùn)動控制器...

下一篇:快速入門 | 篇十二:正運(yùn)動技...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號