王虎強,李旭明,吳強,張振潮,朱博文
(1.洛陽軸承研究所有限公司,河南 洛陽 471039;2.洛陽鐵路信息工程學校,河南 洛陽 471900)
隨著現代工業的不斷進步,軸承的類型大幅增加,主機廠家對軸承在不同工況下的性能要求也在提高,因此,軸承試驗的重要性越來越得到重視。
軸承試驗機中數據采集軟件的性能差異直接影響測試數據的準確性。現代數據測試技術大多通過在前端數據傳感器與計算機之間增加接口電路實現,數據采樣頻率及精度由兩者共同決定。現有的軸承試驗機數據采集系統較多采用以下2種方式進行數據通信:1)上位機與伺服控制系統串口通信,受傳輸距離限制,不便于系統的遠程控制與拓展;2)通過控制系統廠家自帶的標準接口程序,但需要授權的軟件與硬件設備,費用較高。
針對上述問題,采用以下設計方案改進軸承試驗機的數據采集系統:上位機基于LabWindows/CVI開發數據采集系統,對試驗數據進行采集、存儲及分析;下位機采用S7-200 PLC 控制驅動系統并記錄軸承位置,同時讀取伺服驅動器數據并進行存儲;上位機與下位機之間通過網口進行通信,通信基于TCP/IP協議,采用LIBNODAVE開源驅動庫,無需在工控機部署任何第三方軟件,僅需要一根網線即可通信,開發、維護難度較低,且在通信速率與可擴展性等方面有較大提升。
LabWindows/CVI 是以ANSIC為核心的開發平臺[1],其將前端儀器硬件的數據采集處理和測量控制與功能強大、兼容性好的C語言高效結合在一起,可提供強大的函數庫功能,兼容的開發環境,直觀的函數面板,為原有了解C語言的開發設計人員提供了一個很好的開發環境[2]。
在LabWindows/CVI開發環境中,可以通過已有的庫函數實現軟件的開發編輯、鏈接、編譯。在設計測試軟件時,可調用外部已編譯好的動態鏈接庫(DLL)、驅動程序、靜態庫等。因此,嘗試通過LabWindows/CVI平臺開發數據采集和儀器控制的應用程序,充分利用其提供的函數庫完成數據的采集、分析和顯示。
軸承試驗機數據采集系統的拓撲結構設計如圖1所示。

