崔亞軍, 趙 奎, 王鴻亮, 王俊霖
?
基于RTX的實時數據處理系統①
崔亞軍1,2, 趙 奎2, 王鴻亮2, 王俊霖3
1(中國科學院大學, 北京 100049)2(中國科學院沈陽計算技術研究所, 沈陽 110168)3(大連理工大學軟件學院, 大連 116024)
為了解決遠程設備數據處理不及時的問題, 提出了一種基于RTX實時操作系統的設備數據處理系統. 該系統由RTX實時數據處理進程和人機交互進程兩部分組成, 其中RTX實時數據處理進程負責接收遠程設備端的數據并進行實時的處理, 將處理過的數據經共享內存和同步事件對象等通信方式, 傳輸到Win32的人機交互進程進行顯示和存儲數據, 同時用戶可以通過控制指令修改遠程設備的狀態. 實驗證明, 該系統解決了設備數據處理不及時的問題, 保證了設備管控的實時性和穩定性, 能夠滿足對遠程設備進行實時管控的要求.
數據處理; 實時系統; RTX; 進程通信
隨著設備管控技術的發展, 以實時數據處理為基礎的管控技術成為當前工業實時設備管控的關鍵. 目前, 雖然通用操作系統的處理能力、速度和效率等已經能夠滿足大部分工業生產的需要, 然而, 在實時設備管控領域, 系統不僅需要好的處理能力和效率, 還要保證設備數據處理的實時性. 為了滿足這一要求, 本文采用基于實時操作系統(RTOS)的實時設備數據處理方案[1]. RTOS能夠保證數據處理請求在極短的時間內得到相應處理, 具有低成本、高靈活性、高實時性及豐富配套資源等優點[2]. 目前常用的RTOS有VxWorks、RTX和RtLinux等, 其中RTX是Windows下硬實時的操作系統[3]. 為了充分利用Windows下豐富的資源, 本文提出一種基于RTX的實時數據處理系統, 實現設備數據的接收、處理、顯示以及人機交互等功能, 以滿足系統的實時性、可靠性和安全性.
2.1 RTX相關概念
IntervalZero公司研發的RTX系統是Windows環境下純軟件實現的硬實時操作系統[4], 其擁有采用搶占式優先級的高效任務管理器, 同時可以支持大部分C/C++語言函數庫和Win32 API. RTX通過對Windows硬件抽象層(HAL)進行擴展來實現獨立的內核驅動模型, 并增加與Win32子系統并存的實時子系統(RTSS)來保證系統的實時性, RTX的體系架構如圖1所示. 在RTX環境下進行實時系統的開發, 有以下幾點優勢: 1)能夠保證程序的實時性; 2)實時接口RtApi的使用與Win32環境類似, 便于程序的開發; 3)RTX支持使用C/C++的集成開發環境進行程序開發[5].

圖1 RTX和Windows運行的架構圖
2.2 RTX的實時性分析
系統實時性的評價, 主要從系統處理不確定事件時所消耗的線程切換延遲、中斷響應延遲和定時器延遲等方面進行[6]. 本文利用RTX64和Intel i3 CPU的PC進行RTX的性能測試, 并將測試結果與Windows 7進行對比, 具體情況如表1所示.

表1 RTX和Windows性能的對比
由表1可以看出, Windows系統的通用性能良好, 但是最大延遲是實時系統所不能接收的, 而RTX能夠保證在任何情況下, 系統的最大延遲都是極小的, 因此RTX能保證在處理不確定事件時也具有實時性.
3.1 系統需求分析
本文系統的設計旨在實現遠程設備的實時管控, 該系統主要包含兩個模塊: 實時數據處理模塊和人機交互模塊. 系統的數據流程是遠程設備通過RtxTcpip協議實時地把設備數據傳輸到該系統, 并由數據處理模塊進行接收和處理, 然后將處理好的數據通過進程間通信傳輸給人機交互模塊, 由人機交互模塊進行數據的顯示和存儲. 系統的控制流程是指首先由系統的人機交互模塊發送控制指令, 然后通過RtxTcpip協議將指令實時地傳輸給遠程設備. 該系統的實時數據處理模塊主要包括數據監聽、數據接收、數據解析、數據檢測和數據轉儲等子模塊. 人機交互模塊主要包括指令設置、數據存儲、數據分析和數據可視化等子模塊, 詳細的功能規劃如圖2所示.

