劉 瑤 庹先國 鄭洪龍
(西南科技大學(xué)國防科技學(xué)院,四川 綿陽 621010)
長距離α測(cè)量系統(tǒng)的實(shí)時(shí)數(shù)據(jù)采集軟件設(shè)計(jì)
劉 瑤 庹先國 鄭洪龍
(西南科技大學(xué)國防科技學(xué)院,四川 綿陽 621010)
為了掌握長距離α測(cè)量系統(tǒng)所測(cè)數(shù)據(jù)的實(shí)時(shí)變動(dòng)情況及后期對(duì)數(shù)據(jù)的分析與處理,提出一種軟件設(shè)計(jì)方案。融合RS-232串口與RS-232轉(zhuǎn)USB接口兩種方式實(shí)現(xiàn)對(duì)測(cè)量數(shù)據(jù)的接收,并通過ZedGraph圖形控件對(duì)測(cè)量數(shù)據(jù)進(jìn)行實(shí)時(shí)動(dòng)態(tài)顯示及統(tǒng)計(jì)分析,利用SQLite數(shù)據(jù)庫對(duì)測(cè)量數(shù)據(jù)進(jìn)行存儲(chǔ),實(shí)現(xiàn)歷史數(shù)據(jù)的在線與離線查詢。測(cè)試結(jié)果表明,該系統(tǒng)軟件具有較好的實(shí)時(shí)性與穩(wěn)定性,且動(dòng)態(tài)顯示過程流暢,適用于實(shí)時(shí)數(shù)據(jù)的獲取與顯示。
長距離α測(cè)量 數(shù)據(jù)采集 實(shí)時(shí) 串口 USB ZedGraph 統(tǒng)計(jì)分析 SQLite
目前,人們對(duì)核能的開發(fā)和利用的力度越來越大,在這一過程中,不可避免地會(huì)產(chǎn)生核污染。長距離α測(cè)量系統(tǒng)突破了常規(guī)α探測(cè)的局限,能夠高效地探測(cè)儀器管道內(nèi)壁和不規(guī)則面α污染的嚴(yán)重程度,現(xiàn)已得到了廣泛的應(yīng)用[1]。隨著計(jì)算機(jī)成為人們?nèi)粘I罴肮I(yè)生產(chǎn)中不可缺少的設(shè)備[2-3],如何利用先進(jìn)的計(jì)算機(jī)技術(shù)對(duì)長距離α測(cè)量系統(tǒng)的測(cè)量數(shù)據(jù)進(jìn)行高效地處理已成為一個(gè)亟待解決的問題,國內(nèi)已有部分研究人員對(duì)此進(jìn)行了探索并取得了研究成果。羅召霞基于長距離α測(cè)量技術(shù)研制了一臺(tái)管道內(nèi)表面α活度監(jiān)測(cè)儀,并設(shè)計(jì)了相應(yīng)的數(shù)據(jù)采集軟件,能夠通過串口實(shí)時(shí)獲取數(shù)據(jù)并進(jìn)行圖形化顯示[4],但顯示的數(shù)據(jù)量有限,不能顯示數(shù)據(jù)變動(dòng)的全貌;成毅等基于PDA設(shè)計(jì)了一種α測(cè)量軟件,能夠通過藍(lán)牙接收α測(cè)量儀器測(cè)得的能譜數(shù)據(jù)并進(jìn)行顯示[5],但由于其采用的是簡(jiǎn)單的文本存儲(chǔ)方式,使得后期對(duì)于歷史數(shù)據(jù)的查詢與分析變得比較復(fù)雜。
根據(jù)所作的需求分析,構(gòu)建的系統(tǒng)體系結(jié)構(gòu)如圖1所示,主要是由長距離α測(cè)量系統(tǒng)、接口模塊、數(shù)據(jù)動(dòng)態(tài)顯示與統(tǒng)計(jì)分析、數(shù)據(jù)庫4個(gè)部分組成。
圖1 α污染測(cè)量系統(tǒng)框架
長距離α測(cè)量系統(tǒng)包括α污染測(cè)量儀、電離室、導(dǎo)氣管道、供電電源等,文獻(xiàn)[6]對(duì)這一部分進(jìn)行了詳細(xì)的闡述。接口模塊設(shè)計(jì)了兩種方式。一種是計(jì)算機(jī)帶有RS-232接口,可直接通過串口線進(jìn)行通信;另一種是計(jì)算機(jī)不帶RS-232接口而只有USB接口,需要RS-232轉(zhuǎn)USB接口線支持, 這類轉(zhuǎn)接線通過USB接口連接計(jì)算機(jī),并安裝相應(yīng)的驅(qū)動(dòng)程序后即可在所接計(jì)算機(jī)上虛擬出一個(gè)COM端口,實(shí)現(xiàn)硬件設(shè)備與計(jì)算機(jī)的串口通信。計(jì)算機(jī)接收到數(shù)據(jù)后,一方面用于實(shí)時(shí)動(dòng)態(tài)顯示與統(tǒng)計(jì)分析,另一方面通過SQLite數(shù)據(jù)庫對(duì)其進(jìn)行存儲(chǔ),方便歷史數(shù)據(jù)的查詢與導(dǎo)出。
以Visual Studio 2010作為軟件開發(fā)工具,基于C#語言開發(fā)。結(jié)合系統(tǒng)體系結(jié)構(gòu)的劃分,設(shè)計(jì)軟件的功能模塊如圖2所示。該軟件功能模塊主要由數(shù)據(jù)接收模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)查詢模塊和數(shù)據(jù)分析模塊5個(gè)部分組成。
圖2 軟件功能模塊
數(shù)據(jù)接收模塊完成接口數(shù)據(jù)的接收。數(shù)據(jù)存儲(chǔ)模塊具備數(shù)據(jù)庫存儲(chǔ)以及導(dǎo)出至EXCEL表格保存2種功能,雙備份確保數(shù)據(jù)不會(huì)丟失。數(shù)據(jù)查詢模塊包括EXCEL查詢與數(shù)據(jù)庫查詢,其中EXCEL查詢方式可以直接打開相應(yīng)文件查看,也可以將數(shù)據(jù)導(dǎo)入軟件中進(jìn)行查看。數(shù)據(jù)顯示模塊包括表格實(shí)時(shí)記錄與圖形動(dòng)態(tài)顯示,其中圖形動(dòng)態(tài)顯示能夠?qū)⑺鶞y(cè)量數(shù)據(jù)全部顯示且畫面不會(huì)出現(xiàn)遲滯現(xiàn)象。數(shù)據(jù)分析模塊是利用統(tǒng)計(jì)學(xué)原理對(duì)所測(cè)量的數(shù)據(jù)作出分析。
3.1 數(shù)據(jù)接收模塊
對(duì)移動(dòng)學(xué)習(xí)(M-Learning)的研究始于1994年卡內(nèi)基梅隆的研究項(xiàng)目,該項(xiàng)目開創(chuàng)了移動(dòng)教育的先河。隨后E-Learning提供商借鑒E-Learning的相關(guān)經(jīng)驗(yàn),將移動(dòng)學(xué)習(xí)引入高校和企業(yè)培訓(xùn)。由教育機(jī)構(gòu)發(fā)起的針對(duì)中小學(xué)的教育信息化改革,則試圖通過新技術(shù)改善教學(xué)、學(xué)習(xí)和管理。
3.1.1 數(shù)據(jù)接收接口
① 計(jì)算機(jī)若有RS-232串口,則可用RS-232串口線連接長距離α測(cè)量系統(tǒng)與計(jì)算機(jī),并在計(jì)算機(jī)端通過SerialPort類完成串口的相關(guān)設(shè)置(端口號(hào)、波特率等),即可實(shí)現(xiàn)串口通信。
② 計(jì)算機(jī)若無串口而只有USB接口,則需要由RS-232轉(zhuǎn)USB接口線支持。轉(zhuǎn)接線一端是RS-232接口,用于連接長距離α測(cè)量系統(tǒng);另一端是USB接口,用于連接計(jì)算機(jī),在網(wǎng)上下載相應(yīng)的驅(qū)動(dòng)程序并安裝,即可在計(jì)算機(jī)端虛擬出一個(gè)串口。
對(duì)于虛擬串口的相關(guān)信息的獲取有兩種方式:一種是通過查看設(shè)備管理器;另一種是通過編程實(shí)現(xiàn),WMI有一個(gè)類(Win32_PNPEntity)可以返回“設(shè)備管理器”中所有設(shè)備的信息[7],通過虛擬串口的標(biāo)志符“Prolific USB-to-Serial Comm Port”進(jìn)行字符串搜索,即可定位到設(shè)備管理器信息中的虛擬串口,最后通過字符串操作提取出端口號(hào)COM*。
在設(shè)計(jì)時(shí),采用編程獲取虛擬串口信息。若在設(shè)備管理器信息中檢索時(shí)能夠返回虛擬串口信息,則說明接入計(jì)算機(jī)的是RS-232轉(zhuǎn)USB接口線,并將通信端口設(shè)置為虛擬端口號(hào),否則,將通信端口設(shè)置為默認(rèn)物理端口COM2。通過這種方式,無論采用RS-232串口線還是RS-232轉(zhuǎn)USB接口線接入計(jì)算機(jī),軟件都能夠自動(dòng)識(shí)別并完成對(duì)串口的設(shè)置。
3.1.2 數(shù)據(jù)接收原理
DotNet提供了SerialPort類進(jìn)行串口通信,讀取串口數(shù)據(jù)時(shí)有兩種方式:一種是新建一個(gè)線程用于實(shí)時(shí)讀取串口,該方式是線程每隔一定時(shí)間就讀取串口,而不論此時(shí)串口是否有接收到數(shù)據(jù);另一種是事件觸發(fā)方式,該方式以數(shù)據(jù)到達(dá)為觸發(fā)事件,觸發(fā)時(shí)通知主線程,然后再進(jìn)行數(shù)據(jù)讀取。由于線程實(shí)時(shí)讀串口相的接收數(shù)據(jù)的效率低于事件觸發(fā)方式,故設(shè)計(jì)時(shí)采用事件觸發(fā)方式。
SerialPort類封裝屏蔽了很多通信細(xì)節(jié),因此使用非常方便。事件觸發(fā)方式的編程實(shí)現(xiàn)方法是只需為SerialPort類的DataReceived事件綁定一個(gè)函數(shù),然后在該函數(shù)中調(diào)用適合的方法,從而實(shí)現(xiàn)對(duì)串口數(shù)據(jù)的讀取[8]。
3.1.3 數(shù)據(jù)接收過程
由于長距離α測(cè)量系統(tǒng)的測(cè)量數(shù)據(jù)是以字節(jié)格式向計(jì)算機(jī)發(fā)送數(shù)據(jù),故適合采用調(diào)用ReadByte()方法從串口中接收數(shù)據(jù)。當(dāng)數(shù)據(jù)接收速度大于數(shù)據(jù)處理速度時(shí),會(huì)出現(xiàn)數(shù)據(jù)丟失。
為了避免這種情況,在接收數(shù)據(jù)后并不立即處理,而是將接收到的數(shù)據(jù)存入隊(duì)列中。當(dāng)隊(duì)列不為空時(shí),即從隊(duì)列中取出數(shù)據(jù)進(jìn)行處理。由于隊(duì)列采用先進(jìn)先出方式,因此從隊(duì)列中取出數(shù)據(jù)時(shí)可以保持?jǐn)?shù)據(jù)的原有順序[9]。
下面以測(cè)量本底電流(無污染源的情況下測(cè)量得到的數(shù)據(jù))為例,說明數(shù)據(jù)的接收流程,如圖3所示。
圖3 數(shù)據(jù)接收流程
從串口接收到數(shù)據(jù)后存入隊(duì)列,當(dāng)隊(duì)列不為空時(shí),即從隊(duì)列中取出首字節(jié),判斷其是否為數(shù)據(jù)包的標(biāo)志字節(jié)“0x42”,若不是,繼續(xù)取出下一個(gè)字節(jié)進(jìn)行判斷,直至取到“0x42”;然后從隊(duì)列中取出連續(xù)的4個(gè)字節(jié)(高位在前),即完成一個(gè)完整數(shù)據(jù)包的獲?。蛔詈笸ㄟ^進(jìn)制轉(zhuǎn)換算法將這4個(gè)字節(jié)數(shù)據(jù)轉(zhuǎn)換得到一個(gè)十進(jìn)制數(shù)據(jù),即為最后的結(jié)果。
3.2 數(shù)據(jù)顯示模塊
3.2.1 表格實(shí)時(shí)記錄
在獲取數(shù)據(jù)并轉(zhuǎn)換為十進(jìn)制結(jié)果后,需要將數(shù)值進(jìn)行前端顯示,在此采用Dot Net自帶的DataGridView表格控件對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)記錄。通過控件提供的方法Insert(行索引,當(dāng)前時(shí)間,測(cè)量值)將數(shù)據(jù)插入到行索引處,并調(diào)用Refresh()方法即可顯示新插入的數(shù)據(jù)。
3.2.2 圖形化動(dòng)態(tài)顯示
為了直觀地了解測(cè)量結(jié)果的增減變動(dòng)情況,軟件添加了圖形顯示的功能。設(shè)計(jì)時(shí)有三種方案。第一種方案采用商業(yè)的報(bào)表開發(fā)工具內(nèi)含的統(tǒng)計(jì)圖表功能,其優(yōu)點(diǎn)是功能全面,缺點(diǎn)是商業(yè)控件是收費(fèi)的,會(huì)增加軟件的開發(fā)成本;第二種方案是采用DotnetCharting圖形控件,其優(yōu)點(diǎn)是控件免費(fèi),水晶式效果炫目,圖表效果好;缺點(diǎn)是性能稍差、不支持縮放;第三種方案是采用ZedGraph圖形控件,可用于創(chuàng)建折線圖、餅圖、柱狀圖,其優(yōu)點(diǎn)是控件免費(fèi)并且代碼開源,可以修改代碼以適應(yīng)具體的需求,性能較好,支持縮放和拖動(dòng)功能;缺點(diǎn)是圖表效果稍差。由于軟件是需要對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行顯示,對(duì)性能要求較高,因此采用第三種方案。
ZedGraph圖形控件綁定了PointPairList數(shù)據(jù)集,實(shí)現(xiàn)時(shí),指定該數(shù)據(jù)集顯示的圖樣形式為折線圖,當(dāng)DataGirdView表格中有數(shù)據(jù)更新時(shí),將更新的數(shù)據(jù)點(diǎn)(時(shí)間,測(cè)量值)添加至該數(shù)據(jù)集,并調(diào)用坐標(biāo)適應(yīng)方法AxisChange()與更新方法Refresh(),即可在圖形面板上動(dòng)態(tài)地顯示測(cè)量結(jié)果的變動(dòng)的情況[10]。
3.3 數(shù)據(jù)存儲(chǔ)模塊
3.3.1 數(shù)據(jù)庫存儲(chǔ)
軟件采用SQLite數(shù)據(jù)庫對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),該數(shù)據(jù)庫無需任何初始化配置文件,無安裝卸載過程,也不存在服務(wù)器實(shí)例的啟動(dòng)與停止,操作方便、易于維護(hù)。
數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì)有兩種方案。一種方案是將需要存儲(chǔ)的信息(測(cè)量起始時(shí)間、測(cè)量時(shí)間間隔、電流測(cè)量值等)存儲(chǔ)在一個(gè)表中。其優(yōu)點(diǎn)是表設(shè)計(jì)簡(jiǎn)單,查詢操作的編程容易;缺點(diǎn)是存在數(shù)據(jù)冗余。另一種方案是根據(jù)表中數(shù)據(jù)的關(guān)系,設(shè)計(jì)出不同的表,用于存儲(chǔ)不同的數(shù)據(jù)。其優(yōu)點(diǎn)是減少數(shù)據(jù)冗余,優(yōu)化了數(shù)據(jù)表;缺點(diǎn)是設(shè)計(jì)復(fù)雜。為了使數(shù)據(jù)存儲(chǔ)更有效率,設(shè)計(jì)中采用第二種方案。根據(jù)所需存儲(chǔ)的信息,設(shè)計(jì)的數(shù)據(jù)庫E-R圖如圖4所示。
圖4 數(shù)據(jù)庫E-R圖
其中,測(cè)量信息表中的內(nèi)容包括測(cè)量起始時(shí)間、測(cè)量結(jié)束時(shí)間、測(cè)量用時(shí)、測(cè)量時(shí)間間隔等,目標(biāo)電流記錄表與本底電流記錄表是根據(jù)長距離α測(cè)量系統(tǒng)所測(cè)的不同內(nèi)容作出的相應(yīng)記錄。
3.3.2 EXCEL表格保存
為避免測(cè)量數(shù)據(jù)發(fā)生丟失,除采用數(shù)據(jù)庫存儲(chǔ)外,還通過將DataGridView表格數(shù)據(jù)導(dǎo)出至EXCEL表格的方式進(jìn)行保存。實(shí)現(xiàn)時(shí),新建EXCEL工作表,并將DataGridView表格中的數(shù)據(jù)一行一行地寫入工作表中[11]。需要特別注意的是,每一次的導(dǎo)出操作,在新建EXCEL工作表后都會(huì)創(chuàng)建EXCEL.EXE進(jìn)程,所以在寫入操作完成之后,需要銷毀EXCEL.EXE進(jìn)程,否則,隨著導(dǎo)出操作次數(shù)的增加,該進(jìn)程會(huì)不斷地消耗內(nèi)存。
3.4 數(shù)據(jù)分析模塊
為測(cè)試軟件各功能模塊的實(shí)現(xiàn)情況以及運(yùn)行的穩(wěn)定性,設(shè)置測(cè)量時(shí)間間隔為1 s,總耗時(shí)4 h,共計(jì)接收14 402個(gè)數(shù)據(jù)點(diǎn),測(cè)試得到的效果圖如圖5所示。
圖5 軟件功能測(cè)試圖
圖5(a)展示了測(cè)量數(shù)據(jù)的圖形化動(dòng)態(tài)顯示;圖5(b)展示了測(cè)量數(shù)據(jù)的表格記錄過程;圖5(c)是對(duì)這次測(cè)量數(shù)據(jù)所做的統(tǒng)計(jì)分析,在圖中除了給出頻率直方圖與正態(tài)分布曲線的比對(duì)之外,還列示了各類指標(biāo)數(shù)據(jù)(平均值,均值等)。根據(jù)這些數(shù)據(jù),可得到該組測(cè)量數(shù)據(jù)的置信分布情況,如表1所示。
通過對(duì)圖樣中頻率直方圖與正態(tài)分布曲線的對(duì)比,并考慮表1中試驗(yàn)概率相對(duì)于理論概率的偏差程度,可知,這組數(shù)據(jù)近似滿足正態(tài)分布,可靠性較高。
從測(cè)試結(jié)果來看,軟件滿足了設(shè)計(jì)的要求,各功能模塊能夠有效地工作且運(yùn)行穩(wěn)定。
表1 測(cè)量數(shù)據(jù)的置信分布情況
針對(duì)目前α測(cè)量數(shù)據(jù)采集軟件所存在的不足,本文設(shè)計(jì)了一種長距離α測(cè)量系統(tǒng)實(shí)時(shí)數(shù)據(jù)采集軟件。該軟件融合了RS-232串口與RS-232轉(zhuǎn)USB接口兩種方式,能夠自動(dòng)識(shí)別接口并進(jìn)行相關(guān)設(shè)置,并通過ZedGraph圖形控件實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)的動(dòng)態(tài)顯示;采用SQLite數(shù)據(jù)庫與Excel表格對(duì)數(shù)據(jù)進(jìn)行雙備份,通過對(duì)存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì),優(yōu)化了存儲(chǔ)效率;此外,運(yùn)用統(tǒng)計(jì)學(xué)知識(shí)對(duì)測(cè)量數(shù)據(jù)進(jìn)行分析,判定了該組數(shù)據(jù)的可靠性。最后,通過測(cè)試實(shí)例,驗(yàn)證了所設(shè)計(jì)軟件的實(shí)用性及穩(wěn)定性。
[1] 付軍,庹先國,廖哲,等.LRAD技術(shù)在α表面污染監(jiān)測(cè)中的應(yīng)用[J].核電子學(xué)與探測(cè)技術(shù),2007,27(5):830-832,851.
[2] 孟亞輝.淺談軟件項(xiàng)目開發(fā)過程中的需求分析[J].科技信息,2009,26(11):435-436.
[3] 羅薇紅.計(jì)算機(jī)軟件需求分析及開發(fā)研究[J].信息通信,2013,27(2):177.
[4] 羅召霞.管道內(nèi)表面α活度監(jiān)測(cè)系統(tǒng)研制[D].成都:成都理工大學(xué),2012.
[5] 成毅,周傳文,庹先國,等.基于PDA&MCU的便攜式α測(cè)量系統(tǒng)[J].核電子學(xué)與探測(cè)技術(shù),2011,31(8):894-898.
[6] 付軍.長距離α污染測(cè)量儀的研制[D].成都:成都理工大學(xué),2008.
[7] 陳杰新.如何獲取設(shè)備管理器的明細(xì)[J].黑龍江科技信息,2009,13(24):65.
[8] 龔新文.串口通信在VS2008中的實(shí)現(xiàn)與應(yīng)用[J].電腦與電信,2011,17(3):47-48,51.
[9] 江澤鵬.三菱PLC串口通信時(shí)數(shù)據(jù)沖突的解決方法[J].自動(dòng)化應(yīng)用,2013,54(6):58-59,71.
[10]朱亦鋼.應(yīng)用ZedGraph高效開發(fā)數(shù)據(jù)圖表[J].電腦編程技巧與維護(hù),2009,16(12):59-61,124.
[11] 李紀(jì)軍.將DataGridView中數(shù)據(jù)導(dǎo)出到Excel[J].電腦編程技巧與維護(hù),2012,19(15):64-66.
[12]吳治華.原子核物理實(shí)驗(yàn)方法[M].北京:原子能出版社,1997:4-16.
Design of the Real-time Data Acquisition Software for Long RangeαMeasurement System
In order to master the real time changes of the measured data in long rangeαmeasurement system, and to analyze and process the data in later period, the software design strategy is proposed. The measured data can be
through both RS-232 serial port mode, and RS-232 to USB mode; and the measured data can be dynamically displayed and statistically analyzed in real time through ZedGraph graphic control. By adopting SQLite database, the historical data are stored for online and offline inquiries. The test results indicate that the system software possesses better real time performance and stability; and the dynamic display process is smooth, it is suitable for real time data acquisition and display.
Long rangeαmeasurement Data acquisition Real-time Serial port USB ZedGraph Statistical analysis SQLite
國家自然科學(xué)基金資助項(xiàng)目(編號(hào):413741301)。
劉瑤(1991-),男,現(xiàn)為西南科技大學(xué)控制科學(xué)與工程專業(yè)在讀碩士研究生;主要從事計(jì)算機(jī)應(yīng)用方面的研究。
TP319
A
10.16086/j.cnki.issn1000-0380.201509017
修改稿收到日期:2015-01-10。