技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 組態(tài)王環(huán)境下數(shù)據(jù)庫訪問技術(shù)及其應(yīng)用

組態(tài)王環(huán)境下數(shù)據(jù)庫訪問技術(shù)及其應(yīng)用

時間:2008-08-08 09:51:00來源:ronggang

導(dǎo)語:?組態(tài)軟件具有強大的數(shù)據(jù)庫功能,但是其數(shù)據(jù)分析功能卻十分薄弱。因此在需要對采集數(shù)據(jù)進(jìn)行數(shù)據(jù)分析時,就需要將組態(tài)軟件數(shù)據(jù)庫中的數(shù)據(jù)取出送到其他軟件如MATLAB中進(jìn)行分析
摘 要:組態(tài)軟件具有強大的數(shù)據(jù)庫功能,但是其數(shù)據(jù)分析功能卻十分薄弱。因此在需要對采集數(shù)據(jù)進(jìn)行數(shù)據(jù)分析時,就需要將組態(tài)軟件數(shù)據(jù)庫中的數(shù)據(jù)取出送到其他軟件如MATLAB中進(jìn)行分析。本文針對該情況,以“組態(tài)王”為例,提供了兩種訪問數(shù)據(jù)庫的方法,并對兩種方法進(jìn)行了分析,為解決組態(tài)軟件數(shù)據(jù)庫的訪問問題提出了切實可行的方法。 關(guān)鍵詞:數(shù)據(jù)庫 組態(tài)軟件 組態(tài)王 SQL 1. 引言   隨著工控組態(tài)軟件功能的不斷完善以及可靠性的不斷提高,其在工業(yè)中得到了非常廣泛的應(yīng)用。但是,盡管組態(tài)軟件具有強大的實時數(shù)據(jù)庫功能,其數(shù)據(jù)分析能力卻十分薄弱,這一點在一定程度上限制了其在一些領(lǐng)域尤其是在實驗室中的應(yīng)用。本文針對這種情況,以組態(tài)王為例,提出利用組態(tài)軟件數(shù)據(jù)庫訪問的技術(shù)將數(shù)據(jù)庫中數(shù)據(jù)取出,送到其他具有數(shù)據(jù)分析能力的軟件(如MATLAB)中去,從而彌補了組態(tài)軟件在數(shù)據(jù)分析方面的不足,為其在更大范圍內(nèi)的應(yīng)用提供了切實可行的方法。 2. 訪問組態(tài)王數(shù)據(jù)庫的兩種方法   在本文中主要介紹和使用了兩種方法訪問組態(tài)王數(shù)據(jù)庫:FileWriteFields函數(shù)訪問和SQL訪問。通過應(yīng)用這兩種方法,將組態(tài)王實時數(shù)據(jù)庫中的實時數(shù)據(jù)直接取出,從而使其他軟件可以對數(shù)據(jù)進(jìn)行分析。這兩種方法是并行的,任何一種都可以完成對組態(tài)王數(shù)據(jù)庫的訪問。   下面對FileWriteFields函數(shù)和SQL分別予以介紹。   2.1 FileWriteFields()函數(shù)簡介[2]   該函數(shù)的功能是往指定文件寫入csv(逗號分隔變量)記錄。其調(diào)用格式為:   FileWriteFields(Filename, FileOffset, StartTag, NumberOfFields);   其中,F(xiàn)ilename為指定要寫的文件,若文件不存在,則創(chuàng)建它;FileOffset為指定寫文件的起始位置(若FileOffset為0,此函數(shù)將寫到文件末尾;若為1,則寫到開頭);StartTag指定第一個數(shù)據(jù)項的變量名稱(此變量名必須以一個數(shù)字結(jié)尾),此參數(shù)必須是一個表明變量名的字符串(而非實際的變量本身,比如變量名為MyTag1,就需要給出“MyTag1”或MyTag1.name,而不僅僅是MyTag1);NumberOfFields指定要寫的字段數(shù)目(此文件的每條記錄中以逗號隔開的字段的字段數(shù)目)。   2.2 SQL簡介   SQL(Structured Query Language)是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言,由于其功能豐富、語言簡單、使用方法靈活,已經(jīng)成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言[3]。   組態(tài)王SQL訪問功能是為了實現(xiàn)組態(tài)王和其他ODBC數(shù)據(jù)庫之間的數(shù)據(jù)傳輸。它包括組態(tài)王SQL訪問管理器和SQL函數(shù):SQL訪問管理器用來建立數(shù)據(jù)庫列和組態(tài)王變量之間的聯(lián)系,通過表格模板在數(shù)據(jù)庫中建立表格,通過記錄體建立數(shù)據(jù)庫表格列和組態(tài)王之間的聯(lián)系;SQL函數(shù)可以在組態(tài)王的任意一種語言命令中調(diào)用,這些函數(shù)用來創(chuàng)建表格、插入刪除記錄等。[1]   下面介紹一下幾個主要的SQL函數(shù)[2]:  ?。?)SQLConnect()   SQLConnect用于連接組態(tài)王和數(shù)據(jù)庫,其格式為:   SQLConnect( ConnectionID, “ConnectString”);   其中:ConnectionID為SQLConnect()產(chǎn)生的連接號,ConnectString為連接語句。連接語句格式如下:“DSN=data source name [; attribute= value [;attribute= value]…]”。  ?。?)SQLInsert()   SQLInert用于使用記錄體中定義的連接在表格中插入一個新的記錄,其格式為:   SQLInsert( ConnectionID, TableName, BindList);   其中:ConnectionID為SQLConnect()產(chǎn)生的連接號,TableName為表格名,BindList為記錄體。  ?。?)SQLDisconnect()   SQLDisconnect用于從使用的數(shù)據(jù)庫中斷開連接,其格式為:   SQLDisconnect( ConnectionID);   其中:ConnectionID為SQLConnect()產(chǎn)生的連接號,   2.3 兩種方法之間的比較   相比較而言,F(xiàn)ileWriteFields函數(shù)方法相對簡單,只要安裝了“組態(tài)王”即可,但需要占用軟件相當(dāng)?shù)狞c數(shù);利用SQL方法相對復(fù)雜一點,而且需要安裝如Access等支持SQL的數(shù)據(jù)庫軟件,但不占用組態(tài)軟件的點數(shù),在具體應(yīng)用當(dāng)中可根據(jù)需要和實際情況進(jìn)行選擇。 3. 一個例子   下面通過一個例子來介紹這兩種方法的具體應(yīng)用。該例子的目的是將現(xiàn)場的壓力信號采集到MATLAB中對該信號進(jìn)行分析。為簡單起見,本文僅畫出壓力信號的變化趨勢,表明可以在MATLAB中進(jìn)行分析即可。   第一步:將組態(tài)王實時數(shù)據(jù)庫采集到的壓力信號存到*.txt文件中。   為了方便隨時記錄,本文定義了一個內(nèi)存離散型變量record,通過按鈕“開始記錄”和“停止記錄”將該變量置1和置0。   下面分別具體介紹利用FileWriteFields函數(shù)和SQL方法對組態(tài)王實時數(shù)據(jù)庫進(jìn)行訪問。  ?。?) 利用FileWriteFields函數(shù)   本文利用FileWriteFields函數(shù)訪問組態(tài)王數(shù)據(jù)庫是在應(yīng)用程序命令語言運行時窗口中編程實現(xiàn)的,具體腳本如下:   //數(shù)據(jù)記錄   if (\\本站點\record==1)   {   Tag1=\\本站點\$日期;   Tag2=\\本站點\$時間;   Tag3=\\本站點\壓力;   FileWriteFields(“f:\DATA\Record.txt”, 0, "Tag1", 3 );  ?。?  ?。?) 利用SQL實現(xiàn)   建立一個SQL應(yīng)按如下步驟:   1先在access中建立一個庫名為”SQL數(shù)據(jù)庫”的數(shù)據(jù)庫將其保存為:f:\DATA\SQL數(shù)據(jù)庫.mdb,并在SQL數(shù)據(jù)庫中建立一個表名為“監(jiān)控表”的表,在字段名稱處分別鍵入“日期”,“時間”,“壓力”,數(shù)據(jù)類型前兩個為“文本”,最后一個為“數(shù)字”,保存該表。然后在打開的控制面板中的“32bit ODBC”中增加(ADD)一個Microsoft Access Driver數(shù)據(jù)源,其源名為“SQL數(shù)據(jù)庫”。所指向(select)數(shù)據(jù)庫的路徑為:f:\DATA\SQL數(shù)據(jù)庫.mdb。   2在組態(tài)王工程瀏覽器中建立一個名為BIND的記錄體,把組態(tài)王中的變量和數(shù)據(jù)庫“監(jiān)控表”中所對應(yīng)字段名稱增加到記錄體中,如表1所示。   表1 所創(chuàng)建記錄體BIND
  3使用下列指令建立組態(tài)王和源名為“SQL數(shù)據(jù)庫”的數(shù)據(jù)源的連接,此例中為在應(yīng)用程序命令語言中啟動時的命令:   //建立SQL連接   SQLConnect(DeviceID, "dsn= SQL數(shù)據(jù)庫");   4在“監(jiān)控表”中不斷插入記錄,此例中為在應(yīng)用程序命令語言運行時的命令:   //SQL插入記錄   if (\\本站點\record==1)   {   SQLInsert( DeviceID, "監(jiān)控表", "BIND" );  ?。?   5在退出程序時斷開連接,此例中在應(yīng)用程序命令語言停止時實現(xiàn):   //斷開SQL連接   SQLDisconnect( DeviceID);   6在數(shù)據(jù)記錄結(jié)束后,將該文件另存為txt文件。   第二步:將*.txt文件中的數(shù)據(jù)導(dǎo)入到MATLAB中,并存為*.mat文件。   本步驟比較簡單,利用MATLAB中File菜單下Import Data…命令利用向?qū)Ъ纯蓪崿F(xiàn),因此不再詳述。   第三步:對壓力信號進(jìn)行分析。 [align=center] 圖1 MATLAB中繪制的壓力曲線[/align]   為簡單起見,本文僅利用plot命令繪出壓力的變化趨勢,所得結(jié)果如圖1所示。 4. 總結(jié)   本文首先介紹了組態(tài)王環(huán)境下訪問其數(shù)據(jù)庫的兩種方法:FileWriteFields函數(shù)訪問和SQL訪問,并對二者進(jìn)行了比較;然后針對組態(tài)軟件數(shù)據(jù)分析能力相當(dāng)薄弱的不足,提出利用以上兩種方法將組態(tài)王數(shù)據(jù)庫中數(shù)據(jù)取出,送到其他具有強大數(shù)據(jù)分析能力的軟件如MATLAB中進(jìn)行分析;最后,本文利用一個例子說明本方法切實可行,確實彌補了組態(tài)軟件在數(shù)據(jù)分析方面的不足,為其在更大范圍內(nèi)得以廣泛應(yīng)用打下了基礎(chǔ)。 參考文獻(xiàn)   [1] 北京亞控科技發(fā)展有限公司. KINGVIEW Version6.0使用手冊[M]. 2001   [2] 北京亞控科技發(fā)展有限公司. 組態(tài)王Version6.0 命令語言函數(shù)速查手冊[M]. 2001   [3] 趙龍強 張學(xué)鳳. 數(shù)據(jù)庫原理與應(yīng)用[M]. 上海:上海財經(jīng)大學(xué)出版社,2001

標(biāo)簽:

點贊

分享到:

上一篇:RPC-500工控機在雷達(dá)/語音數(shù)...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號