<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 多線(xiàn)程技術(shù)在數據實(shí)時(shí)采集分析中的應用

多線(xiàn)程技術(shù)在數據實(shí)時(shí)采集分析中的應用

作者: 時(shí)間:2014-10-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/264056.htm

  數字接口設備是實(shí)現標準422到自定義轉換的專(zhuān)用通信設備。數字接口測試系統根據數字接口設備的工作原理,輸出422串行數據和自定義的控制信號(YCK,YZM)給數字接口設備,并對其輸出的串行數據(YDATA)進(jìn)行采集、存儲、分析和處理,從而達到對被測設備進(jìn)行檢測的目的。本數字接口測試系統共提供了八個(gè)測試通道,每個(gè)通道的422串行總線(xiàn)和自定義串行總線(xiàn)的相關(guān)參數都可由測試人員通過(guò)應用軟件進(jìn)行設置。為方便對數據進(jìn)行分析,同時(shí)在軟件上約定了發(fā)送的數據格式為:AA xx 01 23 45 67 89 AB CD EF 01 23… 10,其中幀頭為0xAA,幀尾為0x10,xx為發(fā)送計數器值,每發(fā)送一次依次加1。應用軟件通過(guò)相應的算法對自定義串行總線(xiàn)接收數據進(jìn)行實(shí)時(shí)分析和處理,如:已經(jīng)接收的字節數,共接收了多少幀數據,共出錯有多少字節……并將結果在測試界面上動(dòng)態(tài)顯示,測試人員可以根據這些實(shí)時(shí)的測試結果來(lái)判斷被測設備是否正常工作,一旦發(fā)現測試數據誤碼率太高,即可馬上斷電停止測試,防止被測設備燒壞。

  系統實(shí)現方案

  數字接口測試系統原理框圖如圖1所示。測試設備通過(guò)總線(xiàn)與操作控制計算機進(jìn)行連接,每臺測試設備提供了八個(gè)通道的數據發(fā)送和接收單元,其中數據發(fā)送單元用于輸出422異步串行數據,其波特率最高可達614.4 kbps,幀長(cháng)可根據測試要求進(jìn)行調整,每幀數據最高循環(huán)發(fā)送幀周期為5ms;數據接收單元用于產(chǎn)生自定義串行總線(xiàn)的控制信號YZM和YCK,并從YDATA讀回數據,YCK和YZM最高分別可達1.6384MHz和25.6kHz。

  

 

  由于測試過(guò)程中傳輸數據量大,且需要對采集回來(lái)的數據做實(shí)時(shí)分析,因此對數據的實(shí)時(shí)采集和分析采用多線(xiàn)程分別進(jìn)行處理。應用軟件中主界面線(xiàn)程主要負責完成人機界面操作,同時(shí)分別打開(kāi)數據采集和數據分析兩個(gè)線(xiàn)程來(lái)同步協(xié)調工作,為保證數據采集和分析過(guò)程的連續和數據完整,兩個(gè)線(xiàn)程之間通過(guò)開(kāi)辟高速內存緩沖區和內存映射文件的方式來(lái)實(shí)現高速數據流的一、二級緩沖。其中一級緩沖區實(shí)現對USB總線(xiàn)上傳數據的緩存,用于實(shí)現接收的USB數據包按照各個(gè)通道進(jìn)行數據分解;二級緩沖則按照通道號將分解輸出的數據分別進(jìn)行暫存,用于數據分析線(xiàn)程實(shí)現數據分析處理。整個(gè)方案中,數據包的上傳、存儲、數據分解、數據分析等操作均是在內存中完成,速度快,正確率高,再加上采用新的線(xiàn)程同步方法,既保證了數據采集線(xiàn)程高速數據吞吐量、數據分析線(xiàn)程的快速響應和實(shí)時(shí)分析,又保證了整個(gè)方案較高的性能和最低的系統開(kāi)銷(xiāo)。數據緩存處理如圖2。

  

 

  數據采集

  為了實(shí)現USB返回數據的保存,在內存中構建了一個(gè)12k的高速內存緩沖區,12k的空間以512字節(一個(gè)USB數據包的大小)為單位平均分成24等份。多線(xiàn)程同步中常用信號量來(lái)控制訪(fǎng)問(wèn)某一共享資源的線(xiàn)程數,結合操作系統中生產(chǎn)者和消費者的思想可采用擴展信號量的方式來(lái)完成線(xiàn)程同步。數據采集線(xiàn)程操作時(shí),12k高速緩沖區分別用讀寫(xiě)兩個(gè)信號量作為狀態(tài)指示,對數據讀入和輸出進(jìn)行控制。寫(xiě)信號量個(gè)數初始化為24個(gè)(表示有24個(gè)數據區間可寫(xiě)入),讀信號量個(gè)數初始化為0個(gè)(表示有0個(gè)空間有數據需要讀出),數據采集線(xiàn)程等效為生產(chǎn)者,數據分析線(xiàn)程等效為消費者。如圖3所示。USB接口每返回一包數據,首先判斷寫(xiě)信號量個(gè)數,為零則線(xiàn)程阻塞等待,不為零則實(shí)現數據寫(xiě)入操作,將USB數據包內容存入當前生產(chǎn)者指針(pWriteIndex)所指向地址的后512字節緩沖區中,完成后生產(chǎn)者指針加512,寫(xiě)信號量減1,讀信號量加1,這是生產(chǎn)的過(guò)程。當線(xiàn)程切換到數據分析線(xiàn)程后開(kāi)始消費(對采集回來(lái)的數據包分解處理),首先判斷讀信號量個(gè)數,為零(沒(méi)有可消費的)則線(xiàn)程阻塞等待,不為零則由消費者指針(pReadIndex)來(lái)控制讀取一包數據。一包數據讀取完畢后消費者指針加512,讀信號量減1,寫(xiě)信號量加1。由以上分析可知,整個(gè)12k的緩沖區在讀寫(xiě)兩個(gè)信號量的協(xié)調工作下不僅實(shí)現了數據采集和數據分析線(xiàn)程的同步,并且通過(guò)互鎖機制保證了生產(chǎn)者指針和消費者指針不會(huì )指向同一塊內存區域,使整個(gè)系統的可靠性得到顯著(zhù)提高。

  

 

  數據分析

  由于數字接口測試設備八個(gè)通道可同時(shí)工作,為了區別USB總線(xiàn)上傳的數據包中的數據分別對應哪一個(gè)通道的數據,并滿(mǎn)足數據傳輸的實(shí)時(shí)性要求,每個(gè)通道以64字節為單位將測試數據送入USB接口的內部緩沖區,其第一個(gè)字節用于標識隨后63字節是哪一個(gè)通道的數據,分別用01,02……07,08進(jìn)行標識。當USB接口的內部緩沖區填滿(mǎn)512字節后即通過(guò)USB總線(xiàn)上傳到計算機內存中的高速緩沖區。所以在數據分析時(shí)首先需要從USB數據包中提取每個(gè)通道回傳的測試數據,然后與標準格式數據進(jìn)行對比分析??梢?jiàn)若在長(cháng)時(shí)間測試時(shí),數據分析線(xiàn)程數據處理量大,任務(wù)繁重。為保證整個(gè)系統的實(shí)時(shí)性和數據分析準確性,測試接收回來(lái)的數據按照通道號不同分別保存在不同的內存映射文件中。

  數據分析線(xiàn)程在讀信號量和消費者指針的控制下成功讀取一包數據后,根據通道標示號提取此包中每個(gè)通道的數據,寫(xiě)入對應的內存映射文件中,再調用數據處理函數對每個(gè)通道數據做誤碼分析。誤碼分析的結果可由主界面線(xiàn)程調用顯示。數據分解流程如圖4所示。

  

 

  為了保證測試效率和數據處理的正確性,pWriteCounter既用于控制內存映射文件寫(xiě)入數據指針的移動(dòng),也用于判斷已接收的數據字節數,作為數據處理時(shí)讀內存映射文件指針的參考和是否開(kāi)始對數據進(jìn)行分析的條件。數據處理時(shí),并不是內存映射文件中寫(xiě)入數據后就馬上開(kāi)始分析,而是根據pWriteCounter確定已接收的數據字節數,直到接收回來(lái)大于一個(gè)標準幀長(cháng)度的數據后才開(kāi)始對此幀數據的誤碼率分析,這樣既避免了多次分析一幀數據,又保證了數據分析的正確性,而且減少了數據分析線(xiàn)程獨占CPU的時(shí)間。從最終實(shí)際運行結果來(lái)看,此方法有效解決了數據實(shí)時(shí)采集過(guò)程中掉數據的問(wèn)題。

  數據經(jīng)分解寫(xiě)入對應通道內存映射文件后,還需要實(shí)時(shí)地將每個(gè)通道接收回來(lái)的測試數據和標準數據進(jìn)行對比分析,并以誤碼率形式進(jìn)行顯示,測試人員根據實(shí)時(shí)變化的誤碼率即可監測數字接口設備是否工作正常。數據分析處理流程如圖5所示。在實(shí)際使用中,數字接口設備可能出現的故障現象較多,采集接收回來(lái)的數據量相當大且數據出錯情況各不相同,不能誤判或漏掉任何一種情況,通過(guò)反復測試得出以下對固定格式數據處理的方法:

 ?、購拿總€(gè)通道的內存映射文件中逐個(gè)字節掃描幀頭0xAA,一旦檢測到幀頭0xAA,進(jìn)入第②步。

  

 

 ?、谑紫扰袛啻藥瑪祿膸参恢檬欠駷?x10,以及幀尾的前一個(gè)數據和對應的標準數據(標準數據幀尾的前一個(gè)數)是否相同,若同時(shí)滿(mǎn)足這兩個(gè)條件,說(shuō)明此幀數據為標準幀(此幀數據長(cháng)度和發(fā)送的標準幀幀長(cháng)度相等),若不滿(mǎn)足進(jìn)行第④步操作。

 ?、叟袛啻藥瑸闃藴蕩?,從此幀數據和標準數據的第二位開(kāi)始到幀尾一一進(jìn)行對比判斷(跳過(guò)第0個(gè)幀頭數據和第1個(gè)計數器數據),不相等則記錄出錯,每發(fā)現一處錯誤字節,錯誤字節數加1。進(jìn)入第⑥步。

 ?、軓膸^到幀長(cháng)度數據范圍內查找是否出現0xAA,出現0xAA,首先用第②步操作判斷此0xAA是否為下一幀數據的幀頭,若是下一幀數據幀頭,記錄幀頭前一個(gè)字節為此幀幀尾位置,說(shuō)明此幀數據有掉數據現象,否則為錯誤數據,調用非標準幀處理。

 ?、輳拇藥瑪祿蜆藴蕯祿牡诙婚_(kāi)始到確定的該幀長(cháng)度范圍內數據進(jìn)行一一對比判斷 (跳過(guò)第0個(gè)幀頭數據和第1個(gè)計數器數據),不相等則記錄出錯,并判斷為錯誤一個(gè)字節。

 ?、迿z查該幀中計數器數據與前后幀的計數器數據是否連續,如果連續則沒(méi)有幀出錯,否則有掉幀現象出現,需要根據前后計數器數據確定掉幀的長(cháng)度,并轉化為對應錯誤字節數。

  同時(shí)接上兩個(gè)被測設備驗證整個(gè)系統的性能,即使每個(gè)通道均選擇工作在最高波特率614.4 kbps和最高循環(huán)發(fā)送幀周期5ms下,仍能保證數據采集實(shí)時(shí)高速、數據質(zhì)量穩定且誤碼率低。

  結束語(yǔ)

  實(shí)時(shí)測試與結果顯示如圖6所示。該技術(shù)已經(jīng)成功應用于某數字接口設備的檢測與維修系統,取得了良好的效果。經(jīng)大量測試驗證,此種多線(xiàn)程、內存映射文件和兩級緩沖的方法在高速實(shí)時(shí)數據采集和分析中效果很好。根據生產(chǎn)者和消費者的思想建立的讀寫(xiě)信號量有效地實(shí)現了采集和分析線(xiàn)程間的同步,內存映射文件的大小在開(kāi)始測試前申請為100M,當需要更長(cháng)時(shí)間測試時(shí)還可以動(dòng)態(tài)申請開(kāi)辟新的內存空間,既保證了系統的實(shí)時(shí)性要求,又有效節約了系統內存資源。

  

塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>