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

        ?

        多傳感器狀態(tài)監(jiān)測系統(tǒng)的多線程信息處理模型

        2012-11-22 01:46:46徐建鋒薛平貞
        火炮發(fā)射與控制學報 2012年3期
        關鍵詞:數(shù)據(jù)處理故障診斷

        楊 維,趙 維,徐建鋒,薛平貞

        (西北機電工程研究所,陜西 咸陽 712099)

        隨著人們對安全保障的日益重視,多傳感器狀態(tài)監(jiān)測系統(tǒng)得到了越來越廣泛的應用。通過對各類運行參數(shù)連續(xù)不斷的采集,可以獲得關鍵設備的運行狀態(tài),并實現(xiàn)自動報警和故障診斷[1-2]。狀態(tài)監(jiān)測系統(tǒng)的信息處理過程包括數(shù)據(jù)采集、顯示輸出和數(shù)據(jù)處理等多個任務,非常適合采用多線程技術(shù)[3-4]。不過,當采樣頻率較高、傳感器數(shù)量較多時,如何合理的進行任務劃分和設計多線程模型對系統(tǒng)的穩(wěn)定性和執(zhí)行效率有著十分重要的影響[5]。本文提出了一種針對多傳感器狀態(tài)監(jiān)測系統(tǒng)的多線程信息處理模型,并基于VxWorks操作系統(tǒng)給出了該模型的具體實現(xiàn)。通過在某綜合控制管理狀態(tài)監(jiān)測系統(tǒng)中的實際應用,驗證了該模型的有效性和穩(wěn)定性。

        1 多傳感器狀態(tài)監(jiān)測系統(tǒng)

        圖1給出了一個典型的多傳感器狀態(tài)監(jiān)測系統(tǒng)的基本架構(gòu)。其中,監(jiān)測網(wǎng)絡中存在幾十甚至上百個傳感器,用于監(jiān)測不同的測點;數(shù)據(jù)采集模塊通過監(jiān)測網(wǎng)絡可以接收各測點的運行參數(shù),在收到運行參數(shù)之后,還需要進行顯示輸出、數(shù)據(jù)處理和故障診斷,經(jīng)過處理的監(jiān)測數(shù)據(jù)和診斷結(jié)果還要保存到數(shù)據(jù)庫中。

        考慮到以下因素,則該問題更加復雜:

        1)在一些監(jiān)測診斷系統(tǒng)中,希望報警點前后一段時間內(nèi)的采樣點越多越好,而在無報警時段內(nèi)對采樣點的數(shù)據(jù)密度沒有過高的要求。

        2)對于不同類型的運行參數(shù),需要采用不同的數(shù)據(jù)壓縮方法—緩變參數(shù)直接擴大采樣點時間間隔進行重采樣即可;非緩變參數(shù)則需要考慮參數(shù)變化的頻率。

        2 多線程信息處理模型

        針對上述多傳感器狀態(tài)監(jiān)測系統(tǒng),設計了一個多線程信息處理模型。在該模型中,將需要完成的任務劃分為主線程、數(shù)據(jù)采集線程、數(shù)據(jù)處理線程、故障診斷線程、顯示輸出線程和定時器,其信息處理流程如圖2所示。

        2.1 數(shù)據(jù)采集線程

        在硬件條件許可的前提下,可以適當加大采樣頻率。特別是對于非穩(wěn)態(tài)參數(shù)(如柴油機氣缸壓力參數(shù)),采樣頻率可能會大于50 MHz。為此,采用非阻塞異步通信方式接收來自多socket的監(jiān)測數(shù)據(jù),并將采集到監(jiān)測數(shù)據(jù)送入預處理緩沖區(qū)。預處理緩沖區(qū)按不同參數(shù)劃分為不同的單元,每個單元都有一個報警狀態(tài)標識記錄是否報警。如果某參數(shù)一直處于正常的閾值范圍內(nèi),則該標識置于低位0(表示正常);如果某參數(shù)超出正常的閾值范圍,即將該標識置為高位1(表示異常),同時記錄報警時間T_Alarm;如果處于報警狀態(tài)的參數(shù)重新回復到正常閾值范圍內(nèi),則將該標識置為低位0,同時記錄取消報警時間T_AlarmEnd。

        當傳感器數(shù)量較多且采樣頻率較高時,將會大大增加存儲空間。為此,需要進一步考慮數(shù)據(jù)壓縮。

        2.2 數(shù)據(jù)處理線程

        數(shù)據(jù)處理線程負責進一步處理預處理緩沖區(qū)中的數(shù)據(jù)。一旦預處理緩沖區(qū)中某個參數(shù)單元的緩沖區(qū)長度大于臨界值,即將緩沖區(qū)內(nèi)的數(shù)據(jù)送入交換區(qū),然后向數(shù)據(jù)處理線程發(fā)送請求處理通知。數(shù)據(jù)處理線程收到該通知后,按順序處理交換區(qū)中的數(shù)據(jù):

        1) 判斷當前參數(shù)單元是否為報警狀態(tài),如果為非報警狀態(tài),則按參數(shù)類型進行數(shù)據(jù)壓縮后存儲到數(shù)據(jù)庫中。

        2) 如果處于報警狀態(tài),則將報警窗口(T_Alarm-TL

        3) 無論是否壓縮,轉(zhuǎn)存至數(shù)據(jù)庫之后,就要清空當前參數(shù)單元的交換區(qū)。

        2.3 故障診斷線程

        通過滑動診斷窗口,故障診斷線程實時對處于滑窗內(nèi)的數(shù)據(jù)進行基于模式識別的故障匹配。當故障匹配的結(jié)果有邏輯沖突時,還需要進行基于決策融合的沖突消解,給出最終的診斷結(jié)果。

        2.4 顯示輸出線程

        顯示輸出線程負責在監(jiān)控界面上以動態(tài)曲線、數(shù)字儀表等方式顯示最近時刻的運行參數(shù)和故障診斷的結(jié)果。

        2.5 定時器

        定時器根據(jù)需要按固定時間間隔向各線程發(fā)送通知。譬如融合診斷線程和顯示輸出線程并不是一直處于工作狀態(tài),而是收到由定時器給出的通知信號量后才工作,待完成當前周期的任務后再自動“休眠”。

        3 基于VxWorks的實現(xiàn)

        基于VxWorks 5.5,實現(xiàn)了上述多線程信息處理模型。VxWorks 5.5是一個搶占式多任務實時操作系統(tǒng),它只有一個進程,這個單一進程可以包括多個任務,并且這些多任務之間可以共享內(nèi)存和其它資源。

        3.1 任務創(chuàng)建

        在VxWorks環(huán)境下,提供了一個taskSpawn函數(shù)用以創(chuàng)建任務并執(zhí)行該任務的入口函數(shù)??梢栽谄鋟srAppInit函數(shù)中執(zhí)行數(shù)據(jù)采集任務、數(shù)據(jù)處理任務、故障診斷任務、顯示輸出任務和定時器任務。程序代碼如下:

        int t_DataCollecting = taskSpawn(“DataCollecting”, 100, 0, 8192, (FUNCPTR)DataCollect_Func, 0, 1, 2, 3, 4 ,5, 6, 7, 8, 9); //創(chuàng)建數(shù)據(jù)采集任務

        int t_DataProcessing = taskSpawn(“DataProcessing”, 100, 0, 8192, (FUNCPTR) DataProcessing_Func, 0, 1, 2, 3, 4 ,5, 6, 7, 8, 9); //創(chuàng)建數(shù)據(jù)處理任務

        int t_FaultDiagns = taskSpawn(“FaultDiagns”, 100, 0, 8192, (FUNCPTR) FaultDiagns_Func, 0, 1, 2, 3, 4 ,5, 6, 7, 8, 9); //創(chuàng)建故障診斷任務

        int t_Output = taskSpawn(“Output”, 100, 0, 8192, (FUNCPTR) Output_Func, 0, 1, 2, 3, 4 ,5, 6, 7, 8, 9); //創(chuàng)建顯示輸出任務

        int t_Timer = taskSpawn(“Timer”, 100, 0, 8192, (FUNCPTR) Timer_Func, 0, 1, 2, 3, 4 ,5, 6, 7, 8, 9); //創(chuàng)建定時器任務

        3.2 任務間的協(xié)調(diào)與通信

        1) 基于臨界區(qū)的數(shù)據(jù)保護

        基于VxWorks下STL(標準模板庫)中的vector類,定義了用于緩存接收數(shù)據(jù)的預處理緩沖區(qū)。其代碼如下:

        vectorRecvDatas; //定義預處理緩沖區(qū)

        由于多任務之間可以共享內(nèi)存,因此各任務均可以讀寫上面定義的RecvDatas。為了避免同時搶占共享資源,可以利用VxWorks提供的taskLock函數(shù)和taskUnlock函數(shù)實現(xiàn)數(shù)據(jù)保護。這兩個函數(shù)一定是成對出現(xiàn)的,通過taskLock函數(shù)實現(xiàn)鎖定,通過taskUnlock函數(shù)進行解鎖,而在這兩個函數(shù)之間的代碼相當于臨界區(qū)操作,避免產(chǎn)生沖突。其偽代碼如下:

        taskLock?();???//鎖定

        /******安全的數(shù)據(jù)操作********/

        taskUnlock?();?//解鎖

        2) 基于二進制信號量的通知機制

        數(shù)據(jù)處理任務、顯示輸出任務和故障診斷任務并非一直處于工作狀態(tài),而是收到通知后才執(zhí)行相關任務,完成任務后又可以暫時處于“休眠”狀態(tài),直到收到下一個通知為止,如此周而復始?;赩xWorks提供的二進制信號量,可以實現(xiàn)上述通知機制。例如,關于定時通知顯示輸出任務刷屏,可以在usrAppInit函數(shù)中,可以先通過semBCreate創(chuàng)建一個名為sem_NotifyOutput的二進制信號量(用于定時通知顯示)。在顯示輸出任務中的Output_Func函數(shù)中,其偽代碼如下:

        void Output()

        {

        for(;;)

        {

        semTake(sem_NotifyOutput);//占據(jù)通知顯示信號量

        refresh();//刷屏操作

        }

        }

        而在定時器事件中,其偽代碼描述如下:

        output_Count++;//計數(shù)加1

        if (output_Count % output_Interval == 0)

        //若計數(shù)被顯示時間間隔整除,則

        {

        semGive(sem_NotifyOutput);//釋放通知顯示信號量

        }

        上述代碼中,Output函數(shù)的主體就是一個無條件的for循環(huán),在其中首先通過semTake函數(shù)試圖占據(jù)sem_NotifyOutput,若成功占據(jù)則執(zhí)行refresh函數(shù)進行刷屏,否則一直等待。而在定時器事件中,output_Count一直遞增,一旦output_Count被顯示時間間隔output_Interval整除,則調(diào)用semGive函數(shù)釋放sem_NotifyOutput。

        3.3 非阻塞式異步數(shù)據(jù)接收

        創(chuàng)建單一的數(shù)據(jù)采集線程,以非阻塞異步方式接收來自所有客戶端的數(shù)據(jù)。在VxWorks中,提供了select函數(shù)實現(xiàn)非阻塞式異步數(shù)據(jù)接收。select函數(shù)可以監(jiān)視文件描述符集合中某個文件描述符是否發(fā)生變化,當然也可以用于監(jiān)視該文件描述符是否可讀,一旦檢測到有數(shù)據(jù)可讀后才調(diào)用相關的recv函數(shù)接收數(shù)據(jù)。

        為了記錄所有客戶端socket,定義了一個基于STL的socket向量。其代碼如下:

        vectorclient_Sockets;//定義客戶端socket向量

        而在數(shù)據(jù)采集任務的DataCollect_Func函數(shù)中,其偽代碼如下:

        void DataCollect_Func()

        {

        int i;

        struct fd_set fds;//定義可讀文件描述符集合

        struct timeval timeout={2, 0};//定義select的超時時間為2s

        for(;;)

        {

        FD_ZERO(&fds);//每次循環(huán)都要清空集合

        for(i = 0; i < client_Sockets.size(); i++)

        {

        FD_SET(client_Sockets[i], &fds);

        }//將client_Sockets中所有項添加到fds中

        switch(select(FD_SETSIZE, &fds, NULL, NULL, &timeout))

        {

        case -1:

        {

        exit(-1);break;

        }

        case 0: break;

        default:

        {

        for(i = 0; i < client_Sockets.size(); i++)

        {

        if (FD_ISSET(client_Sockets[i],&fds))//若可讀

        {

        recv(client_Sockets[i], ….);//接收數(shù)據(jù)

        }

        }

        }

        }

        }

        4 實際應用

        在某綜合控制管理狀態(tài)監(jiān)測系統(tǒng)中,傳感器總數(shù)為N個,這些傳感器的采樣頻率分別為10 Hz、50 Hz和50 MHz不等。監(jiān)測網(wǎng)絡采用工業(yè)以太網(wǎng)和CAN總線,但并非所有傳感器都直接接入監(jiān)測網(wǎng)絡,鄰近測點的傳感器可能通過共同的下位機(如單片機)接入監(jiān)測網(wǎng)絡。系統(tǒng)運行的硬件環(huán)境為:P4 1.4G、1G RAM、500G HD。

        通過跟蹤日志可知,在實際的使用過程中,CPU的平均使用率為45%,峰值使用率低于75%,且未發(fā)現(xiàn)死鎖、錯/漏報警等情況。表明系統(tǒng)任務劃分合理,運行穩(wěn)定。

        5 結(jié) 論

        對于多傳感器狀態(tài)監(jiān)測系統(tǒng)而言,合理的進行任務劃分和設計多線程信息處理模型非常重要,對系統(tǒng)的執(zhí)行效率和穩(wěn)定性影響很大。本文提出的多傳感器狀態(tài)監(jiān)測系統(tǒng)的多線程信息處理模型包括數(shù)據(jù)采集線程、數(shù)據(jù)處理線程、故障診斷線程、顯示輸出線程和定時器等,具有一定通用性。在VxWorks下給出了該模型的具體實現(xiàn)。通過實際應用,表明該模型及其具體實現(xiàn)執(zhí)行效率較高,且穩(wěn)定性較好。

        參考文獻(References)

        [1] 伍星,毛劍琳,遲毅林. 設備狀態(tài)監(jiān)測與診斷系統(tǒng)的概念模型[J]. 計算機工程, 2009, 35(12): 229-232.

        WU Xing,MAO Jian-lin,CHI Yi-lin. Conceptual model for equipment condition monitoring and diagnosis system[J]. Computer Engineering,2009,35(12):229-232.(in Chinese)

        [2] 毛宏宇,王豐貴,王文良,等. 基于數(shù)據(jù)流截獲技術(shù)的儀器狀態(tài)監(jiān)測方案[J]. 計算機工程, 2010, 36(2): 241-243.

        MAO Hong-yu,WANG Feng-gui,WANG Wen-liang, et al. Instruments status monitoring sc-heme based on data stream interception[J]. Computer Engineering, 2010,36(2):241-243.(in Chinese)

        [3] 陳佐,楊秋偉,萬新,等. 一種多線程負載均衡分析方法研究[J]. 計算機應用研究, 2011, 28(5): 1752-1755.

        CHENG Zuo,YANG Qiu-wei,WAN Xin, et al. Research on analyzing load equilibrium of mult-i-threads[J]. Aplication Research of Computers, 2011, 28(5): 1752-1755.(in Chinese)

        [4] 姚崇華,姜新紅,程凌宇,等. 多線程應用中的定時器管理算法[J]. 計算機工程, 2010, 36(2): 75-77.

        YAO Chong-hua, JANG Xin-hong,CHENG Ling-yu, et al. Timer management algorithm in multi-threads application[J]. Computer Engineering, 2010, 36(2): 75-77. (in Chinese)

        [5] 戴大蒙. 基于非阻塞式Winsock 的多線程網(wǎng)絡通信機制[J]. 計算機工程, 2006, 32(6): 137-139.

        DAI Da-meng. Multi-threads communication Mechanism based on non-blocking I/O Wins-Ock[J]. Computer Engineering, 2006, 32(6): 137-139. (in Chinese)

        猜你喜歡
        數(shù)據(jù)處理故障診斷
        認知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
        心理學報(2022年4期)2022-04-12 07:38:02
        ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
        凍干機常見故障診斷與維修
        基于量子萬有引力搜索的SVM自駕故障診斷
        MATLAB在化學工程與工藝實驗數(shù)據(jù)處理中的應用
        因果圖定性分析法及其在故障診斷中的應用
        Matlab在密立根油滴實驗數(shù)據(jù)處理中的應用
        基于LCD和排列熵的滾動軸承故障診斷
        基于WPD-HHT的滾動軸承故障診斷
        機械與電子(2014年1期)2014-02-28 02:07:31
        高速泵的故障診斷
        河南科技(2014年3期)2014-02-27 14:05:48
        91成人午夜性a一级毛片| 国产精品亚洲lv粉色| 性一交一乱一透一a级| 精品久久久久一区二区国产| 国产精品专区一区二区av免费看| 国产一区二区av免费观看| 青青青爽在线视频观看| 在线看亚洲十八禁网站| 国产颜射视频在线播放| 亚洲成人精品久久久国产精品| 精品久久久久久无码人妻蜜桃| 亚洲精品久久久久高潮| 欧美综合自拍亚洲综合百度| 久久亚洲中文字幕精品二区| av狠狠色丁香婷婷综合久久 | 久久精品丝袜高跟鞋| 久久久噜噜噜www成人网| 亚洲国产一区二区三区在线视频| 亚洲五月天中文字幕第一页| 中文人妻av久久人妻水蜜桃| 116美女极品a级毛片| 国产又爽又黄又不遮挡视频| 国产一区二区免费在线视频| 天天狠天天添日日拍| 日本一本久道| 国产性感主播一区二区| www国产亚洲精品久久麻豆| 中文字幕亚洲情99在线 | 91露脸半推半就老熟妇| 亚洲av无码精品色午夜在线观看 | 性生交大全免费看| 日产精品一区二区三区| 黑丝美腿国产在线观看| 不卡一卡二卡三乱码免费网站| 成人国产精品999视频| 99国产精品欲av麻豆在线观看 | 国产精品久久久久9999小说| 欧美成人久久久| 精品色老头老太国产精品| 亚洲va久久久噜噜噜久久天堂| 国产精品无码不卡一区二区三区|