国产成人精品a视频一区www_国产区视频在线观看_99色视频_欲色av_亚洲一区电影_亚洲综合视频一区

全軟件數控系統實時控制研究

來源:互聯網

點擊:1176

A+ A-

所屬頻道:新聞中心

關鍵詞:數控系統 全軟件

    1 問題的提出

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

      與傳統的基于Pc的數控系統的結構相比,全軟件數控系統不僅要解決插補運算和位置控制的軟件化問題,還應以開放的NC內核作為其主要特征之一。同時系統所選擇的運行環境必須能及時響應數控系統的實時性任務,否則系統響應的實時性不夠會導致在自動加工過程中出現斷續等不穩定現象。然而作為目前主流操作系統的Windows產品并不支持實時陛要求很高的實時任務的調度管理,從而,如何對Windows操作系統進行強實時功能的擴展以及合理應用Windows多線程技術來解決系統的實時多任務成為實現全軟件數控系統的關鍵問題之一。

    2 系統實時控制方案的分析比較

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

      2.1 利用WINDOWS系統定時器SetTimer()定時產生中斷

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

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

      2.2 剃用程序軟件定對產生中斷

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

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

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

      2.4 使用外圍設備的硬件中斷實現實時控制

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

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

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

    圖1 VxD中斷處聯流程

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

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

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

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

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

    3 利用Windows多線程技術實現實時多任務

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

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

    在輔助線程響應的時候,數控系統最好是要求CPU能快速響應用戶發出的消息,所以優先級別應設得較高。可以通過函數Set'ThreadPriority ( HA}DL.E <>hThread , iut nPriority)來設置線程優先級。在這里把nPriority設置成THREAD_ PRIORITY_ HIGHEST,就可以滿足系統的實時性要求。

    4 結語

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

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 国产乱老熟视频网88av | 成人激情视频免费观看 | 91久久国产综合久久 | 久久久天堂 | 99久久婷婷国产综合精品电影 | 国产真实乱全部视频 | 国产综合99 | 国产日韩免费 | 久久久蜜桃一区二区人 | 中文字幕亚洲精品 | 亚洲毛片在线观看 | 久久艹视频| 999热在线| 夜夜夜久久久 | 欧美激情在线播放 | 日本一区视频在线观看 | 欧美一区在线看 | 综合二区 | 亚洲国产精品久久久 | 欧洲成人在线 | 精品久久久久久久久久久久久久 | 欧美一区永久视频免费观看 | 成人黄色一区 | 天天夜夜操操 | 久久网日本| 欧美日韩在线视频一区二区 | 亚洲一区二区在线免费观看 | 国产精品8888 | 国产成人精品在线 | www.久久久久| 欧美大片在线免费观看 | 羞羞在线视频 | 欧日韩不卡在线视频 | 亚洲高清av | 成人久久久精品乱码一区二区三区 | 日日av拍夜夜添久久免费 | 日韩中文字幕国产 | 久久之久久 | 欧美日韩亚洲一区 | 四虎影院免费看 | 国产激情的老师在线播放 |