圖2 系統的功能模塊圖
3.2 系統整體架構的設計
系統架構是影響系統整體性能的關鍵因素之一, 雖然RTX能夠保證進程的實時性, 但良好的架構能夠減少任務調度對系統關鍵線程的影響[7]. 因此, 在系統開發之前, 有必要對系統整體的架構、各模塊的運行機制以及內部的實現作詳細地分析, 盡可能設計出最優性能的系統, 以達到相對理想的狀態.
本文系統整體的結構如圖3所示. 該系統的實時數據處理層在RTX環境下運行, 包括實時的數據接收、解析和檢測等功能, 同時能夠及時地進行異常中斷處理, 保證遠程的設備數據傳送到該系統時, 數據能夠得到實時地處理, 而人機交互層在Win32環境下運行. 本系統利用MFC完成人機交互界面的設計, 同時提供指令發送、數據可視化和數據存儲的功能.

圖3 系統的整體架構圖
3.3 系統的程序設計
整個系統程序流程的設計以RTX實時進程和人機交互進程之間的共享內存通信為中心. 系統的程序流程圖如圖4所示, 其中圖4右側為RTX實時進程, 圖4左側為人機交互進程.

圖4 系統的程序流程圖
RTX實時進程主要包括實時主線程、數據接收線程和數據處理線程三部分. 實時處理線程負責將接收的設備數據進行實時處理, 并將結果通過共享內存的方式傳輸給人機交互層, 并根據人機交互的控制指令修改實時進程的狀態. 人機交互進程主要由系統主線程、指令發送、數據顯示和轉儲等多個線程組成. 指令發送線程負責發送用戶對遠程設備的控制指令, 數據顯示線程負責對通過共享內存傳來的數據進行及時可視化處理, 以向用戶展示遠程設備的當前狀態, 同時利用數據存儲線程將接收到的遠程設備數據存儲到系統指定的數據庫中.
本文的系統開發是在RTX64實時環境下, 使用C/C++語言在Visual Studio 2013平臺進行的. 其中實時進程采用RTX提供的RtApi實時接口進行開發, 人機交互進程采用MFC類庫進行開發.
4.1 實時進程的實現
4.1.1 實時數據接收的實現
高精度定時器是實時數據處理進程的核心, RTX系統提供了三種類型的定時器: CLOCK_SYSTEM、CLOCK_FASTEST和CLOCK_3[8]. 本文采用了的時鐘精度為1us的CLOCK_FASTEST類型的定時器. 在使用定時器時, 首先利用RtCreateTimer()函數創建定時器, 然后通過RtSetTimerRelative()函數設置定時器的時鐘周期和重復間隔, 最后將數據接收執行代碼放到定時器的回調函數中, 使其能夠周期性的實時執行. 關鍵代碼示例如下:
HANDLE hDataTimer=RtCreateTimer(NULL,0,
DataFunc,NULL, RT_PRIORITY_MAX,
CLOCK_FASTEST);
RtSetTimerRelative(hDataTimer,&nDataPeriod,
&nDataPeriod);
void RTFCNDCL DataFunc(void* context){
... //數據接收代碼段
RtSetEvent(hDataParse); //重置同步事件對象
}
4.1.2 實時數據解析和轉儲的實現
數據解析和轉儲線程主要包括以下幾個方面. 首先數據解析線程通過RtWaitForMultipleObjects()函數接收由數據接收線程發來的同步事件對象, 然后打開共享內存, 從中提取數據進行解析, 并對數據正確性的檢測, 如果解析的數據符合標準的數據格式, 就把它交于數據轉儲線程進行轉儲到共享內存[9], 否則將錯誤信息封裝到數據塊的錯誤信息段, 并交由人機交互層處理. 最后由RtSetEvent()函數重置與Win32通信的同步事件對象, 并通知人機交互層將共享內存中的數據及時進行顯示和存儲. 關鍵代碼示例如下:
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){
... //數據轉儲代碼段 RtSetEvent(hEvent[TERM_EVENT]);
ExitProcess(0);
}
}
4.2 人機交互進程的實現
人機交互進程的實現是在Win32環境下使用MFC基礎類庫完成的, 它與實時進程間的交互通過RTX的RtApi接口來完成[10]. 人機交互進程主要包括以下幾個功能: 數據的顯示、存儲數據庫、控制指令的發送. 其中, 數據顯示負責從實時進程中接收數據, 并將數據顯示到MFC界面, 數據顯示界面如圖5所示.

