朱 飛,洪榮晶,陳 捷,高學(xué)海,戴克芳
(1.南京工業(yè)大學(xué) 機(jī)械與動(dòng)力工程學(xué)院,南京 210009;2.馬鞍山方圓回轉(zhuǎn)支承股份有限公司,安徽 馬鞍山 243052)
回轉(zhuǎn)支承是一種能夠承受聯(lián)合載荷的特大型滾動(dòng)軸承,廣泛應(yīng)用于工程機(jī)械、風(fēng)力發(fā)電機(jī)、軌道車輛、航空航天等領(lǐng)域?;剞D(zhuǎn)支承一般造價(jià)昂貴,拆卸較困難,維修周期長、費(fèi)用高,并且使用環(huán)境相對惡劣,因此對回轉(zhuǎn)支承的動(dòng)、靜載性能和可靠性指標(biāo)提出了較高的要求,如在風(fēng)電機(jī)組中要求回轉(zhuǎn)支承的壽命在20年以上[1]。另一方面,對于回轉(zhuǎn)支承的可靠性設(shè)計(jì),國內(nèi)公司大多是建立自己的經(jīng)驗(yàn)公式,而對經(jīng)驗(yàn)公式的修正需要大量的試驗(yàn)數(shù)據(jù),因此建立回轉(zhuǎn)支承的試驗(yàn)設(shè)備是目前國內(nèi)回轉(zhuǎn)支承行業(yè)的需要。風(fēng)電回轉(zhuǎn)支承試驗(yàn)臺[2-3]包括機(jī)械、液壓、測試和控制等幾部分,其中測試和控制系統(tǒng)[4-5](以下簡稱測控系統(tǒng))是試驗(yàn)臺的核心。
試驗(yàn)臺測控系統(tǒng)下位機(jī)采用S公司的s7-200和N公司的數(shù)據(jù)采集卡,上位機(jī)選用N公司的LabVIEW軟件,數(shù)據(jù)庫選用SQL Server。LabVIEW本身并不具備直接訪問數(shù)據(jù)庫功能,不能像VB,VC那樣非常方便地進(jìn)行數(shù)據(jù)庫程序的開發(fā)與訪問,而需要采用其他輔助的方法。主要思路有2種[6-7]:(1)從底層的開發(fā)編程做起,如利用LabVIEW的ActiveX功能,調(diào)用Microsoft ADO控件,用SQL語言實(shí)現(xiàn)對數(shù)據(jù)庫的訪問;利用其他語言,如C++編寫DLL程序訪問數(shù)據(jù)庫,再利用LabVIEW所帶的DLL接口訪問該程序等。(2)利用已有的工具包訪問數(shù)據(jù)庫,如N公司的LabVIEW SQL Toolkit工具包、LabVIEW用戶開發(fā)的LabSQL工具包等。前者需要從底層進(jìn)行程序開發(fā),對相關(guān)語言有較深了解且開發(fā)量比較大,不利于項(xiàng)目進(jìn)度;后者中的LabVIEW SQL Toolkit工具包比較昂貴,而LabSQL工具包是用戶自己開發(fā)的免費(fèi)工具包,它將復(fù)雜的底層ADO及SQL操作封裝成一系列LabSQLVIs。在此利用LabSQL工具包內(nèi)置功能的組合調(diào)用,依據(jù)各個(gè)試驗(yàn)內(nèi)容的不同要求,實(shí)現(xiàn)了對SQL Server數(shù)據(jù)庫的靈活訪問,滿足了試驗(yàn)數(shù)據(jù)的查詢、修改、添加、刪除等功能要求。
圖1為試驗(yàn)臺加載驅(qū)動(dòng)系統(tǒng)部分機(jī)械結(jié)構(gòu),回轉(zhuǎn)支承固定于基礎(chǔ)上,由液壓馬達(dá)帶動(dòng)回轉(zhuǎn)支承的動(dòng)圈旋轉(zhuǎn),采用液壓缸對回轉(zhuǎn)支承進(jìn)行力和力矩的加載??刂埔簤厚R達(dá)的旋轉(zhuǎn)來控制回轉(zhuǎn)支承的轉(zhuǎn)動(dòng)情況,控制液壓缸加載力來控制回轉(zhuǎn)支承的受力情況,通過改變液壓馬達(dá)的轉(zhuǎn)速和液壓缸加載力的大小模擬回轉(zhuǎn)支承在不同應(yīng)用場合不同工況下的實(shí)際受載情況。
圖1 試驗(yàn)臺加載驅(qū)動(dòng)系統(tǒng)部分機(jī)械結(jié)構(gòu)簡圖
如在風(fēng)電機(jī)組的偏航和變槳系統(tǒng)中,回轉(zhuǎn)支承需要根據(jù)不同的風(fēng)載情況及時(shí)調(diào)整其狀態(tài)。偏航軸承同時(shí)承受機(jī)組質(zhì)量產(chǎn)生的軸向力和風(fēng)載產(chǎn)生的徑向力、傾覆力矩,在風(fēng)向發(fā)生變化時(shí)需完成啟動(dòng)、停止及換向等動(dòng)作;變槳軸承在葉輪旋轉(zhuǎn)的一個(gè)周期內(nèi)受力情況為一個(gè)正弦信號,在風(fēng)速發(fā)生變化時(shí)需通過變槳軸承來調(diào)整氣流對葉片的攻角;當(dāng)風(fēng)載突然增大時(shí)偏航和變槳軸承還可能受到?jīng)_擊。因此,需要綜合考慮具體應(yīng)用場合中的實(shí)際工況,模擬其運(yùn)轉(zhuǎn)與受載情況。
如圖2所示,LabVIEW與s7-200之間通過自由口通信實(shí)現(xiàn)數(shù)據(jù)的交換,在LabVIEW中利用LabSQL 工具包內(nèi)置功能的組合調(diào)用實(shí)現(xiàn)對SQL Server的訪問。SQL Server支持?jǐn)?shù)據(jù)的局域網(wǎng)及遠(yuǎn)程訪問,試驗(yàn)數(shù)據(jù)可在企業(yè)的ERP系統(tǒng)中進(jìn)行統(tǒng)一管理。
圖2 測控系統(tǒng)總體框架
上位機(jī)利用LabVIEW進(jìn)行功能組態(tài),以結(jié)構(gòu)化和模塊化為思想進(jìn)行設(shè)計(jì),包括試驗(yàn)參數(shù)及控制模塊、過程數(shù)據(jù)監(jiān)測模塊、數(shù)據(jù)管理模塊和報(bào)表生成模塊,如圖3所示。其中,在手動(dòng)操作情況下,“試驗(yàn)參數(shù)及控制”界面及“當(dāng)前數(shù)據(jù)存儲”按鈕為灰(不可操作),其他功能正常使用;在PC控制情況下,所有控制和監(jiān)測功能均可操作。各個(gè)模塊間相互聯(lián)系,在某一個(gè)試驗(yàn)項(xiàng)目運(yùn)行時(shí)共同完成以下幾個(gè)主要功能:
(1) 試驗(yàn)項(xiàng)目運(yùn)行參數(shù)的輸入;
(2) 加載力和液壓馬達(dá)轉(zhuǎn)速的在線監(jiān)測;
(3) 試驗(yàn)狀態(tài)的監(jiān)測及系統(tǒng)出現(xiàn)報(bào)警、急停等狀態(tài)的監(jiān)測;
(4) 定時(shí)記錄各種重要的運(yùn)行參數(shù),生成各種數(shù)據(jù)報(bào)表,并自動(dòng)保存于數(shù)據(jù)庫中;
(5) 實(shí)時(shí)記錄系統(tǒng)的報(bào)警、急停信息,生成報(bào)警、急停事件,并自動(dòng)保存于數(shù)據(jù)庫中。
圖3 上位機(jī)程序總體框架
試驗(yàn)項(xiàng)目運(yùn)行參數(shù)的輸入界面如圖4所示,而數(shù)據(jù)庫管理模塊用于將試驗(yàn)過程中的各種數(shù)據(jù)及試驗(yàn)參數(shù)等存儲于數(shù)據(jù)庫SQL Server中,同時(shí)可進(jìn)行歷史數(shù)據(jù)的查詢等。
圖4 試驗(yàn)參數(shù)輸入主界面
在試驗(yàn)臺測控系統(tǒng)中,采用數(shù)據(jù)庫技術(shù)可以使數(shù)據(jù)保存得更加完整、安全,更符合通用型、開放性標(biāo)準(zhǔn)。本試驗(yàn)臺測控系統(tǒng)數(shù)據(jù)庫由測控設(shè)備總表、控制元件分表、控制定義分表、控制數(shù)據(jù)分表、測試位置分表、測試數(shù)據(jù)分表、測試報(bào)警分表等組成,它們通過關(guān)鍵字段聯(lián)系構(gòu)成層次型關(guān)系數(shù)據(jù)庫,如圖5所示。
圖5 數(shù)據(jù)庫總分表關(guān)系圖
在LabVIEW中進(jìn)行查詢、添加、刪除試驗(yàn)數(shù)據(jù)的程序設(shè)計(jì)都是基于所建立的數(shù)據(jù)庫,因而需要先在SQL Server中建立“試驗(yàn)臺測控系統(tǒng)”數(shù)據(jù)庫,同時(shí)在其根目錄下建立測控設(shè)備總表和各個(gè)分表。另外,若要使LabVIEW程序運(yùn)行時(shí)能訪問SQL數(shù)據(jù)庫,還需要建立一個(gè)SQL數(shù)據(jù)源。建立數(shù)據(jù)源主要有3種方法[9]:使用ODBC設(shè)定數(shù)據(jù)源;使用通用數(shù)據(jù)連接UDL文件方式連接數(shù)據(jù)源;以字符串形式輸入連接信息。其中,使用ODBC設(shè)定數(shù)據(jù)源不需精通SQL語言,易于實(shí)現(xiàn),故采用此方法設(shè)定SQL數(shù)據(jù)源。
2.2.1 數(shù)據(jù)庫的建立
回轉(zhuǎn)支承各項(xiàng)試驗(yàn)的試驗(yàn)數(shù)據(jù)即存儲于試驗(yàn)臺測控系統(tǒng)數(shù)據(jù)庫,其建立路徑為:Microsoft SQL Server企業(yè)管理器控制臺根目錄Microsoft SQL ServerSQL Server組(local)(Windows NT)數(shù)據(jù)庫,在此目錄下建立數(shù)據(jù)庫名為“試驗(yàn)臺測控系統(tǒng)”,在其用戶項(xiàng)目中新建用戶,登陸名為zf_01,SQL Server身份驗(yàn)證密碼為zf_01,并關(guān)聯(lián)數(shù)據(jù)庫“試驗(yàn)臺測控系統(tǒng)”。
2.2.2 表的建立
表可進(jìn)行手動(dòng)建立或在LabVIEW中調(diào)用應(yīng)用程序自動(dòng)建立,現(xiàn)采用在SQL Server中手動(dòng)建立表的方法。在試驗(yàn)臺測控系統(tǒng)數(shù)據(jù)庫的表目錄中分別新建測控設(shè)備總表和控制元件分表、控制定義分表、控制數(shù)據(jù)分表、測試位置分表、測試數(shù)據(jù)分表、測試報(bào)警分表等各表,并定義好各個(gè)用戶表的列名、數(shù)據(jù)類型和長度等信息。在試驗(yàn)臺測控系統(tǒng)數(shù)據(jù)庫的關(guān)系圖目錄中新建關(guān)系圖測控系統(tǒng),并如圖5所示設(shè)定各表的主鍵和外鍵及各表之間的層次關(guān)系。
2.2.3 ODBC數(shù)據(jù)源的建立
使用ODBC設(shè)定數(shù)據(jù)源,即利用ODBC驅(qū)動(dòng)訪問SQL數(shù)據(jù)庫,首先要建立一個(gè)數(shù)據(jù)源名稱(DSN)來訪問相應(yīng)的數(shù)據(jù)庫。建立DSN的方法有3種,即建立用戶數(shù)據(jù)源名稱(user dsn)、建立系統(tǒng)數(shù)據(jù)源名稱(system dsn)和建立文件數(shù)據(jù)源名稱(file dsn),本文選擇建立系統(tǒng)數(shù)據(jù)源名稱。
LabSQL是一個(gè)多數(shù)據(jù)庫、跨平臺的LabVIEW數(shù)據(jù)庫訪問工具包,支持Windows操作系統(tǒng)中任何基于ODBC的數(shù)據(jù)庫。按其功能的不同,基本VIs包括Command, Connection和Recordset 3個(gè)模板和可直接調(diào)用SQL頂層的3個(gè)子VIs (Top Level VIs)。Command模板中的子VIs完成一系列的基本ADO操作,如創(chuàng)建或刪除一個(gè)Command、對數(shù)據(jù)庫中的某一參數(shù)進(jìn)行讀或?qū)懙龋籆onnection模板中的子VIs管理LabVIEW與數(shù)據(jù)庫之間的連接;Recordset模板中的子VIs用于對數(shù)據(jù)庫中的記錄進(jìn)行操作,如創(chuàng)建或刪除一條記錄、對記錄中的某一條目進(jìn)行讀或?qū)懙龋籘op Level VIs即為對前3種VIs某些功能的封裝。
在LabVIEW中編程實(shí)現(xiàn)對SQL Server訪問的基本流程如圖6所示,包括建立與數(shù)據(jù)庫的連接、建立與記錄集的連接、對記錄集的各種操作、斷開與記錄集的連接、斷開與數(shù)據(jù)庫的連接。其中建立和斷開與數(shù)據(jù)庫的連接主要用Connection功能下的子功能VI命令實(shí)現(xiàn),建立和斷開與記錄集的連接及對記錄集的各種操作主要用Recordset等功能下的子功能VI命令組合實(shí)現(xiàn)。
圖6 LabVIEW中訪問SQL Server基本流程
以測試數(shù)據(jù)分表扭矩值的查詢?yōu)槔f明程序的實(shí)現(xiàn)方法,主要包括以下步驟:
(1) 建立與數(shù)據(jù)庫的連接。利用ADO Connection Creat.vi和ADO Connection Open.vi兩個(gè)子vi建立與數(shù)據(jù)庫的連接。圖7中,首先利用ADO Connection Creat.vi創(chuàng)建一個(gè)Connection對象,然后利用ADO Connection Open.vi建立與數(shù)據(jù)庫的連接,所連接由字符串“DSN=回轉(zhuǎn)支承試驗(yàn)數(shù)據(jù)”指定(ODBC數(shù)據(jù)源建立時(shí)的數(shù)據(jù)源名稱)。
圖7 扭矩值查詢程序框圖
(2) 建立與記錄集的連接。利用ADO Recordset Creat.vi和ADO Recordset Open.vi建立與記錄集對象的連接。首先利用ADO Recordset Creat.vi創(chuàng)建一個(gè)Recordset對象,然后利用ADO Recordset Open.vi打開這個(gè)Recordset對象,同時(shí)利用SQL語句“select * from 測試數(shù)據(jù)分表”獲得數(shù)據(jù)庫測試數(shù)據(jù)分表中的扭矩值。
(3) 輸出查詢結(jié)果。SQL Fetch Data(GetString).vi的功能為執(zhí)行SQL語句后所輸出的扭矩值結(jié)果,如圖8所示(后兩列分別為液壓馬達(dá)1扭矩值和液壓馬達(dá)2扭矩值)。
(4) 關(guān)閉與記錄集的連接。由ADO Recordset Close.vi子vi完成。
(5) 關(guān)閉與數(shù)據(jù)庫的連接。由ADO Connection Close.vi子vi完成。
圖8 扭矩值查詢結(jié)果
以上步驟即完成了在LabVIEW中查詢SQL Server數(shù)據(jù)庫測試數(shù)據(jù)分表中的扭矩值,其他操作如添加、修改、刪除等功能的實(shí)現(xiàn)方法與查詢數(shù)據(jù)類似,只需在ADO Connection Open.vi后連接ADO Recordset Addnew.vi,ADO Recordset Delete Record.vi等子vi即可實(shí)現(xiàn)相應(yīng)功能。另外,也可利用Top Level VIs中的子vi: SQL Execute.vi和SQL語句直接調(diào)用SQL Server數(shù)據(jù)庫,圖9給出了利用此方法實(shí)現(xiàn)“修改報(bào)警閾值”、“添加報(bào)警閾值”和“刪除小扭矩信號”的程序框圖。
圖9 利用SQL Execute.vi和SQL語句直接調(diào)用SQL Server程序框圖
在LabVIEW中利用LabSQL工具包訪問SQL Server數(shù)據(jù)庫并應(yīng)用于回轉(zhuǎn)支承試驗(yàn)臺的測控系統(tǒng)中,不但實(shí)現(xiàn)了試驗(yàn)數(shù)據(jù)的局域網(wǎng)共享,而且便于試驗(yàn)數(shù)據(jù)的綜合管理,同時(shí)免費(fèi)的LabSQL工具包加快了項(xiàng)目進(jìn)度,節(jié)約了一定的軟件費(fèi)用。