当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式数据库在数控系统中的实现与应用

1 引言

    本文所论述是数控系统大课题中人机交互的外围部分子课题中的数据库开发应用。在数控加工系统中,存在着大量的用户设定参数、系统参数、坐标轴参数、轴补偿参数和刀具特征参数等数据。在整个生产制造系统中,这些数据不仅对于数控编程人员是必需的,而且对于实时过程控制系统、调度系统、工序处理、库存管理系统、刀具维护管理系统等也是必需的。这些数据的组织管理方式对数控系统的实时性乃至性能影响很大,因此高性能数控系统必须解决数据的有效性组织管理问题。如果采用直接将数据存放在一个表或字符数组中,数据的修改与维护会相当困难、繁杂,这与数控系统对数据操作要求简单方便与快捷相悖,因此这种组织管理方式不能满足数控系统的要求。目前数控加工系统普遍采用的文本文件格式存储管理数据的方式也存在着实时操作性较差和磁盘空间浪费严重的缺点,而实时性和存储空间两个要素对于高性能嵌入式数控系统来说却是至关重要的。因此,在本课题研究中,作者提出在嵌入式Linux[1]环境下的数控系统中采用基于MySQL数据库管理数据的全新技术解决方案。实践结果表明:在嵌入式数控系统中采用数据库进行数据管理,满足了高性能嵌入式数控系统在实时性和存储空间方面的要求,提高了系统的速度,极大地改善了系统的性能。

    本文就嵌入式数控系统中数据库应用开发的具体实现过程,以及如何将数据库应用程序向嵌入式数控系统硬件平台的移植方法和对数据库进行最小化裁剪的技巧上做了详细介绍。

    由于本课题开发的人机界面是利用GTK+图形库,因此系统中采用的基于MySQL数据库应用开发,需要解决MySQL和GTK+相互融合的问题。GTK+ 没有直接操作数据库的控件,对数据库的操作可以采取通过MySQL C API 直接进行,再调用GTK+ 的显示功能的方法来完成与用户的交互 [2] [3]。
 
2 数据库实现

2.1 数据库的建立

2.1.1 创建work数据库

     首先创建一个名称为work的数据库,并包含系统需要的所有表,作为根用户连接到MySQL。具体创建过程如下:

% mysql –uroot mysql;                           //进入数据库

mysql> SET PASSWORD=PASSWORD(‘lyw00001’); //为根用户分配一个口令

mysql> CREATE DATABASE work ;              //创建work数据库

mysql> GRANT ALL ON work.* to lyw@localhost IDENTIFIED BY ‘lyw00001’;//创建一个名为lyw的用户

//与根用户使用同一口令,并为用户赋予数据库work的完全访问权限

% mysql –ulyw –p lyw00001 work;                //连接库

2.1.2 创建表

     针对基于GTK+库设计的用户操作界面有若干个表与之相对应,下面以一个界面为例详细说明MySQL与GTK+的连接过程。

     连接到数据库之后,就可以向它添加内容了,使用CREATE命令来创建一个名为tbl_amend_amend的表。

CREATE TABLE tbl_amend_amend (

number INT NOT NULL PRIMARY KEY,

shapeh VARCHAR(10),

deleteh VARCHAR(10),

shaped VARCHAR(10),

deleted VARCHAR(10),);[!--empirenews.page--]

     创建一个表后,可使用SQL语句INSERT命令向表中填入数据,但这种方法当数据量大时会耗时很多。因此作者采用批处理模式向表中填入数据的方法,具体作法是:首先创建一个存储SQL语句的文本文件amend_data.sql,如图1所示;然后执行SQL语句:

% mysql –ulyw –p lyw00001 work < amend_data.sql

     就将图1中的数据加入到tbl_amend_amend表中了,如表1所示。如果需要对数据进行修改,则只需要在amend_data.sql文本文件中进行,然后重新执行一次上文中提到的语句就可以轻松地完成。

图1 amend_data文本文件
表1 tbl_amend_amend表

2.2 连接模块

     完成数据库及表的创建,有了相关的数据,下一步的工作就是在应用程序中实现与数据库的连接。应用程序中用connect_to_db()模块实现了与数据库work连接功能,模块代码如下:

