李東炎, 李常賢
(大連交通大學, 1.自動化與電氣信息工程學院; 2. 軌道交通裝備設計與制造技術國家地方聯合工程研究中心, 遼寧, 大連 116021)
牽引電機作為列車的動力源,其健康狀態直接影響著列車的平穩性和安全性。軸承是牽引電機的基礎零件,也是電機中最易損壞的部分,而且由于軸承損壞的原因會占到電機故障的80%[1]。
城軌列車電機滾動軸承基本結構由軸承內環、軸承外環、滾動體、保持架四部分構成[2]。當電機軸承外環內表面、內環外表面或滾子發生故障時,故障點與其他相鄰面接觸時會產生振動信號[3]。由于電機出現故障后,電機軸承溫度會不斷上升,所以對于電機溫度的監控同樣重要。電機的振動信號及溫度數據主要通過安裝在牽引電機軸承上的傳感器進行采集,振動信號數據量龐大,導致傳輸數據難度加大[4]。同時牽引電機的故障也不易于發現,不能及時做出預警,極大的影響了列車的行車安全[5]。
針對上述問題,同時根據企業實際需求,搭建城軌列車牽引電機軸承監控系統。以此系統實時監控牽引電機軸承的狀態,可以對電機軸承發生的故障做出及時的預警。實時監控軸承狀態,對于列車的安全行駛具有極其重要的作用,可以更好的保障乘客的人身安全。
牽引電機軸承監控系統總體框架如圖1所示。系統包含數據采集單元,中央數據處理單元,上位機人機交互單元,牽引系統車載單元以及MQTT服務器。

圖1 牽引電機軸承監控系統結構框圖
通過安裝在列車牽引電機軸承的復合傳感器(溫度、振動加速度傳感器)實時采集軸承的溫度及振動加速度原始數據,數據采集單元將數據通過UDP協議傳輸到中央數據處理單元進行預處理及特征值計算以進行故障診斷。同時,牽引系統車載單元采集牽引電機的三相電流,三相電壓及轉速數據,通過TCP協議傳輸至中央數據處理單元。中央數據處理單元將處理得到的時頻域數據通過UDP協議傳輸到上位機(PC)顯示軸承的實時狀態。同時將所有數據以MQTT協議傳輸到MQTT服務器進行數據集中存儲管理。
該層的功能是通過安裝在各列車電機軸承上的壓電式加速度傳感器采集軸承(傳動端和非傳動端)振動信號(可以實現多通道采集)。
采用溫度傳感器采集各電機軸承溫度信號。同時牽引系統車載單元采集電機三相電流、三相電壓、轉速原始數據通過TCP協議傳輸至數據處理單元。以上數據的采樣頻率及通道選擇可在上位機進行設定。
該層功能主要是將數據采集單元發送來振動加速度原始數據進行預處理(零均值處理、濾波處理、異常值處理),以去除數據中的干擾因素,獲得精度更高的故障數據。將預處理后的數據進行特征計算,分別得到時域,頻域指標。如偏斜度,式(1);峭度,式(2);均方根值,式(3)。3個頻域指標,譜重心,式(4);譜均值,式(5);譜有效值,式(6)。
(1)
(2)
(3)
Fj=(j-1)/N(j=1,…,N)
(4)
(5)
(6)
式中,y(j)表示時域振動信號u(i)經過FFT變換后得到的頻域序列,N為時域振動信號u(i)的樣本點總數。
對原始數據以及計算得到的時、頻域特征數據保存為.txt文件。同時對每種類型的文件夾壓縮及加密,以減少磁盤占用空間及保證數據的安全性。
該層的功能是實現溫度預警以及振動加速度報警功能。
1) 對于溫度故障診斷:通過對采集到的溫度數據進行實時監控與存儲。主要分為兩種故障診斷方式:一是溫度閾值報警;二是溫差報警。若溫度及溫差超過所設定的閾值,則會產生溫度報警。
2) 振動加速度報警是預先設定好時域,頻域指標閾值,如果某一通道經實時計算得到的指標值超過閾值,則會產預警數據。
該層的功能是通過人機交互單元界面,實時顯示監控的原始數據,故障診斷數據。使操作人員更及時的獲得電機運行狀態。在界面中可以設置數據處理單元的處理參數。如某一特征指標的閾值,振動數據的采樣頻率等。上位機人機交互界面也具有文件解壓縮,文件解密功能。
下面重點闡述軸承監控系統上位機軟件程序設計與實現。
軟件主要功能包括:與下位機TCP通訊功能,FTP文件下載,刪除功能,下位機參數設置功能,時頻域顯示。輔助功能包括用戶注冊及密碼修改功能,下位機IP,子網掩碼及網關地址修改功能,查看及修改下位機系統時間等功能。軟件總體框架如圖2所示。

