亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于WinCE的發(fā)動機試驗實時控制軟件設(shè)計

        2011-10-15 09:59:54許廣柱吳錦鳳
        火箭推進 2011年5期
        關(guān)鍵詞:進程多媒體系統(tǒng)

        許廣柱,吳錦鳳

        (西安航天動力試驗技術(shù)研究所,陜西西安710100)

        0 引言

        工業(yè)控制在很多方面都有實時性的要求,如今,絕大部分工業(yè)控制軟件都是基于Windows操作系統(tǒng)設(shè)計編制的,如何在多任務(wù)的Windows系統(tǒng)上實現(xiàn)實時控制是很多工業(yè)程序員頭疼的問題。多年來,有的控制系統(tǒng)以編程極不便利的DOS操作系統(tǒng)為平臺開發(fā)設(shè)計控制方案,有的購買價格昂貴的實時操作系統(tǒng)設(shè)計開發(fā),不但需要人員再培訓(xùn),且設(shè)計開發(fā)周期長。新建的XXX試車臺控制系統(tǒng),使用了成本相對低廉、實時性較好的嵌入式WinCE5操作系統(tǒng)進行設(shè)計。由于WinCE系統(tǒng)仍然是以Windows為核心,即多任務(wù)操作系統(tǒng),實時性方面同樣存在問題。因此,本文就此操作系統(tǒng)下的實時控制提供一套系統(tǒng)解決方案并論述軟件框架的擴展和應(yīng)用。

        1 系統(tǒng)分析概述

        1.1 WinCE操作系統(tǒng)的時間分配

        WinCE操作系統(tǒng)是多任務(wù)系統(tǒng),就是在“同一時間段內(nèi)可以同時執(zhí)行”多個應(yīng)用軟件,完成多個任務(wù)。其實,所謂“同一時間段內(nèi)同時執(zhí)行”是相對于使用者感覺而言的。事實上,在同一個時刻WinCE只能夠完成一個指令,使用者感覺是“同時”,是因為WinCE給每個線程分配毫秒級的時間片,并按每線程優(yōu)先級來依次執(zhí)行操作,由于時間片很短,人眼睛是不能分辨執(zhí)行順序的,所以造成了“同時執(zhí)行”的錯覺,正因為這種時間片分配來執(zhí)行不同任務(wù)的特性,導(dǎo)致了WinCE操作系統(tǒng)不能完成完全性質(zhì)的實時性控制。

        1.2 WinCE系統(tǒng)的進程與線程

        進程:一個進程通常定義為程序的一個實例。在32位Windows中,進程占據(jù)4 GB的虛擬地址空間。進程是沒有活力的,就是說,一個32位Windows進程并不執(zhí)行什么指令,它只占據(jù)著4 GB的地址空間,此空間中有應(yīng)用程序EXE等PE文件的代碼和數(shù)據(jù)。

        線程:如上所述,進程只是一個靜態(tài)的概念;為了讓進程完成一些工作,進程必須至少占有一個線程,所以線程是描述進程內(nèi)的執(zhí)行。正是線程負責(zé)執(zhí)行包含在進程的地址空間中的代碼,如果沒有線程執(zhí)行進程地址空間中的代碼,進程也就沒有繼續(xù)存在的理由,系統(tǒng)將自動清除進程及其地址空間。為了運行所有這些線程,操作系統(tǒng)為每個獨立線程安排一些CPU時間,以輪轉(zhuǎn)方式向線程提供時間片,所以Windows系統(tǒng)時間片的分配是以線程為基本單位的。創(chuàng)建一個32位Windows進程時,它的第一個線程稱為主線程,由系統(tǒng)自動生成,然后可由這個主線程生成額外的線程,這些線程又可生成更多的線程。

        1.3 WinCE系統(tǒng)的線程優(yōu)先級

        如前所述,Windows操作系統(tǒng)時間片分配是針對線程來說的,而線程執(zhí)行的順序是按照其優(yōu)先級來編排的。對于Windows CE等嵌入式操作系統(tǒng),優(yōu)先級是以線程為單位,整個系統(tǒng)運行中的應(yīng)用級線程缺省都是同等優(yōu)先級。改變線程的優(yōu)先級,或者說進行線程調(diào)度就可以改變WinCE系統(tǒng)時間片的分配方向以及線程自身執(zhí)行的順序。

        改變優(yōu)先級可以通過使用SetThreadPriority()函數(shù)來實現(xiàn)。Windows CE系統(tǒng)是搶占式多任務(wù)系統(tǒng),進程之間無優(yōu)先級之分,只將線程分為256個優(yōu)先級。0優(yōu)先級最高,255最低,0到247優(yōu)先級對應(yīng)于核心態(tài)線程。248到255優(yōu)先級對應(yīng)于用戶態(tài)線程,一般分配給普通應(yīng)用程序線程使用。251優(yōu)先級 (THREAD_PRIORITY_NORMAL)是正常優(yōu)先級。255優(yōu)先級(THREAD_PRIORITY_IDLE)為空閑優(yōu)先級。249優(yōu)先級 (THREAD_PRIORITY_HIGHEST)是高優(yōu)先級。

        綜上所述,如果可以在線程上爭取到一定程度的優(yōu)先級,也就是爭取到了時間片分配和執(zhí)行權(quán)的優(yōu)先級,自然就可以達到相對實時性的控制效果。

        1.4 WinCE下的定時系統(tǒng)

        32位Windows CE系統(tǒng)下有以下3種定時系統(tǒng)。

        1)基于消息機制的定時器,通過SetTimer()函數(shù)設(shè)置,使用消息處理機制。由于其原理為消息,所以定時精度較低,一般為55 ms左右。

        2)多媒體定時器,通過timeSetEvent()函數(shù)設(shè)置,是內(nèi)核級定時器,定時精度很高,可以達到1 ms,使用回調(diào)函數(shù)形式執(zhí)行任務(wù)代碼。

        3)CPU計數(shù)器,通過 QueryPerformance-Counter()和QueryPerformanceFrequecy()來獲取計算機主頻計數(shù)器值(從開機開始到調(diào)用時的時間間隔計數(shù)值)和CPU頻率,可以做到微秒級的時間控制精度,但是沒有相應(yīng)的執(zhí)行任務(wù)機制,只能作為高精度時間參考。

        基于以上3個定時系統(tǒng),在獲取時間數(shù)值的同時又要完成控制任務(wù),1)和2)是基本選擇,至于時間精度方面就需要根據(jù)需求來選擇使用。

        1.5 多媒體定時器概述

        一般情況下,應(yīng)用系統(tǒng)無須參與系統(tǒng)線程調(diào)度工作,但對于比較復(fù)雜的高精度實時應(yīng)用來說,有時需要應(yīng)用自身參與本進程的內(nèi)部線程的協(xié)調(diào)與調(diào)度 (或準調(diào)度)工作,或直接使用高優(yōu)先級線程執(zhí)行控制任務(wù)以達到一定的實時性要求。

        做到這一點,就需要依靠前文中提到的多媒體定時器,相應(yīng)的接口函數(shù)以Windows API形式由動態(tài)鏈接庫coredll.dll提供,C++頭文件為mmsystem.h。操作由4個接口函數(shù)和1個回調(diào)函數(shù)完成。4個接口函數(shù)為:timeBeginPeriod(),timeEndPeriod(),timeSetEvent()及timeKillEvent()?;卣{(diào)函數(shù)是完成任務(wù)的主體,timeSetEvent第3個參數(shù)為此回調(diào)函數(shù)的地址。

        通過函數(shù)timeBeginPeriod()設(shè)置最小的定時精度,可達到1 ms的精度,定時器回調(diào)函數(shù)執(zhí)行時間間隔最小為1 ms。該定時器不依賴于消息機制進行觸發(fā),當用戶在程序中調(diào)用函數(shù)time-SetEvent()時,系統(tǒng)產(chǎn)生一個獨立的Win32內(nèi)核級線程,并將用戶提供的用戶級的時鐘定時處理程序(回調(diào)函數(shù))以回調(diào)的方式綁定在該線程中,而該線程又由硬件時鐘中斷 (很高的中斷優(yōu)先級)的ISR來觸發(fā),因此利用timeSetEvent()編寫的定時器程序,具有很強的中斷優(yōu)先權(quán),遠遠高于其它的用戶態(tài)線程,軟件進程、線程不能打斷其執(zhí)行。綜上所述,多媒體定時器表現(xiàn)出良好的實時性能。多媒體時鐘的定時線程完全可以勝任直接執(zhí)行主控制任務(wù)代碼或者通過執(zhí)行主控制邏輯操作內(nèi)部線程的協(xié)調(diào)與調(diào)度工作。

        1.6 基于WINCE系統(tǒng)的實時控制方法簡述

        綜上幾點,Windows CE雖在實時性方面較其他Windows系統(tǒng)優(yōu)秀,但仍屬于多任務(wù)操作系統(tǒng)。相比實時操作系統(tǒng),WinCE下直接通過軟件實現(xiàn)高精度時間控制是比較困難的。為了實現(xiàn)10ms級別的時間控制精度,可采用多媒體定時器結(jié)合外圍硬件定時板的方式實現(xiàn)。利用ISR級中斷的多媒體時鐘輪詢硬件定時器,并適時利用微秒級精度的CPU計數(shù)器進行時間補償,以硬件定時時基為基準,完全可以達到10 ms級別的實時控制精度需求。

        2 XXX試車臺增壓/閉環(huán)控制系統(tǒng)的實現(xiàn)及應(yīng)用擴展

        2.1 增壓/閉環(huán)控制系統(tǒng)的實現(xiàn)

        XXX試車臺增壓/閉環(huán)控制系統(tǒng)硬件采用研華定時器板3780和IO開關(guān)量板3753。開關(guān)量板3753用于輸入開關(guān)量的檢測及輸出開關(guān)量控制閥門動作;定時器板是實時性控制的硬件核心,其定時器的定時精度和穩(wěn)定性影響整個控制系統(tǒng)的時間控制精度。

        控制軟件核心采用前文中所述的多媒體定時器,但因為多媒體定時器定時間隔精度較硬件定時器低,因而采用在多媒體定時器回調(diào)函數(shù)中獲取3780硬件定時器數(shù)值,以獲得滿足系統(tǒng)時間精度要求的時間控制精度。

        多媒體定時器的回調(diào)函數(shù)相當于一個優(yōu)先級很高的定時線程,其自身的實時性保證了所有控制邏輯實現(xiàn)的實時性,配合高精度硬件定時器,可以做到高實時和高定時精度控制,對于試車控制系統(tǒng)來說完全滿足要求。控制軟件框架見圖1。

        定時線程中取得硬件定時器計數(shù)值,計算并比較時間,如果到達指定的控制時間,則根據(jù)控制邏輯執(zhí)行相應(yīng)的操作??刂茣r間精度取決于硬件定時器和多媒體定時器的定時間隔精度,以及這兩者的協(xié)調(diào)配合程度。增壓/閉環(huán)控制系統(tǒng)多媒體時鐘定時間隔設(shè)定為2 ms,實際測試整個控制系統(tǒng)千秒累計時間誤差小于20 ms,完全滿足設(shè)計要求。

        該軟件框架設(shè)計過程中需要注意的是,回調(diào)函數(shù)中的所有工作必須在多媒體定時器的定時間隔內(nèi)完成,否則會失去實時性并可能導(dǎo)致定時混亂。為保證多媒體定時器回調(diào)代碼的實時性,有關(guān)界面顯示工作的代碼不能在回調(diào)函數(shù)中直接執(zhí)行,需要設(shè)定一個專門用于顯示的線程來完成此任務(wù)。

        2.2 控制軟件設(shè)計框架的應(yīng)用擴展

        圖1所示的軟件框架不僅僅應(yīng)用在XXX試車臺增壓/閉環(huán)控制系統(tǒng)上,對其做相應(yīng)的擴展就可以應(yīng)用在眾多的實時控制系統(tǒng)中,參見圖2。

        其中實時性要求很高的操作在回調(diào)函數(shù)本體中執(zhí)行,其他輔助控制工作在工作線程中完成,并在多媒體定時器回調(diào)函數(shù)中通過分析任務(wù)需求,編制控制邏輯來完成對每個工作線程的調(diào)度,包括:線程優(yōu)先級控制、工作線程邏輯順序控制、工作線程之間的協(xié)調(diào)等任務(wù)。

        線程的調(diào)度在前文中已有闡述。各個線程中途“掛起”SuspendThread()或“終止”ExitThread()或TerminateThread()的操作,正常情況下都是由自身完成的,并通過設(shè)置有關(guān)的“標志變量”值來“通知”定時線程,這樣處理的特點是安全、簡單、高效,而且也容易擴展新的線程。各個線程中途“恢復(fù)”ResumeThread()或“啟動”操作都是由定時線程完成的。線程間的同步可以通過設(shè)定臨界區(qū)Critical Section、互斥對象Mutex、事件Event等來實現(xiàn)。

        工業(yè)控制有些環(huán)節(jié)也要求很高時間精度的定時控制,關(guān)于這點可以使用2種方案來輔助完成: (1)在回調(diào)函數(shù)中通過API,Query Performance Counter()和Query Performance Frequecy()來獲取計算機主頻計數(shù)器值和CPU頻率,或者獲取系統(tǒng)CPU時間戳,計算并比較時間,適時對多媒體定時做補償修正,此方法可以很大程度上提高時間控制精度; (2)制定外圍高精度定時器板卡軟件驅(qū)動,為控制軟件提供Windows系統(tǒng)硬件中斷級回調(diào)過程。軟件編制控制邏輯在此回調(diào)中執(zhí)行,并利用CPU時間戳進行進一步的時間控制。由于回調(diào)過程在硬件中斷下驅(qū)動,時間控制精度很高,理論可達到微秒級,而且控制時間間隔非常穩(wěn)定。需要注意,這種方式系統(tǒng)資源占用較大,在實際控制設(shè)計中必須考慮。

        3 結(jié)束語

        本文提供的設(shè)計框架,在多數(shù)工業(yè)控制應(yīng)用場合都可以合理、有效的實現(xiàn)實時控制,雖然具體到每個應(yīng)用環(huán)境還需要對架構(gòu)進行適當調(diào)整,對工作邏輯控制進行合理配置,但基本思路都是適用的。理解并合理運用此架構(gòu),會為設(shè)計者帶來很大的便利,其應(yīng)用前景廣大。該架構(gòu)為今后試驗控制系統(tǒng)的設(shè)計同樣具有參考價值。

        [1]BEVERIDGE Jim,WIEN Robert.Win32多線程程序設(shè)計[M].武漢:華中科技大學(xué)出版社,2002.

        [2]傅曦,齊宇.嵌入式系統(tǒng)Windows CE開發(fā)技巧與實例[M].北京:化學(xué)工業(yè)出版社,2004.

        [3]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

        [4]RICHTER Jetfrey.Windows核心編程[M].5 版.北京:清華大學(xué)出版社,2008.

        猜你喜歡
        進程多媒體系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        借助多媒體探尋有效設(shè)問的“四度”
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        債券市場對外開放的進程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        多媒體在《機械制圖》課中的應(yīng)用
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        多媒體達人煉成記
        河南電力(2016年5期)2016-02-06 02:11:40
        適切 適時 適度——說說語文課堂的多媒體使用
        語文知識(2015年9期)2015-02-28 22:01:42
        社會進程中的新聞學(xué)探尋
        国产精品国三级国产av| 亚洲AV毛片无码成人区httP | 亚洲精品成人网线在线播放va | 九九热在线视频观看这里只有精品| 久久久久综合一本久道| 亚洲精品国产av一区二区| 日韩精品一区二区在线视| 国产自拍视频在线观看网站| 色一情一区二区三区四区| 激情综合欧美| 国产精品情侣露脸av在线播放| 中文字幕亚洲精品人妻| 亚洲乱码av一区二区蜜桃av| 伊人久久这里只有精品| 人妻 色综合网站| 亚洲精品久久无码av片软件 | 日本乱子人伦在线视频| www.亚洲天堂.com| 男女深夜视频网站入口| 男女猛烈拍拍拍无挡视频| 国产一区二区三区av在线无码观看| 亚洲av中文无码乱人伦在线咪咕 | 男吃奶玩乳尖高潮视频| 一本一道av无码中文字幕 | 国产一区二区三区av在线无码观看 | 日本一区二区三区亚洲| 国产农村妇女精品一二区| 国产欧美精品一区二区三区–老狼| 丝袜美腿av免费在线观看| 国产精品黑丝美腿美臀| 日韩国产人妻一区二区三区| 中国凸偷窥xxxx自由视频| 亚洲电影久久久久久久9999| 亚洲国产精品国自产拍av在线| 蜜桃视频国产一区二区| 国产激情综合在线观看| 亚洲欧美精品91| 国产亚洲日韩AV在线播放不卡| 人妖一区二区三区在线| 亚洲av无码电影在线播放| 日韩精品一区二区三区在线观看|