閱讀 | 訂閱
閱讀 | 訂閱
數控機床

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

星之球激光 來源:中國自動化網2011-12-21 我要評論(0 )   

摘要 :針對目前數控係統普遍采用文本文件格式存儲(chu) 管理數據方式上存在的問題,提出在嵌入式數控係統中采用基於(yu) MySQL數據庫管理數據的全新技術解決(jue) 方案。在 RTLinux操作...

摘要:針對目前數控係統普遍采用文本文件格式存儲(chu) 管理數據方式上存在的問題,提出在嵌入式數控係統中采用基於(yu) MySQL數據庫管理數據的全新技術解決(jue) 方案。在 RTLinux操作係統下,用MySQL設計機床數據庫,創建用戶接口,實現數據庫與(yu) 基於(yu) GTK+庫開發的用戶操作界麵的連接,在對數據庫最小化裁剪後,成功完成了向嵌入式數控係統硬件平台的移植。結果表明:嵌入式數控係統的數據庫管理方式實現了對大量參數的有效管理,極大地改善了係統的性能。
關(guan) 鍵詞:嵌入式數控係統;MySQL數據庫;Linux;MySQL C API;移植

1 引言

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

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

由於(yu) 本課題開發的人機界麵是利用GTK+圖形庫,因此係統中采用的基於(yu) MySQL數據庫應用開發,需要解決(jue) MySQL和GTK+相互融合的問題。 GTK+ 沒有直接操作數據庫的控件,對數據庫的操作可以采取通過MySQL C API 直接進行,再調用GTK+ 的顯示功能的方法來完成與(yu) 用戶的交互 [2] [3]。

2 數據庫實現

2.1 數據庫的建立

2.1.1 創建work數據庫

首先創建一個(ge) 名稱為(wei) work的數據庫,並包含係統需要的所有表,作為(wei) 根用戶連接到MySQL。具體(ti) 創建過程如下:

% mysql –uroot mysql; //進入數據庫

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

mysql> CREATE DATABASE work ; //創建work數據庫

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

//與(yu) 根用戶使用同一口令,並為(wei) 用戶賦予數據庫work的完全訪問權限

% mysql –ulyw –p lyw00001 work; //連接庫

2.1.2 創建表

針對基於(yu) GTK+庫設計的用戶操作界麵有若幹個(ge) 表與(yu) 之相對應,下麵以一個(ge) 界麵為(wei) 例詳細說明MySQL與(yu) GTK+的連接過程。

連接到數據庫之後,就可以向它添加內(nei) 容了,使用CREATE命令來創建一個(ge) 名為(wei) 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),);

創建一個(ge) 表後,可使用SQL語句INSERT命令向表中填入數據,但這種方法當數據量大時會(hui) 耗時很多。因此作者采用批處理模式向表中填入數據的方法,具體(ti) 作法是:首先創建一個(ge) 存儲(chu) 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 連接模塊

完成數據庫及表的創建,有了相關(guan) 的數據,下一步的工作就是在應用程序中實現與(yu) 數據庫的連接。應用程序中用connect_to_db()模塊實現了與(yu) 數據庫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函數用於(yu) 連接到名稱為(wei) conx 的MySQL服務器,其主機的IP地址為(wei) “127.0.0.1”,用戶名為(wei) “lyw”,密碼為(wei) “lywcita001”,連接的數據庫名為(wei) work。

2.3 填充模塊

實現了與(yu) 數據庫的連接後,接下來應將數據庫的數據填充到用戶界麵上去。應用程序中用Fill_clist()模塊實現數據填充功能,其實現流程為(wei) :用MySQL查詢所需的數據;將查詢結果保存在內(nei) 部緩存中;將緩存中的數據顯示在用戶界麵上。模塊代碼如下:

void Fill_clist(){ ……;

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

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

result_set = mysql_store_result(conx); //將查詢結果保存在內(nei) 部緩存中

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);} //釋放結果集所用的內(nei) 存

編譯運行插入程序,實現了數據庫向用戶界麵填充數據功能,獲得了如圖2所示的界麵。

 


圖2 MySQL填充圖

2.4 更新模塊

當用戶在界麵上對係統參數進行修改後,希望將新的數據寫(xie) 入數據庫保存,確保數據信息的一致性和連續性,因此應用程序應具有根據係統參數的改變而更新數據庫的功能。與(yu) 填充模塊類似,應用程序中用Update_database()模塊實現數據庫更新功能。

3 數據庫移植

3.1 移植的硬件平台

本數控係統中采用了嵌入式PC平台,嵌入式PC與(yu) 標準PC機完全兼容。因而,可以在普通PC上做好設計和開發,再將軟件移植到嵌入式PC上。本係統開發采用嵌入式PC104計算機,硬件水平達到P3級,內(nei) 存為(wei) 128M,程序存儲(chu) 選用128M CF[4]卡。#p#分頁標題#e#

3.2 移植過程

要在數控係統中應用數據庫和操作界麵,則需要將MySQL和操作界麵應用程序移植到CF卡中。考慮到CF卡的容量問題,在移植的過程中要對數據庫進行裁剪。

3.2.1 mysqld運行服務器的移植

要讓MySQL能運行在嵌入式係統中,那麽(me) mysqld運行服務器文件的移植有著至關(guan) 重要的作用。用命令ldd mysqld查詢與(yu) mysqld可執行文件相關(guan) 的庫,結果如表2所示:

表2 與(yu) mysqld可執行文件相關(guan) 的庫文件

 

相關(guan) 庫文件

大小

相關(guan) 庫文件

大小

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的大小為(wei) 3.3M,而其相關(guan) 的庫文件的大小約為(wei) 2M,將mysqld並同上述相關(guan) 的庫文件一起移植到CF卡上,這樣mysqld便可在嵌入式硬件平台上有效地執行了。

3.2.2 應用文件的移植

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

4 結束語

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

參考文獻

[1] 於(yu) 明儉(jian) ,陳向陽,方漢.Linux程序設計權威指南[M].北京:機械工業(ye) 出版社,2001.22-337.

[2] 孔令富,曹立強.用GTK+和MySQL開發數據庫應用[J].計算機工程與(yu) 科學.2001,23(3):45-46,54.

[3] T C X.MySQL Reference Manual[EB/OL].http://www.mysql.com/ documentation/ mysql/full/,2000-09-25.

[4]李昊等.CF卡在大容量數據存儲(chu) 係統的典型應用[J].微計算機信息(測控自動化).2005.第21卷第

11-1期:66-68

[5] 熊清平.數控係統技術的發展趨勢[J].機電工程技術.2004,(3):91-94

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