免费看aⅴ,天天插天天干天天射,呦女网,入逼逼

您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>嵌入式數(shù)據(jù)庫(kù)在數(shù)控系統(tǒng)中的實(shí)現(xiàn)與應(yīng)用

直播推薦

更多>

企業(yè)動(dòng)態(tài)

更多>

推薦展會(huì)

更多>

嵌入式數(shù)據(jù)庫(kù)在數(shù)控系統(tǒng)中的實(shí)現(xiàn)與應(yīng)用

2009年03月09日 18:12:50人氣:878來(lái)源:煙臺(tái)勾股通信技術(shù)有限公司

1 引言

 

    本文所論述是數(shù)控系統(tǒng)大課題中人機(jī)交互的外圍部分子課題中的數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)用。在數(shù)控加工系統(tǒng)中,存在著大量的用戶設(shè)定參數(shù)、系統(tǒng)參數(shù)、坐標(biāo)軸參數(shù)、軸補(bǔ)償參數(shù)和刀具特征參數(shù)等數(shù)據(jù)。在整個(gè)生產(chǎn)制造系統(tǒng)中,這些數(shù)據(jù)不僅對(duì)于數(shù)控編程人員是必需的,而且對(duì)于實(shí)時(shí)過(guò)程控制系統(tǒng)、調(diào)度系統(tǒng)、工序處理、庫(kù)存管理系統(tǒng)、刀具維護(hù)管理系統(tǒng)等也是必需的。這些數(shù)據(jù)的組織管理方式對(duì)數(shù)控系統(tǒng)的實(shí)時(shí)性乃至性能影響很大,因此高性能數(shù)控系統(tǒng)必須解決數(shù)據(jù)的有效性組織管理問(wèn)題。如果采用直接將數(shù)據(jù)存放在一個(gè)表或字符數(shù)組中,數(shù)據(jù)的修改與維護(hù)會(huì)相當(dāng)困難、繁雜,這與數(shù)控系統(tǒng)對(duì)數(shù)據(jù)操作要求簡(jiǎn)單方便與快捷相悖,因此這種組織管理方式不能滿足數(shù)控系統(tǒng)的要求。目前數(shù)控加工系統(tǒng)普遍采用的文本文件格式存儲(chǔ)管理數(shù)據(jù)的方式也存在著實(shí)時(shí)操作性較差和磁盤空間浪費(fèi)嚴(yán)重的缺點(diǎn),而實(shí)時(shí)性和存儲(chǔ)空間兩個(gè)要素對(duì)于高性能嵌入式數(shù)控系統(tǒng)來(lái)說(shuō)卻是至關(guān)重要的。因此,在本課題研究中,作者提出在嵌入式Linux[1]環(huán)境下的數(shù)控系統(tǒng)中采用基于MySQL數(shù)據(jù)庫(kù)管理數(shù)據(jù)的全新技術(shù)解決方案。實(shí)踐結(jié)果表明:在嵌入式數(shù)控系統(tǒng)中采用數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)管理,滿足了高性能嵌入式數(shù)控系統(tǒng)在實(shí)時(shí)性和存儲(chǔ)空間方面的要求,提高了系統(tǒng)的速度,極大地改善了系統(tǒng)的性能。

    本文就嵌入式數(shù)控系統(tǒng)中數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)的具體實(shí)現(xiàn)過(guò)程,以及如何將數(shù)據(jù)庫(kù)應(yīng)用程序向嵌入式數(shù)控系統(tǒng)硬件平臺(tái)的移植方法和對(duì)數(shù)據(jù)庫(kù)進(jìn)行zui小化裁剪的技巧上做了詳細(xì)介紹。

    由于本課題開(kāi)發(fā)的人機(jī)界面是利用GTK+圖形庫(kù),因此系統(tǒng)中采用的基于MySQL數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā),需要解決MySQL和GTK+相互融合的問(wèn)題。GTK+ 沒(méi)有直接操作數(shù)據(jù)庫(kù)的控件,對(duì)數(shù)據(jù)庫(kù)的操作可以采取通過(guò)MySQL C API 直接進(jìn)行,再調(diào)用GTK+ 的顯示功能的方法來(lái)完成與用戶的交互 [2] [3]。
  
