王虎強(qiáng),李旭明,吳強(qiáng),張振潮,朱博文
(1.洛陽軸承研究所有限公司,河南 洛陽 471039;2.洛陽鐵路信息工程學(xué)校,河南 洛陽 471900)
隨著現(xiàn)代工業(yè)的不斷進(jìn)步,軸承的類型大幅增加,主機(jī)廠家對軸承在不同工況下的性能要求也在提高,因此,軸承試驗(yàn)的重要性越來越得到重視。
軸承試驗(yàn)機(jī)中數(shù)據(jù)采集軟件的性能差異直接影響測試數(shù)據(jù)的準(zhǔn)確性?,F(xiàn)代數(shù)據(jù)測試技術(shù)大多通過在前端數(shù)據(jù)傳感器與計(jì)算機(jī)之間增加接口電路實(shí)現(xiàn),數(shù)據(jù)采樣頻率及精度由兩者共同決定?,F(xiàn)有的軸承試驗(yàn)機(jī)數(shù)據(jù)采集系統(tǒng)較多采用以下2種方式進(jìn)行數(shù)據(jù)通信:1)上位機(jī)與伺服控制系統(tǒng)串口通信,受傳輸距離限制,不便于系統(tǒng)的遠(yuǎn)程控制與拓展;2)通過控制系統(tǒng)廠家自帶的標(biāo)準(zhǔn)接口程序,但需要授權(quán)的軟件與硬件設(shè)備,費(fèi)用較高。
針對上述問題,采用以下設(shè)計(jì)方案改進(jìn)軸承試驗(yàn)機(jī)的數(shù)據(jù)采集系統(tǒng):上位機(jī)基于LabWindows/CVI開發(fā)數(shù)據(jù)采集系統(tǒng),對試驗(yàn)數(shù)據(jù)進(jìn)行采集、存儲及分析;下位機(jī)采用S7-200 PLC 控制驅(qū)動系統(tǒng)并記錄軸承位置,同時(shí)讀取伺服驅(qū)動器數(shù)據(jù)并進(jìn)行存儲;上位機(jī)與下位機(jī)之間通過網(wǎng)口進(jìn)行通信,通信基于TCP/IP協(xié)議,采用LIBNODAVE開源驅(qū)動庫,無需在工控機(jī)部署任何第三方軟件,僅需要一根網(wǎng)線即可通信,開發(fā)、維護(hù)難度較低,且在通信速率與可擴(kuò)展性等方面有較大提升。
LabWindows/CVI 是以ANSIC為核心的開發(fā)平臺[1],其將前端儀器硬件的數(shù)據(jù)采集處理和測量控制與功能強(qiáng)大、兼容性好的C語言高效結(jié)合在一起,可提供強(qiáng)大的函數(shù)庫功能,兼容的開發(fā)環(huán)境,直觀的函數(shù)面板,為原有了解C語言的開發(fā)設(shè)計(jì)人員提供了一個(gè)很好的開發(fā)環(huán)境[2]。
在LabWindows/CVI開發(fā)環(huán)境中,可以通過已有的庫函數(shù)實(shí)現(xiàn)軟件的開發(fā)編輯、鏈接、編譯。在設(shè)計(jì)測試軟件時(shí),可調(diào)用外部已編譯好的動態(tài)鏈接庫(DLL)、驅(qū)動程序、靜態(tài)庫等。因此,嘗試通過LabWindows/CVI平臺開發(fā)數(shù)據(jù)采集和儀器控制的應(yīng)用程序,充分利用其提供的函數(shù)庫完成數(shù)據(jù)的采集、分析和顯示。
軸承試驗(yàn)機(jī)數(shù)據(jù)采集系統(tǒng)的拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 數(shù)據(jù)采集系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖Fig.1 Topology diagram of data acquisition system
下位機(jī)系統(tǒng)采用的伺服電動機(jī)自帶速度反饋,可通過PLC實(shí)現(xiàn)調(diào)速和速度監(jiān)控,保證長時(shí)間的運(yùn)轉(zhuǎn)和控制精度,并可同時(shí)實(shí)現(xiàn)電動機(jī)電流的實(shí)時(shí)監(jiān)測,當(dāng)被試軸承摩擦力矩出現(xiàn)異常波動,會引起電流的變化,設(shè)備自動進(jìn)行報(bào)警或停止運(yùn)行。
電氣部分主要包括驅(qū)動控制系統(tǒng)、摩擦力矩測量系統(tǒng)、振動測量系統(tǒng)和溫度測量系統(tǒng)。驅(qū)動控制系統(tǒng)由交流伺服電動機(jī)及其驅(qū)動器組成,實(shí)現(xiàn)被測軸承的驅(qū)動及其他控制功能。摩擦力矩、振動、溫度測量系統(tǒng)由相應(yīng)的傳感器、變送器及A/D轉(zhuǎn)換電路組成,實(shí)現(xiàn)試驗(yàn)機(jī)的實(shí)時(shí)數(shù)據(jù)采集功能。溫度、振動與扭矩等物理信號由PLC數(shù)據(jù)采集模塊實(shí)現(xiàn)采集,通過A/D轉(zhuǎn)換為PLC可讀的數(shù)字量并存儲到指定的存儲地址。PLC控制器通過讀取指定存儲位置的數(shù)據(jù),對伺服驅(qū)動器進(jìn)行調(diào)節(jié)控制。
上位機(jī)系統(tǒng)的數(shù)據(jù)讀取與寫入基于TCP/IP協(xié)議與PLC進(jìn)行通信,直接調(diào)用相關(guān)的接口函數(shù)讀取或?qū)懭胫付ù鎯δK的數(shù)據(jù),即完成系統(tǒng)的數(shù)據(jù)采集與控制。
西門子生產(chǎn)的S7系列PLC具有體積小、速度快、標(biāo)準(zhǔn)化等優(yōu)點(diǎn),但與上位機(jī)的通信相對較弱[3-5]。常見的西門子上位機(jī)形式有:西門子 HMI、西門子 PRODAVE、第三方組態(tài)軟件和OPC Server;通信接口形式為 MPI,PROFIBUS 或工業(yè)以太網(wǎng)[6-7]。這些數(shù)據(jù)通信結(jié)構(gòu)方式都需要特定授權(quán)的軟件和硬件設(shè)備,整體成本較高。LIBNODAVE具有比PRODAVE 更強(qiáng)大的接口程序, 其具有的接口函數(shù)、支持的硬件以及連接方式都比 PRODAVE 多,且其具有免費(fèi)、配置簡單等優(yōu)點(diǎn)。
試驗(yàn)機(jī)監(jiān)控系統(tǒng)中需導(dǎo)入libnodave.lib,libnodave.lib及nodavesimple.h文件,并在程序主文件中定義增加define BCCWIN 語句。nodavesimple.h文件為庫函數(shù)頭文件,主要包含所定義的通信接口函數(shù)等。
1)char ip[200]=″10.0.0.24″;
定義PLC地址。
2)_daveOSserialType fds;
定義結(jié)構(gòu)體。
3)daveInterface * di;
定義結(jié)構(gòu)體指針。
4)daveConnection * dc.
定義結(jié)構(gòu)體指針。
1)fds.rfd= openSocket( 102,ip);
fds.wfd=fds.rfd;
打開指定IP地址的PLC控制器通信接口,并將返回的句柄存儲到結(jié)構(gòu)體_daveOSserialType 的變量中。
2)di=daveNewInterface(fds,″IF1″,0,122,2);
將結(jié)構(gòu)體指針傳遞給新生成的結(jié)構(gòu)體,PLC的硬件連接信息可通過daveNewConnection 傳遞,實(shí)現(xiàn)功能函數(shù)調(diào)用的不相關(guān)性。
3)res=daveInitAdapter(di);
對設(shè)備適配器進(jìn)行初始化。
4)dc=daveNewConnection(di,2,0,1);
res=daveConnectPLC(dc);
與PLC進(jìn)行連接。
在程序調(diào)用結(jié)束后,需要將PLC控制器釋放,防止程序重新啟動后出現(xiàn)錯(cuò)誤。
1)res=daveDisConnectPLC(dc);
關(guān)閉PLC控制器連接。
2)res=daveDisconnectAdapter(di);
關(guān)閉PLC設(shè)備適配器。
3)res=closeSocket(ph);
關(guān)閉對應(yīng)的設(shè)備通信端口。
3.5.1 數(shù)據(jù)寫入
1)daveWriteBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
該命令用于數(shù)據(jù)寫入,表示向PLC中寫入len字節(jié);Area表示數(shù)據(jù)是否要寫入FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示所使用數(shù)據(jù)塊的位置;start為確定第1個(gè)字節(jié); buffer是指向要寫入數(shù)據(jù)的緩沖區(qū)。當(dāng)Area為其他區(qū)域類型時(shí)設(shè)置為0,在S7-200 SMART中會將整個(gè)V區(qū)默認(rèn)為數(shù)據(jù)塊DB1。
2)daveWriteManyBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
對于要寫入多個(gè)連續(xù)性的數(shù)據(jù),可以調(diào)用該函數(shù)進(jìn)行一次性處理。
3)daveWriteBits(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
與daveWriteBytes函數(shù)功能類似,表示要向PLC寫入一位的數(shù)據(jù)。
3.5.2 數(shù)據(jù)讀取
1)daveReadBytes(daveConnection * dc, int area, int DB, int start, int len, void * buffer);
該命令用于數(shù)據(jù)讀取,表示從PLC中讀取 len字節(jié);Area表示數(shù)據(jù)是否來自FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示要使用的數(shù)據(jù)塊位置,其他區(qū)域類型設(shè)置為0;start表示要讀取第1個(gè)字節(jié)位置;緩沖區(qū)buffer指向調(diào)用程序提供的內(nèi)存塊指針,如果指針不為空,結(jié)果數(shù)據(jù)將被復(fù)制到其中。
2)daveReadManyBytes(daveConnection * dc, int area, int DBnum, int start, int len, void * buffer);
從PLC讀取len字節(jié)。start確定第1個(gè)字節(jié)。與daveReadBytes()不同的是,這個(gè)函數(shù)可以讀取對于單個(gè)事務(wù)來說太長的塊。要實(shí)現(xiàn)這一點(diǎn),需要將數(shù)據(jù)與多個(gè)后續(xù)的對CPU的讀請求一起獲取。
3)daveReadBits(daveConnection * dc, int area, int DB, int start, int len, void * buffer);
從PLC中讀取一位的數(shù)據(jù)。
數(shù)據(jù)庫用于存儲采集軟件所采集的試驗(yàn)數(shù)據(jù),以便用于后期的設(shè)計(jì)分析。利用結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言,可實(shí)現(xiàn)對數(shù)據(jù)庫的各種交互式操作,如對數(shù)據(jù)的查詢、導(dǎo)入、刪除等。在本項(xiàng)目中,采用的MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個(gè)分支,基于LabWindows的版權(quán)限制,數(shù)據(jù)庫操作采用MariaDB原有的數(shù)據(jù)庫接口函數(shù)。
1)MYSQL conn;
定義數(shù)據(jù)庫連接。
2)MYSQL_RES *res;
定義數(shù)據(jù)結(jié)果集結(jié)構(gòu)體指針。
3)MYSQL_ROW row;
定義用于存儲數(shù)據(jù)行信息的結(jié)構(gòu)體常量。
1)mysql_library_init(0, NULL, NULL);
初始化MYSQL數(shù)據(jù)庫。
2)mysql_init(&conn);
初始化連接句柄。
3)mysql_real_connect(&conn, ″127.0.0.1″, ″root″, ″123456″, ″data″, 0, NULL, 0);
連接MYSQL數(shù)據(jù)庫服務(wù)器。
4)mysql_close(&conn);
關(guān)閉MYSQL服務(wù)器的連接。
5)mysql_library_end();
終止使用MYSQL庫。
1)mysql_real_query(&conn,sql,strlen(sql));
執(zhí)行查詢或者寫入語句。
2) mysql_store_result(&conn);
獲得整個(gè)查詢語句的查詢結(jié)果。
3)mysql_num_rows(res);
獲取查詢結(jié)果條數(shù)。
4)mysql_num_fields(res);
獲取查詢結(jié)果行數(shù)。
5) mysql_fetch_row(res);
獲取查詢結(jié)果每一行的具體數(shù)據(jù)。
安裝有基于LabWindows/CVI開發(fā)平臺所設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)的某型試驗(yàn)機(jī)已進(jìn)行了7 000 h的軸承壽命試驗(yàn),模擬了軸承工況,考核了軸承在壽命期內(nèi)的振動、摩擦力矩和溫升指標(biāo),并且一臺試驗(yàn)機(jī)可以精確試驗(yàn)和檢測多套軸承,操作簡單。軸承試驗(yàn)過程中,試驗(yàn)數(shù)據(jù)、報(bào)警信息、試驗(yàn)狀態(tài)等數(shù)據(jù)及時(shí)準(zhǔn)確的上傳到數(shù)據(jù)服務(wù)器中。數(shù)據(jù)采集系統(tǒng)上位機(jī)控制界面如圖2所示,軸承運(yùn)行狀態(tài)的相關(guān)數(shù)據(jù)如圖3所示。在軸承試驗(yàn)過程中,該系統(tǒng)可實(shí)時(shí)的將軸承的試驗(yàn)狀態(tài)、報(bào)警信息、試驗(yàn)機(jī)運(yùn)行狀態(tài)等數(shù)據(jù)準(zhǔn)確的采集到數(shù)據(jù)服務(wù)器中。查詢客戶端可調(diào)用數(shù)據(jù)服務(wù)器接口程序,通過局域網(wǎng)或互聯(lián)網(wǎng)實(shí)時(shí)查看相關(guān)數(shù)據(jù)。
圖2 上位機(jī)的軟件界面Fig.2 Software interface of host computer
圖3 軸承運(yùn)行數(shù)據(jù)截圖Fig.3 Screenshot of bearing operation data