大地资源网视频在线观看新浪,日本春药精油按摩系列,成人av骚妻潮喷,国产xxxx搡xxxxx搡麻豆

您現在的位置:智能制造網>技術中心>嵌入式數據庫在數控系統中的實現與應用

直播推薦

更多>

企業動態

更多>

推薦展會

更多>

嵌入式數據庫在數控系統中的實現與應用

2009年03月09日 18:12:50人氣:879來源:煙臺勾股通信技術有限公司

1 引言

 

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

    本文就嵌入式數控系統中數據庫應用開發的具體實現過程,以及如何將數據庫應用程序向嵌入式數控系統硬件平臺的移植方法和對數據庫進行zui小化裁剪的技巧上做了詳細介紹。

    由于本課題開發的人機界面是利用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),);

     創建一個表后,可使用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所示的界面。

 


圖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可執行文件相關的庫文件

 

相關庫文件
大小
相關庫文件
大小
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
 
 

 

    執行文件mysqld的大小為3.3M,而其相關的庫文件的大小約為2M,將mysqld并同上述相關的庫文件一起移植到CF卡上,這樣mysqld便可在嵌入式硬件平臺上有效地執行了。

3.2.2 應用文件的移植

     假定應用程序的可執行文件為app,用命令ldd app同樣可以查詢到與可執行文件app相關的庫。將應用程序連同與應用程序執行相關的庫文件一起移植到CF卡上。應用程序的大小約為100K,與應用程序執行相關聯的庫文件的大小約為8M,而這8M的庫文件大部分為嵌入式Linux系統自身帶有的庫文件,基本上不需要再移植。這樣就可在嵌入式數控系統中運行用戶操作界面程序,而在后臺運行數據庫程序了。
  
4 結束語

     CNC技術是現代加工技術的一個重要組成部分,如何在現有的技術基礎上不斷改進數控系統以滿足新的需求具有十分重要的意義。隨著機械加工領域對數控系統的精度、效率、功能以及智能化程度[5]的進一步要求,控制面板、人機界面和系統數據組織管理方式等方面都需要不斷的完善和創新,系統數據的基于Mysql數據庫管理方式與目前數控系統普遍采用的文本文件管理方式相比,數據庫只需在一個導入文檔中修改更新數據就可以完成對數據的維護,操作簡單方便、快捷,并且數據庫索引在數據庫啟動時進駐內存,對數據庫查詢、數據記錄的刪除和添加,索引能很方便、快捷地完成;數據庫zui小化裁剪后容量很小,因此,不論在實時性方面還是在存儲空間方面都滿足了高性能嵌入式數控系統的要求,提高了系統的速度,極大地改善了系統的性能。

 

全年征稿/資訊合作 聯系郵箱:1271141964@qq.com

免責聲明

  • 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://m.xashilian.com。違反者本網將追究相關法律責任。
  • 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
  • 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。

<
更多 >

工控網機器人儀器儀表物聯網3D打印工業軟件金屬加工機械包裝機械印刷機械農業機械食品加工設備制藥設備倉儲物流環保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


我要投稿
  • 投稿請發送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
  • 聯系電話0571-89719789
工業4.0時代智能制造領域“互聯網+”服務平臺
智能制造網APP

功能豐富 實時交流

智能制造網小程序

訂閱獲取更多服務

微信公眾號

關注我們

抖音

智能制造網

抖音號:gkzhan

打開抖音 搜索頁掃一掃

視頻號

智能制造網

公眾號:智能制造網

打開微信掃碼關注視頻號

快手

智能制造網

快手ID:gkzhan2006

打開快手 掃一掃關注
意見反饋
關閉
企業未開通此功能
詳詢客服 : 0571-87858618
主站蜘蛛池模板: 肥西县| 黎平县| 枣强县| 清水县| 来凤县| 贵港市| 固安县| 左权县| 新巴尔虎右旗| 固始县| 涪陵区| 洪洞县| 长岛县| 比如县| 汤阴县| 台东市| 望奎县| 和硕县| 彭山县| 十堰市| 如皋市| 通渭县| 丰顺县| 淳化县| 龙州县| 广丰县| 五寨县| 海林市| 镇原县| 天长市| 鄄城县| 广灵县| 交口县| 林周县| 娄底市| 海安县| 牙克石市| 德州市| 潜江市| 宜川县| 古丈县|