文献标识码: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.