2 數(shù)據(jù)庫(kù)實(shí)現(xiàn)

2.1 數(shù)據(jù)庫(kù)的建立

2.1.1 創(chuàng)建work數(shù)據(jù)庫(kù)

     首先創(chuàng)建一個(gè)名稱為work的數(shù)據(jù)庫(kù),并包含系統(tǒng)需要的所有表,作為根用戶連接到MySQL。具體創(chuàng)建過(guò)程如下:

% mysql –uroot mysql;                           //進(jìn)入數(shù)據(jù)庫(kù)

mysql> SET PASSWORD=PASSWORD(‘lyw00001’); //為根用戶分配一個(gè)口令

mysql> CREATE DATABASE work ;              //創(chuàng)建work數(shù)據(jù)庫(kù)

mysql> GRANT ALL ON work.* to lyw@localhost IDENTIFIED BY ‘lyw00001’;//創(chuàng)建一個(gè)名為lyw的用戶

//與根用戶使用同一口令,并為用戶賦予數(shù)據(jù)庫(kù)work的*訪問(wèn)權(quán)限

% mysql –ulyw –p lyw00001 work;                //連接庫(kù)

2.1.2 創(chuàng)建表

     針對(duì)基于GTK+庫(kù)設(shè)計(jì)的用戶操作界面有若干個(gè)表與之相對(duì)應(yīng),下面以一個(gè)界面為例詳細(xì)說(shuō)明MySQL與GTK+的連接過(guò)程。

     連接到數(shù)據(jù)庫(kù)之后,就可以向它添加內(nèi)容了,使用CREATE命令來(lái)創(chuàng)建一個(gè)名為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),);

     創(chuàng)建一個(gè)表后,可使用SQL語(yǔ)句INSERT命令向表中填入數(shù)據(jù),但這種方法當(dāng)數(shù)據(jù)量大時(shí)會(huì)耗時(shí)很多。因此作者采用批處理模式向表中填入數(shù)據(jù)的方法,具體作法是:首先創(chuàng)建一個(gè)存儲(chǔ)SQL語(yǔ)句的文本文件amend_data.sql,如圖1所示;然后執(zhí)行SQL語(yǔ)句:

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

     就將圖1中的數(shù)據(jù)加入到tbl_amend_amend表中了,如表1所示。如果需要對(duì)數(shù)據(jù)進(jìn)行修改,則只需要在amend_data.sql文本文件中進(jìn)行,然后重新執(zhí)行一次上文中提到的語(yǔ)句就可以輕松地完成。

 

 
圖1 amend_data文本文件
表1 tbl_amend_amend表 

 

2.2 連接模塊

     完成數(shù)據(jù)庫(kù)及表的創(chuàng)建,有了相關(guān)的數(shù)據(jù),下一步的工作就是在應(yīng)用程序中實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接。應(yīng)用程序中用connect_to_db()模塊實(shí)現(xiàn)了與數(shù)據(jù)庫(kù)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函數(shù)用于連接到名稱為conx 的MySQL服務(wù)器,其主機(jī)的IP地址為“127.0.0.1”,用戶名為“lyw”,密碼為“lywcita001”,連接的數(shù)據(jù)庫(kù)名為work。

2.3 填充模塊

    實(shí)現(xiàn)了與數(shù)據(jù)庫(kù)的連接后,接下來(lái)應(yīng)將數(shù)據(jù)庫(kù)的數(shù)據(jù)填充到用戶界面上去。應(yīng)用程序中用Fill_clist()模塊實(shí)現(xiàn)數(shù)據(jù)填充功能,其實(shí)現(xiàn)流程為:用MySQL查詢所需的數(shù)據(jù);將查詢結(jié)果保存在內(nèi)部緩存中;將緩存中的數(shù)據(jù)顯示在用戶界面上。模塊代碼如下:

