【正文】
端口則由系統(tǒng)分配,通過調用Windows集成的Winsock控件,就可以通過申請端口的方式訪問TCP網(wǎng)絡服務,目前這一數(shù)據(jù)庫訪問方式還在研究之中。 數(shù)據(jù)庫訪問子系統(tǒng)結構Fig. Subsystem of database visiting 數(shù)據(jù)存儲二進制數(shù)據(jù)主要有兩種存儲格式:一種是以Big Endian (其意是指最重要的字節(jié)在前)形式保存數(shù)據(jù),另一種是以Little Endian(其意是指最不重要的字節(jié)在前)形式保存數(shù)據(jù)。在Windows下,以C語言為基礎的軟硬件大都是以Little Endian形式存儲數(shù)據(jù),但是LabVIEW的二進制數(shù)據(jù)卻是以Big Endian形式保存的,因此在LabVIEW讀取C語言生成的二進制文件時,就必須先轉換成Little Endian形式的二進制文件[41]。大連理工大學振動所開發(fā)有手持式PDM2000采集儀,是基于C語言的硬件產品,用于當出現(xiàn)網(wǎng)絡故障,或用于采集其他機器信號用于分析故障,其數(shù)據(jù)要下載到監(jiān)測和故障診斷系統(tǒng)內分析。PDM2000離線系統(tǒng)所存儲的數(shù)據(jù)文件以及數(shù)據(jù)庫數(shù)據(jù),新的監(jiān)測和故障診斷系統(tǒng)都必須能夠訪問,以保證系統(tǒng)向下兼容,為了保持數(shù)據(jù)格式一致,因此均以Little Endian形式存儲數(shù)據(jù),這樣在LabVIEW開發(fā)的系統(tǒng)下,就要解決如何讀寫二進制數(shù)據(jù)的問題。系統(tǒng)設計之初是通過在C環(huán)境下生成讀寫C二進制文件的動態(tài)鏈接庫(dynamic link library,DLL)函數(shù),讀寫C語言二進制數(shù)據(jù)的,但是讀寫流程復雜,在讀文件時要打開關閉兩次數(shù)據(jù)文件,且很不穩(wěn)定,在寫數(shù)據(jù)庫時,又需重新編寫其中部分程序,嚴重影響了系統(tǒng)的穩(wěn)定性。本節(jié)給出一種直接在LabVIEW環(huán)境中讀取C語言文件的方法,不需要編寫動態(tài)鏈接庫,方便解決了LabVIEW與C語言程序數(shù)據(jù)交換的問題。二進制整型數(shù)據(jù)文件,因為整型數(shù)據(jù)是與二進制數(shù)嚴格一一對應的,可以將數(shù)據(jù)讀出后,通過字節(jié)換序得到正確的數(shù)據(jù);但是振動信號數(shù)據(jù)均是采用雙精度浮點數(shù)存儲,而IEEE 浮點數(shù)表示法是一種有限精度的數(shù)據(jù)表示法,實際浮點數(shù)是連續(xù)值,但二進制浮點數(shù)表示法只能精確表示某些有限數(shù)的離散值,無法像整型數(shù)那樣通過字節(jié)換序得到正確值。所以若要在LabVIEW中正確讀取浮點數(shù),就要按字節(jié)讀出,即不產生位丟失,對讀出的字節(jié)流作流轉化操作。 type Cast函數(shù)模塊說明Fig. Explanation of function Type CastNI提供的一個名為“Type cast(類型轉換)”的函數(shù)模塊(),可以對二進制數(shù)據(jù)流作相互轉換操作,可以將任意類型的數(shù)據(jù)按字節(jié)順序轉換成“type”所定義的數(shù)據(jù)類型。因為以字符串形式表示二進制字節(jié)流不便書寫及查看,故一般以無符號8位整型表示。以雙精度浮點數(shù)為例,在LabVIEW環(huán)境下若將浮點數(shù)數(shù)組保存Little Endian形式的二進制流(Stream),則可以先將數(shù)組倒置,“x”端口,“type”定義為無符號8位整型,輸出后再次倒置數(shù)組,此時的字節(jié)序即為Little 。對于讀取Little Endian字節(jié)序的浮點數(shù),只要更改定義端口類型,以及相應輸入輸出端口調換即可實現(xiàn)。Fig. Program of floatingpoint to binary stream在LabVIEW下直接讀取C語言二進制文件,架設了LabVIEW與其他程序語言之間通訊的橋梁,可以將其它編程語言下的數(shù)據(jù)無縫的傳遞給LabVIEW程序使用。從而大大豐富了LabVIEW在讀取數(shù)據(jù)文件時的方法,提高了其實用性。以上關鍵技術,增強了系統(tǒng)的可靠性,穩(wěn)定性,以及實用性,為監(jiān)測和故障診斷系統(tǒng)的集成化,網(wǎng)絡化打下了堅實的基礎。 6 轉子在線監(jiān)測系統(tǒng)的開發(fā)與應用 采集程序設計數(shù)據(jù)采集是設備監(jiān)測及故障診斷的首要工作,采集信號數(shù)據(jù)的正確性以及完整性直接關系到設備監(jiān)測診斷的效果。數(shù)據(jù)采集一般流程為:傳感器—變送器—接口箱—上位機(采集卡),傳感器是將目標信號轉換為電流或電壓;變送器則負責隔離信號;接口箱的作用主要是對信號把信號轉變?yōu)檫m合采集卡讀取的信號;采集卡則以設定的采樣頻率采集信號數(shù)據(jù),傳遞給上層軟件程序,然后由上層軟件傳送至服務器。 數(shù)據(jù)采集程序框圖Fig. Program flow chart of DAQ因為目標設備測點均為為雙通道信號,且對同步要求相對比較高,所以采用NI公司的數(shù)據(jù)采集產品。數(shù)據(jù)采集是LabVIEW的核心技術之一,也是LabVIEW與其它編程語言相比的優(yōu)點所在,且性能穩(wěn)定,與LabVIEW編程語言完全兼容,編程控制非常容易,在這一點上其它非NI公司數(shù)據(jù)采集卡難以企及的。 NI6143 技術參數(shù)Tab. Technological parameter about NI6143參數(shù)名稱參數(shù)指標輸入通道數(shù)8路差分模擬輸入輸入信號范圍5—5VA/D轉換分辨率16位最高采樣頻率250k/s板上時鐘2個24位計數(shù)器選定的采集卡為NI公司S系列PCI6143數(shù)采卡,S系列板卡是在多個模擬數(shù)字轉換器構架上創(chuàng)建,從而使每個通道都有強大的處理能力和出色的精準度。多種多觸發(fā)模式可供選擇,包括前模擬、后模擬及數(shù)字觸發(fā)。還具有模擬輸入、 模擬輸出、數(shù)字I/O和計數(shù)器/定時器等多種I/O功能。 服務器程序設計服務器程序運行于服務器,負責整個監(jiān)測和故障診斷系統(tǒng)的數(shù)據(jù)交換,是系統(tǒng)數(shù)據(jù)集散的中樞核心,主要任務如下:(1) 將采集機上傳的目標設備振動數(shù)據(jù)對外發(fā)布;(2) 每隔一定時間,存儲當前數(shù)據(jù)于數(shù)據(jù)庫,一旦數(shù)據(jù)超過報警限,則同時寫入報警庫;(3) 響應客戶程序數(shù)據(jù)請求,如訪問數(shù)據(jù)庫;(4) 修改狀態(tài)參數(shù),報警值及報警類型。Fig. Program flow chart of server,接收發(fā)布數(shù)據(jù)及入庫系統(tǒng)主要是將接收到的數(shù)據(jù)捆綁報警值,重構為合適的數(shù)據(jù)結構對外發(fā)布,LabVIEW中集成了一個DataSocket通訊組件,可以像廣播一樣對外發(fā)布數(shù)據(jù);配置數(shù)據(jù)庫子系統(tǒng)主要用于修改數(shù)據(jù)入庫參數(shù),察看服務器狀態(tài)參數(shù);報警值修改子系統(tǒng)用于修改報警參數(shù),報警方式;響應客戶請求子系統(tǒng)主要負責客戶端的數(shù)據(jù)庫訪問請求。Fig. Front panel of DAQ control system控制線程執(zhí)行線程Fig. Block diagram of DAQ control system圖 Fig. Front panel of data dispatcher and storageFig. Block diagram of data dispatcher and storage 數(shù)據(jù)庫設計數(shù)據(jù)庫是信息系統(tǒng)的核心。數(shù)據(jù)庫把信息系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲、維護、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、及時、準確的從數(shù)據(jù)庫中獲得所需的信息。轉子運行狀態(tài)數(shù)據(jù)庫的建立,積累了轉動設備運行和操作經(jīng)驗,增強操作人員和管理人員對轉動設備運行狀態(tài)的了解,有利于研究設備的運行狀態(tài)趨勢,同時實時保存故障信號,實現(xiàn)黑匣子功能,便于對設備故障特征進行深入的研究,有利于提高企業(yè)對轉動設備的科學管理水平。 Oracle數(shù)據(jù)庫概述Oracle數(shù)據(jù)庫系統(tǒng)是美國ORACLE公司提供的以分布式數(shù)據(jù)庫為核心的一組軟件產品,一直占全球數(shù)據(jù)庫銷售額的40%以上,穩(wěn)居數(shù)據(jù)庫產業(yè)龍頭位置[42]。它以符合國際標準的SQL數(shù)據(jù)語言為基礎,具有豐富的軟件工具,是當今世界上唯一可以同時適應大、中、小型機和微型機的數(shù)據(jù)庫管理系統(tǒng)。Oracle支持多種硬件及操作系統(tǒng)、多種網(wǎng)路通信協(xié)議和多種數(shù)據(jù)庫管理系統(tǒng)的互聯(lián),從而為建立分布式數(shù)據(jù)庫提供了強有力的支持。Oracle8主要具有下列特性:(1) 標準化程度高,Oracle8實現(xiàn)了基于SQL(Structured Query Language)結構化查詢語言的數(shù)據(jù)庫標準的關系型數(shù)據(jù)庫管理系統(tǒng),并作了一些擴充;(2) 具有強大的網(wǎng)絡功能和分布式功能,可以在幾乎所有計算機平臺上運行,可以組成各種計算模式,如集中式、客戶服務器方式和分布式等,提供了不同環(huán)境的數(shù)據(jù)共享方案;(3) 開放性好,支持ODBC(Open Database Connectivity)開放式數(shù)據(jù)庫互聯(lián)協(xié)議,能方便地與異種數(shù)據(jù)庫互操作和數(shù)據(jù)轉換;(4) 技術先進,采用了一系列先進技術,如支持超大規(guī)模數(shù)據(jù)庫技術、優(yōu)化技術和并行查詢、多線程服務器、安全性措施、數(shù)據(jù)恢復措施、分布式技術等;(5) 可移植性好,不同平臺開發(fā)成果可重用,升級方便,技術支持較好。 數(shù)據(jù)庫結構建立數(shù)據(jù)庫內是以表為單位來存儲數(shù)據(jù)內容的,表內每一個字段對應一列,每一行即是一條記錄。監(jiān)測及故障診斷系統(tǒng)的每一個測點的數(shù)據(jù)結構內包括測點所有數(shù)據(jù)信息,如設備編號、采樣長度、分析頻率、設備轉速、報警值以及振動數(shù)據(jù)等,雖然每一測點一次測量的數(shù)據(jù)量非常小,僅僅十幾K字節(jié),但是日積月累,如10年以上,數(shù)據(jù)量還是相當大的,因此一個合理的設備監(jiān)測信息庫,不僅可以節(jié)約磁盤空間,而且可以提高訪問數(shù)據(jù)的速度。建立一個合適的庫結構,需要考慮幾個方面的問題:(1)表內存儲字段以及其數(shù)據(jù)類型;(2)保存數(shù)據(jù)的時間間隔,因為是在線監(jiān)測,正常情況下,相當長的時期內信號都不會有太大變化;(3)數(shù)據(jù)庫的更新維護。(1) 表結構的確定測點信息如設備編號、采樣長度、分析頻率、設備轉速、報警值等參數(shù)數(shù)目有限,且字長比較確定,故存儲為字符型(CHAR);測量時間是信號的采集時間,存儲為日期型(DATE)型較為方便查詢操作;振動值數(shù)據(jù)是一個時間序列,數(shù)據(jù)較多,存儲為二進制格式則更合適。 數(shù)據(jù)表部分參數(shù)Tab. Part parameter of table測點狀態(tài)參數(shù)字段名數(shù)據(jù)類型單位名稱DWNAMEVARCHAR2(40)車間名稱CJNAMEVARCHAR2(40)設備編號SBBHVARCHAR2(40)設備標示SBMVARCHAR2(40)測點編號CDBHVARCHAR2(40)測點序號CDXHVARCHAR2(40)測量時間CLSJDATE設備轉速SDVARCHAR2(20)通道類型TDBHVARCHAR2(20)分析頻率FXPLVARCHAR2(20)報警線1BJX1VARCHAR2(40)報警線2BJX2VARCHAR2(40)報警類型ALERT_TYPEVARCHAR2(2)A通道單位ADWVARCHAR2(20)B通道單位BDWVARCHAR2(20)振動數(shù)據(jù)TIMDATABLOBA通道RMS值TIMRMSAVARCHAR2(100)B通道RMS值TIMRMSBVARCHAR2(100)A通道峰峰值TIMFFAVARCHAR2(100)B通道峰峰值TIMFFBVARCHAR2(100)(20) 表示數(shù)據(jù)類型為Varchar2型,數(shù)據(jù)長度為20,Varchar2數(shù)據(jù)類型是一種可變長度的、有最大長度的字母數(shù)字型數(shù)據(jù),其字段長度可以達到4000字節(jié),Varchar2類型的變量長度可以達到32676字節(jié),一個空的varchar2(2000)字段和一個空的varchar2(2)字段所占用的空間是一樣的;Oracle中DATE 數(shù)據(jù)類型用來存儲日期和時間格式的數(shù)據(jù),這種格式可以轉換為其他格式的數(shù)據(jù)去瀏覽,而且它有專門的函數(shù)和屬性用來控制和計算。以下的幾種信息都包含在DATE數(shù)據(jù)類型中:Century、Year、Month、Day、Hour、Minute、Second;BLOB是二進制數(shù)據(jù)類型,一般不可見,屬于LOB(Large Object) 數(shù)據(jù)類型,用于存儲非結構化數(shù)據(jù),比如二進制文件,圖形文件,或其他外部文件[42]。LOB數(shù)據(jù)類型還有幾種:字符型數(shù)據(jù)CLOB,二進制文件BFILE。 (2) 庫結構確定對于目標設備因為是實時監(jiān)測,不可能將每次數(shù)據(jù)都存儲入庫,也沒有什么實際意義。對一臺設備,正常情況下信號相當長的時期內都不會有太大變化。因此確定一個合理保存的時間間隔,存儲足以反映設備實時的狀態(tài)趨勢的數(shù)據(jù)量就足夠了。通過實驗,同時借鑒創(chuàng)為實的數(shù)據(jù)庫維護經(jīng)驗,對于一個測點,每隔十分鐘保存一條數(shù)據(jù),一天的數(shù)據(jù)量足以分析分析出一臺設備的短時內實時趨勢。對于設備長期運行狀態(tài),每天保存一條數(shù)據(jù)就足以反映設備狀況。 創(chuàng)建表ZDSDAY_H101Fig. Create table of ZDSDAY_H101通過上述分析可以初步構想,建立一個日數(shù)據(jù)表,用于存儲目標設備當天內的監(jiān)測數(shù)據(jù);建立一個月數(shù)據(jù)表,用于保存目標設備當月內的數(shù)據(jù);建立一個年數(shù)據(jù)表,用于保存當月以前的歷史數(shù)據(jù)。以燕化聚酯廠離心式壓縮機H101為例:建立振動監(jiān)測的日數(shù)據(jù)庫ZDSDAY_H101(),建立月數(shù)據(jù)庫ZDSMONTH_H101,建立年數(shù)據(jù)庫ZDSYEAR_H101。為了存儲故障信號數(shù)據(jù),還要建立一個故障表ZDSALERT_H101。以上只是建立了幾個用于存儲不同時期信號的數(shù)據(jù)表,并未涉及數(shù)據(jù)庫更新維護的問題:如日數(shù)據(jù)庫在第二天的時候就要清除掉前一天的數(shù)據(jù),再存入新的數(shù)據(jù),以節(jié)省磁盤空間;月數(shù)據(jù)庫則要得到前一天的日數(shù)據(jù)庫中的一條數(shù)據(jù);當一個月結束的時候又需要將當月數(shù)據(jù)移動至年數(shù)據(jù)庫。要實現(xiàn)這些過程,一種方法是通過外部程序對數(shù)據(jù)庫進行數(shù)據(jù)整理分類,但是這樣就要對數(shù)據(jù)庫作頻繁的數(shù)據(jù)操作,增加了編程的難度和監(jiān)測系統(tǒng)的不穩(wěn)定性;另一種方法就是讓數(shù)據(jù)庫自己實現(xiàn)內部更新維護,既可以減輕編程工作量,有可以提高運行速度。 數(shù)據(jù)庫作業(yè)隊列及PL/SQL在操作系統(tǒng)中,通過啟動系統(tǒng)進程可以有操作系統(tǒng)自動地、定期地執(zhí)行一些計劃。在Oracle數(shù)據(jù)庫中,也有同樣的功能,這就Oracle的作業(yè)隊列(Job Queuing)。通過作業(yè)隊列可以讓數(shù)據(jù)庫自動執(zhí)行一些維護任務如備份、分析、關閉開啟數(shù)據(jù)庫、執(zhí)行