崔亞軍, 趙 奎, 王鴻亮, 王俊霖
?
基于RTX的實時數(shù)據(jù)處理系統(tǒng)①
崔亞軍1,2, 趙 奎2, 王鴻亮2, 王俊霖3
1(中國科學(xué)院大學(xué), 北京 100049)2(中國科學(xué)院沈陽計算技術(shù)研究所, 沈陽 110168)3(大連理工大學(xué)軟件學(xué)院, 大連 116024)
為了解決遠(yuǎn)程設(shè)備數(shù)據(jù)處理不及時的問題, 提出了一種基于RTX實時操作系統(tǒng)的設(shè)備數(shù)據(jù)處理系統(tǒng). 該系統(tǒng)由RTX實時數(shù)據(jù)處理進(jìn)程和人機交互進(jìn)程兩部分組成, 其中RTX實時數(shù)據(jù)處理進(jìn)程負(fù)責(zé)接收遠(yuǎn)程設(shè)備端的數(shù)據(jù)并進(jìn)行實時的處理, 將處理過的數(shù)據(jù)經(jīng)共享內(nèi)存和同步事件對象等通信方式, 傳輸?shù)絎in32的人機交互進(jìn)程進(jìn)行顯示和存儲數(shù)據(jù), 同時用戶可以通過控制指令修改遠(yuǎn)程設(shè)備的狀態(tài). 實驗證明, 該系統(tǒng)解決了設(shè)備數(shù)據(jù)處理不及時的問題, 保證了設(shè)備管控的實時性和穩(wěn)定性, 能夠滿足對遠(yuǎn)程設(shè)備進(jìn)行實時管控的要求.
數(shù)據(jù)處理; 實時系統(tǒng); RTX; 進(jìn)程通信
隨著設(shè)備管控技術(shù)的發(fā)展, 以實時數(shù)據(jù)處理為基礎(chǔ)的管控技術(shù)成為當(dāng)前工業(yè)實時設(shè)備管控的關(guān)鍵. 目前, 雖然通用操作系統(tǒng)的處理能力、速度和效率等已經(jīng)能夠滿足大部分工業(yè)生產(chǎn)的需要, 然而, 在實時設(shè)備管控領(lǐng)域, 系統(tǒng)不僅需要好的處理能力和效率, 還要保證設(shè)備數(shù)據(jù)處理的實時性. 為了滿足這一要求, 本文采用基于實時操作系統(tǒng)(RTOS)的實時設(shè)備數(shù)據(jù)處理方案[1]. RTOS能夠保證數(shù)據(jù)處理請求在極短的時間內(nèi)得到相應(yīng)處理, 具有低成本、高靈活性、高實時性及豐富配套資源等優(yōu)點[2]. 目前常用的RTOS有VxWorks、RTX和RtLinux等, 其中RTX是Windows下硬實時的操作系統(tǒng)[3]. 為了充分利用Windows下豐富的資源, 本文提出一種基于RTX的實時數(shù)據(jù)處理系統(tǒng), 實現(xiàn)設(shè)備數(shù)據(jù)的接收、處理、顯示以及人機交互等功能, 以滿足系統(tǒng)的實時性、可靠性和安全性.
2.1 RTX相關(guān)概念
IntervalZero公司研發(fā)的RTX系統(tǒng)是Windows環(huán)境下純軟件實現(xiàn)的硬實時操作系統(tǒng)[4], 其擁有采用搶占式優(yōu)先級的高效任務(wù)管理器, 同時可以支持大部分C/C++語言函數(shù)庫和Win32 API. RTX通過對Windows硬件抽象層(HAL)進(jìn)行擴展來實現(xiàn)獨立的內(nèi)核驅(qū)動模型, 并增加與Win32子系統(tǒng)并存的實時子系統(tǒng)(RTSS)來保證系統(tǒng)的實時性, RTX的體系架構(gòu)如圖1所示. 在RTX環(huán)境下進(jìn)行實時系統(tǒng)的開發(fā), 有以下幾點優(yōu)勢: 1)能夠保證程序的實時性; 2)實時接口RtApi的使用與Win32環(huán)境類似, 便于程序的開發(fā); 3)RTX支持使用C/C++的集成開發(fā)環(huán)境進(jìn)行程序開發(fā)[5].
圖1 RTX和Windows運行的架構(gòu)圖
2.2 RTX的實時性分析
系統(tǒng)實時性的評價, 主要從系統(tǒng)處理不確定事件時所消耗的線程切換延遲、中斷響應(yīng)延遲和定時器延遲等方面進(jìn)行[6]. 本文利用RTX64和Intel i3 CPU的PC進(jìn)行RTX的性能測試, 并將測試結(jié)果與Windows 7進(jìn)行對比, 具體情況如表1所示.
表1 RTX和Windows性能的對比
由表1可以看出, Windows系統(tǒng)的通用性能良好, 但是最大延遲是實時系統(tǒng)所不能接收的, 而RTX能夠保證在任何情況下, 系統(tǒng)的最大延遲都是極小的, 因此RTX能保證在處理不確定事件時也具有實時性.
3.1 系統(tǒng)需求分析
本文系統(tǒng)的設(shè)計旨在實現(xiàn)遠(yuǎn)程設(shè)備的實時管控, 該系統(tǒng)主要包含兩個模塊: 實時數(shù)據(jù)處理模塊和人機交互模塊. 系統(tǒng)的數(shù)據(jù)流程是遠(yuǎn)程設(shè)備通過RtxTcpip協(xié)議實時地把設(shè)備數(shù)據(jù)傳輸?shù)皆撓到y(tǒng), 并由數(shù)據(jù)處理模塊進(jìn)行接收和處理, 然后將處理好的數(shù)據(jù)通過進(jìn)程間通信傳輸給人機交互模塊, 由人機交互模塊進(jìn)行數(shù)據(jù)的顯示和存儲. 系統(tǒng)的控制流程是指首先由系統(tǒng)的人機交互模塊發(fā)送控制指令, 然后通過RtxTcpip協(xié)議將指令實時地傳輸給遠(yuǎn)程設(shè)備. 該系統(tǒng)的實時數(shù)據(jù)處理模塊主要包括數(shù)據(jù)監(jiān)聽、數(shù)據(jù)接收、數(shù)據(jù)解析、數(shù)據(jù)檢測和數(shù)據(jù)轉(zhuǎn)儲等子模塊. 人機交互模塊主要包括指令設(shè)置、數(shù)據(jù)存儲、數(shù)據(jù)分析和數(shù)據(jù)可視化等子模塊, 詳細(xì)的功能規(guī)劃如圖2所示.
圖2 系統(tǒng)的功能模塊圖
3.2 系統(tǒng)整體架構(gòu)的設(shè)計
系統(tǒng)架構(gòu)是影響系統(tǒng)整體性能的關(guān)鍵因素之一, 雖然RTX能夠保證進(jìn)程的實時性, 但良好的架構(gòu)能夠減少任務(wù)調(diào)度對系統(tǒng)關(guān)鍵線程的影響[7]. 因此, 在系統(tǒng)開發(fā)之前, 有必要對系統(tǒng)整體的架構(gòu)、各模塊的運行機制以及內(nèi)部的實現(xiàn)作詳細(xì)地分析, 盡可能設(shè)計出最優(yōu)性能的系統(tǒng), 以達(dá)到相對理想的狀態(tài).
本文系統(tǒng)整體的結(jié)構(gòu)如圖3所示. 該系統(tǒng)的實時數(shù)據(jù)處理層在RTX環(huán)境下運行, 包括實時的數(shù)據(jù)接收、解析和檢測等功能, 同時能夠及時地進(jìn)行異常中斷處理, 保證遠(yuǎn)程的設(shè)備數(shù)據(jù)傳送到該系統(tǒng)時, 數(shù)據(jù)能夠得到實時地處理, 而人機交互層在Win32環(huán)境下運行. 本系統(tǒng)利用MFC完成人機交互界面的設(shè)計, 同時提供指令發(fā)送、數(shù)據(jù)可視化和數(shù)據(jù)存儲的功能.
圖3 系統(tǒng)的整體架構(gòu)圖
3.3 系統(tǒng)的程序設(shè)計
整個系統(tǒng)程序流程的設(shè)計以RTX實時進(jìn)程和人機交互進(jìn)程之間的共享內(nèi)存通信為中心. 系統(tǒng)的程序流程圖如圖4所示, 其中圖4右側(cè)為RTX實時進(jìn)程, 圖4左側(cè)為人機交互進(jìn)程.
圖4 系統(tǒng)的程序流程圖
RTX實時進(jìn)程主要包括實時主線程、數(shù)據(jù)接收線程和數(shù)據(jù)處理線程三部分. 實時處理線程負(fù)責(zé)將接收的設(shè)備數(shù)據(jù)進(jìn)行實時處理, 并將結(jié)果通過共享內(nèi)存的方式傳輸給人機交互層, 并根據(jù)人機交互的控制指令修改實時進(jìn)程的狀態(tài). 人機交互進(jìn)程主要由系統(tǒng)主線程、指令發(fā)送、數(shù)據(jù)顯示和轉(zhuǎn)儲等多個線程組成. 指令發(fā)送線程負(fù)責(zé)發(fā)送用戶對遠(yuǎn)程設(shè)備的控制指令, 數(shù)據(jù)顯示線程負(fù)責(zé)對通過共享內(nèi)存?zhèn)鱽淼臄?shù)據(jù)進(jìn)行及時可視化處理, 以向用戶展示遠(yuǎn)程設(shè)備的當(dāng)前狀態(tài), 同時利用數(shù)據(jù)存儲線程將接收到的遠(yuǎn)程設(shè)備數(shù)據(jù)存儲到系統(tǒng)指定的數(shù)據(jù)庫中.
本文的系統(tǒng)開發(fā)是在RTX64實時環(huán)境下, 使用C/C++語言在Visual Studio 2013平臺進(jìn)行的. 其中實時進(jìn)程采用RTX提供的RtApi實時接口進(jìn)行開發(fā), 人機交互進(jìn)程采用MFC類庫進(jìn)行開發(fā).
4.1 實時進(jìn)程的實現(xiàn)
4.1.1 實時數(shù)據(jù)接收的實現(xiàn)
高精度定時器是實時數(shù)據(jù)處理進(jìn)程的核心, RTX系統(tǒng)提供了三種類型的定時器: CLOCK_SYSTEM、CLOCK_FASTEST和CLOCK_3[8]. 本文采用了的時鐘精度為1us的CLOCK_FASTEST類型的定時器. 在使用定時器時, 首先利用RtCreateTimer()函數(shù)創(chuàng)建定時器, 然后通過RtSetTimerRelative()函數(shù)設(shè)置定時器的時鐘周期和重復(fù)間隔, 最后將數(shù)據(jù)接收執(zhí)行代碼放到定時器的回調(diào)函數(shù)中, 使其能夠周期性的實時執(zhí)行. 關(guān)鍵代碼示例如下:
HANDLE hDataTimer=RtCreateTimer(NULL,0,
DataFunc,NULL, RT_PRIORITY_MAX,
CLOCK_FASTEST);
RtSetTimerRelative(hDataTimer,&nDataPeriod,
&nDataPeriod);
void RTFCNDCL DataFunc(void* context){
... //數(shù)據(jù)接收代碼段
RtSetEvent(hDataParse); //重置同步事件對象
}
4.1.2 實時數(shù)據(jù)解析和轉(zhuǎn)儲的實現(xiàn)
數(shù)據(jù)解析和轉(zhuǎn)儲線程主要包括以下幾個方面. 首先數(shù)據(jù)解析線程通過RtWaitForMultipleObjects()函數(shù)接收由數(shù)據(jù)接收線程發(fā)來的同步事件對象, 然后打開共享內(nèi)存, 從中提取數(shù)據(jù)進(jìn)行解析, 并對數(shù)據(jù)正確性的檢測, 如果解析的數(shù)據(jù)符合標(biāo)準(zhǔn)的數(shù)據(jù)格式, 就把它交于數(shù)據(jù)轉(zhuǎn)儲線程進(jìn)行轉(zhuǎn)儲到共享內(nèi)存[9], 否則將錯誤信息封裝到數(shù)據(jù)塊的錯誤信息段, 并交由人機交互層處理. 最后由RtSetEvent()函數(shù)重置與Win32通信的同步事件對象, 并通知人機交互層將共享內(nèi)存中的數(shù)據(jù)及時進(jìn)行顯示和存儲. 關(guān)鍵代碼示例如下:
dwStatus=RtWaitForMultipleObjects(2,hEvent,
FALSE,INFINITE);
if(WAIT_OBJECT_0+TERM_EVENT==dwStatus){
RtSetEvent(hEvent[TERM_EVENT]); ExitProcess(0);
}
if(WAIT_OBJECT_0+EXECUTE_EVENT==dwStatus){
if(memcmp(pData->prodData,pData->consData, sizeof(pData->prodData)) != 0){
... //數(shù)據(jù)轉(zhuǎn)儲代碼段 RtSetEvent(hEvent[TERM_EVENT]);
ExitProcess(0);
}
}
4.2 人機交互進(jìn)程的實現(xiàn)
人機交互進(jìn)程的實現(xiàn)是在Win32環(huán)境下使用MFC基礎(chǔ)類庫完成的, 它與實時進(jìn)程間的交互通過RTX的RtApi接口來完成[10]. 人機交互進(jìn)程主要包括以下幾個功能: 數(shù)據(jù)的顯示、存儲數(shù)據(jù)庫、控制指令的發(fā)送. 其中, 數(shù)據(jù)顯示負(fù)責(zé)從實時進(jìn)程中接收數(shù)據(jù), 并將數(shù)據(jù)顯示到MFC界面, 數(shù)據(jù)顯示界面如圖5所示.
圖5 數(shù)據(jù)顯示的界面圖
存儲數(shù)據(jù)功能負(fù)責(zé)將接收到的數(shù)據(jù)存儲到數(shù)據(jù)庫, 為用戶查詢設(shè)備的歷史信息提供便利. 控制指令的發(fā)送功能主要將控制指令對話框中的指令發(fā)送到遠(yuǎn)程設(shè)備, 對遠(yuǎn)程設(shè)備進(jìn)行控制.
本次性能測試實驗的硬件配置為: CPU(Intel i3 3.60GHz)、內(nèi)存(4.00GB); 軟件環(huán)境為: Windows 7、RTX64實時系統(tǒng)和VS 2013開發(fā)工具. 本實驗測試的主要目的是對數(shù)據(jù)處理進(jìn)程在實時環(huán)境下所消耗的時間與Win32環(huán)境所用時間進(jìn)行對比, 并分析本系統(tǒng)的實時性. 在實驗測試中, 采用高精度計數(shù)器完成時間的統(tǒng)計, 通過QueryPerformanceFrequency()函數(shù)和QueryPerformanceCounter()函數(shù)分別獲取計時器的頻率和數(shù)值[11], 并利用兩次獲取的計數(shù)之差與計時器頻率, 計算出數(shù)據(jù)處理所花費的精確時間.
圖6 輕負(fù)載RTX與Win32性能的比較
圖7 重負(fù)載RTX與Win32性能的比較
該數(shù)據(jù)處理系統(tǒng)在輕負(fù)載和重負(fù)載下分別進(jìn)行了50次實驗, 實驗結(jié)果如圖6和圖7所示. 在輕度負(fù)載的Win32環(huán)境下, 數(shù)據(jù)處理時間在22ms左右, 浮動相對較小; 在重負(fù)載的Win32環(huán)境下, 數(shù)據(jù)處理時間浮動很大, 接近秒級, 因此不能達(dá)到業(yè)界對實時處理系統(tǒng)在10ms之內(nèi)完成數(shù)據(jù)處理的要求. 而在RTX實時環(huán)境中, 數(shù)據(jù)的處理時間不受Windows負(fù)載的影響, 因此, 無論在輕負(fù)載還是重負(fù)載下, 實時數(shù)據(jù)處理都能夠保證在3ms之內(nèi)完成, 具有很好的實時性, 能夠滿足實時管控系統(tǒng)對數(shù)據(jù)處理的要求.
本文設(shè)計的基于RTX的實時數(shù)據(jù)處理系統(tǒng), 充分利用了RTX的可擴展析性、實時性和高靈活性等特征, 實現(xiàn)了搶占式優(yōu)先級的高效任務(wù)管理和實時調(diào)度. 通過對數(shù)據(jù)處理系統(tǒng)的實時性測試, 可以看出RTX環(huán)境為系統(tǒng)的實時性提供了保證, 其設(shè)備數(shù)據(jù)處理的性能遠(yuǎn)遠(yuǎn)好于Windows環(huán)境, 能夠保證設(shè)備數(shù)據(jù)處理在10ms內(nèi)完成. 因此, 本文設(shè)計的數(shù)據(jù)處理系統(tǒng)能夠很好地滿足實時設(shè)備管控的需要, 同時也為在Windows非實時環(huán)境下如何通過軟硬件擴展進(jìn)行實時系統(tǒng)的開發(fā)提供了一種有效的解決方法.
1 White JA, Bettencourt J. Real-time experiment interface for biological control applications. 2010 Annual International Conference of the IEEE Engineering in Medicine and Biology. IEEE. 2010. 4160–4163.
2 IntervalZero lnc. RTX64 deployment guide. https://www. intervalzero.com/rtx-downloads/rtx64-downloads/rtx64-2014- downloads. [2015-10-13].
3 楊建,王建軍,郭立紅.基于RTX的某光電裝備圖像處理實時性研究.計算機測量與控制,2015,11(4):31–33.
4 馬維斯.基于RTX的關(guān)節(jié)控制系統(tǒng)及測試平臺研究[碩士學(xué)位論文].哈爾濱:哈爾濱工業(yè)大學(xué),2014.
5 Guo C, Ni F, Zou T. Design of real-time and open control system for Chinese space manipulator joint on RTX. 2015 IEEE International Conference on Robotics and Biomimetics (ROBIO). IEEE. 2015. 2629–2634.
6 Lee YH, Kim D. Software architecture supporting integrate real-time systems. The Journal of Systems and Software, 2013, 65(4): 71–86.
7 彭健,包夢.基于RTX51嵌入式操作系統(tǒng)的多路數(shù)據(jù)采集系統(tǒng)設(shè)計.工業(yè)儀表與自動化裝置,2015,2(4):29–32.
8 雷毅,周徐昌.基于RTX平臺高速實時數(shù)據(jù)采集與處理平臺設(shè)計.艦船電子工程,2010,6(7):89–96.
9 王偉,袁保君,吳佳楠.基于RTX的數(shù)據(jù)采集系統(tǒng)設(shè)計.測控技術(shù),2012,8(10):78–81.
10 劉曉晶.基于Windows平臺的實時擴展子系統(tǒng)(RTX)研究及其在雷達(dá)系統(tǒng)中的應(yīng)用[碩士學(xué)位論文].南京:南京理工大學(xué),2011.
11 任偉,陳韶千,王亮.基于RTX的網(wǎng)絡(luò)延遲測試系統(tǒng)設(shè)計與實現(xiàn).測控技術(shù),2013,3(4):80–83.
Real-Time Data Processing System Based on RTX
CUI Ya-Jun1,2, ZHAO Kui2, WANG Hong-Liang2, WANG Jun-Lin3
1(University of Chinese Academy of Sciences, Beijing 100049, China)2(Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China)3(School of Software Technology, Dalian University of Technology, Dalian 116024, China)
In order to ensure the real-time data processing of remote device, a real-time processing system based on RTX is proposed, which is composed of RTX real-time process and man-machine interaction. The RTX real-time process gets data from remote device and processes the real-time data. Then, it displays and storages data by transferring the processed data to a Win32 user interface layer by sharing memory and synchronizing event object. Simultaneously, the user could alter remote device upon commands from man-machine interaction. Experiments have shown that the system can reduce the latency of data processing, ensure the real-time and stability of equipment control, and satisfy the real-time control requirements for remote device.
data processing; real-time system; RTX; process communication
國家水體污染控制與治理科技重大專項(2012ZX07505003)
2016-04-26;收到修改稿時間:2016-06-21
[10.15888/j.cnki.csa.005534]