嵌入式数据库在数控系统中的实现与应用.docx
嵌入式数据库在数控系统中的实现与应用dujing导语:针对目前数控系统普遍采用文本文件格式存储治理数据方式上存在的问题,提出在嵌入式数控系统中采用基于MySQL数据库治理数据的全新技术解决方案摘要:针对目前数控系统普遍采用文本文件格式存储治理数据方式上存在的问题,提出在中采用基于MySQL数据库治理数据的全新技术解决方案。在RTLinux操纵系统下,用MySQL设计机床数据库,创立用户接口,实现数据库与基于GTK+库开发的用户操纵界面的连接,在对数据库最小化裁剪后,成功完成了向嵌入式数控系统硬件平台的移植。结果说明:嵌入式数控系统的数据库治理方式实现了对大量参数的有效治理,极大地改善了系统的性能。关键词:嵌入式数控系统;MySQL数据库;Linux;MySQLCAPI;移植1引言本文所阐述是数控系统大课题中人机交互的外围局部子课题中的数据库开发应用。在数控加工系统中,存在着大量的用户设定参数、系统参数、坐标轴参数、轴补偿参数和刀具特征参数等数据。在整个消费制造系统中,这些数据不仅对于数控编程人员是必须的,而且对于实时经过控制系统、调度系统、工序处理、库存治理系统、刀具维护治理系统等也是必须的。这些数据的组织治理方式对数控系统的实时性乃至性能影响很大,因此高性能数控系统必须解决数据的有效性组织治理问题。假如采用直接将数据存放在一个表或者字符数组中,数据的修改与维护会相当困难、繁杂,这与数控系统对数据操纵要求简单方便与快捷相悖,因此这种组织治理方式不能知足数控系统的要求。目前数控加工系统普遍采用的文本文件格式存储治理数据的方式也存在着实时操纵性较差和磁盘空间浪费严重的缺点,而实时性和存储空间两个要素对于高性能嵌入式数控系统来讲却是至关重要的。因此,在本课题研究中,作者提出在嵌入式Linux1环境下的数控系统中采用基于MySQL数据库治理数据的全新技术解决方案。理论结果说明:在嵌入式数控系统中采用数据库进展数据治理,知足了高性能嵌入式数控系统在实时性和存储空间方面的要求,进步了系统的速度,极大地改善了系统的性能。本文就嵌入式数控系统中数据库应用开发的详细实现经过,以及怎样将数据库应用程序向嵌入式数控系统硬件平台的移植方法和对数据库进展最小化裁剪的技巧上做了具体介绍。由于本课题开发的人机界面是利用GTK+图形库,因此系统中采用的基于MySQL数据库应用开发,需要解决MySQL和GTK+互相交融的问题。GTK+没有直接操纵数据库的控件,对数据库的操纵可以采取通过MySQLCAPI直接进展,再调用GTK+的显示功能的方法来完成与用户的交互23。2数据库实现2.1数据库的建立2.1.1创立work数据库首先创立一个名称为work的数据库,并包含系统需要的所有表,作为根用户连接到MySQL。详细创立经过如下:%mysqlurootmysql;/进入数据库mysqlSETPASSWORD=PASSWORDlyw00001;/为根用户分配一个口令mysqlCREATEDATABASEwork;/创立work数据库mysqlGRANTALLONwork.toIDENTIFIEDBYlyw00001;/创立一个名为lyw的用户/与根用户使用同一口令,并为用户赋予数据库work的完全访问权限%mysqlulywplyw00001work;/连接库2.1.2创立表针对基于GTK+库设计的用户操纵界面有假设干个表与之相对应,下面以一个界面为例具体讲明MySQL与GTK+的连接经过。连接到数据库之后,就可以向它添加内容了,使用CREATE命令来创立一个名为tbl_amend_amend的表。CREATETABLEtbl_amend_amendnumberINTNOTNULLPRIMARYKEY,shapehVARCHAR10,deletehVARCHAR10,shapedVARCHAR10,deletedVARCHAR10,;创立一个表后,可使用SQL语句INSERT命令向表中填入数据,但这种方法当数据量大时会耗时很多。因此作者采用批处理形式向表中填入数据的方法,详细作法是:首先创立一个存储SQL语句的文本文件amend_data.sql,如图1所示;然后执行SQL语句:%mysqlulywplyw00001workamend_data.sql就将图1中的数据参加到tbl_amend_amend表中了,如表1所示。假如需要对数据进展修改,那么只需要在amend_data.sql文本文件中进展,然后重新执行一次上文中提到的语句就可以轻松地完成。图1amend_data文本文件表1tbl_amend_amend表2.2连接模块完成数据库及表的创立,有了相关的数据,下一步的工作就是在应用程序中实现与数据库的连接。应用程序中用connect_to_db模块实现了与数据库work连接功能,模块代码如下:voidConnect_to_db;conx=mysql_initMYSQL0L;/初始化temp=mysql_real_connectconx,126.0.0.1,lyw,lywcita001,work,0,0L,0;mysql_real_connect函数用于连接到名称为conx的MySQL效劳器,其主机的IP地址为127.0.0.1,用户名为lyw,密码为lywcita001,连接的数据库名为work。2.3填充模块实现了与数据库的连接后,接下来应将数据库的数据填充到用户界面上去。应用程序中用Fill_clist模块实现数据填充功能,其实现流程为:用MySQL查询所需的数据;将查询结果保存在内部缓存中;将缓存中的数据显示在用户界面上。模块代码如下:voidFill_clist;gcharamend_clist_row5=,;/定义gtk+数组数据指针及变量mysql_queryconx,selectnumber,shapeh,deleteh,shaped,deletedfromtbl_amend_amend;result_set=mysql_store_resultconx;/将查询结果保存在内部缓存中num_fields=mysql_num_fieldsresult_set;/获得结果集中列的数目whiledb_row=mysql_fetch_rowresult_setlengths=mysql_fetch_lengthsresult_set;/获得列的长度amend_clist_row0=db_row0;amend_clist_row4=db_row4;/将获得的db_row字符串数组的值逐一对应地赋值给amend_clist_rowgtk_clist_appendGTK_CLISTmodify_list,amend_clist_row;/填充到clist对应的域中mysql_free_resultresult_set;/释放结果集所用的内存编译运行插入程序,实现了数据库向用户界面填充数据功能,获得了如图2所示的界面。图2MySQL填充图2.4更新模块当用户在界面上对系统参数进展修改后,希望将新的数据写入数据库保存,确保数据信息的一致性和连续性,因此应用程序应具有根据系统参数的改变而更新数据库的功能。与填充模块类似,应用程序中用Update_database模块实现数据库更新功能。3数据库移植3.1移植的硬件平台本数控系统中采用了嵌入式PC平台,嵌入式PC与标准PC机完全兼容。因此,可以在普通PC上做好设计和开发,再将软件移植到嵌入式PC上。本系统开发采用嵌入式PC104计算机,硬件程度到达P3级,内存为128M,程序存储选用128MCF4卡。3.2移植经过要在数控系统中应用数据库和操纵界面,那么需要将MySQL和操纵界面应用程序移植到CF卡中。考虑到CF卡的容量问题,在移植的经过中要对数据库进展裁剪。3.2.1mysqld运行效劳器的移植要让MySQL能运行在嵌入式系统中,那么mysqld运行效劳器文件的移植有着至关重要的作用。用命令lddmysqld查询与mysqld可执行文件相关的库,结果如表2所示:表2与mysqld可执行文件相关的库文件执行文件mysqld的大小为3.3M,而其相关的库文件的大小约为2M,将mysqld并同上述相关的库文件一起移植到CF卡上,这样mysqld便可在嵌入式硬件平台上有效地执行了。3.2.2应用文件的移植假定应用程序的可执行文件为app,用命令lddapp同样可以查询到与可执行文件app相关的库。将应用程序连同与应用程序执行相关的库文件一起移植到CF卡上。应用程序的大小约为100K,与应用程序执行相关联的库文件的大小约为8M,而这8M的库文件大局部为嵌入式Linux系统自身带有的库文件,根本上不需要再移植。这样就可在嵌入式数控系统中运行用户操纵界面程序,而在后台运行数据库程序了。4完毕语CNC技术是当代加工技术的一个重要组成局部,怎样在现有的技术根底上不断改良数控系统以知足新的需求具有特别重要的意义。随着机械加工领域对数控系统的精度、效率、功能以及智能化程度5的进一步要求,控制面板、和系统数据组织治理方式等方面都需要不断的完善和创新,系统数据的基于Mysql数据库治理方式与目前数控系统普遍采用的文本文件治理方式相比,数据库只需在一个导入文档中修改更新数据就可以完成对数据的维护,操纵简单方便、快捷,并且数据库索引在数据库启动时进驻内存,对数据库查询、数据记录的删除和添加,索引能很方便、快捷地完成;数据库最小化裁剪后容量很小,因此,不管在实时性方面还是在存储空间方面都知足了高性能嵌入式数控系统的要求,进步了系统的速度,极大地改善了系统的性能。参考文献: 1于明俭,陈向阳,方汉Linux程序设计权威指南M北京:机械工业出版社,200122-337 2孔令富,曹立强用GTK和MySQL开发数据库应用J计算机工程与科学2001,233:45-46,54 3TCXMySQLReferenceManualEB/OL:/mysql/documentation/mysql/full/,2000-09-25 4李昊等CF卡在大容量数据存储系统的典型应用J微计算机信息测控自动化2005.第21卷第111期:6668 5熊清平数控系统技术的开展趋势J机电工程技术2004,3:91-94