圖2 上位機軟件總體框架
軟件主要包括前端界面顯示,前端用戶主界面顯示包括:連接下位機功能子界面,用于選擇下位機IP地址進行連接。FTP時、頻域文件下載、文件刪除子界面,是以FTP協議下載、刪除下位機文件。下位機參數設置子界面,可視化設置下位機運行參數。實時數據顯示子界面,可實時顯示時域、頻域數據指標,方便用戶隨時查看。
后端進行通訊連接,線程調度,數據存儲。將大量的數據處理及存儲操作放入后端線程中進行以保證界面顯示的流暢性。上位機以UDP協議與下位機進行通訊傳輸。線程調度采用消息隊列進行線程之間數據銜接,每個線程之間不用相互等待,各自有不同的優先級,可以動態的占用CPU時間。
上位機軟件開發工具為Visual Studio 2015,通過Qt VS Tools 與Qt5.9.6建立連接,實現VS與Qt的混合編程。Qt是基于C++的圖形用戶界面應用程序開發框架,其面向對象的特點易于程序的模塊化[6]。程序設計主要包括界面程序設計,UDP通訊線程類程序設計。
3.2.1 軟件界面程序設計與實現
軟件主界面類繼承Qt中的QMianWindow類,通過在主界面類中添加菜單欄類——QMenu類,工具欄QToolBar類。QAction類,這個類代表了窗口的一個“動作”,比如用戶點擊菜單時,程序做出響應。將QAction的實例化對象添加到菜單欄或工具欄中,實現對該“動作”的添加。
子菜單界面繼承與QWidget或QDialog類。
通過在Qt Desidner中添加控件,設置界面布局實現自定義子菜單界面。QSplitter類實現了一個分離小部件,允許用戶通過拖動子部件之間的邊界來控制它們的大小。QMdiArea類使用于主窗口中,用于容納多個子菜單界面類。將繼承于QSplitter的子菜單類添加入QMdiArea中,可以實現各子菜單的獨立顯示。
開發界面的主要代碼如下:
//添加菜單欄及工具欄
QToolBar *fileToolBar=addToolBar(tr("File"));
QMenu *fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->setObjectName("m_fileMenu");
parentActionName = fileMenu->objectName();
//將個子菜單按索引值nameIndex分別加入QMdiArea中mdiSub[nameIndex]
=mdiArea->addSubWindow(child[nameIndex]);
child[nameIndex]->parentArea = mdiArea;
如圖3所示為創建監視實時振動加速度、電機速度、電機溫度子菜單界面流程圖。