void Connect_to_db(){……;

conx = mysql_init((MYSQL *)0L);   //初始化

……;

temp = mysql_real_connect(conx,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查询所需的数据;将查询结果保存在内部缓存中;将缓存中的数据显示在用户界面上。模块代码如下:

void Fill_clist(){ ……;

gchar *amend_clist_row[5] = {,,,,};   //定义gtk+数组数据指针及变量 

mysql_query(conx,select number,shapeh,deleteh,shaped,deleted from tbl_amend_amend);

result_set = mysql_store_result(conx);           //将查询结果保存在内部缓存中

num_fields = mysql_num_fields(result_set);      //获得结果集中列的数量

while(db_row = mysql_fetch_row(result_set)) {

lengths = mysql_fetch_lengths(result_set);       //获得列的长度

amend_clist_row[0] = db_row[0];

……;

amend_clist_row[4] = db_row[4]; //将获得的db_row字符串数组的值一一对应地赋值给amend_clist_row

gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist对应的域中

mysql_free_result(result_set);}                          //释放结果集所用的内存

    编译运行插入程序,实现了数据库向用户界面填充数据功能,获得了如图2所示的界面。[!--empirenews.page--]

图2 MySQL填充图

2.4 更新模块

    当用户在界面上对系统参数进行修改后,希望将新的数据写入数据库保存,确保数据信息的一致性和连续性,因此应用程序应具有根据系统参数的改变而更新数据库的功能。与填充模块类似,应用程序中用Update_database()模块实现数据库更新功能。
  
3 数据库移植

3.1 移植的硬件平台

     本数控系统中采用了嵌入式PC平台,嵌入式PC与标准PC机完全兼容。因而,可以在普通PC上做好设计和开发,再将软件移植到嵌入式PC上。本系统开发采用嵌入式PC104计算机,硬件水平达到P3级,内存为128M,程序存储选用128M CF[4]卡。

3.2 移植过程

     要在数控系统中应用数据库和操作界面,则需要将MySQL和操作界面应用程序移植到CF卡中。考虑到CF卡的容量问题,在移植的过程中要对数据库进行裁剪。

3.2.1 mysqld运行服务器的移植

    要让MySQL能运行在嵌入式系统中,那么mysqld运行服务器文件的移植有着至关重要的作用。用命令ldd mysqld查询与mysqld可执行文件相关的库,结果如表2所示:

表2  与mysqld可执行文件相关的库文件

执行文件mysqld的大小为3.3M,而其相关的库文件的大小约为2M,将mysqld并同上述相关的库文件一起移植到CF卡上,这样mysqld便可在嵌入式硬件平台上有效地执行了。

3.2.2 应用文件的移植

     假定应用程序的可执行文件为app,用命令ldd app同样可以查询到与可执行文件app相关的库。将应用程序连同与应用程序执行相关的库文件一起移植到CF卡上。应用程序的大小约为100K,与应用程序执行相关联的库文件的大小约为8M,而这8M的库文件大部分为嵌入式Linux系统自身带有的库文件,基本上不需要再移植。这样就可在嵌入式数控系统中运行用户操作界面程序,而在后台运行数据库程序了。
 
4 结束语

     CNC技术是现代加工技术的一个重要组成部分,如何在现有的技术基础上不断改进数控系统以满足新的需求具有十分重要的意义。随着机械加工领域对数控系统的精度、效率、功能以及智能化程度[5]的进一步要求,控制面板、人机界面和系统数据组织管理方式等方面都需要不断的完善和创新,系统数据的基于Mysql数据库管理方式与目前数控系统普遍采用的文本文件管理方式相比,数据库只需在一个导入文档中修改更新数据就可以完成对数据的维护,操作简单方便、快捷,并且数据库索引在数据库启动时进驻内存,对数据库查询、数据记录的删除和添加,索引能很方便、快捷地完成;数据库最小化裁剪后容量很小,因此,不论在实时性方面还是在存储空间方面都满足了高性能嵌入式数控系统的要求,提高了系统的速度,极大地改善了系统的性能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

要问机器人公司哪家强,波士顿动力绝对是其中的佼佼者。近来年该公司在机器人研发方面获得的一些成果令人印象深刻,比如其开发的机器人会后空翻,自主爬楼梯等。这不,波士顿动力又发布了其机器人组团跳男团舞的新视频,表演的机器人包括...

关键字: 机器人 BSP 工业机器人 现代汽车

南京2022年10月17日 /美通社/ -- 日前《2022第三届中国高端家电品牌G50峰会》于浙江宁波落幕,来自两百余名行业大咖、专家学者共同探讨了在形势依然严峻的当下,如何以科技创新、高端化转型等手段,帮助...

关键字: LINK AI BSP 智能家电

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