亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 快速入門 | 篇十一: 正運動技術運動控制器中斷的應用?

快速入門 | 篇十一: 正運動技術運動控制器中斷的應用?

時間:2020-11-26 09:46:42來源:正運動技術

導語:?

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

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

  視頻教程:《視頻教程:正運動技術運動控制器中斷的應用》

  

  1、材料準備與控制器接線參考

  

  1)材料準備

  

  1.png

  

  2)控制器接線參考

  

  2.png

  

  2、中斷概念

  

  “中斷”即CPU在執行程序的時候出現了某些異常或突發情況,需要緊急處理,CPU必須暫停當前的任務去處理緊急突發事件,處理完之后,返回原程序被打斷的地方。

  中斷處理分為三個階段:

  1)中斷響應

  打開中斷總開關,發送中斷請求。

  2)中斷處理

  中斷處理包括兩個部分的內容:保護斷點和現場,執行中斷程序處理。響應中斷請求后轉到中斷程序的入口,執行中斷程序。

  3)中斷返回

  中斷程序全部處理完成后結束中斷,等待下次中斷觸發。

  

  3、三種中斷

  

  控制器的中斷分為三種,分別為掉電中斷、外部中斷、定時器中斷。

  使用中斷前必須開啟中斷總開關,為了避免程序沒有初始化完成便進入中斷,控制器上電時中斷開關缺省是關閉的。

  這三類中斷Basic編程與PLC編程方式均支持。

  1)掉電中斷

  必須是全局的SUB函數。控制器只有1個掉電中斷。掉電中斷執行的時間特別有限,只能寫少數幾條語句,將數據存儲在VR里。

  相關函數:INT_ENABLE,ONPOWEROFF。

  2)外部中斷

  可設置上升沿觸發或下降沿觸發,必須是全局的SUB函數,目前只有中斷IN口0-31可以使用。必須是支持PLC功能的固件才可使用。

  相關函數:上升沿中斷INT_ONn,下降沿中斷INT_OFFn。

  3)定時器中斷

  達到設定時間后執行定時器中斷函數,必須是全局的SUB函數,定時器個數根據控制器型號,使用?*max打印查看。

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

  

  4、中斷函數

  

  1)Basic中斷相關函數

  INT_ENABLE:中斷總開關,1-開啟,0-關閉

  ONPOWEROFF:掉電中斷

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

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

  ONTIMERn:定時器中斷,n-定時器編號

  GLOBAL SUB:定義中斷函數

  END SUB:中斷結束返回主函數

  2)PLC中斷相關函數

  EI:允許中斷,同BASIC命令,INT_ENABLE=1開啟

  DI:禁止中斷,同BASIC命令,INT_ENABLE=0關閉

  ONPOWEROFF:掉電中斷

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

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

  ONTIMERn:定時器中斷,n-定時器編號

  LBL:定義中斷函數

  IRET:中斷結束返回主函數

  

  5、三種中斷使用(Basic)

  

  三類中斷運行時,中斷程序單獨占用一個任務號。

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

  1)掉電中斷中斷使用

  僅支持一個,掉電瞬間觸發執行,執行時間短,只能寫少數幾條語句。

  示例:


  '主程序

  INT_ENABLE =1 

  DPOS(0)=VR(0)         '上電讀取保存的數值,恢復坐標

  DPOS(1)=VR(1)

  DPOS(2)=VR(2)

  END                         '主程序結束

  GLOBAL SUB ONPOWEROFF ()         '掉電中斷

  VR(0) = DPOS(0)        '保存坐標到VR

  VR(1) = DPOS(1)

  VR(2) = DPOS(2)

  END SUB

  2)外部中斷(上升沿/下降沿)中斷使用

  支持PLC功能的控制器才可以使用外部中斷,必須是全局的SUB過程。INT_ONn()上升沿觸發,INT_OFFn()下降沿觸發,n是IN輸入編號,只能選擇控制器自帶的編號0-31。

  示例:


  INT_ENABLE=1         '開啟中斷

  END                         '主程序結束

  GLOBAL SUB INT_ON0 ()         '外部上升沿中斷程序

                  PRINT    "輸入IN0上升沿觸發"

  END SUB

  GLOBAL SUB INT_OFF0 ()         '外部下降沿中斷程序

                  PRINT     "輸入IN0下降沿觸發"

  END SUB

  3)定時器中斷使用

  定時器中斷支持同時開啟多個,中斷個數由定時器個數決定,必須是全局的SUB過程。ONTIMERn()中n是定時器編號。

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

  定時器結束:TIMER_STOP (定時器編號)

  定時器狀態:value = TIMER_IFEND (定時器編號),只讀參數,返回值:0-正在定時,1-定時完成。

  示例:

  

  INT_ENABLE=1                 '開啟中斷

  TIMER_START(0,100)     '定時器0開啟,100ms后執行一次

  END

  GLOBAL SUB ONTIMER0() '中斷程序

              PRINT "ontimer0 enter"

              'TIMER_START(0,100) '希望周期執行中斷,在SUB里再次打開定時器

  END SUB

  

  6、三種中斷使用(PLC)

  

  在PLC編程中,使用LBL指令定義要調用的中斷函數,中斷函數與Basic通用。

  PLC編程下三類中斷使用的簡單示例如梯形圖程序所示。

  

  4.png

  

  

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

  中斷程序運行時,占用一個任務號,此任務號為自動分配,不用手動設置。

  如下圖,運行定時器中斷時的任務狀態。

  

  5.png

  

  7、中斷使用注意事項

  

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

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

  3)各中斷之間無優先級,支持中斷嵌套,多個中斷可以同時執行,同一時間處理的中斷函數不宜過多。

  控制器內部只有一個任務在處理所有的中斷信號響應,有一個固定的中斷任務號,如果中斷處理函數過多,并且中斷處理函數的代碼太長,會造成所有的中斷響應變慢,甚至是中斷堵塞,影響其他中斷執行。

  解決辦法:

  1)盡量減少中斷的數量,很多應用都可以用循環掃描來處理。

  2)如果有一個中斷處理函數特別長的話,調用一個單獨的任務來處理中斷中的復雜任務,這樣就不會堵塞其他的中斷響應。

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

  

  6.png

  

  例程:

  INT_ENABLE=1                 '開啟中斷

  TIMER_START(0,1000)         '定時器0開啟

  TIMER_START(1,1100)         '定時器1開啟

  END

  GLOBAL SUB ONTIMER0() '中斷處理函數

              RUNTASK 3, MyIntHandler() '開任務運行

  END SUB

  GLOBAL SUB MyIntHandler()

              DELAY 1000 '假設大量的堵塞性代碼

              WAIT UNTIL IN(0) <> 0

  ?"第一個中斷"

  END SUB

  GLOBAL SUB ONTIMER1() '中斷處理函數

  ?"第二個中斷"

  END SUB

  

  8、中斷演示例程(Basic)

  

  '主程序

  BASE(0,1)

  ATYPE=1,1 '設為脈沖軸類型

  UNITS=100,100

  DPOS=0,0

  SPEED=100,100

  ACCEL=1000,1000

  DECEL=1000,1000

  SRAMP=100,100

  INT_ENABLE=1 '開啟中斷總開關

  TIMER_START(2,1000) '定時器2開啟,1000ms后執行一次

  DPOS(0)=VR(0) '上電讀取保存的數值,恢復坐標

  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 '主程序結束

  '中斷程序,均為全局SUB

  GLOBAL SUB ONTIMER2()     '定時器中斷程序

          PRINT "定時器中斷2"

          'TIMER_START(2,1000)     '在sub里打開定時器,中斷周期執行

  END SUB

  GLOBAL SUB INT_ON2 () '外部上升沿中斷程序

      PRINT "輸入IN2下降沿觸發..."

  END SUB

  GLOBAL SUB INT_OFF2 () '外部上升沿中斷程序

      PRINT "輸入IN2下降沿觸發..."

  END SUB

  GLOBAL SUB ONPOWEROFF () '掉電中斷

  VR(0) = DPOS(0) '保存坐標到VR

  VR(1) = DPOS(1)

  END SUB

  

  9、中斷演示例程(PLC)

  

  7.png

  8.png

  

  PLC語句表代碼:

  //主程序 X0定時中斷0,X1-定時中斷1,X2-上升沿/下降沿中斷,X3-關閉所有中斷

  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中斷,定時器到達預設值開啟中斷

  LBL @ONTIMER0

  LD M8000

  EXE @ PRINT "定時器中斷0"

  IRET

  //定時器1中斷,定時器到達預設值開啟中斷

  LBL @ONTIMER1

  LD M8000

  EXE @ PRINT "定時器中斷1"

  IRET

  //掉電中斷,控制器斷電執行此中斷

  LBL @ONPOWEROFF

  LD M8000

  MOV K12345 D0

  EXE @ VR(0)=MODBUS_REG(0)

  IRET

  END

  正運動技術運動控制器中斷(掉電中斷、外部中斷、定時器中斷)的應用就分享到這里,更多精彩內容,請關注我們的公眾號。

  本文由正運動小助手原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

標簽:

點贊

分享到:

上一篇:快速入門丨篇十:運動控制器...

下一篇:快速入門 | 篇十二:正運動技...

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

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 临湘市| 寿光市| 长春市| 思南县| 南澳县| 梨树县| 乌什县| 南岸区| 金坛市| 白河县| 城口县| 城市| 莱芜市| 黄骅市| 石屏县| 巢湖市| 淳安县| 兴国县| 依安县| 始兴县| 福贡县| 延吉市| 沐川县| 霸州市| 镇江市| 连平县| 扶沟县| 比如县| 黑水县| 乐至县| 三河市| 凤城市| 福安市| 侯马市| 肥乡县| 甘德县| 曲阜市| 瑞金市| 平安县| 芮城县| 丹江口市|