周紀(jì)森,許 潔
(成都理工大學(xué) 核技術(shù)與自動(dòng)化工程學(xué)院,四川 成都 610059)
中子能譜測(cè)量在輻射防護(hù)領(lǐng)域有著重要意義,有利于獲得環(huán)境中的中子劑量,是進(jìn)行中子輻射防護(hù)的基礎(chǔ)。多球中子譜儀由于具有各向同性響應(yīng)、測(cè)量范圍廣、易操作等優(yōu)點(diǎn)被廣泛應(yīng)用于中子能譜測(cè)量活動(dòng)中。本課題組自主研發(fā)的具有5層同心空隙的抽注水多層同心球中子譜儀[1-5]采用水作為主要慢化材料,通過控制5層間隙抽水和注水組合出32種不同厚度的慢化水層,通過水層厚度與中心探測(cè)器測(cè)量中子計(jì)數(shù)之間的關(guān)系反演出中子能譜。
課題組已對(duì)抽注水多層同心中子譜儀系統(tǒng)開展了一系列的研究,黃紅等人[6]完成了譜儀的理論模擬和結(jié)構(gòu)設(shè)計(jì);劉志和馮晨等人[7-8]設(shè)計(jì)了抽注水系統(tǒng),通過USB通信實(shí)現(xiàn)了PC端控制譜儀的抽注水;穆克亮等人[9]設(shè)計(jì)了單泵抽注水裝置,并計(jì)算出水層組合的最優(yōu)方案,提升了系統(tǒng)工作效率;??礫10]使用神經(jīng)網(wǎng)絡(luò)算法開展了中子能譜反演研究;喬宇潔[11]開展了譜儀周圍劑量當(dāng)量校正模型研究;張燦[12]通過遺傳算法優(yōu)化球?qū)映樽⑺袚Q方案,節(jié)省了測(cè)量時(shí)間。但對(duì)該譜儀配套的手機(jī)端控制軟件尚缺乏相關(guān)研究。因此,本文基于Android Studio 4.2 平臺(tái)設(shè)計(jì)開發(fā)了抽注水多層同心球中子譜儀控制助手APP(以下簡(jiǎn)稱“控制助手APP”),通過手機(jī)控制下位機(jī),實(shí)現(xiàn)對(duì)抽注水多層同心球中子譜儀中的球?qū)涌刂?、顯示和設(shè)備管理。
如圖1所示控制助手APP采用三層架構(gòu)設(shè)計(jì),包括界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。界面層負(fù)責(zé)建立APP與用戶之間的良好交互;業(yè)務(wù)邏輯層實(shí)現(xiàn)控制助手APP的功能;數(shù)據(jù)訪問層則進(jìn)行數(shù)據(jù)庫(kù)的相關(guān)操作,處理APP運(yùn)行產(chǎn)生的用戶信息、指令碼和日志信息等。
圖1 控制助手APP整體架構(gòu)
根據(jù)系統(tǒng)設(shè)計(jì)的目標(biāo)和實(shí)際需要,控制助手APP主要包括用戶管理模塊、水層管理模塊、數(shù)據(jù)管理模塊、設(shè)備監(jiān)控模塊和系統(tǒng)設(shè)置模塊共5個(gè)模塊,其具體功能結(jié)構(gòu)如圖2所示。
圖2 控制助手APP功能模塊
2.1.1 用戶管理模塊
用戶管理模塊負(fù)責(zé)用戶的注冊(cè)、登錄和注銷等相關(guān)操作。在用戶注冊(cè)時(shí),將用戶信息保存至SQL Server數(shù)據(jù)庫(kù)和SQLite數(shù)據(jù)庫(kù)中,密碼采用“MD5”方式加密保存,增加了用戶信息的安全性。同時(shí),設(shè)置用戶注銷功能,便于用戶退出當(dāng)前用戶賬號(hào),返回登錄界面切換賬號(hào)。此外,為了防止用戶因遺忘密碼而無(wú)法登錄,設(shè)置“密碼找回”功能,用戶通過回答注冊(cè)時(shí)設(shè)置的密保問題找回用戶密碼。系統(tǒng)以用戶名作為依據(jù),對(duì)多球譜儀的運(yùn)行數(shù)據(jù)進(jìn)行分類管理。因此,用戶需要完成賬號(hào)注冊(cè)和登錄后才能使用控制助手APP。
2.1.2 水層管理模塊
水層管理是控制助手APP的核心功能,用戶可以根據(jù)不同需求靈活選擇單層控制或組合控制,其中單層控制表示一次發(fā)送一個(gè)球?qū)拥某樗蜃⑺僮鞯目刂浦噶畹较挛粰C(jī);組合控制表示依次自動(dòng)發(fā)送用戶制定的多個(gè)球?qū)拥某樗蜃⑺僮鞯目刂浦噶畹较挛粰C(jī)。下位機(jī)根據(jù)指令自動(dòng)完成一個(gè)或多個(gè)球?qū)拥某樗蜃⑺僮?。在抽水和注水的過程中,在控制助手APP界面實(shí)時(shí)顯示當(dāng)前抽水或注水的時(shí)長(zhǎng)、流量大小、球?qū)拥囊何灰约捌渌O(shè)備工作信息,便于用戶直觀了解譜儀狀態(tài)。
2.1.3 設(shè)備監(jiān)控模塊
設(shè)備監(jiān)控模塊可以查看譜儀相關(guān)功能部件的運(yùn)行狀態(tài)信息,以便用戶實(shí)時(shí)監(jiān)控譜儀相關(guān)設(shè)備的狀態(tài)。系統(tǒng)自動(dòng)解析功能部件的運(yùn)行狀態(tài)數(shù)據(jù)判斷設(shè)備是否發(fā)生故障,若發(fā)生故障,APP啟動(dòng)緊急停止功能,并通知用戶處理該故障,同時(shí)也為用戶提供故障診斷依據(jù)。
2.1.4 系統(tǒng)設(shè)置模塊
系統(tǒng)設(shè)置模塊負(fù)責(zé)設(shè)置APP數(shù)據(jù)顯示格式等相關(guān)參數(shù)、連接目標(biāo)WiFi、日志管理等。其中日志信息包含了用戶的登錄信息、譜儀操作信息和參數(shù)更改記錄等。
2.1.5 數(shù)據(jù)管理模塊
數(shù)據(jù)管理模塊負(fù)責(zé)處理用戶使用控制助手APP產(chǎn)生的指令碼、操作記錄、組合方案等數(shù)據(jù),并將數(shù)據(jù)顯示在控制助手界面上。數(shù)據(jù)保存在SQL Server和SQLite兩個(gè)數(shù)據(jù)庫(kù)中,其中SQL Server為遠(yuǎn)程服務(wù)器中的數(shù)據(jù)庫(kù),用于數(shù)據(jù)備份;SQLite為本地?cái)?shù)據(jù)庫(kù),用于存儲(chǔ)實(shí)時(shí)數(shù)據(jù)。安裝控制助手APP后,每次啟動(dòng)時(shí)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)同步,檢測(cè)該用戶在SQL Server數(shù)據(jù)庫(kù)與SQLite數(shù)據(jù)庫(kù)內(nèi)的操作日志、控制方案等數(shù)據(jù)是否存在差異,若存在則根據(jù)SQL Server數(shù)據(jù)庫(kù)進(jìn)行同步,避免用戶因手機(jī)損壞等意外以及使用多個(gè)手機(jī)進(jìn)行譜儀控制操作而導(dǎo)致的本地?cái)?shù)據(jù)缺失。
控制助手APP的運(yùn)行流程如圖3所示。用戶注冊(cè)賬號(hào)后登錄APP,進(jìn)入APP后用戶可以在側(cè)滑頁(yè)中設(shè)置數(shù)據(jù)顯示格式等相關(guān)參數(shù),并輸入IP和端口號(hào)連接目標(biāo)WiFi。在連接目標(biāo)WiFi后,用戶可以在主界面中選擇水層管理、設(shè)備管理和歷史記錄等功能進(jìn)行操作。
圖3 控制助手APP工作流程
使用Android開發(fā)應(yīng)用時(shí),將消耗時(shí)間過長(zhǎng)的任務(wù)放置于主線程中會(huì)導(dǎo)致應(yīng)用的運(yùn)行速度和響應(yīng)速度變慢[13],因此在控制助手APP中使用Thread類和Runnable接口兩種方式進(jìn)行多線程開發(fā),將數(shù)據(jù)收發(fā)、數(shù)據(jù)庫(kù)連接和數(shù)據(jù)庫(kù)操作等耗時(shí)長(zhǎng)的任務(wù)放入子線程的run()方法中,主線程根據(jù)需要調(diào)用start()方法啟動(dòng)子線程執(zhí)行操作。若子線程需要更改系統(tǒng)UI,可以通過Handler實(shí)現(xiàn)與主線程之間的消息傳遞,完成系統(tǒng)UI更改。其中,子線程調(diào)用Handler.sendMessage()方法將消息傳遞給主線程,主線程通過識(shí)別不同的Message.what和Message.obj對(duì)象內(nèi)容,執(zhí)行相應(yīng)操作。
用戶在主界面中利用單選按鈕組選擇某一球?qū)映樗蜃⑺δ芎笊晒δ苤噶畲a,APP將功能指令碼發(fā)送到下位機(jī)實(shí)現(xiàn)單層控制。用戶若需要一次性完成多個(gè)球?qū)拥目刂?,需要在組合方案置頂界面制定方案后,點(diǎn)擊“組合控制”按鈕啟動(dòng)組合控制功能;此時(shí),APP根據(jù)接收的數(shù)據(jù)判斷下位機(jī)是否正在執(zhí)行指令操作。若正在執(zhí)行指令操作,則等待完成;若下位機(jī)為空閑狀態(tài),則發(fā)送控制指令到下位機(jī)。如此循環(huán)直至組合方案的指令全部發(fā)送,則完成組合控制。
控制助手APP在發(fā)送控制指令到下位機(jī)前會(huì)檢測(cè)數(shù)據(jù)庫(kù)中當(dāng)前指令所控制球?qū)拥臓顟B(tài),若為目標(biāo)狀態(tài)則彈出提示語(yǔ)并取消發(fā)送該控制指令,反之則將控制指令發(fā)送至下位機(jī),防止用戶對(duì)某球?qū)舆M(jìn)行連續(xù)注水或抽水等操作。下位機(jī)完成一條控制指令操作后發(fā)送球?qū)拥淖钚聽顟B(tài)信息給APP,APP識(shí)別反饋信息后將所操作球?qū)拥淖钚聽顟B(tài)與預(yù)期狀態(tài)比較,若與預(yù)期狀態(tài)不一致則表示存在故障,需要及時(shí)進(jìn)行檢查維修。
進(jìn)行球?qū)映樽⑺刂撇僮鲿r(shí),控制助手APP解析接收的數(shù)據(jù)并得到下位機(jī)發(fā)送的霍爾流量計(jì)脈沖信號(hào)的頻率;根據(jù)流量計(jì)輸出脈沖頻率與流量之間的關(guān)系,并結(jié)合抽注水多層同心球中子譜儀實(shí)際抽注水情況進(jìn)行校正,得到抽水或注水時(shí)的水流流量。同時(shí),調(diào)用Date類對(duì)象獲取開始工作和完成工作的時(shí)間,計(jì)算得到球?qū)映樗?、注水工作時(shí)間,并結(jié)合流量大小獲得球?qū)觾?nèi)的液體體積,將相關(guān)信息在主界面中實(shí)時(shí)顯示。
WiFi通信模式分為客戶端模式和服務(wù)器模式,這兩種模式通過繼承Thread類封裝成TCP_Client和TCP_Server兩個(gè)線程,在線程內(nèi)采用Socket通信實(shí)現(xiàn)控制助手APP與WiFi模塊之間的通信。以用戶選擇客戶端通信模式為例,輸入目標(biāo)的IP和端口號(hào),點(diǎn)擊“連接”按鈕對(duì)IP和端口號(hào)進(jìn)行判斷,若正確則啟動(dòng)相應(yīng)線程,連接目標(biāo)WiFi;若錯(cuò)誤則彈出提示語(yǔ)。成功建立WiFi通信后,通過調(diào)用Socket的getInputStream.read()方法獲取輸入流接收數(shù)據(jù),調(diào)用getOutputStream.write()方法獲取輸出流發(fā)送數(shù)據(jù)。同時(shí),設(shè)置setWifiNeverSleep()函數(shù),修改手機(jī)WiFi設(shè)置選項(xiàng),防止測(cè)量時(shí)間過長(zhǎng)導(dǎo)致WiFi進(jìn)入休眠狀態(tài)和斷開連接。
將控制助手APP的API級(jí)別設(shè)置為21,保證控制助手APP可以在Android 5.0及以上版本的安卓智能手機(jī)上運(yùn)行??刂浦諥PP在調(diào)試無(wú)誤后生成apk文件進(jìn)行相關(guān)測(cè)試。
在優(yōu)測(cè)云服務(wù)平臺(tái)選擇兼容性測(cè)試和云真機(jī)項(xiàng)目進(jìn)行在線測(cè)試。測(cè)試設(shè)備選擇兩種:(1)HUAWEI YAL-AL10型手機(jī):運(yùn)行內(nèi)存為8.0 GB,存儲(chǔ)為128 GB,處理器為HUAWEI Kirin 980,系 統(tǒng) 為 HarmonyOS 2.00;(2)HUAWEI TASAN00型手機(jī):運(yùn)行內(nèi)存為8.0 GB,存儲(chǔ)為256 GB,處理器為HUAWEI Kirin 990 5G,系統(tǒng)為HarmonyOS 2.00。
測(cè)試結(jié)果顯示,控制助手APP可以在Android 5.0及以上版本的多種型號(hào)手機(jī)上流暢運(yùn)行,無(wú)閃退和卡頓等現(xiàn)象;界面布局合理,人機(jī)交互友好,能夠適應(yīng)不同屏幕尺寸的手機(jī)。
打開控制助手APP,首先會(huì)出現(xiàn)帶有抽注水多層同心球中子譜儀logo的圖片,持續(xù)1 s后進(jìn)入APP登錄界面,若用戶尚未注冊(cè)則進(jìn)入注冊(cè)界面完成注冊(cè)。用戶在登錄界面輸入賬號(hào)和密碼后,APP進(jìn)行識(shí)別。若正確則進(jìn)入主界面,若存在錯(cuò)誤則會(huì)在錯(cuò)誤位置顯示紅色錯(cuò)誤標(biāo)志,點(diǎn)擊錯(cuò)誤標(biāo)志顯示錯(cuò)誤提示。若用戶遺忘了密碼,點(diǎn)擊“忘記密碼”后跳轉(zhuǎn)至密碼找回界面,輸入賬號(hào)和賬號(hào)密保問題的正確答案后,系統(tǒng)提示“答案正確,該賬號(hào)密碼如下”即可找回密碼。
為檢驗(yàn)控制助手APP是否滿足譜儀球?qū)涌刂埔?,?duì)控制助手APP進(jìn)行譜儀球?qū)映樽⑺刂茖?shí)驗(yàn)。實(shí)驗(yàn)設(shè)備有抽注水多層同心球中子譜儀一臺(tái)、HUAWEI YAL-AL10型手機(jī)一臺(tái)、控制箱一個(gè)、USR-W610 WiFi模塊一個(gè)、水箱一個(gè)、透明軟管若干以及相關(guān)線纜。
模擬中子測(cè)量時(shí)的測(cè)量環(huán)境,將抽注水多層同心球中子譜儀放置于實(shí)驗(yàn)室內(nèi)距離門2 m位置處,把控制箱放置于譜儀旁邊,控制箱通過透明軟管連接抽注水多球同心球中子譜儀。連接完成并檢查正確性后接通電源。USR-W610 WiFi模塊作為服務(wù)器創(chuàng)建名稱為“USR-W610-49D8”的WiFi信號(hào),測(cè)試現(xiàn)場(chǎng)如圖4所示。
使用HUAWEI YAL-AL10型手機(jī)安裝控制助手APP,登錄APP后連接名稱為“USR-W610-49D8”的WiFi信號(hào),開始測(cè)試。
首先進(jìn)行單層控制測(cè)試。在主界面中依次選擇“注水+第一層”“注水+第二層”“注水+第三層”“注水+第四層”“注水+第五層”和“注水+所有層”功能,將控制指令發(fā)送到下位機(jī);下位機(jī)接收到控制指令后,可以控制控制箱內(nèi)的水泵和電磁閥完成指定球?qū)幼⑺僮?。然后依次選擇“抽水+第一層”“抽水+第二層”“抽水+第三層”“抽水+第四層”“抽水+第五層”和“抽水+所有層”功能,將控制指令發(fā)送到下位機(jī),下位機(jī)接收到控制指令后,可以控制控制箱內(nèi)的水泵和電磁閥完成指定球?qū)映樗僮?。選擇“取消”功能,可以控制下位機(jī)停止當(dāng)前操作。
控制助手APP工作時(shí),在主界面中可以實(shí)時(shí)顯示譜儀的狀態(tài),主界面如圖5所示。主界面采用約束布局[14],可以適應(yīng)不同屏幕尺寸的智能手機(jī)。界面上方顯示譜儀5個(gè)球?qū)拥囊何恍畔ⅰ?dāng)前操作項(xiàng)目和譜儀相關(guān)的設(shè)備信息。界面中間顯示發(fā)送和接收數(shù)據(jù),其中文字是指令碼的注解。界面下方的5個(gè)指示燈顯示譜儀的各個(gè)球?qū)訝顟B(tài),其中綠色常亮表示該球?qū)油瓿勺⑺僮鳎G色閃爍表示該球?qū)诱谶M(jìn)行注水操作,紅色常亮表示該球?qū)油瓿沙樗僮?,紅色閃爍表示該球?qū)诱谶M(jìn)行抽水操作,灰色表示該球?qū)游催M(jìn)行任何操作。
圖5 控制助手APP主界面
進(jìn)行組合控制測(cè)試。在主界面點(diǎn)擊“方案定制”跳轉(zhuǎn)方案制定界面,根據(jù)最優(yōu)球?qū)咏M合順序制定控制方案。方案制定完成后,點(diǎn)擊“應(yīng)用”按鈕返回主界面,點(diǎn)擊“組合控制”按鈕啟動(dòng)組合控制功能。當(dāng)下位機(jī)空閑時(shí),APP可以自動(dòng)發(fā)送控制指令到下位機(jī),下位機(jī)能夠執(zhí)行相應(yīng)操作;當(dāng)下位機(jī)繁忙時(shí),APP則會(huì)等待,直至方案的所有控制操作全部完成。
測(cè)試結(jié)果表明,控制助手APP可以通過WiFi通信建立與下位機(jī)之間的通信,發(fā)送控制指令至下位機(jī),下位機(jī)接收后可以執(zhí)行指定操作;下位機(jī)發(fā)送譜儀狀態(tài)信息至控制助手APP,經(jīng)過解析后可以在主界面上實(shí)時(shí)顯示譜儀和流量計(jì)等設(shè)備的狀態(tài);組合控制功能實(shí)現(xiàn)了球?qū)幼詣?dòng)化切換,減輕了操作人員的工作量。控制助手APP滿足了手機(jī)端控制譜儀球?qū)映樽⑺捅O(jiān)測(cè)譜儀狀態(tài)的功能需求。
控制助手APP的核心功能是控制譜儀球?qū)舆M(jìn)行抽水或注水作業(yè),其響應(yīng)時(shí)間直接影響著用戶體驗(yàn)。因此以用戶開始發(fā)送控制指令后等待下位機(jī)返回反饋信息的響應(yīng)時(shí)間作為性能衡量標(biāo)準(zhǔn),并與目前使用電腦USB通信方式控制的響應(yīng)時(shí)間進(jìn)行比較。測(cè)試以控制譜儀的第一層球?qū)舆M(jìn)行注水操作為目標(biāo),分別使用控制助手APP和電腦重復(fù)測(cè)量5次響應(yīng)時(shí)間,取平均值為最終數(shù)據(jù)。
由表1測(cè)試結(jié)果可知,使用控制助手APP控制譜儀的平均響應(yīng)時(shí)間為5.90 s,使用電腦控制譜儀的平均響應(yīng)時(shí)間為5.89 s,兩者基本相同。故控制助手APP能夠滿足手機(jī)端控制譜儀球?qū)映樽⑺男阅苄枨蟆?/p>
表1 響應(yīng)時(shí)間測(cè)試結(jié)果
本文基于Android Studio 4.2平臺(tái)開發(fā)出抽注水多層同心球中子譜儀控制助手APP,設(shè)計(jì)了用戶管理、水層管理、數(shù)據(jù)管理、設(shè)備管理和系統(tǒng)設(shè)置共5個(gè)功能模塊,使用約束布局完成了APP界面設(shè)計(jì),采用多線程技術(shù)實(shí)現(xiàn)了WiFi通信、單層控制、組合控制、譜儀狀態(tài)顯示和數(shù)據(jù)庫(kù)操作等功能;結(jié)合遠(yuǎn)程SQL Server數(shù)據(jù)庫(kù)和本地SQLite數(shù)據(jù)庫(kù),實(shí)現(xiàn)了用戶管理、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)備份功能,通過WiFi通信實(shí)現(xiàn)了與下位機(jī)的數(shù)據(jù)傳輸。經(jīng)測(cè)試,控制助手APP可以在Android 5.0及以上版本的多種型號(hào)的手機(jī)上流暢運(yùn)行,界面布局合理,人機(jī)交互友好;APP提供了組合控制功能,實(shí)現(xiàn)球?qū)幼詣?dòng)化切換,提升了操作的便捷性。控制助手APP較好地滿足了手機(jī)端控制譜儀的球?qū)映樽⑺墓δ芎托阅苄枨?,進(jìn)一步完善了抽注水多層同心球中子譜儀系統(tǒng)。