新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 基于 C++ builder 的高采樣率動態信號實時繪圖研究

        基于 C++ builder 的高采樣率動態信號實時繪圖研究

        作者: 時間:2016-12-09 來源:網絡 收藏

        顫振飛行試驗是新機或有重大改型飛機都必須進行的試飛科目,是世界公認的Ⅰ類風險試飛科目,所以必須通過實時監控保障飛行安全。顫振試飛與其他試驗科目相比,具有風險高、參數采樣率高的特點,對實時監控系統的實時性、可靠性以及精確性都要求較高。

        在開發顫振試飛實時監控軟件過程中,為了在屏幕上實時精確繪制高采樣率顫振參數時間歷程曲線,對高采樣率動態信號實時繪圖技術做了深入研究,并采用C++++ builder進行編程實現。通過軟件測評和實時系統驗證,該監控軟件運行穩定、可靠,能實時精確顯示高采樣顫振參數時域曲線。

        1 開發平臺介紹

        C++ Builder是由Borland公司繼Delphi之后又推出的一款高性能可視化集成開發工具[7],它具有快速的可視化開發環境:只要簡單地把控件拖到窗體上,定義它的屬性,設置它的外觀,就可以快速地建立應用程序界面。它內置了100 多個完全封裝了Windows 公用特性且具有完全可擴展性(包括全面支持ActiveX控件)的可重用控件。C++ Builder具有一個專業C++開發環境所能提供的全部功能:快速、高效、靈活的編譯器優化,逐步連接,CPU透視,命令行工具等,實現了可視化的編程環境和功能強大的編程語言(C++)的完美結合。利用C++ Builder 開發實時監控軟件,可以充分利用可視化編程語言的高效、靈活等優點,使得開發出來的應用程序具有更好的用戶界面,適合飛行監控使用。

        2 高采樣率動態信號實時繪圖算法研究及實現

        顫振試飛實時監控軟件通過接收服務器發送過來的數據,對軟件界面上參數進行實時顯示,并對關鍵參數數據進行自動或者手動采集。由于顫振參數為高采樣率速變參數,如果按照常規緩變參數那樣接收每點數據都畫圖的方法在屏幕上實時繪制時間歷程曲線,發現軟件數據顯示常有遲滯現象,并且嚴重影響軟件數據采集精度,因此對數據繪圖方法進行優化研究,將顫振數據實時采集到內存里,并且用數組來存放采集數據,然后利用TChart控件使用翻頁方式來實時顯示時間歷程曲線,每個頁面顯示一段時間內的數據曲線,其中翻頁時間間隔(由采樣頻率決定)由定時器控制,也可以通過利用接收服務器發送數據點數到達定值后進行翻頁的繪圖算法來實現。

        2.1 C++ builder控件介紹

        2.1.1 TTimer控件

        TTimer控件是C++ builder提供的一個普通計時器,使用簡單方便,但具有兩大缺陷:定時精度差和消息優先權低。首先,基于Windows計時器的硬件計時器每隔54.925 ms走1次(約18.2 次/s),也就是說,這種方式的定時器只能精確到大約55 ms,對于55 ms以下的時間精度便無能為力;另外,由于Windows是基于消息機制的系統,任何事件的執行都是通過發送和接收消息來完成的。

        TTimer控件的優先權太低,這樣一旦計算機的CPU被某個進程占用,或系統資源緊張時,發送到消息隊列中的WM_TIMER消息就被暫時掛起,得不到實時處理。

        2.1.2 多媒體定時器

        多媒體定時器是由Windows系統提供的毫秒級定時器,其定時精度可達1 ms.從運行基理來看,多媒體定時器提供的是硬件中斷服務,不傳送任何消息,優先級很高。多媒體定時器使用自己獨立的線程,調用回調函數進行處理,但在多媒體定時器的使用過程中需要注意的是:在多媒體定時器處理的線程結束之前不要再次啟動定時器,否則會造成死機。在使用之后一定要刪除定時器及響應的參數,否則系統的響應會變得很慢。

        2.1.3 TChart控件

        C++ Builder嵌入了Borland公司產品Delphi的控件TeeChart[10],可以方便地實現曲線繪制,繪圖功能強大,界面友好。本文利用C++ Builder 自帶的畫圖控件TChart,它是TeeChart類庫中最主要的類,具有11 種標準的Series 類型,325 個屬性,125 個方法以及28 個事件,這使得TChart具有非常強大的繪圖功能。

        2.2 繪圖算法具體實現

        將顫振數據實時采集到內存里,并且用數組Show-Buff []來存放采集數據,然后利用TChart控件使用翻頁方式來實時顯示其時間歷程曲線。TChart 控件中Ad-dXY 函數和AddArray 函數都可以來實現繪圖功能,但是AddXY 函數每次調用都要刷新屏幕,當需要實時繪圖參數較多時會引起監控軟件界面數據顯示遲滯現象,因此本文采用用于繪制數組數據曲線的AddArray函數進行繪圖,經過實時系統驗證表明,AddArray 函數比AddXY函數能夠有效提高繪圖效率。

        動態信號實時繪圖關鍵代碼如下:

        兩種算法實時繪圖效果相同,如圖1所示為應用于ARJ21 飛機飛行試驗實時監控的動態信號實時繪圖效果:

        該段動態參數事后處理數據繪圖效果如圖2所示。

        由圖1、圖2對比可知,利用本文中高采樣率動態信號實時繪圖算法能有效還原真實信號,滿足任務監控需求。

        3 結語

        文中基于C++ Builder開發的顫振試飛實時監控軟件已經成功應用于ARJ21飛機顫振飛行試驗中,對保障飛行安全和任務完成發揮了重要作用。實踐表明,軟件中涉及到的高采樣率動態信號實時繪圖算法能有效還原顯示動態參數真實信號,可應用于其他用戶群體中,如電力系統的振動檢測系統等。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 繁昌县| 福州市| 乡宁县| 漯河市| 盐亭县| 长葛市| 固阳县| 香格里拉县| 金塔县| 鄂尔多斯市| 呼玛县| 通山县| 华亭县| 屯门区| 馆陶县| 锦州市| 无锡市| 高雄县| 伽师县| 镇原县| 平舆县| 浦江县| 巴彦淖尔市| 中西区| 当阳市| 临清市| 宁晋县| 仪陇县| 崇仁县| 永善县| 靖安县| 武威市| 蒙城县| 南华县| 方山县| 光山县| 新乐市| 土默特左旗| 黔西县| 定襄县| 盘山县|