圖3 子菜單界面創建流程圖
3.2.2 軟件通訊線程類程序設計與實現
UDP通訊類繼承Qt的QUdpSocket類來進行UDP數據報文的發送和接收。在使用QUdpSocket通訊類時要在VS2015的工程屬性界面Qt modules中添加“network”模塊。通過初始化QUdpSocket對象,綁定IP地址和端口號。當收到數據時,會觸發readyRead()信號,通過自定義processPendingDatagramsByUC()槽函數可以對讀取的數據進行處理。
UDP通訊類部分代碼如下:
//初始化UDP通訊對象,綁定IP地址及端口。
_udpSocketByUC = new QUdpSocket(parent);
_udpSocketByUC->bind(_portByUC,QUdpSocket::ShareAddress);
//通過connect()連接readyRead()信號和槽函數
connect(_udpSocketByUC, SIGNAL(readyRead()),this, SLOT(processPendingDatagramsByUC()), Qt::DirectConnection);
在槽函數processPendingDatagramsByUC()中將datagramBuffer緩存區內的數據進行讀取,保存到報文處理隊列中。
//讀取報文數據保存到報文處理隊列中
char * datagramBuffer = new char[datagramSize];
_udpSocketByUC->readDatagram(datagramBuffer, datagramSize,&hostAddress);
_bufferQueue.append(qMakePair(datagramSize, datagramBuffer));
線程類繼承Qt中的QThread類,一個QThread類對象管理一個線程。QThread的執行從run()函數的執行開始。調用run()函數線程啟動。然后啟動UDP通訊接口。將通過UDP傳輸的各數據報文放在一個處理報文的任務隊列中,根據接收的報文類型進行數據處理。報文處理流程圖如圖4所示。首先根據線程啟動標志runIsStop判斷線程是否啟動,若runIsStop標志為false,則繼續檢查報文任務隊列,若報文任務隊列不為空,以不同類型的報文分類處理任務隊列。報文可分為振動加速度報文、溫度報文、頻譜報文、轉速報文及電壓電流報文。為保證臨界緩沖區在同一時刻只能由一個線程持有,需要對臨界區進行加鎖處理。保證原子操作。

圖4 報文數據處理流程圖
線程類部分代碼如下:
//線程啟動后,判斷報文隊列是否為空
if (gMsgDuty.size() == 0)
{
QThread::msleep(100);//延時100 ms
}
Else
//加入互斥鎖
mutex.lock();
t = gMsgDuty.head();
gMsgDuty.pop_front();
//解鎖操作
mutex.unlock();
}
啟動上位軟件后,輸入用戶名及密碼,驗證成功后進入系統軟件主界面,如圖5所示。主界面中顯示各子界面的工具欄以及各子界面的快捷鍵。

圖5 軟件主界面
點擊“連接”菜單,彈出連接下位機界面,運行界面如圖6所示。鼠標選擇下位機IP地址后,點擊“開始連接”。顯示連接成功。點擊“斷開連接”,即可斷開與下位機否連接。若要修改下位機參數。打開參數設置界面,例如可以修改采集通道數量,溫度與振動數據采樣頻率等信息,也可以設置不同的報警閾值。設置成功后可將設置的參數通過UDP協議傳輸到下位機數據處理單元。參數設置界面如圖7所示。

圖6 連接下位機運行界面圖

圖7 下位機參數設置運行界面
點擊“實時數據”菜單按鈕可實時顯示振動加速度、溫度、三相電流、三相電壓數據曲線等曲線。振動加速度數據實時顯示界面如圖8所示。對于下位機存儲的加密壓縮.zip文件,可由FTP協議下載保存到上位機,進行歷史數據的顯示。軟件上位機也具有解密,解壓縮功能,方便用戶使用 。

圖8 振動加速度數據實時顯示界面
點擊“故障診斷”菜單,彈出實時故障特征值界面。界面如圖9所示。根據對應的數據指標是否大于其閾值判斷軸承是否出現故障。若產生故障則對應的指標數據將顯示紅色預警(圖中軸承狀態為正常)。

圖9 軸承振動故障診斷數據運行界面
本文提出并實現了對牽引電機軸承的實時監控以及故障報警系統,基本滿足了所設計的功能。通過實現振動及溫度數據的實時采集,實時監控,保證牽引電機軸承的健康運行。通過上位機人機交互界面方便用戶進行監控。為解決大量數據存儲問題,將數據實時上傳至MQTT服務器,減輕下位機存儲空間壓力。系統下一步考慮將神經網絡算法應用到該軸承故障監控系統中,以提高故障預警的準確[7]。
該監控系統經過運行測試和用戶的反饋信息表明:該系統基本實現所提出的功能需求并達到使用要求。對于保障牽引電機的安全運行具有重要的作用。