圖5 數據顯示的界面圖
存儲數據功能負責將接收到的數據存儲到數據庫, 為用戶查詢設備的歷史信息提供便利. 控制指令的發送功能主要將控制指令對話框中的指令發送到遠程設備, 對遠程設備進行控制.
本次性能測試實驗的硬件配置為: CPU(Intel i3 3.60GHz)、內存(4.00GB); 軟件環境為: Windows 7、RTX64實時系統和VS 2013開發工具. 本實驗測試的主要目的是對數據處理進程在實時環境下所消耗的時間與Win32環境所用時間進行對比, 并分析本系統的實時性. 在實驗測試中, 采用高精度計數器完成時間的統計, 通過QueryPerformanceFrequency()函數和QueryPerformanceCounter()函數分別獲取計時器的頻率和數值[11], 并利用兩次獲取的計數之差與計時器頻率, 計算出數據處理所花費的精確時間.

圖6 輕負載RTX與Win32性能的比較

圖7 重負載RTX與Win32性能的比較
該數據處理系統在輕負載和重負載下分別進行了50次實驗, 實驗結果如圖6和圖7所示. 在輕度負載的Win32環境下, 數據處理時間在22ms左右, 浮動相對較小; 在重負載的Win32環境下, 數據處理時間浮動很大, 接近秒級, 因此不能達到業界對實時處理系統在10ms之內完成數據處理的要求. 而在RTX實時環境中, 數據的處理時間不受Windows負載的影響, 因此, 無論在輕負載還是重負載下, 實時數據處理都能夠保證在3ms之內完成, 具有很好的實時性, 能夠滿足實時管控系統對數據處理的要求.
本文設計的基于RTX的實時數據處理系統, 充分利用了RTX的可擴展析性、實時性和高靈活性等特征, 實現了搶占式優先級的高效任務管理和實時調度. 通過對數據處理系統的實時性測試, 可以看出RTX環境為系統的實時性提供了保證, 其設備數據處理的性能遠遠好于Windows環境, 能夠保證設備數據處理在10ms內完成. 因此, 本文設計的數據處理系統能夠很好地滿足實時設備管控的需要, 同時也為在Windows非實時環境下如何通過軟硬件擴展進行實時系統的開發提供了一種有效的解決方法.
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的關節控制系統及測試平臺研究[碩士學位論文].哈爾濱:哈爾濱工業大學,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嵌入式操作系統的多路數據采集系統設計.工業儀表與自動化裝置,2015,2(4):29–32.
8 雷毅,周徐昌.基于RTX平臺高速實時數據采集與處理平臺設計.艦船電子工程,2010,6(7):89–96.
9 王偉,袁保君,吳佳楠.基于RTX的數據采集系統設計.測控技術,2012,8(10):78–81.
10 劉曉晶.基于Windows平臺的實時擴展子系統(RTX)研究及其在雷達系統中的應用[碩士學位論文].南京:南京理工大學,2011.
11 任偉,陳韶千,王亮.基于RTX的網絡延遲測試系統設計與實現.測控技術,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]