朱自強(qiáng) 段樹嶺 段然 姜作喜 彭巍巍
(中國自然資源航空物探遙感中心 北京市 100083)
磁場是重要的地球物理信息參數(shù),航空磁測是磁場測量的重要手段,他是將磁力儀搭載在航空器上進(jìn)行地球磁場測量的一種技術(shù)。本軟件是基于航空磁場測量野外生產(chǎn)的實(shí)際工作需要而開發(fā),航遙中心自主研發(fā)的航磁測量系統(tǒng)的GR33 磁場模擬打印機(jī)對(duì)分析儀器工作狀態(tài)有很大幫助,同事們將打印輸出的模擬紙卷比喻成航空磁場測量系統(tǒng)的“心電圖”,但苦于打印機(jī)有輸出錯(cuò)誤甚至不工作的情況,為準(zhǔn)確快速的掌握航磁測量系統(tǒng)的工作狀態(tài),筆者編寫了這個(gè)監(jiān)測儀器“心電圖”狀態(tài)的軟件。本軟件對(duì)航磁測量系統(tǒng)的航空磁場測量數(shù)據(jù)讀取并顯示,提供多重濾波放大窗口。軟件小巧靈活、使用方便,方便儀器維護(hù)人員快速分析判斷儀器的工作狀態(tài),以及隨時(shí)快速查詢歷史久遠(yuǎn)的航空磁場測量數(shù)據(jù)。
針對(duì)軟件的功能需求,選擇在WINDOS 平臺(tái)下采用C#語言開發(fā)軟件。C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的面向?qū)ο蟮木幊陶Z言。C#具有快速數(shù)據(jù)操作流,強(qiáng)大的界面顯示功能,它在繼承C 和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性。C#綜合了VB 簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET 開發(fā)的首選語言。
軟件采用如圖1所示設(shè)計(jì)流程,首先進(jìn)行資料收集和需求分析,確定軟件所要實(shí)現(xiàn)的功能,然后進(jìn)行概要設(shè)計(jì),對(duì)任務(wù)模塊進(jìn)行劃分并生成數(shù)據(jù)流圖。接下來是詳細(xì)設(shè)計(jì)各個(gè)模塊的算法實(shí)現(xiàn)并編寫程序流程圖,進(jìn)而進(jìn)行代碼編寫,最后進(jìn)行功能測試、集成測試與安全性測試,全部測試通過后投入使用,使用過程中出現(xiàn)問題進(jìn)行后期維護(hù)以保障軟件的正常使用,每個(gè)設(shè)計(jì)環(huán)節(jié)均要生成設(shè)計(jì)文檔。
需求分析在軟件開發(fā)流程中起著“筑地基”的作用,需求分析完整準(zhǔn)確才能開發(fā)出有利于生產(chǎn)的實(shí)用化程序,筆者結(jié)合自己從事野外一線航空測量的實(shí)際需求,對(duì)此軟件的功能做如下需求分析。
航空磁測野外生產(chǎn)要求快速準(zhǔn)確判斷儀器狀態(tài),如果儀器出現(xiàn)故障而沒有及時(shí)發(fā)現(xiàn),不僅數(shù)據(jù)報(bào)廢而且經(jīng)濟(jì)損失巨大,還會(huì)影響工作進(jìn)度的如期完成,因此需要快速讀出并顯示磁場數(shù)據(jù),需要程序小巧靈活,啟動(dòng)快。
圖1:磁場記錄軟件設(shè)計(jì)流程
而高靈敏度的磁力儀的工作狀態(tài)需要直觀多通道的綜合判斷,需要將屏幕劃分成相互獨(dú)立的幾個(gè)區(qū)域,每個(gè)區(qū)域顯示不同濾波通道的數(shù)據(jù),不同通道數(shù)據(jù)之間相互不干擾,每個(gè)通道可相互聯(lián)系起來比較。
對(duì)于典型或疑似故障的航空磁場曲線數(shù)據(jù),可以保存成圖片格式,同時(shí)可連接打印機(jī)打印下來,供事后仔細(xì)研究。
根據(jù)需求分析對(duì)軟件的功能需求,并結(jié)合模擬輸出打印機(jī)輸出格式的特點(diǎn)設(shè)計(jì)界面。航空磁力儀測量的原始磁場數(shù)據(jù)包括飛行器產(chǎn)生的干擾場,需要對(duì)飛行器產(chǎn)生的干擾場進(jìn)行補(bǔ)償后得到的磁場數(shù)據(jù)才是真實(shí)的地球磁場數(shù)據(jù)。對(duì)于儀器維護(hù)人員主要關(guān)注的是補(bǔ)償后的磁場數(shù)據(jù),航空磁場測量的磁場范圍大概在20000-70000NT,磁異常引起的變化大概在數(shù)百至數(shù)千NT,因此要看清楚磁場變化的細(xì)節(jié),需要顯示磁場顯示的量程在百NT 量級(jí)為宜。
圖2:磁場記錄軟件界面
圖3:多通道磁場顯示軟件界面
本軟件設(shè)計(jì)了不同顯示量程的補(bǔ)償后磁場通道。因此需要不同尺度的顯示磁場數(shù)值,才能顯示才能看出磁場變化的細(xì)節(jié)來判斷儀器的工作狀態(tài)。因此需要根據(jù)航空磁測顯示功能的實(shí)際需求,將整個(gè)顯示界面分成上、中、下三個(gè)部分,用于顯示不同的磁場尺度,超出設(shè)計(jì)的尺度,將進(jìn)行換擋顯示。界面的橫軸顯示時(shí)間信息,每隔20 秒顯示GPS 時(shí)間,縱軸顯示磁場的尺度,通過左右拖動(dòng)進(jìn)度條更新數(shù)據(jù)。
針對(duì)快速讀取磁場數(shù)據(jù)的要求,采用C# 的MemoryStream 內(nèi)存流讀數(shù)功能,一次性的將所有內(nèi)容都讀到內(nèi)存(Memory)中,然后操作內(nèi)存,提高讀取文件速度,軟件運(yùn)行后,點(diǎn)擊圖2 左上角所示“打開文件”按鈕,彈出文件選擇對(duì)話框,在文件類型中選擇航空磁場測量系統(tǒng)專用的“.dat”格式文件,軟件設(shè)置缺省的文件格式為dat 格式。選中一個(gè)文件,點(diǎn)擊“打開”按鈕,軟件讀入.dat格式數(shù)據(jù),對(duì)于一個(gè)10M 左右大小的航空磁場測量數(shù)據(jù),打開文件時(shí)間小于1 秒,方便快捷。
圖3所示軟件可視部分由三個(gè)結(jié)構(gòu)組成,分別是功能按鈕、磁場曲線和進(jìn)度條。屏幕最上面是功能按鈕,功能按鈕下面是磁場曲線,磁場曲線分為上、中、下三個(gè)通道,每個(gè)通道的豎軸被分割成十等份,上部通道藍(lán)色曲線是對(duì)磁總場進(jìn)行100nT 濾波,即上部通道量程是100nT,每一小格是10nT,此通道可以觀察磁場的細(xì)節(jié)變化。中部通道紅色曲線是對(duì)磁總場進(jìn)行10nT 濾波,即上部通道量程是10nT,每一小格是1nT,此通道可以更進(jìn)一步觀察磁場的細(xì)節(jié)變化,相當(dāng)于對(duì)上部通道的磁場進(jìn)行了放大。下部通道上面的曲線是補(bǔ)償前高通濾波磁場,下部通道中下面的曲線是補(bǔ)償后高通濾波磁場,可以對(duì)比補(bǔ)償前后的磁場數(shù)值,以觀察補(bǔ)償?shù)男Ч?/p>
如圖3所示,每個(gè)區(qū)域的豎線對(duì)應(yīng)著橫軸的GPS 時(shí)刻,每一小格是10 秒,屏幕右上角顯示為數(shù)據(jù)的起始收錄時(shí)間和結(jié)束收錄時(shí)間,均為GPS 時(shí)刻,格式從左往右是時(shí):分:秒,以及數(shù)據(jù)收錄日期,格式從左往右為年/月/日。例如圖3所示開始收錄時(shí)間為13年08月28日14 時(shí)52 分25 秒,結(jié)束時(shí)間為13年08月28日16 時(shí)41 分25 秒。可以通過左右拖動(dòng)進(jìn)度條刷新數(shù)據(jù),軟件友好易操作,與紙質(zhì)磁場記錄紙卷閱讀體驗(yàn)一致。
當(dāng)需要保存當(dāng)前界面上的磁場數(shù)據(jù)時(shí),可點(diǎn)擊功能按鈕區(qū)的“保存”按鈕,選擇保存圖片的位置和名稱,進(jìn)行保存數(shù)據(jù)。同樣點(diǎn)擊“打印”按鈕,連接打印機(jī)后會(huì)將當(dāng)前屏幕顯示的內(nèi)容打印出來。
航空磁場測量多通道濾波顯示軟件大大提高了判斷儀器狀態(tài)的工作效率,同時(shí)也為快速查閱歷史資料提供了方便。軟件編寫之后迅速在數(shù)個(gè)野外工區(qū)投入使用,挽救數(shù)十飛行架次的經(jīng)濟(jì)損失,受到野外生產(chǎn)隊(duì)的一致好評(píng)。