void Fill_clist(){ ……;

gchar *amend_clist_row[5] = {,,,,};   //定義gtk+數(shù)組數(shù)據(jù)指針及變量  

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

result_set = mysql_store_result(conx);           //將查詢結(jié)果保存在內(nèi)部緩存中

num_fields = mysql_num_fields(result_set);      //獲得結(jié)果集中列的數(shù)量

while(db_row = mysql_fetch_row(result_set)) {

lengths = mysql_fetch_lengths(result_set);       //獲得列的長(zhǎng)度

amend_clist_row[0] = db_row[0];

……; 

amend_clist_row[4] = db_row[4]; //將獲得的db_row字符串?dāng)?shù)組的值一一對(duì)應(yīng)地賦值給amend_clist_row

gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist對(duì)應(yīng)的域中

mysql_free_result(result_set);}                          //釋放結(jié)果集所用的內(nèi)存

    編譯運(yùn)行插入程序,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)向用戶界面填充數(shù)據(jù)功能,獲得了如圖2所示的界面。

 


圖2 MySQL填充圖

 

2.4 更新模塊

    當(dāng)用戶在界面上對(duì)系統(tǒng)參數(shù)進(jìn)行修改后,希望將新的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)保存,確保數(shù)據(jù)信息的一致性和連續(xù)性,因此應(yīng)用程序應(yīng)具有根據(jù)系統(tǒng)參數(shù)的改變而更新數(shù)據(jù)庫(kù)的功能。與填充模塊類似,應(yīng)用程序中用Update_database()模塊實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新功能。
   
3 數(shù)據(jù)庫(kù)移植 

3.1 移植的硬件平臺(tái)

     本數(shù)控系統(tǒng)中采用了嵌入式PC平臺(tái),嵌入式PC與標(biāo)準(zhǔn)PC機(jī)*兼容。因而,可以在普通PC上做好設(shè)計(jì)和開(kāi)發(fā),再將軟件移植到嵌入式PC上。本系統(tǒng)開(kāi)發(fā)采用嵌入式PC104計(jì)算機(jī),硬件水平達(dá)到P3級(jí),內(nèi)存為128M,程序存儲(chǔ)選用128M CF[4]卡。

3.2 移植過(guò)程

     要在數(shù)控系統(tǒng)中應(yīng)用數(shù)據(jù)庫(kù)和操作界面,則需要將MySQL和操作界面應(yīng)用程序移植到CF卡中??紤]到CF卡的容量問(wèn)題,在移植的過(guò)程中要對(duì)數(shù)據(jù)庫(kù)進(jìn)行裁剪。

3.2.1 mysqld運(yùn)行服務(wù)器的移植

    要讓MySQL能運(yùn)行在嵌入式系統(tǒng)中,那么mysqld運(yùn)行服務(wù)器文件的移植有著至關(guān)重要的作用。用命令ldd mysqld查詢與mysqld可執(zhí)行文件相關(guān)的庫(kù),結(jié)果如表2所示:

表2  與mysqld可執(zhí)行文件相關(guān)的庫(kù)文件

 

相關(guān)庫(kù)文件
大小
相關(guān)庫(kù)文件
大小
librt.so.1 => /lib/librt.so.1
37K
libstdc++.so.5 => /usr/lib/libstdc++.so.5
71K
libdl.so.2 => /lib/libdl.so.2
15K
libm.so.6 => /lib/tls/libm.so.6
21K
libpthread.so.0 => /lib/tls/libpthread.so.0
79K
libgcc_s.so.1 => /lib/libgcc_s.so.1
30K
libz.so.1 => /usr/lib/libz.so.1
52K
libc.so.6 => /lib/tls/libc.so.6
1531K
libcrypt.so.1 => /lib/libcrypt.so.1
23K
/lib/ld-linux.so.2 => /lib/ld-linux.so.2
103K
libnsl.so.1 => /lib/libnsl.so.1
91K
 
 

 

    執(zhí)行文件mysqld的大小為3.3M,而其相關(guān)的庫(kù)文件的大小約為2M,將mysqld并同上述相關(guān)的庫(kù)文件一起移植到CF卡上,這樣mysqld便可在嵌入式硬件平臺(tái)上有效地執(zhí)行了。

