朱 飛,洪榮晶,陳 捷,高學海,戴克芳
(1.南京工業(yè)大學 機械與動力工程學院,南京 210009;2.馬鞍山方圓回轉支承股份有限公司,安徽 馬鞍山 243052)
回轉支承是一種能夠承受聯(lián)合載荷的特大型滾動軸承,廣泛應用于工程機械、風力發(fā)電機、軌道車輛、航空航天等領域。回轉支承一般造價昂貴,拆卸較困難,維修周期長、費用高,并且使用環(huán)境相對惡劣,因此對回轉支承的動、靜載性能和可靠性指標提出了較高的要求,如在風電機組中要求回轉支承的壽命在20年以上[1]。另一方面,對于回轉支承的可靠性設計,國內公司大多是建立自己的經驗公式,而對經驗公式的修正需要大量的試驗數(shù)據(jù),因此建立回轉支承的試驗設備是目前國內回轉支承行業(yè)的需要。風電回轉支承試驗臺[2-3]包括機械、液壓、測試和控制等幾部分,其中測試和控制系統(tǒng)[4-5](以下簡稱測控系統(tǒng))是試驗臺的核心。
試驗臺測控系統(tǒng)下位機采用S公司的s7-200和N公司的數(shù)據(jù)采集卡,上位機選用N公司的LabVIEW軟件,數(shù)據(jù)庫選用SQL Server。LabVIEW本身并不具備直接訪問數(shù)據(jù)庫功能,不能像VB,VC那樣非常方便地進行數(shù)據(jù)庫程序的開發(fā)與訪問,而需要采用其他輔助的方法。主要思路有2種[6-7]:(1)從底層的開發(fā)編程做起,如利用LabVIEW的ActiveX功能,調用Microsoft ADO控件,用SQL語言實現(xiàn)對數(shù)據(jù)庫的訪問;利用其他語言,如C++編寫DLL程序訪問數(shù)據(jù)庫,再利用LabVIEW所帶的DLL接口訪問該程序等。(2)利用已有的工具包訪問數(shù)據(jù)庫,如N公司的LabVIEW SQL Toolkit工具包、LabVIEW用戶開發(fā)的LabSQL工具包等。前者需要從底層進行程序開發(fā),對相關語言有較深了解且開發(fā)量比較大,不利于項目進度;后者中的LabVIEW SQL Toolkit工具包比較昂貴,而LabSQL工具包是用戶自己開發(fā)的免費工具包,它將復雜的底層ADO及SQL操作封裝成一系列LabSQLVIs。在此利用LabSQL工具包內置功能的組合調用,依據(jù)各個試驗內容的不同要求,實現(xiàn)了對SQL Server數(shù)據(jù)庫的靈活訪問,滿足了試驗數(shù)據(jù)的查詢、修改、添加、刪除等功能要求。
圖1為試驗臺加載驅動系統(tǒng)部分機械結構,回轉支承固定于基礎上,由液壓馬達帶動回轉支承的動圈旋轉,采用液壓缸對回轉支承進行力和力矩的加載。控制液壓馬達的旋轉來控制回轉支承的轉動情況,控制液壓缸加載力來控制回轉支承的受力情況,通過改變液壓馬達的轉速和液壓缸加載力的大小模擬回轉支承在不同應用場合不同工況下的實際受載情況。

圖1 試驗臺加載驅動系統(tǒng)部分機械結構簡圖
如在風電機組的偏航和變槳系統(tǒng)中,回轉支承需要根據(jù)不同的風載情況及時調整其狀態(tài)。偏航軸承同時承受機組質量產生的軸向力和風載產生的徑向力、傾覆力矩,在風向發(fā)生變化時需完成啟動、停止及換向等動作;變槳軸承在葉輪旋轉的一個周期內受力情況為一個正弦信號,在風速發(fā)生變化時需通過變槳軸承來調整氣流對葉片的攻角;當風載突然增大時偏航和變槳軸承還可能受到沖擊。因此,需要綜合考慮具體應用場合中的實際工況,模擬其運轉與受載情況。
如圖2所示,LabVIEW與s7-200之間通過自由口通信實現(xiàn)數(shù)據(jù)的交換,在LabVIEW中利用LabSQL 工具包內置功能的組合調用實現(xiàn)對SQL Server的訪問。SQL Server支持數(shù)據(jù)的局域網及遠程訪問,試驗數(shù)據(jù)可在企業(yè)的ERP系統(tǒng)中進行統(tǒng)一管理。

