專利名稱:基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Windows系統(tǒng)實(shí)時(shí)擴(kuò)展技術(shù),尤其是一種將實(shí)時(shí)內(nèi)核直接 嵌入到 Windows驅(qū)動(dòng)程序中,以克服傳統(tǒng)的Windows實(shí)時(shí)軟件需修改Windows HAL源代碼以及常用的前后臺(tái)結(jié)構(gòu)驅(qū)動(dòng)程序?qū)崟r(shí)擴(kuò)展技術(shù)存在的實(shí)時(shí)性與穩(wěn)定性差、控制系統(tǒng)開(kāi)發(fā)與調(diào)試不方便的問(wèn)題,具體是一種基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)。
背景技術(shù):
Windows是微軟公司開(kāi)發(fā)的窗口式多任務(wù)操作系統(tǒng),作為目前PC最通用的操作系統(tǒng),在其平臺(tái)上進(jìn)行工業(yè)控制系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)具有很多的優(yōu)勢(shì)與便利。但是Windows系統(tǒng)并不是實(shí)時(shí)操作系統(tǒng),為了滿足工業(yè)控制領(lǐng)域的需求,必須對(duì)其進(jìn)行實(shí)時(shí)性擴(kuò)展。目前對(duì) Windows系統(tǒng)進(jìn)行實(shí)時(shí)性擴(kuò)展主要有以下兩種方法
一是采用商業(yè)的Windows實(shí)時(shí)擴(kuò)展系統(tǒng),如RTX等。RTX是基于Windows的實(shí)時(shí)控制軟件,它通過(guò)對(duì)HAL的修改,在Windows線程和RTX線程之間增加一個(gè)中斷間隔,使得 Windows線程不能中斷RTX的實(shí)時(shí)線程,而RTX的實(shí)時(shí)線程能夠隨時(shí)中斷Windows線程,同時(shí)Windows管理的設(shè)備也不能屏蔽RTX管理的設(shè)備,RTX管理的設(shè)備可以屏蔽Windows管理的設(shè)備,從而實(shí)現(xiàn)RTX系統(tǒng)的強(qiáng)實(shí)時(shí)性。作為成熟的商業(yè)實(shí)時(shí)系統(tǒng),RTX提供了良好的實(shí)時(shí)性能和開(kāi)發(fā)環(huán)境,但是開(kāi)發(fā)授權(quán)費(fèi)用昂貴,使得系統(tǒng)開(kāi)發(fā)的成本增加。二是編寫可以處理實(shí)時(shí)任務(wù)的前后臺(tái)結(jié)構(gòu)的驅(qū)動(dòng)程序。所謂前后臺(tái)結(jié)構(gòu),就是讓系統(tǒng)中所有的實(shí)時(shí)任務(wù)放在驅(qū)動(dòng)程序的中斷服務(wù)程序中作為前臺(tái)程序,非實(shí)時(shí)任務(wù)放在應(yīng)用程序以及驅(qū)動(dòng)程序的其它部分作為后臺(tái)程序。這種方法比較簡(jiǎn)單,易于實(shí)現(xiàn);但是由于所有的實(shí)時(shí)任務(wù)都集中在中斷服務(wù)程序中,沒(méi)有合理的任務(wù)管理和調(diào)度機(jī)制,不僅影響了系統(tǒng)的實(shí)時(shí)性而且使得復(fù)雜的控制系統(tǒng)設(shè)計(jì)難度大、可維護(hù)性差、升級(jí)不方便,因此只適用于小型的、對(duì)實(shí)時(shí)性要求不高的系統(tǒng)。此外,由于是在驅(qū)動(dòng)程序的中斷服務(wù)程序中進(jìn)行實(shí)時(shí)任務(wù)開(kāi)發(fā),增加了系統(tǒng)開(kāi)發(fā)與調(diào)試的難度,對(duì)于開(kāi)發(fā)人員的要求較高。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)商用實(shí)時(shí)系統(tǒng)成本高,而自行編寫的實(shí)時(shí)程序不能應(yīng)用于復(fù)雜的、對(duì)實(shí)時(shí)性要求高的控制系統(tǒng)的問(wèn)題。為克服現(xiàn)有的Windows實(shí)時(shí)擴(kuò)展技術(shù)的不足,設(shè)計(jì)一種能充分發(fā)揮嵌入式實(shí)時(shí)系統(tǒng)與Windows驅(qū)動(dòng)程序的特點(diǎn),成本低、實(shí)時(shí)性好的基于 Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)。本發(fā)明的技術(shù)方案是
一種基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),它主要由四個(gè)部分組成實(shí)時(shí)系統(tǒng)的驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù),實(shí)時(shí)系統(tǒng)的應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù),實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)和外部接口卡。所述驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù)為實(shí)時(shí)系統(tǒng)提供各種系統(tǒng)服務(wù),如硬件數(shù)據(jù)讀寫,實(shí)時(shí)內(nèi)核操作等,并且將接口函數(shù)封裝在DLL中。開(kāi)發(fā)者可以通過(guò)調(diào)用驅(qū)動(dòng)程序提供的動(dòng)態(tài)鏈接庫(kù)進(jìn)行系統(tǒng)的開(kāi)發(fā)工作。此外,驅(qū)動(dòng)程序還包含管理和運(yùn)行實(shí)時(shí)任務(wù)的實(shí)時(shí)內(nèi)核。實(shí)時(shí)內(nèi)核擁有完善的任務(wù)管理功能、調(diào)度機(jī)制、同步機(jī)制以及時(shí)間管理等功能。實(shí)時(shí)內(nèi)核通過(guò)直接操作CPU寄存器完成實(shí)時(shí)任務(wù)切換,以及對(duì)Windows系統(tǒng)的屏蔽和快速的中斷響應(yīng)實(shí)現(xiàn)其強(qiáng)實(shí)時(shí)性。所述應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù)為控制系統(tǒng)提供應(yīng)用層調(diào)試環(huán)境。由于實(shí)時(shí)任務(wù)以及各種系統(tǒng)服務(wù)都運(yùn)行在Windows的驅(qū)動(dòng)程序中,不便于系統(tǒng)的調(diào)試。因此,為了簡(jiǎn)化系統(tǒng)的調(diào)試工作,本發(fā)明在應(yīng)用層為實(shí)時(shí)系統(tǒng)設(shè)計(jì)了模擬程序。模擬程序采用Windows線程模擬實(shí)時(shí)任務(wù),任務(wù)調(diào)度由Windows線程調(diào)度器負(fù)責(zé),采用Windows定時(shí)器 模擬實(shí)時(shí)內(nèi)核的時(shí)鐘中斷,采用Windows的通信與同步機(jī)制模擬實(shí)時(shí)任務(wù)的通信與同步。與驅(qū)動(dòng)程序相同,模擬程序也可為實(shí)時(shí)系統(tǒng)提供各種系統(tǒng)服務(wù),并且將接口函數(shù)封裝在 DLL中供應(yīng)用程序調(diào)用。模擬程序雖然無(wú)法提供硬實(shí)時(shí)環(huán)境,但是仍然可以對(duì)實(shí)時(shí)控制系統(tǒng)各模塊的功能實(shí)現(xiàn)以及運(yùn)行過(guò)程的大多問(wèn)題進(jìn)行測(cè)試與修改,大大減少了在內(nèi)核層調(diào)試的工作量,杜絕了內(nèi)存訪問(wèn)違規(guī)等可能導(dǎo)致操作系統(tǒng)崩潰的錯(cuò)誤,顯著降低了系統(tǒng)的調(diào)試難度。所述實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)將實(shí)時(shí)任務(wù)模塊本體從實(shí)時(shí)內(nèi)核中分離出來(lái),對(duì)其進(jìn)行獨(dú)立開(kāi)發(fā)、調(diào)試。并且,將實(shí)時(shí)任務(wù)模塊分別按照實(shí)時(shí)內(nèi)核與模擬程序兩種不同的運(yùn)行環(huán)境進(jìn)行編譯,生成對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)供實(shí)時(shí)內(nèi)核與模擬程序進(jìn)行調(diào)用,進(jìn)行實(shí)時(shí)控制系統(tǒng)的運(yùn)行與調(diào)試。所述外部接口卡為實(shí)時(shí)內(nèi)核提供高精度高分辨率的定時(shí)器,同時(shí)可以為實(shí)時(shí)控制系統(tǒng)與外部被控對(duì)象提供數(shù)據(jù)交互與信號(hào)轉(zhuǎn)換等功能。高精度高分辨率的定時(shí)器是實(shí)時(shí)系統(tǒng)實(shí)時(shí)性和穩(wěn)定性的基礎(chǔ)。目前,在Windows系統(tǒng)下可以通過(guò)兩種方法獲得高精度高分辨率的定時(shí)器一是修改Windows的HAL,RTX就使用這種方法,但這需要得到微軟授權(quán)獲得HAL的源代碼才能進(jìn)行;二是通過(guò)修改8254計(jì)數(shù)器的計(jì)數(shù)初值獲得高精度的定時(shí)中斷,但這會(huì)涉及到Windows系統(tǒng)工作的定時(shí)中斷,操作不當(dāng)會(huì)使整個(gè)系統(tǒng)不穩(wěn)定甚至崩潰, 而且中斷周期更改不方便。因此,本發(fā)明借助于驅(qū)動(dòng)程序?qū)τ布僮鞯谋憷?,通過(guò)外部接口卡引入外部時(shí)鐘,不僅軟硬件開(kāi)銷很小,而且易于實(shí)現(xiàn)高精度高分辨率的定時(shí)、便于修改定時(shí)器的頻率。本發(fā)明的有益效果是
本發(fā)明的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)不僅解決了采用RTX等商用實(shí)時(shí)軟件價(jià)格昂貴、控制系統(tǒng)開(kāi)發(fā)與應(yīng)用成本高等問(wèn)題,而且有效克服了現(xiàn)有的采用前后臺(tái)結(jié)構(gòu)進(jìn)行 Windows實(shí)時(shí)擴(kuò)展存在的實(shí)時(shí)性與穩(wěn)定性差、控制系統(tǒng)開(kāi)發(fā)與調(diào)試不方便等問(wèn)題。本發(fā)明的實(shí)時(shí)性與穩(wěn)定性好。本發(fā)明的實(shí)時(shí)系統(tǒng)的實(shí)時(shí)內(nèi)核能夠搶占Windows線程,對(duì)Windows系統(tǒng)進(jìn)行屏蔽,并且通過(guò)高精度的外部定時(shí)器、快速的中斷響應(yīng)以及實(shí)時(shí)內(nèi)核獨(dú)立的任務(wù)管理調(diào)度機(jī)制,使得實(shí)時(shí)系統(tǒng)具有良好的實(shí)時(shí)性與穩(wěn)定性。本發(fā)明有利于各種控制系統(tǒng)的快速低成本開(kāi)發(fā)。本實(shí)時(shí)系統(tǒng)通過(guò)實(shí)時(shí)內(nèi)核進(jìn)行實(shí)時(shí)任務(wù)的管理與調(diào)度,而且,實(shí)時(shí)任務(wù)在應(yīng)用層進(jìn)行開(kāi)發(fā),并以動(dòng)態(tài)鏈接庫(kù)的形式加載到實(shí)時(shí)內(nèi)核中運(yùn)行。此外,本實(shí)時(shí)系統(tǒng)將驅(qū)動(dòng)程序中的各種服務(wù)封裝成動(dòng)態(tài)鏈接庫(kù),供開(kāi)發(fā)者調(diào)用。這些方案降低了實(shí)時(shí)控制系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)難度,改善了可維護(hù)性,提高了實(shí)時(shí)系統(tǒng)的通用性,使其可以方便應(yīng)用于各種基于PC的工業(yè)控制系統(tǒng)。本發(fā)明調(diào)試方便。本發(fā)明的實(shí)時(shí)系統(tǒng)設(shè)計(jì)了應(yīng)用層模擬程序,可以直接在應(yīng)用層進(jìn)行實(shí)時(shí)控制系統(tǒng)的功能調(diào)試,很方便地解決系統(tǒng)的大多數(shù)問(wèn)題,很大程度上降低系統(tǒng)的調(diào)試難度,減少調(diào)試工作量。
圖1是本發(fā)明的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)框架圖。圖2是本發(fā)明的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)結(jié)構(gòu)圖。圖3是本發(fā)明的實(shí)時(shí)內(nèi)核進(jìn)入與退出的過(guò)程圖4是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的結(jié)構(gòu)圖。圖5是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的加工流程及任務(wù)時(shí)序圖。圖6是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的應(yīng)用層與內(nèi)核層之間數(shù)據(jù)傳輸與通信。圖7是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的測(cè)試用例圖形。圖8是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的加工工件實(shí)物照片。圖9是本發(fā)明實(shí)施例全軟件數(shù)控系統(tǒng)的加工速度一時(shí)間曲線。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。如圖1-9所示。一種基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),它主要由四個(gè)部分組成(如圖1、2所示) 1實(shí)時(shí)系統(tǒng)的驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù)
驅(qū)動(dòng)程序?yàn)閷?shí)時(shí)系統(tǒng)提供各種系統(tǒng)服務(wù),如硬件數(shù)據(jù)讀寫,實(shí)時(shí)內(nèi)核操作等,并且將接口函數(shù)封裝在DLL中供實(shí)時(shí)系統(tǒng)的應(yīng)用程序調(diào)用。此外,驅(qū)動(dòng)程序還包含管理和運(yùn)行實(shí)時(shí)任務(wù)的實(shí)時(shí)內(nèi)核。實(shí)時(shí)內(nèi)核擁有任務(wù)管理功能、調(diào)度機(jī)制、同步機(jī)制以及時(shí)間管理等功能。 實(shí)時(shí)內(nèi)核通過(guò)直接操作CPU寄存器完成實(shí)時(shí)任務(wù)切換,以及對(duì)Windows系統(tǒng)的屏蔽和快速的中斷響應(yīng)實(shí)現(xiàn)其強(qiáng)實(shí)時(shí)性。2實(shí)時(shí)系統(tǒng)的應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù)
由于實(shí)時(shí)任務(wù)以及各種系統(tǒng)服務(wù)都運(yùn)行在Windows的驅(qū)動(dòng)程序中,不便于系統(tǒng)的調(diào)試。為了簡(jiǎn)化系統(tǒng)的調(diào)試工作,本發(fā)明在應(yīng)用層為實(shí)時(shí)系統(tǒng)設(shè)計(jì)了模擬程序。模擬程序采用Windows線程模擬實(shí)時(shí)任務(wù),任務(wù)調(diào)度由Windows線程調(diào)度器負(fù)責(zé),采用Windows定時(shí)器模擬實(shí)時(shí)內(nèi)核的時(shí)鐘中斷,采用Windows的通信與同步機(jī)制模擬實(shí)時(shí)任務(wù)的通信與同步。 與驅(qū)動(dòng)程序相同,模擬程序也可為實(shí)時(shí)系統(tǒng)提供各種系統(tǒng)服務(wù),并且將接口函數(shù)封裝在DLL 中供應(yīng)用程序調(diào)用。模擬程序雖然無(wú)法提供硬實(shí)時(shí)環(huán)境,但是仍然可以對(duì)實(shí)時(shí)控制系統(tǒng)各模塊的功能實(shí)現(xiàn)以及運(yùn)行過(guò)程的大多問(wèn)題進(jìn)行測(cè)試與修改,大大減少了在內(nèi)核層調(diào)試的工作量,杜絕了內(nèi)存訪問(wèn)違規(guī)等可能導(dǎo)致操作系統(tǒng)崩潰的錯(cuò)誤,顯著降低了系統(tǒng)的調(diào)試難度。3實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)
為了方便實(shí)時(shí)控制系統(tǒng)的開(kāi)發(fā),將實(shí)時(shí)任務(wù)模塊本體從實(shí)時(shí)內(nèi)核中分離出來(lái),對(duì)其進(jìn)行獨(dú)立開(kāi)發(fā)、調(diào)試。并且,將實(shí)時(shí)任務(wù)模塊分別按照實(shí)時(shí)內(nèi)核與模擬程序兩種不同的運(yùn)行環(huán)境進(jìn)行編譯,生成對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)供實(shí)時(shí)內(nèi)核與模擬程序進(jìn)行調(diào)用,進(jìn)行實(shí)時(shí)控制系統(tǒng)的運(yùn)行與調(diào)試。4外部接口卡
外部接口卡為實(shí)時(shí)內(nèi)核提供高精度高分辨率的定時(shí)器,同時(shí)為實(shí)時(shí)控制系統(tǒng)與外部被控對(duì)象提供數(shù)據(jù)交互與信號(hào)轉(zhuǎn)換等功能。詳述如下為了保證實(shí)時(shí)內(nèi)核的實(shí)時(shí)性,從實(shí)時(shí)系統(tǒng)的總體結(jié)構(gòu)上使實(shí)時(shí)內(nèi)核能夠?qū)indows 系統(tǒng)進(jìn)行屏蔽處理,使得Windows普通任務(wù)無(wú)法打斷實(shí)時(shí)任務(wù)的運(yùn)行,而實(shí)時(shí)任務(wù)在需要運(yùn)行時(shí)卻可以隨時(shí)得到CPU的使用權(quán)。實(shí)現(xiàn)屏蔽的主要手段是更改Windows系統(tǒng)的IRQL(Interrupt Request Level,中斷請(qǐng)求級(jí)別)在進(jìn)入實(shí)時(shí)內(nèi)核時(shí)使用內(nèi)核 函數(shù) KeRaiseIrql將IRQL提升至DISPATCH_LEVEL,由于Windows的線程調(diào)度器也運(yùn)行在這一優(yōu)先級(jí),這樣Windows將無(wú)法進(jìn)行線程調(diào)度,從而保證實(shí)時(shí)任務(wù)不會(huì)被Windows的其他線程搶占;在退出實(shí)時(shí)內(nèi)核時(shí)再使用內(nèi)核函數(shù)KeLowerIrql恢復(fù)原先的IRQL,使Windows系統(tǒng)可以正常運(yùn)行。將Windows系統(tǒng)屏蔽后,實(shí)時(shí)內(nèi)核與Windows系統(tǒng)處于相互獨(dú)立運(yùn)行的狀態(tài),需要在驅(qū)動(dòng)程序中處理實(shí)時(shí)內(nèi)核的進(jìn)入和退出操作,其過(guò)程如圖3所示。從Windows系統(tǒng)進(jìn)入實(shí)時(shí)系統(tǒng)有三種情況接收到來(lái)自應(yīng)用程序(用戶)的命令、來(lái)自被控制設(shè)備的中斷請(qǐng)求以及實(shí)時(shí)系統(tǒng)的時(shí)鐘中斷。進(jìn)入實(shí)時(shí)內(nèi)核之前的操作主要由保存CPU寄存器、提升IRQL和修改系統(tǒng)標(biāo)志位三個(gè)步驟組成。系統(tǒng)標(biāo)志位是一些標(biāo)志實(shí)時(shí)系統(tǒng)運(yùn)行狀態(tài)的全局變量;提升IRQL可以防止Windows線程打斷實(shí)時(shí)任務(wù)的運(yùn)行;保存CPU寄存器以便實(shí)時(shí)內(nèi)核退出時(shí)可以恢復(fù)Windows的運(yùn)行環(huán)境。相應(yīng)地,實(shí)時(shí)內(nèi)核只有在空閑任務(wù)中可以返回到Windows 系統(tǒng),退出實(shí)時(shí)內(nèi)核的過(guò)程與進(jìn)入實(shí)時(shí)內(nèi)核相反恢復(fù)系統(tǒng)標(biāo)志位,恢復(fù)CPU寄存器和恢復(fù) IRQL0實(shí)時(shí)內(nèi)核采用一種基于靜態(tài)優(yōu)先級(jí)驅(qū)動(dòng)的可剝奪型內(nèi)核。每個(gè)任務(wù)都有一個(gè)固定的優(yōu)先級(jí),最高優(yōu)先級(jí)的任務(wù)一旦就緒,就能得到處理。若一個(gè)比當(dāng)前運(yùn)行的任務(wù)優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)則被掛起,那個(gè)高優(yōu)先級(jí)的任務(wù)開(kāi)始運(yùn)行。任務(wù)調(diào)度由實(shí)時(shí)內(nèi)核的調(diào)度函數(shù)完成,其代碼都是臨界段代碼,執(zhí)行時(shí)需要關(guān)閉系統(tǒng)中斷。實(shí)時(shí)內(nèi)核的任務(wù)調(diào)度器確定了待運(yùn)行的任務(wù)后,就需要進(jìn)行任務(wù)的切換操作,使新任務(wù)得到運(yùn)行。本發(fā)明實(shí)時(shí)內(nèi)核的任務(wù)切換采用軟中斷來(lái)實(shí)現(xiàn)當(dāng)軟中斷產(chǎn)生時(shí)其預(yù)先設(shè)定的中斷服務(wù)例程就會(huì)被執(zhí)行,因此將實(shí)時(shí)內(nèi)核的任務(wù)切換函數(shù)設(shè)為軟中斷的ISR,這樣當(dāng)執(zhí)行軟中斷指令“—asm int xx”時(shí),任務(wù)切換函數(shù)就會(huì)作為中斷服務(wù)例程得到執(zhí)行,完成任務(wù)切換操作,轉(zhuǎn)入待運(yùn)行的實(shí)時(shí)任務(wù)。
下面以全軟件數(shù)控系統(tǒng)為例對(duì)本發(fā)明的實(shí)施作更為詳細(xì)的說(shuō)明。本實(shí)施例在以本發(fā)明技術(shù)方案為前提下實(shí)施,給出了詳細(xì)的實(shí)施方法和具體的操作過(guò)程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。本實(shí)施例為基于Windows驅(qū)動(dòng)程序?qū)崟r(shí)系統(tǒng)的全軟件數(shù)控系統(tǒng),其結(jié)構(gòu)如圖4所示,從圖中可以看出整個(gè)數(shù)控系統(tǒng)分為應(yīng)用層,內(nèi)核層和多功能接口卡三個(gè)模塊。應(yīng)用層以實(shí)時(shí)系統(tǒng)驅(qū)動(dòng)程序的動(dòng)態(tài)鏈接庫(kù)、實(shí)時(shí)系統(tǒng)模擬程序的動(dòng)態(tài)鏈接庫(kù)、微軟基本類庫(kù)和C++運(yùn)行時(shí)庫(kù)為基礎(chǔ)完成全軟件數(shù)控系統(tǒng)的非實(shí)時(shí)任務(wù)和弱實(shí)時(shí)任務(wù)。其中,非實(shí)時(shí)任務(wù)包括數(shù)控系統(tǒng)的人機(jī)交互模塊與系統(tǒng)管理模塊,主要實(shí)現(xiàn)用戶與數(shù)控系統(tǒng)的直接交互與管理功能,包括系統(tǒng)界面、文件管理、參數(shù)管理、加工仿真和狀態(tài)顯示等任務(wù)。 弱實(shí)時(shí)任務(wù)包括NC代碼翻譯和刀具補(bǔ)償任務(wù)。它們本身是速度控制、插補(bǔ)和位置控制等內(nèi)核層功能模塊所需數(shù)據(jù)的生產(chǎn)者,因此對(duì)實(shí)時(shí)性有一定需求。但是,由于在加工過(guò)程中這兩個(gè)任務(wù)處理的數(shù)據(jù)不需要進(jìn)行實(shí)時(shí)的改變,而且可以通過(guò)加大數(shù)據(jù)緩沖區(qū)的手段降低它們對(duì)實(shí)時(shí)性的要求,因此將它們放在應(yīng)用層中,運(yùn)行在具有較高優(yōu)先級(jí)的線程中,以減少任務(wù)響應(yīng)時(shí)間。內(nèi)核層以Windows內(nèi)核與實(shí)時(shí)系統(tǒng)的實(shí)時(shí)內(nèi)核為基礎(chǔ)處理全軟件數(shù)控系統(tǒng)的系統(tǒng)服務(wù)、硬件中斷和各種實(shí)時(shí)任務(wù)。其中,實(shí)時(shí)任務(wù)包括速度控制、軌跡插補(bǔ)、位置控制以及軟PLC等任務(wù)。它們?cè)诩庸み^(guò)程中需要隨時(shí)對(duì)外界情況作出響應(yīng),實(shí)時(shí)性要求高,運(yùn)算相對(duì)較少,需要直接與硬件交互,因此運(yùn)行在內(nèi)核層的實(shí)時(shí)內(nèi)核中,由實(shí)時(shí)內(nèi)核進(jìn)行管理與調(diào)度。此外,內(nèi)核層還包括與應(yīng)用層進(jìn)行數(shù)據(jù)交互的共享內(nèi)存區(qū)。多功能接口卡采用FPGA實(shí)現(xiàn)PCI等協(xié)議與PC機(jī)進(jìn)行通信。對(duì)于數(shù)控系統(tǒng),多功能接口卡采集碼盤信號(hào)與各種開(kāi)關(guān)量等機(jī)床信息并反饋給數(shù)控系統(tǒng),另外它還給基于 Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng)提供高精度的外部定時(shí)器。對(duì)于機(jī)床,多功能接口卡將數(shù)控系統(tǒng)發(fā)出的位置控制量經(jīng)過(guò)數(shù)模轉(zhuǎn)換驅(qū)動(dòng)伺服系統(tǒng)工作,控制機(jī)床的主軸、進(jìn)給軸與各種開(kāi)關(guān)量。
整個(gè)全軟件數(shù)控系統(tǒng)中各功能模塊具體說(shuō)明如下
人機(jī)交互與管理模塊,處理數(shù)控系統(tǒng)與操作人員之間的信息交互工作,包括各種加工、 系統(tǒng)信息的顯示、各種加工參數(shù)的配置與管理、運(yùn)動(dòng)方式控制、刀具管理和文件管理等。程序解釋模塊將NC代碼轉(zhuǎn)換成數(shù)控系統(tǒng)加工所需要的模態(tài)信息和軌跡幾何信息,并按一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行保存。刀具補(bǔ)償模塊從程序解釋模塊獲取加工數(shù)據(jù),并使用C刀補(bǔ)對(duì)軌跡進(jìn)行半徑補(bǔ)償與長(zhǎng)度補(bǔ)償,計(jì)算好的數(shù)據(jù)保存至共享內(nèi)存區(qū)。共享內(nèi)存用于數(shù)控系統(tǒng)應(yīng)用層與內(nèi)核層的數(shù)據(jù)交互,為非分頁(yè)內(nèi)存,由內(nèi)核層驅(qū)動(dòng)程序進(jìn)行內(nèi)存分配,然后映射到應(yīng)用層,從而實(shí)現(xiàn)應(yīng)用程序與驅(qū)動(dòng)程序共享同一塊物理內(nèi)存。速度控制模塊從共享內(nèi)存區(qū)讀取加工信息,根據(jù)加工需求采用基于目標(biāo)速度的前瞻速度控制算法和梯形或S形加減速算法進(jìn)行加工速度的計(jì)算。軌跡插補(bǔ)模塊從速度控制模塊獲取加工信息,采用數(shù)據(jù)采樣法進(jìn)行空間直線與空間圓弧等軌跡的插補(bǔ)計(jì)算。位置控制模塊根據(jù)插補(bǔ)任務(wù)輸出的指令進(jìn)給量和從多功能接口卡上獲得各坐標(biāo)軸的位置反饋量,采用PID等控制算法進(jìn)行位置控制,并將結(jié)果輸出給多功能接口卡以控制機(jī)床的運(yùn)動(dòng)。軟PLC模塊從多功能接口卡采集各種開(kāi)關(guān)量,根據(jù)PLC應(yīng)用程序進(jìn)行邏輯運(yùn)算生成控制命令,并將結(jié)果輸出給多功能接口卡完成系統(tǒng)的開(kāi)關(guān)量邏輯控制與過(guò)程控制。根據(jù)上述方案得到的全軟件數(shù)控系統(tǒng)其具體的運(yùn)行過(guò)程如下
PC機(jī)啟動(dòng)并裝載Windows系統(tǒng)和基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),啟動(dòng)本數(shù)控系統(tǒng),進(jìn)行系統(tǒng)初始化,包括初始化系統(tǒng)變量、創(chuàng)建通信事件和通信線程、創(chuàng)建各應(yīng)用層模塊線程、分配并映射共享內(nèi)存、完成實(shí)時(shí)內(nèi)核的初始化和實(shí)時(shí)任務(wù)的創(chuàng)建等工作。然后進(jìn)行機(jī)床參數(shù)的設(shè)置,主要包括機(jī)床的最大速度、最大加速度和插補(bǔ)周期等參數(shù)。數(shù)控系統(tǒng)控制機(jī)床進(jìn)行回零和對(duì)刀操作?;亓闶构ぷ髋_(tái)移動(dòng)到機(jī)床零點(diǎn),建立機(jī)床坐標(biāo)系;對(duì)刀則是為了建立工件坐標(biāo)系,使得編程原點(diǎn)和機(jī)床原點(diǎn)建立對(duì)應(yīng)關(guān)系。自動(dòng)加工完成上面的準(zhǔn)備工作后,就可以由用戶指定加工程序并啟動(dòng)工件的加工,其大致流程為
程序解釋與刀具補(bǔ)償任務(wù)進(jìn)行代碼的檢查、翻譯與刀具補(bǔ)償計(jì)算工作,并保存數(shù)據(jù)至共享內(nèi)存區(qū)。管理任務(wù)啟動(dòng)實(shí)時(shí)內(nèi)核,實(shí)時(shí)內(nèi)核按照實(shí)時(shí)任務(wù)的周期進(jìn)行調(diào)度,速度控制任務(wù)從共享內(nèi)存區(qū)獲取加工數(shù)據(jù)進(jìn)行瞬時(shí)速度計(jì)算;插補(bǔ)任務(wù)根據(jù)速度和插補(bǔ)周期計(jì)算出位移并分解到每個(gè)軸上;位置控制任務(wù)從接口卡采樣機(jī)床的加工位置再根據(jù)插補(bǔ)的輸出進(jìn)行位置控制計(jì)算,最后將結(jié)果發(fā)給接口卡控制機(jī)床加工;軟PLC任務(wù)從接口卡采集各種開(kāi)關(guān)量, 根據(jù)PLC應(yīng)用程序進(jìn)行邏輯運(yùn)算生成控制命令,完成數(shù)控系統(tǒng)開(kāi)關(guān)量的邏輯控制與過(guò)程控制。實(shí)時(shí)任務(wù)執(zhí)行完成,實(shí)時(shí)內(nèi)核將返回到Windows,由Windows線程調(diào)度器按照加工的實(shí)際情況進(jìn)行程序解釋、刀具補(bǔ)償?shù)葢?yīng)用層任務(wù)的調(diào)度。加工過(guò)程與任務(wù)時(shí)序如圖5所示,其中實(shí)時(shí)內(nèi)核時(shí)鐘周期為1ms,位控周期為1ms, 速度控制與插補(bǔ)周期為2ms,PLC周期為4ms。全軟件數(shù)控系統(tǒng)的應(yīng)用層任務(wù)之間采用Windows的消息機(jī)制進(jìn)行通信,并采用 FIFO隊(duì)列進(jìn)行數(shù)據(jù)的傳送。為了使隊(duì)列中數(shù)據(jù)類型保持一致,使用索引加軌跡信息的模式, 索引結(jié)構(gòu)體保存數(shù)控系統(tǒng)的M、S、T等通用數(shù)據(jù)以及包含具體加工數(shù)據(jù)的軌跡信息結(jié)構(gòu)體的地址。程序解釋與刀具補(bǔ)償任務(wù)分別維持一個(gè)隊(duì)列,并根據(jù)隊(duì)列的狀態(tài)采用“生產(chǎn)者一消費(fèi)者”的方式控制任務(wù)的同步執(zhí)行,即當(dāng)數(shù)據(jù)生成速度超過(guò)了數(shù)據(jù)的消費(fèi)速度,則生產(chǎn)者線程進(jìn)入等待狀態(tài);同樣的,當(dāng)數(shù)據(jù)消費(fèi)速度超過(guò)了數(shù)據(jù)的生產(chǎn)速度,則消費(fèi)者線程進(jìn)入等待狀態(tài)。對(duì)于應(yīng)用層與內(nèi)核層任務(wù)間的數(shù)據(jù)交互,為了減少內(nèi)存復(fù)制帶來(lái)的消耗,提高系統(tǒng)效率,采用在驅(qū)動(dòng)層和應(yīng)用層之間共享內(nèi)存的方法。在Windows下共享內(nèi)存的實(shí)現(xiàn)目前主要有兩種手段由應(yīng)用程序分配共享內(nèi)存然后映射到內(nèi)核層和由內(nèi)核程序分配共享內(nèi)存然后映射到應(yīng)用層。應(yīng)用程序?qū)⒐蚕韮?nèi)存映射到內(nèi)核層存在許多固有限制,而且使用不當(dāng)容易造成系統(tǒng)崩潰。因此,本實(shí)施例采用由驅(qū)動(dòng)程序分配共享內(nèi)存然后映射到應(yīng)用層的方法。首先在數(shù)控系統(tǒng)初始化時(shí)使用MmAllocatePagesForMdl函數(shù)分配共享內(nèi)存,然后再調(diào)用MmMapLockedPagesSpecifyCache函數(shù)將共享內(nèi)存區(qū)映射到用戶層,應(yīng)用程序通過(guò)映射內(nèi)存的基地址就可以對(duì)共享內(nèi)存進(jìn)行訪問(wèn)。另外,本實(shí)施例采用命名事件對(duì)象的方法進(jìn)行應(yīng)用層與內(nèi)核層任務(wù)的同步由應(yīng)用程序以一個(gè)約定的名稱創(chuàng)建一個(gè)事件對(duì)象,同時(shí)創(chuàng)建一個(gè)監(jiān)控線程進(jìn)行事件狀態(tài)監(jiān)控;在內(nèi)核程序中通過(guò)事件名稱來(lái)打開(kāi)此事件對(duì)象,從而可以通過(guò)這個(gè)事件對(duì)象控制任務(wù)的運(yùn)行。數(shù)據(jù)傳輸時(shí),為了提高系統(tǒng)的實(shí)時(shí)性,將共享內(nèi)存區(qū)劃分為兩塊內(nèi)核程序在一塊內(nèi)存上進(jìn)行數(shù)據(jù)讀取時(shí),應(yīng)用程序填充另一塊內(nèi)存,內(nèi)核程序讀完一塊內(nèi)存上的數(shù)據(jù)后進(jìn)行換區(qū)讀取,同時(shí)通過(guò)命名事件通知應(yīng)用程序填充另一塊內(nèi)存,這樣實(shí)現(xiàn)高效的數(shù)據(jù)傳輸工作。其具體過(guò)程如圖6所示。本實(shí)施例使用Visual C++6. 0和Windows驅(qū)動(dòng)程序開(kāi)發(fā)包完成了基于Windows驅(qū)動(dòng)程序?qū)崟r(shí)系統(tǒng)的全軟件數(shù)控系統(tǒng)的開(kāi)發(fā)工作,并對(duì)其進(jìn)行加工測(cè)試。測(cè)試平臺(tái)為PC機(jī)一臺(tái),采用Windows Xp sp3操作系統(tǒng),Pentium 2. OGHz的CPU,內(nèi)存為512MB ;采用PCI總線的多功能接口卡一塊;數(shù)控雕銑機(jī)一臺(tái)。實(shí)驗(yàn)選用的測(cè)試用例如圖7所示。對(duì)測(cè)試用例進(jìn)行加工,得到圖8所示的加工工件實(shí)物圖,并采集三個(gè)軸的碼盤反饋值,再根據(jù)脈沖當(dāng)量與采集周期可以計(jì)算出加工的速度一時(shí)間曲線如圖9所示。從圖8可知,本實(shí)施例的基于Windows驅(qū)動(dòng)程序?qū)崟r(shí)系統(tǒng)的全軟件數(shù)控系統(tǒng)可以完整地完成工件的加工工作,而且加工輪廓光滑,沒(méi)有毛刺,具有較高的質(zhì)量。從圖9可以看出,在線段的拐點(diǎn)處數(shù)控系統(tǒng)進(jìn)行了合理的減速處理,在勻速進(jìn)給時(shí)速度也較為平穩(wěn),表明實(shí)時(shí)內(nèi)核很好的完成了數(shù)控系統(tǒng)的實(shí)時(shí)控制任務(wù)。
為了進(jìn)一步驗(yàn)證加工質(zhì)量,對(duì)采集的脈沖進(jìn)行輪廓度誤差分析,發(fā)現(xiàn)加工的采樣輪廓誤差不超過(guò)1.5而且大部分分布在_廣1區(qū)間。考慮到多功能接口卡的模擬量的輸出精度和加工中的一些隨機(jī)因素,可知本實(shí)施例的數(shù)控系統(tǒng)具有較高的加工精度。測(cè)試結(jié)果表明,利用本發(fā)明的基于Windows驅(qū)動(dòng)程序?qū)崟r(shí)系統(tǒng)開(kāi)發(fā)的全軟件數(shù)控系統(tǒng)可以很好的完成數(shù)控機(jī)床的加工控制,并且具有較高的加工精度,達(dá)到系統(tǒng)設(shè)計(jì)目標(biāo), 可以滿足數(shù)控加工的控制需求。以上顯示和描述了本發(fā)明的基本原理、主要特征和優(yōu)點(diǎn)。本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例與說(shuō)明書中描述的只是本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化與改進(jìn),這些變化與改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。 本發(fā)明要求保護(hù)的范圍由所附的權(quán)利要求書及其等效物界定。
權(quán)利要求
1.一種基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),由驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù),應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù),實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)和外部接口卡四個(gè)部分組成,其特征在于 驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù)為實(shí)時(shí)系統(tǒng)提供系統(tǒng)服務(wù),并且將接口函數(shù)封裝在DLL中,此外, 驅(qū)動(dòng)程序還包含管理和運(yùn)行實(shí)時(shí)任務(wù)的實(shí)時(shí)內(nèi)核;應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù)為實(shí)時(shí)控制系統(tǒng)提供應(yīng)用層調(diào)試環(huán)境采用Windows線程模擬實(shí)時(shí)任務(wù),采用Windows定時(shí)器模擬實(shí)時(shí)內(nèi)核的時(shí)鐘中斷,采用Windows的通信與同步機(jī)制模擬實(shí)時(shí)任務(wù)的通信與同步;實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)將實(shí)時(shí)任務(wù)模塊從實(shí)時(shí)內(nèi)核中分離出來(lái),對(duì)其進(jìn)行獨(dú)立開(kāi)發(fā)、調(diào)試;夕卜部接口卡為實(shí)時(shí)內(nèi)核提供高精度高分辨率的定時(shí)器,同時(shí)為實(shí)時(shí)控制系統(tǒng)與外部被控對(duì)象提供數(shù)據(jù)交互與信號(hào)轉(zhuǎn)換。
2.根據(jù)權(quán)利要求1所述的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),其特征在于所述的實(shí)時(shí)內(nèi)核嵌入到Windows驅(qū)動(dòng)程序中,擁有完善的任務(wù)管理功能、調(diào)度機(jī)制、同步機(jī)制以及時(shí)間管理功能,實(shí)時(shí)內(nèi)核通過(guò)直接操作CPU寄存器完成實(shí)時(shí)任務(wù)切換,以及對(duì)Windows系統(tǒng)的屏蔽和快速的中斷響應(yīng)實(shí)現(xiàn)其強(qiáng)實(shí)時(shí)性。
3.根據(jù)權(quán)利要求1所述的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),其特征在于所述的應(yīng)用層模擬程序?yàn)榭刂葡到y(tǒng)提供應(yīng)用層調(diào)試環(huán)境,采用Windows線程模擬實(shí)時(shí)任務(wù),采用 Windows定時(shí)器模擬實(shí)時(shí)內(nèi)核的時(shí)鐘中斷,采用Windows的通信與同步機(jī)制模擬實(shí)時(shí)任務(wù)的通信與同步;此外,模擬程序也為實(shí)時(shí)控制系統(tǒng)提供各種系統(tǒng)服務(wù),并且將接口函數(shù)封裝在DLL中供應(yīng)用程序調(diào)用。
4.根據(jù)權(quán)利要求1所述的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),其特征在于所述實(shí)時(shí)任務(wù)將實(shí)時(shí)任務(wù)模塊從實(shí)時(shí)內(nèi)核中分離出來(lái),對(duì)其進(jìn)行獨(dú)立開(kāi)發(fā)、調(diào)試,并且,將實(shí)時(shí)任務(wù)模塊分別按照實(shí)時(shí)內(nèi)核與模擬程序兩種不同的運(yùn)行環(huán)境進(jìn)行編譯,生成對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)供實(shí)時(shí)內(nèi)核與模擬程序進(jìn)行調(diào)用,進(jìn)行實(shí)時(shí)控制系統(tǒng)的運(yùn)行與調(diào)試。
5.根據(jù)權(quán)利要求1所述的基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),其特征在于所述外部接口卡為實(shí)時(shí)內(nèi)核提供高精度高分辨率的定時(shí)器;高精度高分辨率定時(shí)器是實(shí)時(shí)系統(tǒng)實(shí)時(shí)性和穩(wěn)定性的基礎(chǔ);而且,借助于驅(qū)動(dòng)程序?qū)τ布僮鞯谋憷?,通過(guò)外部接口卡引入外部時(shí)鐘,不僅軟硬件開(kāi)銷很小,而且易于實(shí)現(xiàn)高精度高分辨率的定時(shí)、便于修改定時(shí)器的頻率。
全文摘要
本發(fā)明公開(kāi)了一種基于Windows驅(qū)動(dòng)程序的實(shí)時(shí)系統(tǒng),它涉及一種Windows系統(tǒng)實(shí)時(shí)擴(kuò)展技術(shù),以解決現(xiàn)有的采用驅(qū)動(dòng)程序進(jìn)行Windows實(shí)時(shí)擴(kuò)展存在的實(shí)時(shí)性與穩(wěn)定性差、控制系統(tǒng)開(kāi)發(fā)與調(diào)試不方便以及采用RTX等實(shí)時(shí)軟件進(jìn)行Windows實(shí)時(shí)擴(kuò)展成本高等問(wèn)題。本發(fā)明的驅(qū)動(dòng)程序及其動(dòng)態(tài)鏈接庫(kù)為實(shí)時(shí)系統(tǒng)提供各種系統(tǒng)服務(wù),并且將接口函數(shù)封裝在DLL中,此外,驅(qū)動(dòng)程序還包含管理和運(yùn)行實(shí)時(shí)任務(wù)的實(shí)時(shí)內(nèi)核;應(yīng)用層模擬程序及其動(dòng)態(tài)鏈接庫(kù)為實(shí)時(shí)控制系統(tǒng)提供應(yīng)用層調(diào)試環(huán)境,采用Windows線程模擬實(shí)時(shí)任務(wù),采用Windows定時(shí)器模擬實(shí)時(shí)內(nèi)核的時(shí)鐘中斷,采用Windows的通信與同步機(jī)制模擬實(shí)時(shí)任務(wù)的通信與同步;實(shí)時(shí)任務(wù)及其動(dòng)態(tài)鏈接庫(kù)將實(shí)時(shí)任務(wù)模塊從實(shí)時(shí)內(nèi)核中分離出來(lái),對(duì)其進(jìn)行獨(dú)立開(kāi)發(fā)、調(diào)試。外部接口卡為實(shí)時(shí)內(nèi)核提供高精度高分辨率的定時(shí)器,同時(shí)可以為實(shí)時(shí)控制系統(tǒng)與外部被控對(duì)象提供數(shù)據(jù)交互與信號(hào)轉(zhuǎn)換等功能。
文檔編號(hào)G06F9/48GK102346687SQ201110281539
公開(kāi)日2012年2月8日 申請(qǐng)日期2011年9月21日 優(yōu)先權(quán)日2011年9月21日
發(fā)明者游有鵬, 魏明江 申請(qǐng)人:南京航空航天大學(xué)