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