李東炎, 李常賢
(大連交通大學(xué), 1.自動(dòng)化與電氣信息工程學(xué)院; 2. 軌道交通裝備設(shè)計(jì)與制造技術(shù)國家地方聯(lián)合工程研究中心, 遼寧, 大連 116021)
牽引電機(jī)作為列車的動(dòng)力源,其健康狀態(tài)直接影響著列車的平穩(wěn)性和安全性。軸承是牽引電機(jī)的基礎(chǔ)零件,也是電機(jī)中最易損壞的部分,而且由于軸承損壞的原因會(huì)占到電機(jī)故障的80%[1]。
城軌列車電機(jī)滾動(dòng)軸承基本結(jié)構(gòu)由軸承內(nèi)環(huán)、軸承外環(huán)、滾動(dòng)體、保持架四部分構(gòu)成[2]。當(dāng)電機(jī)軸承外環(huán)內(nèi)表面、內(nèi)環(huán)外表面或滾子發(fā)生故障時(shí),故障點(diǎn)與其他相鄰面接觸時(shí)會(huì)產(chǎn)生振動(dòng)信號(hào)[3]。由于電機(jī)出現(xiàn)故障后,電機(jī)軸承溫度會(huì)不斷上升,所以對(duì)于電機(jī)溫度的監(jiān)控同樣重要。電機(jī)的振動(dòng)信號(hào)及溫度數(shù)據(jù)主要通過安裝在牽引電機(jī)軸承上的傳感器進(jìn)行采集,振動(dòng)信號(hào)數(shù)據(jù)量龐大,導(dǎo)致傳輸數(shù)據(jù)難度加大[4]。同時(shí)牽引電機(jī)的故障也不易于發(fā)現(xiàn),不能及時(shí)做出預(yù)警,極大的影響了列車的行車安全[5]。
針對(duì)上述問題,同時(shí)根據(jù)企業(yè)實(shí)際需求,搭建城軌列車牽引電機(jī)軸承監(jiān)控系統(tǒng)。以此系統(tǒng)實(shí)時(shí)監(jiān)控牽引電機(jī)軸承的狀態(tài),可以對(duì)電機(jī)軸承發(fā)生的故障做出及時(shí)的預(yù)警。實(shí)時(shí)監(jiān)控軸承狀態(tài),對(duì)于列車的安全行駛具有極其重要的作用,可以更好的保障乘客的人身安全。
牽引電機(jī)軸承監(jiān)控系統(tǒng)總體框架如圖1所示。系統(tǒng)包含數(shù)據(jù)采集單元,中央數(shù)據(jù)處理單元,上位機(jī)人機(jī)交互單元,牽引系統(tǒng)車載單元以及MQTT服務(wù)器。
圖1 牽引電機(jī)軸承監(jiān)控系統(tǒng)結(jié)構(gòu)框圖
通過安裝在列車牽引電機(jī)軸承的復(fù)合傳感器(溫度、振動(dòng)加速度傳感器)實(shí)時(shí)采集軸承的溫度及振動(dòng)加速度原始數(shù)據(jù),數(shù)據(jù)采集單元將數(shù)據(jù)通過UDP協(xié)議傳輸?shù)街醒霐?shù)據(jù)處理單元進(jìn)行預(yù)處理及特征值計(jì)算以進(jìn)行故障診斷。同時(shí),牽引系統(tǒng)車載單元采集牽引電機(jī)的三相電流,三相電壓及轉(zhuǎn)速數(shù)據(jù),通過TCP協(xié)議傳輸至中央數(shù)據(jù)處理單元。中央數(shù)據(jù)處理單元將處理得到的時(shí)頻域數(shù)據(jù)通過UDP協(xié)議傳輸?shù)缴衔粰C(jī)(PC)顯示軸承的實(shí)時(shí)狀態(tài)。同時(shí)將所有數(shù)據(jù)以MQTT協(xié)議傳輸?shù)組QTT服務(wù)器進(jìn)行數(shù)據(jù)集中存儲(chǔ)管理。
該層的功能是通過安裝在各列車電機(jī)軸承上的壓電式加速度傳感器采集軸承(傳動(dòng)端和非傳動(dòng)端)振動(dòng)信號(hào)(可以實(shí)現(xiàn)多通道采集)。
采用溫度傳感器采集各電機(jī)軸承溫度信號(hào)。同時(shí)牽引系統(tǒng)車載單元采集電機(jī)三相電流、三相電壓、轉(zhuǎn)速原始數(shù)據(jù)通過TCP協(xié)議傳輸至數(shù)據(jù)處理單元。以上數(shù)據(jù)的采樣頻率及通道選擇可在上位機(jī)進(jìn)行設(shè)定。
該層功能主要是將數(shù)據(jù)采集單元發(fā)送來振動(dòng)加速度原始數(shù)據(jù)進(jìn)行預(yù)處理(零均值處理、濾波處理、異常值處理),以去除數(shù)據(jù)中的干擾因素,獲得精度更高的故障數(shù)據(jù)。將預(yù)處理后的數(shù)據(jù)進(jìn)行特征計(jì)算,分別得到時(shí)域,頻域指標(biāo)。如偏斜度,式(1);峭度,式(2);均方根值,式(3)。3個(gè)頻域指標(biāo),譜重心,式(4);譜均值,式(5);譜有效值,式(6)。
(1)
(2)
(3)
Fj=(j-1)/N(j=1,…,N)
(4)
(5)
(6)
式中,y(j)表示時(shí)域振動(dòng)信號(hào)u(i)經(jīng)過FFT變換后得到的頻域序列,N為時(shí)域振動(dòng)信號(hào)u(i)的樣本點(diǎn)總數(shù)。
對(duì)原始數(shù)據(jù)以及計(jì)算得到的時(shí)、頻域特征數(shù)據(jù)保存為.txt文件。同時(shí)對(duì)每種類型的文件夾壓縮及加密,以減少磁盤占用空間及保證數(shù)據(jù)的安全性。
該層的功能是實(shí)現(xiàn)溫度預(yù)警以及振動(dòng)加速度報(bào)警功能。
1) 對(duì)于溫度故障診斷:通過對(duì)采集到的溫度數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控與存儲(chǔ)。主要分為兩種故障診斷方式:一是溫度閾值報(bào)警;二是溫差報(bào)警。若溫度及溫差超過所設(shè)定的閾值,則會(huì)產(chǎn)生溫度報(bào)警。
2) 振動(dòng)加速度報(bào)警是預(yù)先設(shè)定好時(shí)域,頻域指標(biāo)閾值,如果某一通道經(jīng)實(shí)時(shí)計(jì)算得到的指標(biāo)值超過閾值,則會(huì)產(chǎn)預(yù)警數(shù)據(jù)。
該層的功能是通過人機(jī)交互單元界面,實(shí)時(shí)顯示監(jiān)控的原始數(shù)據(jù),故障診斷數(shù)據(jù)。使操作人員更及時(shí)的獲得電機(jī)運(yùn)行狀態(tài)。在界面中可以設(shè)置數(shù)據(jù)處理單元的處理參數(shù)。如某一特征指標(biāo)的閾值,振動(dòng)數(shù)據(jù)的采樣頻率等。上位機(jī)人機(jī)交互界面也具有文件解壓縮,文件解密功能。
下面重點(diǎn)闡述軸承監(jiān)控系統(tǒng)上位機(jī)軟件程序設(shè)計(jì)與實(shí)現(xiàn)。
軟件主要功能包括:與下位機(jī)TCP通訊功能,F(xiàn)TP文件下載,刪除功能,下位機(jī)參數(shù)設(shè)置功能,時(shí)頻域顯示。輔助功能包括用戶注冊(cè)及密碼修改功能,下位機(jī)IP,子網(wǎng)掩碼及網(wǎng)關(guān)地址修改功能,查看及修改下位機(jī)系統(tǒng)時(shí)間等功能。軟件總體框架如圖2所示。
圖2 上位機(jī)軟件總體框架
軟件主要包括前端界面顯示,前端用戶主界面顯示包括:連接下位機(jī)功能子界面,用于選擇下位機(jī)IP地址進(jìn)行連接。FTP時(shí)、頻域文件下載、文件刪除子界面,是以FTP協(xié)議下載、刪除下位機(jī)文件。下位機(jī)參數(shù)設(shè)置子界面,可視化設(shè)置下位機(jī)運(yùn)行參數(shù)。實(shí)時(shí)數(shù)據(jù)顯示子界面,可實(shí)時(shí)顯示時(shí)域、頻域數(shù)據(jù)指標(biāo),方便用戶隨時(shí)查看。
后端進(jìn)行通訊連接,線程調(diào)度,數(shù)據(jù)存儲(chǔ)。將大量的數(shù)據(jù)處理及存儲(chǔ)操作放入后端線程中進(jìn)行以保證界面顯示的流暢性。上位機(jī)以UDP協(xié)議與下位機(jī)進(jìn)行通訊傳輸。線程調(diào)度采用消息隊(duì)列進(jìn)行線程之間數(shù)據(jù)銜接,每個(gè)線程之間不用相互等待,各自有不同的優(yōu)先級(jí),可以動(dòng)態(tài)的占用CPU時(shí)間。
上位機(jī)軟件開發(fā)工具為Visual Studio 2015,通過Qt VS Tools 與Qt5.9.6建立連接,實(shí)現(xiàn)VS與Qt的混合編程。Qt是基于C++的圖形用戶界面應(yīng)用程序開發(fā)框架,其面向?qū)ο蟮奶攸c(diǎn)易于程序的模塊化[6]。程序設(shè)計(jì)主要包括界面程序設(shè)計(jì),UDP通訊線程類程序設(shè)計(jì)。
3.2.1 軟件界面程序設(shè)計(jì)與實(shí)現(xiàn)
軟件主界面類繼承Qt中的QMianWindow類,通過在主界面類中添加菜單欄類——QMenu類,工具欄QToolBar類。QAction類,這個(gè)類代表了窗口的一個(gè)“動(dòng)作”,比如用戶點(diǎn)擊菜單時(shí),程序做出響應(yīng)。將QAction的實(shí)例化對(duì)象添加到菜單欄或工具欄中,實(shí)現(xiàn)對(duì)該“動(dòng)作”的添加。
子菜單界面繼承與QWidget或QDialog類。
通過在Qt Desidner中添加控件,設(shè)置界面布局實(shí)現(xiàn)自定義子菜單界面。QSplitter類實(shí)現(xiàn)了一個(gè)分離小部件,允許用戶通過拖動(dòng)子部件之間的邊界來控制它們的大小。QMdiArea類使用于主窗口中,用于容納多個(gè)子菜單界面類。將繼承于QSplitter的子菜單類添加入QMdiArea中,可以實(shí)現(xiàn)各子菜單的獨(dú)立顯示。
開發(fā)界面的主要代碼如下:
//添加菜單欄及工具欄
QToolBar *fileToolBar=addToolBar(tr("File"));
QMenu *fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->setObjectName("m_fileMenu");
parentActionName = fileMenu->objectName();
//將個(gè)子菜單按索引值nameIndex分別加入QMdiArea中mdiSub[nameIndex]
=mdiArea->addSubWindow(child[nameIndex]);
child[nameIndex]->parentArea = mdiArea;
如圖3所示為創(chuàng)建監(jiān)視實(shí)時(shí)振動(dòng)加速度、電機(jī)速度、電機(jī)溫度子菜單界面流程圖。
圖3 子菜單界面創(chuàng)建流程圖
3.2.2 軟件通訊線程類程序設(shè)計(jì)與實(shí)現(xiàn)
UDP通訊類繼承Qt的QUdpSocket類來進(jìn)行UDP數(shù)據(jù)報(bào)文的發(fā)送和接收。在使用QUdpSocket通訊類時(shí)要在VS2015的工程屬性界面Qt modules中添加“network”模塊。通過初始化QUdpSocket對(duì)象,綁定IP地址和端口號(hào)。當(dāng)收到數(shù)據(jù)時(shí),會(huì)觸發(fā)readyRead()信號(hào),通過自定義processPendingDatagramsByUC()槽函數(shù)可以對(duì)讀取的數(shù)據(jù)進(jìn)行處理。
UDP通訊類部分代碼如下:
//初始化UDP通訊對(duì)象,綁定IP地址及端口。
_udpSocketByUC = new QUdpSocket(parent);
_udpSocketByUC->bind(_portByUC,QUdpSocket::ShareAddress);
//通過connect()連接readyRead()信號(hào)和槽函數(shù)
connect(_udpSocketByUC, SIGNAL(readyRead()),this, SLOT(processPendingDatagramsByUC()), Qt::DirectConnection);
在槽函數(shù)processPendingDatagramsByUC()中將datagramBuffer緩存區(qū)內(nèi)的數(shù)據(jù)進(jìn)行讀取,保存到報(bào)文處理隊(duì)列中。
//讀取報(bào)文數(shù)據(jù)保存到報(bào)文處理隊(duì)列中
char * datagramBuffer = new char[datagramSize];
_udpSocketByUC->readDatagram(datagramBuffer, datagramSize,&hostAddress);
_bufferQueue.append(qMakePair(datagramSize, datagramBuffer));
線程類繼承Qt中的QThread類,一個(gè)QThread類對(duì)象管理一個(gè)線程。QThread的執(zhí)行從run()函數(shù)的執(zhí)行開始。調(diào)用run()函數(shù)線程啟動(dòng)。然后啟動(dòng)UDP通訊接口。將通過UDP傳輸?shù)母鲾?shù)據(jù)報(bào)文放在一個(gè)處理報(bào)文的任務(wù)隊(duì)列中,根據(jù)接收的報(bào)文類型進(jìn)行數(shù)據(jù)處理。報(bào)文處理流程圖如圖4所示。首先根據(jù)線程啟動(dòng)標(biāo)志runIsStop判斷線程是否啟動(dòng),若runIsStop標(biāo)志為false,則繼續(xù)檢查報(bào)文任務(wù)隊(duì)列,若報(bào)文任務(wù)隊(duì)列不為空,以不同類型的報(bào)文分類處理任務(wù)隊(duì)列。報(bào)文可分為振動(dòng)加速度報(bào)文、溫度報(bào)文、頻譜報(bào)文、轉(zhuǎn)速報(bào)文及電壓電流報(bào)文。為保證臨界緩沖區(qū)在同一時(shí)刻只能由一個(gè)線程持有,需要對(duì)臨界區(qū)進(jìn)行加鎖處理。保證原子操作。
圖4 報(bào)文數(shù)據(jù)處理流程圖
線程類部分代碼如下:
//線程啟動(dòng)后,判斷報(bào)文隊(duì)列是否為空
if (gMsgDuty.size() == 0)
{
QThread::msleep(100);//延時(shí)100 ms
}
Else
//加入互斥鎖
mutex.lock();
t = gMsgDuty.head();
gMsgDuty.pop_front();
//解鎖操作
mutex.unlock();
}
啟動(dòng)上位軟件后,輸入用戶名及密碼,驗(yàn)證成功后進(jìn)入系統(tǒng)軟件主界面,如圖5所示。主界面中顯示各子界面的工具欄以及各子界面的快捷鍵。
圖5 軟件主界面
點(diǎn)擊“連接”菜單,彈出連接下位機(jī)界面,運(yùn)行界面如圖6所示。鼠標(biāo)選擇下位機(jī)IP地址后,點(diǎn)擊“開始連接”。顯示連接成功。點(diǎn)擊“斷開連接”,即可斷開與下位機(jī)否連接。若要修改下位機(jī)參數(shù)。打開參數(shù)設(shè)置界面,例如可以修改采集通道數(shù)量,溫度與振動(dòng)數(shù)據(jù)采樣頻率等信息,也可以設(shè)置不同的報(bào)警閾值。設(shè)置成功后可將設(shè)置的參數(shù)通過UDP協(xié)議傳輸?shù)较挛粰C(jī)數(shù)據(jù)處理單元。參數(shù)設(shè)置界面如圖7所示。
圖6 連接下位機(jī)運(yùn)行界面圖
圖7 下位機(jī)參數(shù)設(shè)置運(yùn)行界面
點(diǎn)擊“實(shí)時(shí)數(shù)據(jù)”菜單按鈕可實(shí)時(shí)顯示振動(dòng)加速度、溫度、三相電流、三相電壓數(shù)據(jù)曲線等曲線。振動(dòng)加速度數(shù)據(jù)實(shí)時(shí)顯示界面如圖8所示。對(duì)于下位機(jī)存儲(chǔ)的加密壓縮.zip文件,可由FTP協(xié)議下載保存到上位機(jī),進(jìn)行歷史數(shù)據(jù)的顯示。軟件上位機(jī)也具有解密,解壓縮功能,方便用戶使用 。
圖8 振動(dòng)加速度數(shù)據(jù)實(shí)時(shí)顯示界面
點(diǎn)擊“故障診斷”菜單,彈出實(shí)時(shí)故障特征值界面。界面如圖9所示。根據(jù)對(duì)應(yīng)的數(shù)據(jù)指標(biāo)是否大于其閾值判斷軸承是否出現(xiàn)故障。若產(chǎn)生故障則對(duì)應(yīng)的指標(biāo)數(shù)據(jù)將顯示紅色預(yù)警(圖中軸承狀態(tài)為正常)。
圖9 軸承振動(dòng)故障診斷數(shù)據(jù)運(yùn)行界面
本文提出并實(shí)現(xiàn)了對(duì)牽引電機(jī)軸承的實(shí)時(shí)監(jiān)控以及故障報(bào)警系統(tǒng),基本滿足了所設(shè)計(jì)的功能。通過實(shí)現(xiàn)振動(dòng)及溫度數(shù)據(jù)的實(shí)時(shí)采集,實(shí)時(shí)監(jiān)控,保證牽引電機(jī)軸承的健康運(yùn)行。通過上位機(jī)人機(jī)交互界面方便用戶進(jìn)行監(jiān)控。為解決大量數(shù)據(jù)存儲(chǔ)問題,將數(shù)據(jù)實(shí)時(shí)上傳至MQTT服務(wù)器,減輕下位機(jī)存儲(chǔ)空間壓力。系統(tǒng)下一步考慮將神經(jīng)網(wǎng)絡(luò)算法應(yīng)用到該軸承故障監(jiān)控系統(tǒng)中,以提高故障預(yù)警的準(zhǔn)確[7]。
該監(jiān)控系統(tǒng)經(jīng)過運(yùn)行測(cè)試和用戶的反饋信息表明:該系統(tǒng)基本實(shí)現(xiàn)所提出的功能需求并達(dá)到使用要求。對(duì)于保障牽引電機(jī)的安全運(yùn)行具有重要的作用。