圖2 測控系統(tǒng)總體框架
上位機利用LabVIEW進行功能組態(tài),以結構化和模塊化為思想進行設計,包括試驗參數(shù)及控制模塊、過程數(shù)據(jù)監(jiān)測模塊、數(shù)據(jù)管理模塊和報表生成模塊,如圖3所示。其中,在手動操作情況下,“試驗參數(shù)及控制”界面及“當前數(shù)據(jù)存儲”按鈕為灰(不可操作),其他功能正常使用;在PC控制情況下,所有控制和監(jiān)測功能均可操作。各個模塊間相互聯(lián)系,在某一個試驗項目運行時共同完成以下幾個主要功能:
(1) 試驗項目運行參數(shù)的輸入;
(2) 加載力和液壓馬達轉速的在線監(jiān)測;
(3) 試驗狀態(tài)的監(jiān)測及系統(tǒng)出現(xiàn)報警、急停等狀態(tài)的監(jiān)測;
(4) 定時記錄各種重要的運行參數(shù),生成各種數(shù)據(jù)報表,并自動保存于數(shù)據(jù)庫中;
(5) 實時記錄系統(tǒng)的報警、急停信息,生成報警、急停事件,并自動保存于數(shù)據(jù)庫中。

圖3 上位機程序總體框架
試驗項目運行參數(shù)的輸入界面如圖4所示,而數(shù)據(jù)庫管理模塊用于將試驗過程中的各種數(shù)據(jù)及試驗參數(shù)等存儲于數(shù)據(jù)庫SQL Server中,同時可進行歷史數(shù)據(jù)的查詢等。

圖4 試驗參數(shù)輸入主界面
在試驗臺測控系統(tǒng)中,采用數(shù)據(jù)庫技術可以使數(shù)據(jù)保存得更加完整、安全,更符合通用型、開放性標準。本試驗臺測控系統(tǒng)數(shù)據(jù)庫由測控設備總表、控制元件分表、控制定義分表、控制數(shù)據(jù)分表、測試位置分表、測試數(shù)據(jù)分表、測試報警分表等組成,它們通過關鍵字段聯(lián)系構成層次型關系數(shù)據(jù)庫,如圖5所示。

圖5 數(shù)據(jù)庫總分表關系圖
在LabVIEW中進行查詢、添加、刪除試驗數(shù)據(jù)的程序設計都是基于所建立的數(shù)據(jù)庫,因而需要先在SQL Server中建立“試驗臺測控系統(tǒng)”數(shù)據(jù)庫,同時在其根目錄下建立測控設備總表和各個分表。另外,若要使LabVIEW程序運行時能訪問SQL數(shù)據(jù)庫,還需要建立一個SQL數(shù)據(jù)源。建立數(shù)據(jù)源主要有3種方法[9]:使用ODBC設定數(shù)據(jù)源;使用通用數(shù)據(jù)連接UDL文件方式連接數(shù)據(jù)源;以字符串形式輸入連接信息。其中,使用ODBC設定數(shù)據(jù)源不需精通SQL語言,易于實現(xiàn),故采用此方法設定SQL數(shù)據(jù)源。
2.2.1 數(shù)據(jù)庫的建立
回轉支承各項試驗的試驗數(shù)據(jù)即存儲于試驗臺測控系統(tǒng)數(shù)據(jù)庫,其建立路徑為:Microsoft SQL Server企業(yè)管理器控制臺根目錄Microsoft SQL ServerSQL Server組(local)(Windows NT)數(shù)據(jù)庫,在此目錄下建立數(shù)據(jù)庫名為“試驗臺測控系統(tǒng)”,在其用戶項目中新建用戶,登陸名為zf_01,SQL Server身份驗證密碼為zf_01,并關聯(lián)數(shù)據(jù)庫“試驗臺測控系統(tǒng)”。
2.2.2 表的建立
表可進行手動建立或在LabVIEW中調用應用程序自動建立,現(xiàn)采用在SQL Server中手動建立表的方法。在試驗臺測控系統(tǒng)數(shù)據(jù)庫的表目錄中分別新建測控設備總表和控制元件分表、控制定義分表、控制數(shù)據(jù)分表、測試位置分表、測試數(shù)據(jù)分表、測試報警分表等各表,并定義好各個用戶表的列名、數(shù)據(jù)類型和長度等信息。在試驗臺測控系統(tǒng)數(shù)據(jù)庫的關系圖目錄中新建關系圖測控系統(tǒng),并如圖5所示設定各表的主鍵和外鍵及各表之間的層次關系。
2.2.3 ODBC數(shù)據(jù)源的建立
使用ODBC設定數(shù)據(jù)源,即利用ODBC驅動訪問SQL數(shù)據(jù)庫,首先要建立一個數(shù)據(jù)源名稱(DSN)來訪問相應的數(shù)據(jù)庫。建立DSN的方法有3種,即建立用戶數(shù)據(jù)源名稱(user dsn)、建立系統(tǒng)數(shù)據(jù)源名稱(system dsn)和建立文件數(shù)據(jù)源名稱(file dsn),本文選擇建立系統(tǒng)數(shù)據(jù)源名稱。
LabSQL是一個多數(shù)據(jù)庫、跨平臺的LabVIEW數(shù)據(jù)庫訪問工具包,支持Windows操作系統(tǒng)中任何基于ODBC的數(shù)據(jù)庫。按其功能的不同,基本VIs包括Command, Connection和Recordset 3個模板和可直接調用SQL頂層的3個子VIs (Top Level VIs)。Command模板中的子VIs完成一系列的基本ADO操作,如創(chuàng)建或刪除一個Command、對數(shù)據(jù)庫中的某一參數(shù)進行讀或寫等;Connection模板中的子VIs管理LabVIEW與數(shù)據(jù)庫之間的連接;Recordset模板中的子VIs用于對數(shù)據(jù)庫中的記錄進行操作,如創(chuàng)建或刪除一條記錄、對記錄中的某一條目進行讀或寫等;Top Level VIs即為對前3種VIs某些功能的封裝。
在LabVIEW中編程實現(xiàn)對SQL Server訪問的基本流程如圖6所示,包括建立與數(shù)據(jù)庫的連接、建立與記錄集的連接、對記錄集的各種操作、斷開與記錄集的連接、斷開與數(shù)據(jù)庫的連接。其中建立和斷開與數(shù)據(jù)庫的連接主要用Connection功能下的子功能VI命令實現(xiàn),建立和斷開與記錄集的連接及對記錄集的各種操作主要用Recordset等功能下的子功能VI命令組合實現(xiàn)。