3.2.2 應(yīng)用文件的移植

     假定應(yīng)用程序的可執(zhí)行文件為app,用命令ldd app同樣可以查詢到與可執(zhí)行文件app相關(guān)的庫(kù)。將應(yīng)用程序連同與應(yīng)用程序執(zhí)行相關(guān)的庫(kù)文件一起移植到CF卡上。應(yīng)用程序的大小約為100K,與應(yīng)用程序執(zhí)行相關(guān)聯(lián)的庫(kù)文件的大小約為8M,而這8M的庫(kù)文件大部分為嵌入式Linux系統(tǒng)自身帶有的庫(kù)文件,基本上不需要再移植。這樣就可在嵌入式數(shù)控系統(tǒng)中運(yùn)行用戶操作界面程序,而在后臺(tái)運(yùn)行數(shù)據(jù)庫(kù)程序了。
  
4 結(jié)束語(yǔ)

     CNC技術(shù)是現(xiàn)代加工技術(shù)的一個(gè)重要組成部分,如何在現(xiàn)有的技術(shù)基礎(chǔ)上不斷改進(jìn)數(shù)控系統(tǒng)以滿足新的需求具有十分重要的意義。隨著機(jī)械加工領(lǐng)域?qū)?a title="數(shù)控系統(tǒng)" target="_blank" >數(shù)控系統(tǒng)的精度、效率、功能以及智能化程度[5]的進(jìn)一步要求,控制面板、人機(jī)界面和系統(tǒng)數(shù)據(jù)組織管理方式等方面都需要不斷的完善和創(chuàng)新,系統(tǒng)數(shù)據(jù)的基于Mysql數(shù)據(jù)庫(kù)管理方式與目前數(shù)控系統(tǒng)普遍采用的文本文件管理方式相比,數(shù)據(jù)庫(kù)只需在一個(gè)導(dǎo)入文檔中修改更新數(shù)據(jù)就可以完成對(duì)數(shù)據(jù)的維護(hù),操作簡(jiǎn)單方便、快捷,并且數(shù)據(jù)庫(kù)索引在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)進(jìn)駐內(nèi)存,對(duì)數(shù)據(jù)庫(kù)查詢、數(shù)據(jù)記錄的刪除和添加,索引能很方便、快捷地完成;數(shù)據(jù)庫(kù)zui小化裁剪后容量很小,因此,不論在實(shí)時(shí)性方面還是在存儲(chǔ)空間方面都滿足了高性能嵌入式數(shù)控系統(tǒng)的要求,提高了系統(tǒng)的速度,極大地改善了系統(tǒng)的性能。

 

全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

免責(zé)聲明

  • 凡本網(wǎng)注明"來(lái)源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請(qǐng)必須注明智能制造網(wǎng),http://www.caslcampaign.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
  • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

<
更多 >

工控網(wǎng)機(jī)器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機(jī)械包裝機(jī)械印刷機(jī)械農(nóng)業(yè)機(jī)械食品加工設(shè)備制藥設(shè)備倉(cāng)儲(chǔ)物流環(huán)保設(shè)備造紙機(jī)械工程機(jī)械紡織機(jī)械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機(jī)械印染機(jī)械制鞋機(jī)械玻璃機(jī)械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


我要投稿
  • 投稿請(qǐng)發(fā)送郵件至:(郵件標(biāo)題請(qǐng)備注“投稿”)1271141964.qq.com
  • 聯(lián)系電話0571-89719789
工業(yè)4.0時(shí)代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺(tái)
智能制造網(wǎng)APP

功能豐富 實(shí)時(shí)交流

智能制造網(wǎng)小程序

訂閱獲取更多服務(wù)

微信公眾號(hào)

關(guān)注我們

抖音

智能制造網(wǎng)

抖音號(hào):gkzhan

打開(kāi)抖音 搜索頁(yè)掃一掃

視頻號(hào)

智能制造網(wǎng)

公眾號(hào):智能制造網(wǎng)

打開(kāi)微信掃碼關(guān)注視頻號(hào)

快手

智能制造網(wǎng)

快手ID:gkzhan2006

打開(kāi)快手 掃一掃關(guān)注
意見(jiàn)反饋
關(guān)閉
企業(yè)未開(kāi)通此功能
詳詢客服 : 0571-87858618