免费色播,亚洲国产欧美国产第一区二区三区,毛片看,日本精品在线观看视频,国产成人精品一区二区免费视频,日本黄色免费网站,一级毛片免费

全軟件數(shù)控系統(tǒng)實時控制研究

來源:互聯(lián)網(wǎng)

點擊:1135

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞:數(shù)控系統(tǒng) 全軟件

    1 問題的提出

      全軟件數(shù)控系統(tǒng)以通用Pc+標(biāo)準(zhǔn)規(guī)范的I/O信號轉(zhuǎn)接器的模式實現(xiàn)。整個系統(tǒng)是由PC擴(kuò)展而成,數(shù)控系統(tǒng)所有的實時任務(wù)和非實時任務(wù)都由PC完成,能實現(xiàn)NC內(nèi)核的功能開放并支持上層軟件的用戶定制,是一種真正意義上的開放式數(shù)控系統(tǒng)。其控制通道為:PC通過總線控制每一個I/O端口,I/O端口與各個控制目標(biāo)相連。近年來,發(fā)展通用的全軟件開放式數(shù)控系統(tǒng)已成為國際數(shù)控行業(yè)研究的熱點,代表著數(shù)控技術(shù)發(fā)展的最新潮流。

      與傳統(tǒng)的基于Pc的數(shù)控系統(tǒng)的結(jié)構(gòu)相比,全軟件數(shù)控系統(tǒng)不僅要解決插補(bǔ)運算和位置控制的軟件化問題,還應(yīng)以開放的NC內(nèi)核作為其主要特征之一。同時系統(tǒng)所選擇的運行環(huán)境必須能及時響應(yīng)數(shù)控系統(tǒng)的實時性任務(wù),否則系統(tǒng)響應(yīng)的實時性不夠會導(dǎo)致在自動加工過程中出現(xiàn)斷續(xù)等不穩(wěn)定現(xiàn)象。然而作為目前主流操作系統(tǒng)的Windows產(chǎn)品并不支持實時陛要求很高的實時任務(wù)的調(diào)度管理,從而,如何對Windows操作系統(tǒng)進(jìn)行強(qiáng)實時功能的擴(kuò)展以及合理應(yīng)用Windows多線程技術(shù)來解決系統(tǒng)的實時多任務(wù)成為實現(xiàn)全軟件數(shù)控系統(tǒng)的關(guān)鍵問題之一。

    2 系統(tǒng)實時控制方案的分析比較

      高速、高精度的數(shù)控加工首先要求的是極短的插補(bǔ)周期和高的計算精度,而且插補(bǔ)精度越高,所需要的插補(bǔ)周期就越短。Windows最初并不是作為實時操作系統(tǒng)而設(shè)計的,它是一種搶占式、多任務(wù)、基于消息傳遞機(jī)制的操作系統(tǒng)。但是僅憑消息調(diào)度機(jī)制顯然是不能滿足全軟件數(shù)控系統(tǒng)的實時控制要求的,目前在這方面的研究中討論較多的是采用有效的實時中斷方式來解決諸如插補(bǔ)和位控之類的高實時性問題。為具體量化數(shù)控系統(tǒng)的實時性要求,這里以脈沖增量式插補(bǔ)的數(shù)控系統(tǒng)為例來計算一個插補(bǔ)周期的時間。假定系統(tǒng)脈沖當(dāng)量為0.001 mm,系統(tǒng)COO的最大進(jìn)給量設(shè)置為10 000 mm/min??梢运愕茫涸贑OO恒速進(jìn)給時插補(bǔ)周期是6斗s,也就是說要求系統(tǒng)每隔6μs并在6μs內(nèi)要完成一次插補(bǔ)計算并輸出一組脈沖信號,這個脈沖周期是微秒級的,對操作系統(tǒng)的實時響應(yīng)要求比較高。下面我們來分析幾種中斷控制的方案。

      2.1 利用WINDOWS系統(tǒng)定時器SetTimer()定時產(chǎn)生中斷

      對于Windows系統(tǒng)定時器,其本身就是通過截取DOS的08H硬件中斷來實現(xiàn)的,該中斷約每秒鐘發(fā)生18+2次,器§時間閱隔為54.945 ms。在上鼷應(yīng)用程序中可以通過調(diào)焉SetTimer函數(shù)為程序分配一個定時器,在一個時間間隔之后,Windows將向應(yīng)用程序發(fā)送一個WM_TIMER消息,但它被認(rèn)為屬于不太熏要的消息而放在常規(guī)消息隊列中的最后,而且當(dāng)隊列中有多條WM_TIMER消息時,系統(tǒng)會把所有的WM_TIMER消怠合并成一條WM_TIMER消息。

      由此可見,簡單的依靠Windows系統(tǒng)定時器提供的時鐘消息,應(yīng)用程序不一定能夠按照SetTimer設(shè)定的時間間隔得到響應(yīng),更何況,即使能得到響應(yīng),這個毫秒級的響應(yīng)周期也是遠(yuǎn)遠(yuǎn)不能夠滿足實時控制要求的。

      2.2 剃用程序軟件定對產(chǎn)生中斷

      通過在上瀑應(yīng)用程濘中進(jìn)行軟件延時的方法可以獲得比較高精度的插補(bǔ)周期。但是由于Windows操作系統(tǒng)是多任務(wù)并行進(jìn)行的,在軟件延時的時候,它和中斷服務(wù)程序并不是異步進(jìn)行的,CPU也不是究全被獨占,這樣會導(dǎo)致插補(bǔ)周期的間隔時間不穩(wěn)定。經(jīng)過簡單的程序調(diào)試(比如用for語句獲德每隔一定時間延后啟動一個中斷輸盛脈沖的程序),我們發(fā)現(xiàn)輸出的脈沖波形較之于理想狀態(tài)有抖動現(xiàn)象,在正常加工中這是不允許的;而且這種情況下,由程序軟件延時所獲得的插補(bǔ)周期與計算機(jī)的硬件配置(如主頻等)有直接聯(lián)系,導(dǎo)致程序的移植性必將受到影響。我們也不提倡采用這種方案。

      2.3 利用CreateSystemTimer()定時產(chǎn)生中斷

      CreateSystemTimer()用到Windows的SYSTEM.DRV驅(qū)動程序中的系統(tǒng)計時器函數(shù),這幾個函數(shù)雖然沒有被寫入Windows.h中,但卻被SYSTEM.DRV輸出了。這些函數(shù)可以幫勘我們獲得計時器服務(wù),即系統(tǒng)計時器。這其中最重要一點是CreateSystemTimer()和KillS)rstemTimer()這兩個函數(shù)允許我們安裝異步計時器的回調(diào)函數(shù),有些類似于在DOS環(huán)境中截取INT08H中斷處理程序。這個回調(diào)是真正異步的,完全避開了Windows的消息工具。但這種方法獲得的定時精度仍然是只有毫秒級鶼,所以在需要高速贏精度加工數(shù)控系統(tǒng)中,還是不能夠勝任。

      2.4 使用外圍設(shè)備的硬件中斷實現(xiàn)實時控制

      由于Windows 9x及其以上的操作系統(tǒng)具有保護(hù)機(jī)制,工作在CPU的用戶態(tài)(3環(huán))程序是不能直接對系統(tǒng)硬件進(jìn)行操作的,所以中斷的處理只能在CPU的特權(quán)態(tài)(0環(huán))進(jìn)行。對予Windows操作系統(tǒng)下的外匿

      設(shè)備的硬件中斷,它的實現(xiàn)涉及到虛擬設(shè)備驅(qū)動程序VxD。Windows系統(tǒng)的控制實權(quán)掌握在虛擬級管理器VMM(Vinue Machine Manager)幫虛擬設(shè)備驅(qū)動程痔VxD手中,兩顯VMM黧VxD的操作模式幫真正酶程序不閹。在大多數(shù)時候,它們是潛伏的。一般應(yīng)用程序在系統(tǒng)中運行時,這些VxD程序不會被激活,只有當(dāng)某些需要它們處理的硬件中斷/錯誤/事件發(fā)生時,它們才被喚醒。Windows系統(tǒng)為可編程中斷控制器8259安裝了驅(qū)動程序VPICD(Viaue Programmable InterruptController),并通過相關(guān)服務(wù)達(dá)到允許其它VxD利用硬中斷的目的。VPICD負(fù)責(zé)映射中斷信號到虛擬機(jī),并模擬相應(yīng)的I/0來識別虛擬機(jī)發(fā)出的中斷請求。

      有了上述硬件中斷的可行性,我們接下來簡單分板一下VxD的中斷處理浚稷。Windows啟動時,它初始億中斷描述表IDT(Interrupt Descriptor Table),中斷是由虛擬擬機(jī)管理器VMM處理的。當(dāng)發(fā)生中斷時,VMM和一個叫做虛擬可編程中斷控制器VPICD的VxD協(xié)調(diào)工作。后者虛擬化了PC機(jī)中的雙8259A PIC。發(fā)生中斷時,VMM接管控制,然后VMM通知VPICD這個中斷事件,希望虛擬此中斷的VxD,當(dāng)VPICD接收到巢一中斷事件時,就會通知登記到此中斷的VxD。這個流程如圖1所示。

    圖1 VxD中斷處聯(lián)流程

      我們關(guān)注的是系統(tǒng)中斷的實時性,從而有必要了解這個中斷的響應(yīng)時間。顯然,執(zhí)行上面描述的這個過程是需要時間的,我們把硬件產(chǎn)生一個中斷信號請求服務(wù)開始,到。環(huán)的設(shè)備驅(qū)動程序響應(yīng)中斷,并執(zhí)行中斷服務(wù)程序ISR之間的這段時間稱之為中斷延時。中斷延時中最大的部分來自于中斷自身,當(dāng)82:59通知CPU發(fā)生了硬件中斷時,CPU自動屏蔽中斷,直到中斷服務(wù)程序重新打開中斷屏蔽。如果當(dāng)前的中斷還沒有處理完,新產(chǎn)生的中斷會被CPU忽略直到再次允許中斷,這樣就會導(dǎo)致不確定的中斷延時。如果硬件設(shè)備過于頻繁地產(chǎn)生中斷,也會導(dǎo)致中斷延時的增加。所以這個時間間隔對于硬件和軟件設(shè)計都是非常重要的。對于硬件,中斷延時決定了硬件產(chǎn)生中斷并可以得到正確響應(yīng)的最高頻率。如果硬件產(chǎn)生中斷的頻率高于此頻率,則系統(tǒng)肯定工作不正常,甚至于死機(jī)。所以我們在設(shè)計觸發(fā)中斷的硬件電路時必須兼顧到這個方面的問題。軟件方面,設(shè)備驅(qū)動程序應(yīng)該發(fā)掘操作系統(tǒng)和硬件的潛力,使延時盡可能地小。這就體現(xiàn)在所設(shè)計的驅(qū)動程序的效率問題上,因為它將直接影響到數(shù)控系統(tǒng)插補(bǔ)周期的時間。在中斷服務(wù)子程序中,我們提倡盡量用優(yōu)化的軟件結(jié)構(gòu),以匯編語言編寫來確保在規(guī)定的插補(bǔ)周期內(nèi)完成這類強(qiáng)實時性任務(wù)。

      為了測定中斷響應(yīng)時間,我們用匯編語言編寫了虛擬設(shè)備驅(qū)動程序來實現(xiàn)對外部中斷信號的響應(yīng),并設(shè)計了一塊基于1SA的插件板,用以產(chǎn)生脈沖中斷信號送CPIT。其上設(shè)有一個高精度定時器8253、一個脈沖頻率發(fā)生器和一個中斷發(fā)生器??紤]到硬件匹配的需要我們選用20 MH:的晶振,由它產(chǎn)生的晶振周期是50ns。比如一個主頻為500 MHz Pentium處理器的

      一個指令周期是2 ns,對于它,使用這個插件板可以大致測量到幾十、幾百個指令的時閥。設(shè)計該程序的思路是這樣的:先關(guān)閉8253 GATEl,把8253設(shè)置在方波發(fā)生器模式,寫入初始簸0FFFFH;打開8253 GATEl,使定時器開始工作;開中斷并觸發(fā)中斷。在中斷服務(wù)子程序里安排一個關(guān)閉8253 GATEl的操作,使定時器停止計數(shù);并讀出當(dāng)前8253計數(shù)器中的數(shù)值,把初始值減去這個數(shù)值的結(jié)果再乘以50便是當(dāng)前系統(tǒng)環(huán)境下程序中斷響應(yīng)的時間了。

      利用這個方法,我們分別在不同主頻和Windows98系統(tǒng)、Windows2000系統(tǒng)的空閑狀態(tài)下分20次為一組測量。

      這個實驗結(jié)果表明,這些響應(yīng)時間都是微秒級的,使用外圍設(shè)備的硬件中斷來實現(xiàn)實時控制能夠達(dá)到控制要求。同時我們還注意到同一主頻下,Win98比Win2000的響應(yīng)時間略短一些,我們初步分析認(rèn)為這是由于系統(tǒng)處理中斷過程的差異性造成的。

    3 利用Windows多線程技術(shù)實現(xiàn)實時多任務(wù)

      我們把插補(bǔ)計算和位置控制放在前臺的實時中斷服務(wù)子程序中去完成,通過變量和寄存器進(jìn)行前后臺的信息交互。那么剩下的}h作就是組織全軟件數(shù)控系統(tǒng)后臺的處理工作了,這時應(yīng)當(dāng)合理充分利用Win-down的多線程技術(shù)來展現(xiàn)全軟件數(shù)控系統(tǒng)控制的靈活性和強(qiáng)大功能。設(shè)計中,為便于人機(jī)交互的工作,以用戶界面線程作為主線程,利用多線程將“CPU資源分時共享”的特點,將有并行要求的模塊比如程序編輯模塊、參數(shù)設(shè)置模塊、圖形仿真模塊等置于獨立的線程中,實現(xiàn)系統(tǒng)的多任務(wù)并行工作??紤]到在信息處理過程的輕重緩急,需要設(shè)置線程的優(yōu)先級別,比如限位報警線程要高于其他線程,加工代碼解釋及預(yù)處理線程要高于圖形仿真線程等等?;谶M(jìn)程的不同基礎(chǔ)優(yōu)先級和可能的線程優(yōu)先級,一共有22個不同優(yōu)先級值,它們分布在1和31之間,數(shù)值越大,優(yōu)先級越高。

      多線程之間須要考慮同步,它有四種方法,分別是:互斥量、臨界段、信號量和事件。比如事件同步是通過把事件設(shè)置為有或者無信號狀態(tài)來通知其他線程關(guān)于某操作己完成或者仍未完成。線程的具體實現(xiàn)原理是首先在頭文件里聲明一個事件對象,然后在初始化對話框中使這個事件對象處于無信號狀態(tài)。下面以手動運行為例說明。當(dāng)在手動運行按鈕事件中無限循環(huán)輸出脈沖的時候,每次循環(huán)都判斷這個事件對象是否有信號,如果沒有,程序繼續(xù)運行,如有信號,則退出循環(huán)。而使這個事件對象處于有信號狀態(tài)的操作就在手動復(fù)位按鈕事件中寫出。由于篇幅所限,相關(guān)程序代碼從略。

    在輔助線程響應(yīng)的時候,數(shù)控系統(tǒng)最好是要求CPU能快速響應(yīng)用戶發(fā)出的消息,所以優(yōu)先級別應(yīng)設(shè)得較高??梢酝ㄟ^函數(shù)Set'ThreadPriority ( HA}DL.E <>hThread , iut nPriority)來設(shè)置線程優(yōu)先級。在這里把nPriority設(shè)置成THREAD_ PRIORITY_ HIGHEST,就可以滿足系統(tǒng)的實時性要求。

    4 結(jié)語

      在機(jī)械制造加工中,數(shù)控軟件的設(shè)計很重要的一個方面是實現(xiàn)連續(xù)加工控制的實時性。我們以VisualC++6. 0作為開發(fā)工具,在Windows2000平臺下,充分利用PC的硬件功能,通過編寫VPICD虛擬設(shè)備驅(qū)動程序來提供實時中斷并結(jié)合Windows多線程機(jī)制較好地解決了全軟件開放式數(shù)控系統(tǒng)實時控制問題,并對我們己開發(fā)的一套數(shù)控系統(tǒng)作了這方面進(jìn)一步的改進(jìn),取得了比較明顯的成效。

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請聯(lián)系我們刪除。