1數控系統實時性的現有解決方案
針對上述問題,當前主要有以下2種解決方法。
a.采用Windows系統的多媒體庫MM SYT EM . LIB提供的多媒體定時函數。這種方法實際上也是通過掛接定時時鐘中斷回調函數來實現。
回調函數必須放在一個規定的段中,除簡單的API以外,多數的Windows API不能使用。在Win dows系統本身所帶的函數說明中,通過Time SetEvent設置的定時器定時時間可達1 ms的精度,但在M icrosoft公司出版的書中指出,該函數對于Intel芯片的精度為16 ms,對于M IPS芯片的精度為10 ms。總的說來,這種方法比Windows定時器精度要高許多,但仍然無法滿足數控系統的實時控制要求。
b.對硬件直接編程。在計算機系統進入Win dows前對8253重新編程,將18. 2次/ s修改為所希望的周期。修改INT 8中斷服務程序,每次定時時間到就調用另一個新中斷號,并累計計時,若為55 ms則轉入舊INT8中斷服務程序入口,進入Windows以后掛接新的時鐘中斷即可實現所希望的定時時鐘。使用這種方法可以滿足很高的精度要求,但要求對Windows內核很清楚,在Windows內核資料非常少的情況下使用這種方法有相當的難度,而且這種方法易給系統帶來隱患,導致Win dows系統本身的不穩定。
2新的數控系統實時性解決方案
為了在Windows平臺上能完成實時控制,從硬件和軟件2個方面來解決。
硬件方面,配比時鐘電路。在制作接口卡上,利用一塊型號為XC95108的CPLD芯片編程發送脈沖而得到時間信號,采用中斷的方式來進行實時系統中各種任務的處理。它能夠保證納秒級的定時精度,且可隨任務的不同而通過編程的方式將它的定時周期進行修改。
軟件方面,則通過編寫設備驅動程序來實現對中斷信號的響應。設備驅動程序的編寫采用Win dows DDK和Windows Platform SDK開發工具包。由于設備驅動程序運行于ring0層,它具有許多ring3層應用程序所不具有的能力,所以它能夠很好的解決實時控制的問題。
采用驅動程序開發包開發實時控制引擎子系統,開發出了實時硬件抽象層( HAL) ,這個抽象層實現了實時控制引擎子系統與Windows之間中斷的絕緣性。Windows不能屏蔽由實時控制引擎子系統管理的中斷。
3在Windows中對中斷的處理方案
在DOS環境開發程序時,用戶可以直接修改中斷向量,掛接自己的中斷服務程序ISR ( interrupt service routine) ,從而實現對硬件I/ O接口板產生的中斷請求進行響應。但是在Windows環境,操作系統將系統內核和應用程序進行隔離,不再允許用戶層程序修改設備的ISR.基于此,采用驅動程序獨辟蹊徑,提供一種聯系用戶程序和設備ISR的中斷處理機制,稱為事件同步機制。事件同步機制適用于事件中斷和時間中斷的處理。
事件同步機制其原理是,能夠讓設備ISR和上層用戶程序共享一事件,實現用戶程序和設備ISR同步,從而讓用戶程序感知硬件設備的中斷請求。
具體實現方法是這樣的,在用戶程序中創建一同步事件,利用驅動程序提供的API函數GT _Se tIntSyncEvent ( HEVEN T hIntEvent)向設備ISR設置同步事件。此后,用戶程序和設備ISR就是兩個共享同步事件的普通進程,一般情況用戶程序為了不阻塞自己,會啟動一個新的線程,在該新線程中調用WaitForSingleObject( )等待事件有效。一旦設備產生中斷,設備ISR激活中斷同步事件。此時用戶線程從WaitForSingleObject處被激活,開始執行線程的后續部分。
業務咨詢:932174181 媒體合作:2279387437 24小時服務熱線:15136468001 盤古機械網 - 全面、科學的機械行業免費發布信息網站 Copyright 2017 PGJXO.COM 豫ICP備12019803號