(1.北京工商大學材料與機械工程學院,北京 100048;2.北京泊菲萊科技有限公司,北京100081)
自20世紀70年代起,電感耦合等離子體(ICP)被作為發(fā)射光譜分析的光源使用以來,經過幾十年來的不斷發(fā)展,如今在靈敏度、檢測速度、準確性以及自動化程度上都已經有了長足的進步,在原子光譜分析領域內依然是占據著主要地位,同時在冶金、生物、食品和環(huán)境等相關分析過程中依然是主要的分析手段[1]。操作軟件作為ICP的不可或缺的部分,在整個測量過程中需要完成與用戶交互、下位機控制以及數據處理和管理的功能。
目前國外先進的ICP儀器軟件的更新換代較為頻繁,但是國內關于ICP軟件的研究較少,致使國內儀器的軟件更新速度較為遲緩;本文介紹了基于QT的ICP軟件設計思路,并著重介紹了QT對于SQLite的支持,以及通過SQLite對ICP軟件數據庫的開發(fā)設計,具有實際應用價值。
ICP-AES的總體硬件結構如圖1所示。
圖1 ICP-AES的總體結構示意圖
如圖1,ICP-AES(電感耦合等離子體原子發(fā)射光譜儀)主要由高頻發(fā)生器(高頻電源和耦合器共同組成)、矩管、進樣裝置、分光裝置和測光裝置組成。
高頻發(fā)生器作為整個等離子體的能量來源,通過高頻的磁場變化產生渦流,電子在渦流中被加速,由于抗渦流的作用產生大量的焦耳熱,氬原子在其中被電離,當達到一定溫度是,等離子體在一瞬間形成;待測元素在霧化器的作用下進入等離子體,并在高溫下被激發(fā),輻射出不同波長的光形成光譜;分光裝置將從炬管得到的輻射光通過光柵衍射成按波長順序排列明暗相間的譜帶,用于掃描獲取數據;測光裝置通過掃描光譜帶,將光信號轉變成電信號,通過AD轉換器轉變成數字信號,這樣完成了整個的數據采集的過程。將數據傳輸到計算機進行分析,并且可以根據光照強度和標準樣品對待測的樣品來進行定量分析。
ICP-AES作為一個精密的系統(tǒng)的分析儀器,需要計算機操作軟件和整個硬件系統(tǒng)良好的配合。當操作人員通過點擊或者輸入進行操作的時候,需要將這些操作和數據轉換成指令發(fā)送給各個硬件部分,指揮著各個硬件合理的協(xié)同工作,并實時的收集數據,因此ICP-AES操作軟件可以分為數據和控制兩部分。整個軟件的操作流程如圖2所示。
圖2 軟件操作流程
QT作為一個優(yōu)秀的易使用的集成開發(fā)環(huán)境,以其良好的多平臺兼容特性深得開發(fā)人員的青睞。QT支持輕量型的數據庫SQLite,并且SQLite也具有多平臺特性[2],和QT的兼容性良好,所以本文使用SQLite作為開發(fā)的數據庫管理系統(tǒng)。
在ICP工作過程中,需要存儲大量的數據并且對它們進行處理,并且還需要通過不同的方式對數據進行編輯,顯示給用戶,同時完成和用戶的交互工作。QT針對這種情況提供了一種模型/視圖(MVC)的架構用于管理數據[3]。
圖3 模型/視圖架構
如圖3是模型視圖的基本架構。模型用于表示數據,保存數據的基本信息和可以進行的相關操作,數據和方法時模型的主要內容;視圖用于顯示數據,根據合適的地點,選擇合適的數據展示給用戶,同時提供給用戶具體的交互界面,對于視圖的操作不會直接作用與模型表示的數據中;控制器負責模型和視圖直接的交互,用戶在視圖中的操作也會通過控制器反饋給模型,完成對數據的讀寫以及修改等操作,同時完成對視圖的渲染,可以對不同的數據以不同的形式展示出來,如文本框、按鈕、下拉菜單等等[4]。
QT針對數據庫與用戶接口這一層面,提供了3個封裝更加完善的模型去訪問數據庫,分別是QSqlQueryModel、QSqlTableModel和QSqlRelationTableModel,這3個模型通過setQuerry就可以很方便的訪問已連接數據庫的某一個表格,再通過view->setmodel就可以將模型添加到視圖上用于顯示。QSqlQueryModel,SQL查詢模型,提供了一個只讀類型的模型,便于顯示查詢數據;QSqlTableModel提供了一個可讀寫的表格模型用戶可以在表格中修改數據,用于修改底層數據庫,但是根據編輯策略,需要通過submitAll()這一函數允許修改才能完成;QSqlRelationTableModel是對QSqlTableModel的一個擴展,它提供了外鍵功能,可以通過與一個表中的主鍵連接,訪問其他表中的某一項的內容顯示到表格里。
因為QT和SQLite都具有良好的跨平臺特性,SQLite在嵌入式平臺中又有著良好的表現[5],這對將軟件移植到嵌入式平臺,脫離計算機的束縛,大大減少儀器體積提高儀器靈活性提供了很大的便利。
從圖2中軟件的操作流程中可以了解到整個數據結構可以分為方法文件、元素波長、標準曲線和實驗數據4個部分。
方法文件:方法文件用于記錄方法名、日期和檢測元素等信息,在打開之后,應當可以連接到已完成的測量數據上,并可以再次完成查看、修改和再測量等功能,所以在方法文件中應該還具備可以連接元素波長、標準曲線和實驗數據的功能。
元素波長:元素波長主要用于所有需要元素相關信息的場景,創(chuàng)建方法、打開方法、測量過程等等都需要元素波長的參與,考慮到使用頻率較高,所以元素波長的結構應相對簡單,這樣在頻繁的使用和查詢過程中,可以減少查詢時間,同時可以大大提高軟件的運行速度,從而提高測量的速度。
標準曲線:ICP進行定量的分析溶液中某一元素的含量的原理是:配置空白和一系列已知濃度的標準溶液,通過已知的濃度和測量得到的光強從而得到標準曲線,再通過待測溶液得到的光強信息去和標準曲線比對,從而得到待測溶液的濃度。但是標準溶液的配置難度和成本都比較高,所以我們將標準曲線存儲在數據庫中,通過測量日期來加以區(qū)分,這樣當再次測量的時候就可以從數據庫中調取對應波長的標準曲線,從而減少配置標準溶液難度,提高了測量的效率。再存儲標準曲線的數據庫時就需要保留相關的信息,比如測量日期、測量元素和波長、曲線數據和曲線特征值等,其中日期可以從方法文件中獲得,元素和波長就可以從元素波長中獲得,這就需要用到之前提到的外鍵的功能,這樣可以避免數據的冗余。
實驗數據:實驗數據作為一次實驗中最寶貴的部分,應該完整地留存下來,無論是用于核查還是用于分析其他性能,都可能會起到重要作用。實驗數據的邏輯結構盡量簡單,因為需要和控制系統(tǒng)很快速的完成存儲交互等動作,所以簡單的結構就會帶來更穩(wěn)定的性能。
表1為方法文件表的設計方案。
表1 方法文件表
ID作為主鍵在表中唯一,主要用于方法名的查詢和尋找,這樣就避免了因為方法名相同造成的查詢錯誤;元素ID用于向元素波長表去檢索待測元素的基本信息,之所以使用TEXT格式,是因為一個方法可能檢測多種元素,為避免表格過分冗余,方案將元素ID通過逗號隔開,存儲在這一字段中,在加載方法時只需要根據逗號將元素解析出來即可;標準曲線庫ID用于加載標準曲線庫,格式和元素ID一樣通過逗號隔開,數據表存儲著本方法實驗過程中所有的實驗數據,這里存儲著數據表的名稱用于再次查詢。
表2、表3、表4是對應元素波長表、標準曲線表和數據表的設計方案,元素波長表的數據為靜態(tài)數據庫,其中的數據在開發(fā)階段根據元素的波長和檢出限等表示元素的基本特征的信息就已經寫好,給予其他表最基本的數據支持。而標準曲線表通過ID進行檢索,從而得到標準曲線的截距、斜率等信息繪制出標準曲線,減少實驗程序,提高實驗效率。數據表存儲每次實驗的所有數據,為數據分析和處理提供支持。
表2 元素波長表
表3 標準曲線表
續(xù)表3
表4 數據表
如圖4、圖5所示,程序可以從數據表中讀取數據,完成曲線的顯示,方法文件創(chuàng)建過程中也可以從元素波長表中正確查詢到對應的波長信息,ICP數據庫所需的功能基本得以實現。
圖4 數據表測試(數據為測試數據)
圖5 元素波長表測試
在分析軟件的操作流程的基礎之上,利用QT優(yōu)秀的模型/視圖架構和對SQLite良好的支持,設計了ICP數據庫的整體架構,并且充分利用了SQLite空間占用小、安全可靠的特點,完成整個操作過程中頻繁的數據交互和數據處理。并且由于QT和SQLite良好的跨平臺特性,使得軟件可以運行在Windows、Mac和Linux等多平臺上,這也為軟件移植到嵌入式平臺,促進設備更新提供了更多可能性。