徐繼寧,李建芯
(北方工業(yè)大學 電氣與控制工程學院, 北京 100144)
摘要:針對實驗室資產(chǎn)設備品種繁多、報廢周期不一、地址信息變更頻繁、環(huán)境安全難保障的特點,提出了將輕量級數(shù)據(jù)庫SQLite嵌入在一個資產(chǎn)管理與環(huán)境監(jiān)測系統(tǒng)中,利用Qt實現(xiàn)對管理軟件的應用設計開發(fā),最終實現(xiàn)了對實驗室資產(chǎn)設備數(shù)據(jù)的采集、存儲、管理以及對實驗室溫濕度環(huán)境狀態(tài)的監(jiān)測和曲線顯示。
關鍵詞:嵌入式系統(tǒng);SQLite ;Qt ;資產(chǎn)管理;環(huán)境監(jiān)測
0引言
隨著工程實踐教育的發(fā)展,高校的實驗室設備資產(chǎn)數(shù)量日益增大,品種類型多樣, 且創(chuàng)新、開放實驗室活動的開展也使得設備的流動性更強,工作環(huán)境日益復雜。在新的教育形勢下,如何靈活有效地管理和利用實驗室的資產(chǎn)設備是所有實驗室管理人員面臨的問題。
當今高校實驗室的設備資產(chǎn)管理有幾個特點:每個品種數(shù)量不大但種類繁多;更換、報廢物品周期不一;重要設備需有使用記錄;需要定期進行資產(chǎn)清查;確定重要設備位置等。傳統(tǒng)化的固定資產(chǎn)管理仍是當今高校普遍采用的方式,還是采用紙制標簽,利用手工方式將設備相關信息分類編輯管理[1]。這種管理方式雖然能從一定程度上對資產(chǎn)進行統(tǒng)計管理,但還存在很多固有的缺陷。因為標簽長時間的保存容易損壞,往往會造成信息具有不可追溯性;固定資產(chǎn)信息無法實時追蹤記錄,變更操作繁瑣;實驗室環(huán)境狀態(tài)缺乏預警機制,更難以保證實驗室環(huán)境狀態(tài)的安全。 因此本文設計了一個結合RFID技術和嵌入式數(shù)據(jù)庫的新型資產(chǎn)管理與環(huán)境監(jiān)測系統(tǒng)。
1系統(tǒng)總體設計
本文設計的實驗室資產(chǎn)管理與環(huán)境監(jiān)測系統(tǒng)框圖如圖1所示。該系統(tǒng)主要分為數(shù)據(jù)采集端、核心控制器、遠程控制端和報警設備4部分。所有實驗室固定資產(chǎn)配備RFID卡片, 用于表示和記錄設備信息。
數(shù)據(jù)采集端完成兩部分任務:(1)由RFID掃描器獲取實驗室內的設備信息;(2)通過各傳感器進行數(shù)據(jù)采集,進行必要的環(huán)境監(jiān)控。數(shù)據(jù)最終都由ZigBee網(wǎng)絡傳輸?shù)胶诵目刂破鞫恕F渲蠷FID芯片采用MFRC522,ZigBee芯片采用TI 公司的CC2530。
控制器基于Linux操作系統(tǒng)開發(fā),其核心芯片是三星的S3C6410??刂破髦饕蝿帐峭瓿汕岸瞬杉臄?shù)據(jù)的存儲、顯示以及對整個系統(tǒng)的控制。接收前端采集數(shù)據(jù),將數(shù)據(jù)存儲到數(shù)據(jù)庫中并顯示在基于Qt 4開發(fā)的人機交互界面中,利用無線網(wǎng)絡與遠程控制端進行交互。手機、Pad等移動終端設備組成了遠程控制端,它們通過無線WiFi實現(xiàn)與核心控制端通信,可以對核心控制端傳來的數(shù)據(jù)完成顯示和控制功能。
為保障重要設備的安全,本系統(tǒng)提供了防盜報警功能。由超高頻RFID掃描器對重要物品進行掃描,當設備非法移出時啟動報警器。超高頻RFID掃描器和報警器組成的報警設備通過有線方式進行通信。
在該系統(tǒng)中數(shù)據(jù)庫主要支持的功能有存儲由ZigBee協(xié)調器傳來的資產(chǎn)信息、溫度信息和濕度信息等數(shù)據(jù),并將數(shù)據(jù)顯示在本地嵌入式端;同時實現(xiàn)對資產(chǎn)信息數(shù)據(jù)的添加、刪除、查詢、修改、報廢和變更記錄等功能,對溫濕度信息實現(xiàn)數(shù)據(jù)曲線顯示功能。
2嵌入式數(shù)據(jù)庫的選擇
傳統(tǒng)的數(shù)據(jù)庫通常要專門的管理以及配置,不僅體積大、不便移植,而且使用也復雜[2]。而嵌入式數(shù)據(jù)庫不需要在客戶機服務器上的配置服務,它嵌入到了應用程序進程中。輕量級嵌入式數(shù)據(jù)庫在運行過程中只要比較少的內存,速度快,效果也更加理想。嵌入式數(shù)據(jù)庫一般也都支持SQL,通過SQL來管理應用程序數(shù)據(jù),而不依靠原始的文本文件。
當前支持多平臺的輕量級嵌入式數(shù)據(jù)庫主要有Empress、BerkeleyDB、SQLite[3],如表1所示。 表1常用嵌入式數(shù)據(jù)庫對比數(shù)據(jù)庫大小/KB特點是否支持SQLEmpress800穩(wěn)定性強、高速性、多重訪問性支持BerkeleyDB300執(zhí)行速度快、調度API完成操作支持SQLite250零配置、執(zhí)行速度快、簡單易用的API支持
由表1對比可得,SQLite數(shù)據(jù)庫占內存最小,僅為250 KB,同時提供簡單易用的API接口供開發(fā)者使用,因此最適合在實驗室資產(chǎn)管理與環(huán)境監(jiān)測系統(tǒng)中開發(fā)使用。
對于開源的嵌入式SQLite數(shù)據(jù)庫,它方便使用管理、維護和配置,無需安裝。該數(shù)據(jù)庫儲存在單一文件系統(tǒng)中,內嵌到應用程序中,支持Mac OS、Linux、Windows、UNIX等各種操作系統(tǒng)[4]。比起目前常見的SQL Server和Oracle數(shù)據(jù)庫來說,SQLite數(shù)據(jù)庫不需獨自運行數(shù)據(jù)庫的驅動系統(tǒng),數(shù)據(jù)存取速度很快,是MySQL的1~2倍;支持2 TB數(shù)據(jù)存儲量。它具有簡潔優(yōu)化的結構,主要由SQL編譯器、內核、后端3部分組成[5]。在SQLite數(shù)據(jù)庫體系結構的上部進行編譯查詢語句,在中部執(zhí)行它,低層處理操作系統(tǒng)的存儲和接口。所有SQL語句通過分詞器和分析器生成語法樹,交由代碼生成器生成可以在SQLite虛擬機中執(zhí)行的程序集[3,6] 。SQLite憑借較小的體積、簡單的操作以及運行穩(wěn)定的優(yōu)點,使之與復雜的商業(yè)數(shù)據(jù)引擎在開發(fā)維護方面更占優(yōu)勢。
3SQLite在資產(chǎn)管理與環(huán)境監(jiān)測系統(tǒng)中的實現(xiàn)
在本設計系統(tǒng)中,資產(chǎn)信息存入到SQLite數(shù)據(jù)庫,用于支持用戶對資產(chǎn)信息的檢索、添加、修改、刪除、報廢以及數(shù)據(jù)變更等功能, 同時實現(xiàn)對環(huán)境溫濕度和報警信息的存儲,并以表格、曲線等形式顯示。
3.1數(shù)據(jù)庫表的設計
數(shù)據(jù)庫中創(chuàng)建了資產(chǎn)信息表、報廢資產(chǎn)信息表、信息變更表、溫度表、濕度表和報警記錄表6張表。資產(chǎn)信息表包含了每條資產(chǎn)的詳細信息,如表2所示,它包含了資產(chǎn)編號、資產(chǎn)名稱等14個字段。由于要對報廢的資產(chǎn)做一定時段的存檔,還需要一張報廢表,報廢表的字段等同于資產(chǎn)信息表。為了方便對資產(chǎn)變動信息進行登記,單獨建立了信息變更表,如表3所示。對環(huán)境信息,主要記錄時間和溫濕度值,如表4所示。 表2資產(chǎn)信息表字段名稱數(shù)據(jù)類型約束可否為空說明資產(chǎn)編號inter主鍵NOT NULL資產(chǎn)編號資產(chǎn)名稱text無NOT NULL資產(chǎn)名稱分類號text無NOT NULL分類號
表3信息變更表字段名稱數(shù)據(jù)類型約束可否為空說明變更編號inter主鍵NOT NULL變更編號資產(chǎn)編號inter無NOT NULL資產(chǎn)編號使用者text無NULL使用者存放地點text無NULL存放地點歸屬單位text無NULL歸屬單位改變時間timestamp無NOT NULL改變時間
表4溫度表字段名稱數(shù)據(jù)類型約束可否為空說明時間idtimestamp主鍵NOT NULL時間溫度real無NOT NULL溫度值實驗室text無NOT NULL實驗室歸屬單位text無NOT NULL歸屬單位
3.2Qt下的數(shù)據(jù)庫的建立
該系統(tǒng)用Qt進行數(shù)據(jù)庫的訪問, 采用了QtSQL模塊進行數(shù)據(jù)庫的驅動,用一套獨立于平臺和數(shù)據(jù)庫的調用接口進行通信[78]。
首先創(chuàng)建數(shù)據(jù)庫鏈接,也就是創(chuàng)建一個QSqlDatabase類的實例,代碼如下:
QSqlDatabase db= QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“databasefile”);
鏈接好數(shù)據(jù)庫后,要創(chuàng)建數(shù)據(jù)庫表,代碼如下:
void ConnDlg::creatDB()
{QSqlQuery query;
query.exec(“create table asset(“//創(chuàng)建資產(chǎn)信息表
“assetid int primary key,”//插入主鍵
“other varchar(50))”));}
QSqlQuery類提供了一個接口,用于執(zhí)行SQL語句。通過SQL語句實現(xiàn)了對數(shù)據(jù)庫的查詢、添加、刪除和修改等操作。
3.3資產(chǎn)報廢的數(shù)據(jù)實現(xiàn)
為了提高追溯能力和管理水平,實驗室資產(chǎn)報廢后需存檔一段時間,因此需要單獨形成一份報廢資產(chǎn)信息表。資產(chǎn)報廢操作先要將報廢資產(chǎn)信息從資產(chǎn)信息表中復制到報廢資產(chǎn)表中,然后從資產(chǎn)信息表中刪除該信息,如圖2所示。主要代碼如下:
insert into scraptable(assetid,assetname,...)select assetid,assetname,... from assettable;//復制信息到報廢表
removeAssetsFromDatabase(assetid);//在資產(chǎn)信息表中刪除該資產(chǎn)信息
3.4變更記錄的實現(xiàn)
實驗室資產(chǎn)是實驗室成員的公共財產(chǎn),使用過程中部分資產(chǎn)的信息變動較大,尤其是“使用者”和“存放地點”這兩條信息。為此建了一張變更信息表,專門存放每個資產(chǎn)的變更信息, 如圖3所示。每當資產(chǎn)的使用者和存放地點變動時,可以在資產(chǎn)信息窗口中選中要變動的資產(chǎn),直接添加變更信息到變更信息表中。變更記錄時采用事務方式將變更信息插入到變更信息表中顯示。主要代碼如下:
QSqlDatabase::database().transaction ;//啟動事務
scrapModel->insertRecord(-1,record);
QSqlDatabase::database().commit();//事務結束
3.5環(huán)境監(jiān)測溫度曲線顯示的實現(xiàn)
大型貴重設備的環(huán)境監(jiān)測已經(jīng)成為實驗室不可忽略的問題,該系統(tǒng)用無線傳感網(wǎng)絡方便地實現(xiàn)了實驗室環(huán)境參數(shù)的監(jiān)測,主要關注設備周邊的溫濕度變化。為提高可視性,系統(tǒng)采用高性能繪圖圖表Qt C++控件QCustomPlot,可以繪制曲線圖、趨勢圖、柱狀圖。圖4是對實驗室一天中每兩個小時采樣一次數(shù)據(jù)的溫度變化情況?! ?/p>
4結論
本文介紹了一款新型的面向高校實驗室資產(chǎn)管理和環(huán)境監(jiān)測嵌入式系統(tǒng),文中主要就該系統(tǒng)中輕型數(shù)據(jù)庫SQLite數(shù)據(jù)庫的選型、設計和開發(fā)作了介紹。作為一個綜合了ZigBee、RFID、嵌入式技術的實用系統(tǒng),SQLite與Qt的聯(lián)合開發(fā)對系統(tǒng)的性能完善和提高起到了不可替代的作用,也表明了SQLite數(shù)據(jù)庫在嵌入式端的優(yōu)越性,對相關系統(tǒng)的開發(fā)有著積極的借鑒意義。
參考文獻
?。?] 毛行標.RFID技術在高校實驗室設備資產(chǎn)信息化管理系統(tǒng)中的應用[J].中國現(xiàn)代教育裝備,2006(11):6970.
?。?] 李強,曾國強,羅群,等.嵌入式數(shù)據(jù)庫SQLite在核儀器數(shù)據(jù)管理中的應用[J].核電子學與探測技術,2014,34(8):921925.
?。?] 王峰超,申萍,嚴翔,等.SQLite在機車故障診斷系統(tǒng)中的應用研究[J].鐵道機車車輛,2012,32(4):9093.
?。?] 梁爽,任杰.嵌入式數(shù)據(jù)庫SQLite在油田監(jiān)控系統(tǒng)中的應用[J].試驗研究,2014,33(11):2930.
?。?] 張穎,易金花,張曉玉,等.基于嵌入式Linux的上肢康復機器人用戶系統(tǒng)研究[J].電子技術應用,2014,40(5):1417.
?。?] 鄧宗權,蔣向東,王繼岷,等.基于嵌入式Linux汽車智能儀表系統(tǒng)的設計[J].微型機與應用,2014,33(4):2628.