基于實時Linux平臺的玻璃磨削加工設備控制方法【專利摘要】本發(fā)明提供了基于實時Linux平臺的玻璃磨削加工設備控制方法,包括Linux系統平臺與嵌入式實時內核,實時內核建立次優(yōu)先級別的進程作為Linux內核的運行基礎,通過地址空間共享與虛擬中斷開關的控制建立起由用戶態(tài)、內核態(tài)、中斷態(tài)三層體系:當控制玻璃磨削加工設備實現設備功能時,系統由用戶態(tài)切換進入內核態(tài);當中斷到達時,從中斷注入點執(zhí)行虛擬異常向量以觸發(fā)切換到中斷態(tài),實時內核將虛擬異常向量拷貝至中斷點處,通過虛擬中斷開關判斷是否為實時性中斷,如果是則由實時內核進入中斷處理后返回內核態(tài),否則由實時內核將該中斷退回至內核態(tài)中斷處理;在返回內核態(tài)時,直接使用中斷點所保存的現場;當處理完畢中斷之后,系統由內核態(tài)切換進入用戶態(tài)?!緦@f明】基于實時Linux平臺的玻璃磨削加工設備控制方法【
技術領域:
】[0001]本發(fā)明涉及玻璃磨削加工設備的數控系統。【
背景技術:
】[0002]近些年來,隨著計算機數字控制技術的發(fā)展,數控技術已經廣泛應用于工業(yè)控制的各個領域,尤其是機械制造業(yè)中,普通機械正逐漸被高效率、高精度、高自動化的數控機械所代替。[0003]目前市場上絕大部分玻璃磨削機系統是以Windows系列為運行平臺,優(yōu)點是該平臺市場占有率高,易于操作,開發(fā)資源豐富,但缺點是Windows系列平臺屬于非實時操作系統,當系統負載過大的時候,無法快速且穩(wěn)定的響應外界數據請求而降低加工精度。與外部運動控制模塊進行通訊時,是通過網卡中斷的形式將接收到的網絡數據包存放到一個緩存隊列,然后操作系統會產生一個固定的定時器中斷從這個緩存隊形讀取網絡數據,最后將處理的數據包從以太網接口發(fā)送到工業(yè)現場總線接口模塊。當運動控制模塊或I/O模塊接收到來自總線的數據包并解析后,將數據流輸出到伺服驅動器來控制不同方向上的伺服電機,從而達到精確定位的目的。[0004]實時操作系統分為硬實時操作系統和軟實時操作系統,硬實時操作系統保證在一定的時間必須完成某項任務,而軟實時操作系統只要按任務優(yōu)先級盡可能快速的完成任務即可。由于大多數玻璃磨削機控制方法運行在非實時操作系統上,當CPU空閑的時候可以提供相當短的典型中斷響應時間,若系統運行負載過大時,有時響應會變得無比漫長,以至于某一個簡單的讀取操作任務會長時間無響應,甚至直接掛死。但這并不能說明非實時操作系統不夠快速,而是響應任務的時間不確定,這樣很容易造成玻璃磨削機控制方法無法實時對運動控制模塊以及其它I/O模塊信息做出合理的反饋,從而在運動定位方向上造成累計誤差?!?br/>發(fā)明內容】[0005]為了克服現有技術存在的不足,本發(fā)明的目的在于提供了一種以硬實時Linux系統為平臺,解決在玻璃磨削加工中快速,實時響應外界數據包請求以提高加工精度的方法,在系統負載變化的情況下,能夠實時處理中斷任務。[0006]為達到以上目的,本發(fā)明提供了一種基于實時Linux平臺的玻璃磨削加工設備控制方法,用于對玻璃磨削加工設備的工作軌跡進行精確控制,提供一Linux系統平臺,在該Linux系統平臺上實時基礎環(huán)境內建立一嵌入式實時內核,該嵌入式實時內核建立次優(yōu)先級別的進程作為Linux內核的運行基礎,由Linux內核與嵌入式實時內核通過地址空間共享與虛擬中斷開關的控制建立起一套由用戶態(tài)、基于用戶態(tài)的內核態(tài)、基于內核態(tài)的中斷態(tài)構成的三層體系,該控制方法包括如下步驟:51:當用戶控制玻璃磨削加工設備實現設備功能時,系統由用戶態(tài)切換進入內核態(tài);52:當中斷到達時,從中斷注入點執(zhí)行虛擬異常向量以觸發(fā)切換到中斷態(tài),首先實時內核將虛擬異常向量拷貝至中斷點處,然后通過虛擬中斷開關判斷該中斷是否為實時性中斷,如果為實時性中斷則由實時內核轉入函數進入中斷處理后返回內核態(tài),如果為非實時性中斷則由實時內核將該中斷退回至內核態(tài)進行中斷處理;在返回內核態(tài)時,直接使用中斷點所保存的現場;S3:當處理完畢中斷之后,系統由內核態(tài)切換進入用戶態(tài)。[0007]本發(fā)明的進一步改進在于,實時內核對實時性中斷的處理過程包括如下步驟:保存現場、遞增中斷嵌套計數、執(zhí)行中斷服務程序、遞減中斷嵌套計數、恢復現場。[0008]本發(fā)明的進一步改進在于,每一個中斷由一個中斷描述符結構體來描述以統一管理中斷。[0009]本發(fā)明的進一步改進在于,所述的中斷描述符結構體描述了中斷服務程序的入口地址。[0010]本發(fā)明的進一步改進在于,所述的中斷描述符結構體描述了指向清除中斷標志的函數。[0011]本發(fā)明的進一步改進在于,當用戶態(tài)運行時,用戶態(tài)的真實中斷標志始終是開的,使得所有的中斷操作都集中在實時內核中。[0012]本發(fā)明的進一步改進在于,所述的非實時性中斷為與客戶系統有關的向量,包括軟中斷(swi)、未定義異常(und)、指令或數據異常(pabt或dabt)。[0013]本發(fā)明的進一步改進在于,所述的實時性中斷包括外部請求中斷(IRQ)。[0014]本發(fā)明有益效果為:為玻璃磨削加工設備提供一個開放硬實時Linux操作平臺,包含一個實時內核與Linux,當系統負載變化、外界事件或數據產生的時候,能快速穩(wěn)定響應外界數據包請求,能夠接受并以足夠快的速度予以處理,其處理結果又能在規(guī)定的時間內來控制生產過程或對處理系統做出快速響應,中斷延時小于50us。并控制所有實時任務協調一致,從而提高玻璃磨削加工精度以及效率。另外能夠提供Linux兼容API,API的Linux兼容性使得它能夠兼容眾多的嵌入式Linux應用,降低應用程序開發(fā)門檻?!緦@綀D】【附圖說明】[0015]附圖1與附圖2為中斷虛擬化前后的跳轉過程對比示意圖,圖1為常規(guī)Linux異常向量跳轉過程示意圖,圖2為采用異常向量虛擬化后跳轉過程示意圖;附圖3描述了中斷態(tài)下的中斷異常向量表;附圖4描述了GuestOS內核態(tài)注入中斷的過程;附圖5所示的代碼表示中斷描述符結構體;附圖6描述了OS_CPU_IRQ_ISR_Handler實現框架(控制邏輯實現);附圖7描述了對中斷服務程序注冊過程;圖8描述了XShrike中斷處理過程;附圖9至附圖11為外部觸發(fā)中斷時間對比的示波器截圖?!揪唧w實施方式】[0016]下面對本發(fā)明的較佳實施例進行詳細闡述,以使本發(fā)明的優(yōu)點和特征能更易于被本領域技術人員理解,從而對本發(fā)明的保護范圍做出更為清楚明確的界定。[0017]本實施例中的控制方法基于一套CPU模塊,該CPU模塊硬件以及軟件配置如下:硬件方面:SamsungS5pv210運行主頻IGHZ;板載內存512MBDDR2SDRAM,800MHZ;板載256MBSLCNandFlash;板載8GBSDFlash(可選擇擴展到32GSDFlash);帶內置式擴展TF卡接口芯片(可擴展至32G);兩個10/100M自適應以太網口(分別連接EtherCAT總線和Internet);4個USBHost接口(可連接用戶自定義設備),一個USBOTG接口(系統調試及程序下載口,可連接到調試主機);一個RS232接口(調試端口,可連接到調試PC機);一個RS485總線接口(接收PMU單元關機信號);一路+24V數字量輸入端口;數字式溫度檢測;RTC實時時鐘。[0018]軟件方面:提供一個開放的硬實時Linux系統平臺,其中包含一個實時內核(以下稱為XShrike)和Linux(以下稱為GusetOS);XShrike定位于嵌入式領域的實時基礎軟件環(huán)境,首先它是實時的基礎軟件,通過中斷虛擬化技術,它可以達到與實時操作系統(Vxworks,uCos等)比擬的實時性要求,以中斷響應時間來衡量,其最差的中斷響應時間小于50μs,可以用于要求硬實時的工業(yè)控制、通信等場合。[0019]參見附圖1與附圖2所示,描述了中斷虛擬化前后的跳轉過程對比示意圖,圖1描述了通常狀態(tài)下Linux異常向量跳轉過程示意圖,圖2描述了采用了異常向量虛擬化后跳轉過程示意圖。如上圖1所示,中斷向量被搬移到虛擬地址OxffffOOOO處,而當指令異常發(fā)生時,根據其向量號OxOc,取出bvector_pabt+stubs_offset指令,即跳轉到具體處理函數處(通過offset偏移量,跳轉到0xffff0200~0xffffl000的某個對應地處)。[0020]參考GusetOS未虛擬化時的中斷向量跳轉過程,并抽象出XShrike可使用的接口,可以實現中斷向量的虛擬化,并為GusetOS設置正確的向量映射,通過映射中斷向量而執(zhí)行的中斷/異常向量跳轉過程。為實現異常向量的虛擬化,XShrike將修改后的中斷向量拷貝至客戶系統的OxffffOOOO地址處,主要是調整中斷后的向量的跳轉地址。對于指令異常向量,異常觸發(fā)時,同樣跳轉到OxffffOOOc處,但該處修改后的指令是Idrpc,mes_pabt,而xshrike_pabt存放的地址是XTS_PABT,這意味著需要先跳轉到mes的XTS_PABT過程處,即上圖2中XShrike對應的處理過程,這主要是擬Iinux異常發(fā)生時的堆棧情況以保存堆棧內容,并跳轉到客戶系統的具體異向量中斷處理(S卩stubs_start~stubs_end對應的處理過程)。如下圖3表示VMM的中斷異常向量表。這段從_vectors_start到ectors_end的代碼被拷貝至虛擬地址OxffffOOOO處。當發(fā)生中斷時,程序pc指針跳轉到OxffffOOlc處,調用Idrpc,xshrike_irq指令,進而轉入0S_CPU_IRQ_ISR函數,進入中斷處理,這些操作主要在XShrike端執(zhí)行,故中斷的處理不需要額外的地址映射。對于其它向量如軟中斷(swi)、未定義異常(und)、指令或數據異常(pabt或dabt)等,由于其主要與客戶系統有關,且處理復雜,主要交由客戶系統處理,故需要將這些向量映射到客戶系統。[0021]參見附圖4所示,中斷虛擬化是指GuestOS不能操作硬件中斷標志(在ARM上為CPSR中的I標志),而是操作虛擬的中斷標志(記為VIFlag開關)。從GuestOS層面來看,操作VIFlag的效果與操作真實的中斷標志是一樣的。關閉虛擬中斷,意味著GuestOS中斷服務程序相關代碼無法運行,從而為GusetOS內核提供同步操作保證;打開虛擬中斷,則可以響應外部中斷。無論VIFlag關閉與否,當GusetOS運行時,真實的中斷標志始終是開的,這實際上也是中斷虛擬化的意義所在,它使得GuestOS的運行與一般的實時線程一樣無法操作硬件中斷標志,因此所有的中斷操作都集中在XShrike,從而為縮短整個系統最長關中斷時間提供了現實的途徑。中斷虛擬化之后,GuestOS不再響應硬件中斷,而是依賴中斷注入操作執(zhí)行中斷服務程序。[0022]中斷注入所做的工作是模擬GuestOS運行于實際硬件時所產生的情景,GuestOS運行于實際硬件時,當中斷到達時,GuestOS總是從某個固定地址(中斷入口)執(zhí)行代碼,而中斷注入也是使GuestOS從固定地方處(下圖2中C處)執(zhí)行代碼執(zhí)行,在實現時,C處定義為do_IRQ,稱之為中斷注入點。虛擬機在中斷注入時,需要使用一個中斷現場,虛擬機直接使用了GuestOS讓出CPU時(下圖2中A處)所保存的現場,一方面避免了拷貝,另一方面使C處的內核棧與GuestOS運行于實際硬件并響應中斷的內核棧一樣,達到了情景模擬的效果。[0023]結合附圖2與附圖4所示,本發(fā)明基于實時Linux平臺的玻璃磨削加工設備控制方法,用于對玻璃磨削加工設備的工作軌跡進行精確控制,提供一Linux系統平臺,在該Linux系統平臺上實時基礎環(huán)境內建立一嵌入式實時內核,該嵌入式實時內核建立次優(yōu)先級別的進程作為Linux內核的運行基礎,由Linux內核與嵌入式實時內核通過地址空間共享與虛擬中斷開關的控制建立起一套由用戶態(tài)、基于用戶態(tài)的內核態(tài)、基于內核態(tài)的中斷態(tài)構成的三層體系,該控制方法包括如下步驟:51:當用戶控制玻璃磨削加工設備實現設備功能時,系統由用戶態(tài)切換進入內核態(tài);52:當中斷到達時,從中斷注入點執(zhí)行虛擬異常向量以觸發(fā)切換到中斷態(tài),首先實時內核將虛擬異常向量拷貝至中斷點處,然后通過虛擬中斷開關判斷該中斷是否為實時性中斷,如果為實時性中斷則由實時內核轉入函數進入中斷處理后返回內核態(tài),如果為非實時性中斷則由實時內核將該中斷退回至內核態(tài)進行中斷處理;在返回內核態(tài)時,直接使用中斷點所保存的現場;53:當處理完畢中斷之后,系統由內核態(tài)切換進入用戶態(tài)。[0024]參見附圖5,當中斷發(fā)生時,在XShrike中現場的保存與恢復是由XShrike內核完成的,在移植時,用戶只需要編寫具體的中斷服務程序,不需要處理現場保存與恢復。每一個中斷由一個中斷描述符結構體來描述,用于統一管理中斷,其定義如下=Handler表示中斷服務程序的入口地址;clear指向清除中斷標志的函數;flag表示該中斷是電平觸發(fā)還是邊沿觸發(fā)。[0025]用戶在移植XShrike到其他ARM系列的開發(fā)板時,需要重新實現0S_CPU_IRQ_ISR_Handler〇,該函數的一個典型的實現如下圖6所示。[0026]用戶在編寫了中斷服務程序后,需要對中斷服務程序注冊,這需要在init_irq〇中把中斷服務程序賦給table_intr_desc□。以timer中斷為例,在S3c2440中它的中斷號為10,因此timer中斷的注冊如附圖7所示。[0027]實時內核對中斷的響應實際上是一個標準的過程,一般由以下三個部分組成:(1)保存寄存器的內容(2)執(zhí)行C函數編寫的中斷服務程序(3)中斷返回,恢復寄存器的內容,其中會涉及到任務切換。[0028]而在XShrike中,這個標準的過程又細化成下圖8所示之步驟:(1)保存現場,現場保存的格式為{CPSR,PC,LR_svc,R12-R0},這也是"任務管理"一節(jié)中提到的任務中斷現場的內容,這部分由匯編實現;(2)遞增中斷嵌套計數由函數0S_INTR_ENTER完成;(3)執(zhí)行中斷服務程序OS_CPU_IRQ_ISR_Handler〇,這是用戶用C語言實現的;(4)遞減中斷嵌套計數由函數0S_INTR_EXIT完成;(5)恢復現場,這是由內核函數0S_Sched_Intr()完成的。[0029]根據上文所述的中斷處理過程,可通過控制MCU的一個GPIO輸出引腳來幫助測試,具體方法如下:(1)在驅動程序中設置GPH0_1為中斷引腳,下降沿觸發(fā)。GPH0_2輸出高電平。[0030](2)創(chuàng)建中斷服務程序OS_CPU_IRQ_ISR_Handler(),然后對中斷處理頭程序注冊,這需要在init_irq()中把中斷處理頭程序賦給table_intr_desc[]。[0031](3)當程序執(zhí)行到table_intr_desc□的時候將GPH0_2設置為低電平。[0032](4)從外部觸發(fā)到信號到中斷處理頭程序table_intr_desc□響應信號之間的時間差即為中斷延遲時間。[0033]通過對外部觸發(fā)中斷時間對比,示波器捕獲截圖如附圖9至附圖11所示,其展示了下表中的測試結果:【權利要求】1.一種基于實時Linux平臺的玻璃磨削加工設備控制方法,用于對玻璃磨削加工設備的工作軌跡進行精確控制,其特征在于:提供一Linux系統平臺,在該Linux系統平臺上實時基礎環(huán)境內建立一嵌入式實時內核,該嵌入式實時內核建立次優(yōu)先級別的進程作為Linux內核的運行基礎,由Linux內核與嵌入式實時內核通過地址空間共享與虛擬中斷開關的控制建立起一套由用戶態(tài)、基于用戶態(tài)的內核態(tài)、基于內核態(tài)的中斷態(tài)構成的三層體系,該控制方法包括如下步驟:51:當用戶控制玻璃磨削加工設備實現設備功能時,系統由用戶態(tài)切換進入內核態(tài);52:當中斷到達時,從中斷注入點執(zhí)行虛擬異常向量以觸發(fā)切換到中斷態(tài),首先實時內核將虛擬異常向量拷貝至中斷點處,然后通過虛擬中斷開關判斷該中斷是否為實時性中斷,如果為實時性中斷則由實時內核轉入函數進入中斷處理后返回內核態(tài),如果為非實時性中斷則由實時內核將該中斷退回至內核態(tài)進行中斷處理;在返回內核態(tài)時,直接使用中斷點所保存的現場;53:當處理完畢中斷之后,系統由內核態(tài)切換進入用戶態(tài)。2.根據權利要求1所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:實時內核對實時性中斷的處理過程包括如下步驟:保存現場、遞增中斷嵌套計數、執(zhí)行中斷服務程序、遞減中斷嵌套計數、恢復現場。3.根據權利要求1所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:每一個中斷由一個中斷描述符結構體來描述以統一管理中斷。4.根據權利要求3所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:所述的中斷描述符結構體描述了中斷服務程序的入口地址。5.根據權利要求3所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:所述的中斷描述符結構體描述了指向清除中斷標志的函數。6.根據權利要求1所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:當用戶態(tài)運行時,用戶態(tài)的真實中斷標志始終是開的,使得所有的中斷操作都集中在實時內核。7.根據權利要求1所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:所述的非實時性中斷為與客戶系統有關的向量,包括軟中斷(swi)、未定義異常(und)、指令或數據異常(pabt或dabt)。8.根據權利要求1所述的基于實時Linux平臺的玻璃磨削加工設備控制方法,其特征在于:所述的實時性中斷包括外部請求中斷(IRQ)?!疚臋n編號】B24B55/00GK104476409SQ201410685374【公開日】2015年4月1日申請日期:2014年11月25日優(yōu)先權日:2014年11月25日【發(fā)明者】周俊華申請人:蘇州谷夫道自動化科技有限公司