文獻標識碼: A
文章編號: 0258-7998(2013)08-0007-03
隨著工業技術現代化的不斷發展,工業生產對設備的加工精度、加工效率和穩定性提出了更高的要求,磨削加工擔負著零件精密表面的最終加工工序,其精度對機械產品的質量有著直接影響。主動測量技術在磨削加工過程中的應用能夠改善傳統的磨削加工產品一致性差、質量不穩定、加工效率低等缺點,滿足人們對產品高精度、高品質、高一致性的需求。隨著嵌入式系統硬件平臺的日趨強大及其相對于工控板低成本、低功耗的優勢,基于嵌入式的磨削加工主動測量儀的競爭優勢日益明顯,擁有良好的市場前景。為此在對現有磨床主動測量儀的理論與應用進行深入研究的基礎上,開發了基于WinCE的嵌入式多功能磨削加工主動測量控制系統,系統結構如圖1所示。
在系統工作過程中,需要對大量數據進行實時的存取和處理。目前,國內自主研發的主動測量儀的數據管理大都采用基于文件系統的存儲結構,由用戶直接對記錄所在的文件進行操作,I/O開銷較大,同時由于應用程序是以獨占方式打開數據文件,數據的共享性和應用軟件的可重用性較差。而通過數據庫系統來管理數據的方式可以較好地解決這些問題。基于數據庫系統管理數據的方式,數據和程序相互獨立,通過事務進行調度與并發控制,可有效地對數據進行存取、查詢等共享操作,同時借助于數據庫所具有的安全性檢驗、完整性檢查等多種安全措施,可確保系統具有較好的整體性能。為此,本文提出了應用嵌入式數據庫對磨削加工主動測量控制系統中的數據進行管理的方案。
1 嵌入式數據庫方案設計
嵌入式數據庫是一種具備了基本數據庫特性的數據文件,通常是與嵌入式操作系統及具體的應用集成在一起,無需獨立運行數據庫引擎,由程序直接調用相應的API就可實現對數據的存取操作。WinCE系統下比較常用的兩種嵌入式數據庫SQLite與SQLCE的存取性能對比結果如圖2、圖3所示。
圖2是向兩種數據庫中插入數據時的速度對比測試。測試時分別向兩種數據庫中插入了5 000條數據,經過多次測試,測得SQLite插入5 000條數據的用時在4 500 ms~5 000 ms范圍,而SQLCE在23 000 ms~25 000 ms范圍,這里給出了其中一次測試的結果。圖3給出了在兩種數據庫中對tabel2、tabel3表進行聯合查詢時的速度對比測試結果,測試之前向每個數據庫的tabel2,tabel3表中都插入了25 000條數據。通過對比結果可以看出,WinCE系統下SQLite存取數據的速度是SQLCE的4~5倍。磨削加工主動測量儀是一種在線、實時、動態檢測的高精度測量控制儀器,對數據存取和處理的速度要求較高,因此系統選用SQLite構建一個小型的嵌入式數據庫管理系統來對數據進行管理。
2 主動測量儀的數據庫結構
磨削加工主動測量儀軟件系統包括測量、設置和調整3個功能模塊。測量模塊主要用于測量數據處理以及處理結果的實時顯示;設置模塊負責系統大量測量參數的設定;調整模塊根據實際情況對設定的參數進行微調,以滿足系統需要。基于WinCE操作系統和SQLite數據庫構建的磨削加工主動測量儀軟件系統結構如圖4所示。
為了滿足磨削加工現場對主動測量儀的不同需求,嵌入式磨削加工主動測量控制系統的功能應包括對加工工件尺寸電感信號的采集、處理和顯示,以及對機床進給機構的控制。為了避免因采用一個數據文件存儲所有的數據信息而造成數據存取速度上的減慢,系統采用分割文件的形式來存放各部分數據,通過對數據庫中相應數據表的操作完成各部分數據的實時存取和處理。部分數據表的主要結構如表1、表2所示。
系統開機后查詢上次關機時數據采集表內存儲的數據,通過“GJLX”、“CTS”等字段的數據控制相應測頭對工件尺寸電感信號進行采集。測量模塊下調用數據處理函數并結合數據處理表內相關測量參數對采樣數據進行處理,并將數據處理結果實時地顯示在測量界面上。根據功能要求,通過設置、調整模塊對數據處理表各項測量參數進行修改、設定。
3 主動測量儀數據庫的設計
SQLite是一款輕量的、開源的、遵守ACID的關系型數據庫。SQLite與傳統數據庫相比,其系統開銷小,底層控制能力強,具有更好的實時性。SQLite能夠高效地利用嵌入式系統的有限資源,提高數據的存取速度,增強系統的安全性。
主動測量儀中對數據庫的主要操作如下。
(1)打開數據庫
string connStr="datasource="+ DbName +" ";
SQLiteConnection conn=new SQLiteConnection(connStr);
conn.Open();
(2)執行SQL
string sql=" ";
SQLiteCommand cmd=new SQLiteCommand(sql,conn);
SQLiteDataReader reader=cmd.ExecuteReader();
reader.Read();
(3)關閉數據庫
conn.close();
3.1 測量模塊數據庫操作
軟件系統測量模塊應用WinCE系統下的多線程技術實現前臺界面顯示、操作與后臺數據處理的并發執行,同時根據需要將能夠反映加工過程的各信號控制點間數據實時地存入公共的數據緩沖區,并通過數據保存函數將公共緩沖區的數據存儲到嵌入式數據庫SQLite 中,方便用戶查看加工過程的歷史曲線。子線程創建過程為:
Thread th=new Thread(DoWork);//創建線程
th.IsBackground = true; //定義為后臺線程
th.Start();//啟動線程
其中子線程DoWork方法內完成采樣數據的處理與實時存儲,而主線程負責整個用戶界面的顯示與操作。
同時,為了防止向數據處理表table2中插入數據時因數據采集表table1中沒有相應的工件類型記錄而導致系統功能出錯,創建數據庫時需要在table1和table2這兩個表之間強制實施一個外鍵約束。這樣當企圖往table2表中插入一行table1中無對應數據的記錄時就會失敗,此時系統會給出提示,阻止用戶進行錯誤的操作。實現過程為:
CREATE TABLE table1(id INTEGER PRIMARY KEY,……);
CREATE TABLE table2(id INTEGER,FOREIGN KEY(GJLX) REFERENCES table1(id));
3.2 設置、調整模塊數據庫操作
在磨削加工主動測量儀的工作過程中經常需要通過設置、調整功能模塊對各項測量參數進行修改、設定并將這些數據實時地存儲到數據庫中。為了避免代碼重用,可以通過向數據訪問層同一程序模塊傳遞不同參數進行相關數據操作的區分。下面以系統工件定義模塊中對不同類型工件相應測量項目類型的設置為例來說明對數據庫操作的具體過程。設置功能模塊下工件定義界面如圖5所示。
系統可以實現對6種類型工件磨削加工過程的主動測量控制。對相應類型工件的某一項目類型進行修改后,點擊確定按鈕調用數據訪問層同一個update函數,通過傳遞不同的_GJ、id參數值實現對不同項目類型的實時存儲。如:對“工件B”的項目1類型進行修改后點擊確定按鈕調用update(“內徑”,“工件B”,1),而對“工件A”的項目2類型進行修改后點擊確定按鈕調用update(“外徑”,“工件A”,2),并實時更新數據庫相應記錄。update函數部分代碼如下:
public void update(string _str,string _GJ,int id)
{
//創建數據庫連接函數
switch (id)
{
case 1:sql="update formula set XMLX1='" + _str +
"'where GJ='" + _GJ + "'"; break;
case 2:sql="update formula set XMLX2='" + _str +
"'where GJ='" + _GJ + "'"; break;
……
default: break;
}
//執行相應sql語句對相應參數進行設置
}
從圖6可以看出,磨削完成后工件尺寸的加工余量與預先設定的到尺寸值近似相等,其中誤差是由零位尺寸與零位電壓間轉換引起的。因此,磨削加工主動測量儀能夠按照要求將數據處理結果實時地存儲到數據庫中,滿足了磨削加工主動測量儀對數據存取的實時性與一致性要求,驗證了方案的可行性。
本文利用嵌入式SQLite數據庫體積小、處理速度快的優勢,應用SQLite對嵌入式磨削加工主動測量控制系統中的大量數據進行管理,給出了Visual Studio 2008集成開發環境中嵌入磨削加工主動測量儀數據庫管理系統的具體實現過程,為基于WinCE的磨削加工主動測量控制系統的開發提供了技術支持,對嵌入式磨削加工主動測量儀的進一步發展具有重要意義。
參考文獻
[1] 王鴻偉.磨加工過程中的主動測量儀[J].軸承,2004(4):32-34.
[2] 郭寒軍.嵌入式智能主動測量儀的研究與開發[D].無錫:江南大學,2008.
[3] 周東升,吳彬彬.基于WinCE的嵌入式數據庫研究[J].軟件導刊,2011,10(4):154-156.
[4] 韓善鋒,曹鳳海,易昌華.SQLite數據庫在嵌入式程序開發中的應用[J].物探裝備,2011,21(3):170-173,178.
[5] 蔣晶,郝繼飛,于平.SQLite在嵌入式系統Wince中的應用[J].微型機與應用,2011,30(14):82-83.
[6] 王小科,徐薇.C#從入門到精通[M].北京:清華大學出版社,2010.
[7] 尹麗娜,汪琦.基于嵌入式數據庫SQLITE的采煤機智能監控系統[J].煤礦機械,2011,32(12):243-244.
[8] 葉子,許家昌.嵌入式WinCE多線程編程研究與實現[J].數字技術與應用,2010(01):45-46.