圖6 LabVIEW中訪問SQL Server基本流程
以測試數(shù)據(jù)分表扭矩值的查詢?yōu)槔f明程序的實現(xiàn)方法,主要包括以下步驟:
(1) 建立與數(shù)據(jù)庫的連接。利用ADO Connection Creat.vi和ADO Connection Open.vi兩個子vi建立與數(shù)據(jù)庫的連接。圖7中,首先利用ADO Connection Creat.vi創(chuàng)建一個Connection對象,然后利用ADO Connection Open.vi建立與數(shù)據(jù)庫的連接,所連接由字符串“DSN=回轉支承試驗數(shù)據(jù)”指定(ODBC數(shù)據(jù)源建立時的數(shù)據(jù)源名稱)。

圖7 扭矩值查詢程序框圖
(2) 建立與記錄集的連接。利用ADO Recordset Creat.vi和ADO Recordset Open.vi建立與記錄集對象的連接。首先利用ADO Recordset Creat.vi創(chuàng)建一個Recordset對象,然后利用ADO Recordset Open.vi打開這個Recordset對象,同時利用SQL語句“select * from 測試數(shù)據(jù)分表”獲得數(shù)據(jù)庫測試數(shù)據(jù)分表中的扭矩值。
(3) 輸出查詢結果。SQL Fetch Data(GetString).vi的功能為執(zhí)行SQL語句后所輸出的扭矩值結果,如圖8所示(后兩列分別為液壓馬達1扭矩值和液壓馬達2扭矩值)。
(4) 關閉與記錄集的連接。由ADO Recordset Close.vi子vi完成。
(5) 關閉與數(shù)據(jù)庫的連接。由ADO Connection Close.vi子vi完成。

圖8 扭矩值查詢結果
以上步驟即完成了在LabVIEW中查詢SQL Server數(shù)據(jù)庫測試數(shù)據(jù)分表中的扭矩值,其他操作如添加、修改、刪除等功能的實現(xiàn)方法與查詢數(shù)據(jù)類似,只需在ADO Connection Open.vi后連接ADO Recordset Addnew.vi,ADO Recordset Delete Record.vi等子vi即可實現(xiàn)相應功能。另外,也可利用Top Level VIs中的子vi: SQL Execute.vi和SQL語句直接調用SQL Server數(shù)據(jù)庫,圖9給出了利用此方法實現(xiàn)“修改報警閾值”、“添加報警閾值”和“刪除小扭矩信號”的程序框圖。



圖9 利用SQL Execute.vi和SQL語句直接調用SQL Server程序框圖
在LabVIEW中利用LabSQL工具包訪問SQL Server數(shù)據(jù)庫并應用于回轉支承試驗臺的測控系統(tǒng)中,不但實現(xiàn)了試驗數(shù)據(jù)的局域網共享,而且便于試驗數(shù)據(jù)的綜合管理,同時免費的LabSQL工具包加快了項目進度,節(jié)約了一定的軟件費用。