圖1 數據采集系統拓撲結構圖Fig.1 Topology diagram of data acquisition system
下位機系統采用的伺服電動機自帶速度反饋,可通過PLC實現調速和速度監控,保證長時間的運轉和控制精度,并可同時實現電動機電流的實時監測,當被試軸承摩擦力矩出現異常波動,會引起電流的變化,設備自動進行報警或停止運行。
電氣部分主要包括驅動控制系統、摩擦力矩測量系統、振動測量系統和溫度測量系統。驅動控制系統由交流伺服電動機及其驅動器組成,實現被測軸承的驅動及其他控制功能。摩擦力矩、振動、溫度測量系統由相應的傳感器、變送器及A/D轉換電路組成,實現試驗機的實時數據采集功能。溫度、振動與扭矩等物理信號由PLC數據采集模塊實現采集,通過A/D轉換為PLC可讀的數字量并存儲到指定的存儲地址。PLC控制器通過讀取指定存儲位置的數據,對伺服驅動器進行調節控制。
上位機系統的數據讀取與寫入基于TCP/IP協議與PLC進行通信,直接調用相關的接口函數讀取或寫入指定存儲模塊的數據,即完成系統的數據采集與控制。
西門子生產的S7系列PLC具有體積小、速度快、標準化等優點,但與上位機的通信相對較弱[3-5]。常見的西門子上位機形式有:西門子 HMI、西門子 PRODAVE、第三方組態軟件和OPC Server;通信接口形式為 MPI,PROFIBUS 或工業以太網[6-7]。這些數據通信結構方式都需要特定授權的軟件和硬件設備,整體成本較高。LIBNODAVE具有比PRODAVE 更強大的接口程序, 其具有的接口函數、支持的硬件以及連接方式都比 PRODAVE 多,且其具有免費、配置簡單等優點。
試驗機監控系統中需導入libnodave.lib,libnodave.lib及nodavesimple.h文件,并在程序主文件中定義增加define BCCWIN 語句。nodavesimple.h文件為庫函數頭文件,主要包含所定義的通信接口函數等。
1)char ip[200]=″10.0.0.24″;
定義PLC地址。
2)_daveOSserialType fds;
定義結構體。
3)daveInterface * di;
定義結構體指針。
4)daveConnection * dc.
定義結構體指針。
1)fds.rfd= openSocket( 102,ip);
fds.wfd=fds.rfd;
打開指定IP地址的PLC控制器通信接口,并將返回的句柄存儲到結構體_daveOSserialType 的變量中。
2)di=daveNewInterface(fds,″IF1″,0,122,2);
將結構體指針傳遞給新生成的結構體,PLC的硬件連接信息可通過daveNewConnection 傳遞,實現功能函數調用的不相關性。
3)res=daveInitAdapter(di);
對設備適配器進行初始化。
4)dc=daveNewConnection(di,2,0,1);
res=daveConnectPLC(dc);
與PLC進行連接。
在程序調用結束后,需要將PLC控制器釋放,防止程序重新啟動后出現錯誤。
1)res=daveDisConnectPLC(dc);
關閉PLC控制器連接。
2)res=daveDisconnectAdapter(di);
關閉PLC設備適配器。
3)res=closeSocket(ph);
關閉對應的設備通信端口。
3.5.1 數據寫入
1)daveWriteBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
該命令用于數據寫入,表示向PLC中寫入len字節;Area表示數據是否要寫入FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示所使用數據塊的位置;start為確定第1個字節; buffer是指向要寫入數據的緩沖區。當Area為其他區域類型時設置為0,在S7-200 SMART中會將整個V區默認為數據塊DB1。
2)daveWriteManyBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
對于要寫入多個連續性的數據,可以調用該函數進行一次性處理。
3)daveWriteBits(daveConnection * dc,int area, int DB, int start, int len, void * buffer);
與daveWriteBytes函數功能類似,表示要向PLC寫入一位的數據。
3.5.2 數據讀取
1)daveReadBytes(daveConnection * dc, int area, int DB, int start, int len, void * buffer);
該命令用于數據讀取,表示從PLC中讀取 len字節;Area表示數據是否來自FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示要使用的數據塊位置,其他區域類型設置為0;start表示要讀取第1個字節位置;緩沖區buffer指向調用程序提供的內存塊指針,如果指針不為空,結果數據將被復制到其中。
2)daveReadManyBytes(daveConnection * dc, int area, int DBnum, int start, int len, void * buffer);
從PLC讀取len字節。start確定第1個字節。與daveReadBytes()不同的是,這個函數可以讀取對于單個事務來說太長的塊。要實現這一點,需要將數據與多個后續的對CPU的讀請求一起獲取。
3)daveReadBits(daveConnection * dc, int area, int DB, int start, int len, void * buffer);
從PLC中讀取一位的數據。
數據庫用于存儲采集軟件所采集的試驗數據,以便用于后期的設計分析。利用結構化查詢語言(Structured Query Language,SQL)是關系型數據庫管理系統的標準語言,可實現對數據庫的各種交互式操作,如對數據的查詢、導入、刪除等。在本項目中,采用的MariaDB數據庫管理系統是MySQL的一個分支,基于LabWindows的版權限制,數據庫操作采用MariaDB原有的數據庫接口函數。
1)MYSQL conn;
定義數據庫連接。
2)MYSQL_RES *res;
定義數據結果集結構體指針。
3)MYSQL_ROW row;
定義用于存儲數據行信息的結構體常量。
1)mysql_library_init(0, NULL, NULL);
初始化MYSQL數據庫。
2)mysql_init(&conn);
初始化連接句柄。
3)mysql_real_connect(&conn, ″127.0.0.1″, ″root″, ″123456″, ″data″, 0, NULL, 0);
連接MYSQL數據庫服務器。
4)mysql_close(&conn);
關閉MYSQL服務器的連接。
5)mysql_library_end();
終止使用MYSQL庫。
1)mysql_real_query(&conn,sql,strlen(sql));
執行查詢或者寫入語句。
2) mysql_store_result(&conn);
獲得整個查詢語句的查詢結果。
3)mysql_num_rows(res);
獲取查詢結果條數。
4)mysql_num_fields(res);
獲取查詢結果行數。
5) mysql_fetch_row(res);
獲取查詢結果每一行的具體數據。
安裝有基于LabWindows/CVI開發平臺所設計數據采集系統的某型試驗機已進行了7 000 h的軸承壽命試驗,模擬了軸承工況,考核了軸承在壽命期內的振動、摩擦力矩和溫升指標,并且一臺試驗機可以精確試驗和檢測多套軸承,操作簡單。軸承試驗過程中,試驗數據、報警信息、試驗狀態等數據及時準確的上傳到數據服務器中。數據采集系統上位機控制界面如圖2所示,軸承運行狀態的相關數據如圖3所示。在軸承試驗過程中,該系統可實時的將軸承的試驗狀態、報警信息、試驗機運行狀態等數據準確的采集到數據服務器中。查詢客戶端可調用數據服務器接口程序,通過局域網或互聯網實時查看相關數據。

圖2 上位機的軟件界面Fig.2 Software interface of host computer

圖3 軸承運行數據截圖Fig.3 Screenshot of bearing operation data