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