蘇雷皓,朱明華
(1.教育部軟硬件協同設計技術與應用工程研究中心(華東師范大學),上海 200062; 2.上海物聯網有限公司,上海 201899)(*通信作者電子郵箱mhzhu@sei.ecnu.edu.cn)
振動檢測技術廣泛應用于動力系統、火車軌道、橋梁道路等領域,保證了工業生產和日常生活的順利進行[1-2]。20世紀末,日本某公司電廠600 MW的3號汽輪發電機組因異常振動引發了斷軸、毀機的嚴重事故。在軌道交通領域,近年來隨著火車不斷提速和運輸強度增長,軌道振動檢測系統也不斷發展進步,許多軌道病害形成的原因在檢測數據的科學分析中得到了確認,病害處理比較徹底,極大地保證了鐵路橋梁的安全運營。由此可見,振動檢測系統對生產設施的日常維護和重大事故的預防具有重要意義。
但是當前的振動檢測系統在實時性、可控性、檢測精度等方面存在不足:1)由于需要網絡傳輸的振動數據量大、工作站計算量大而造成系統實時性差。Molodova等[3]提出了基于軸箱加速度測量的鐵路質量自動檢測系統,可以初步實現對不同振動故障的分類;但是該設計將檢測節點的大量原始數據全部傳輸到工作站,網絡負載大,難以保證實時性。2)當前的檢測系統沒能對中大規模系統內的振動檢測節點進行有效管理,難以保證振動現場傳感器網絡的可控性與穩定性。陳高杰[4]提出的基于ZigBee技術的無線通信橋梁振動檢測系統方案具有安裝使用靈活等優點;但是這種無線通信方案難以保證穩定性,并且數據速率較低、通信范圍較小,較難滿足對中大規模振動現場的檢測需求。3)當前主流的檢測系統精度較低。Herranen等[5]在2014年設計的振動檢測設備精度約為0.488 mg;Tang等[6]在2016年設計的加速度跟蹤方法精度約為0.061mg,難以滿足當前某些檢測任務需求。
采用過程現場總線(Process field bus, Profibus)協議有利于提高系統的可控性與穩定性。Profibus協議在工業控制領域應用比較廣泛,與其他現場總線技術比較,Profibus的主要優勢是通過了權威的國際標準EN50170的認證,并已經應用于實時控制、制造加工以及工業流程自動化等領域[7]。陳靜[8]設計的用于火電廠主工藝和輔助車間的控制系統應用了Profibus技術,滿足了Profibus控制系統在網絡結構、控制方式、可靠性等方面的技術要求。若能在振動檢測設備上實現Profibus協議,則有助于實現檢測設備的功能定制開發和對傳感網絡有效管理。
采用RT-Thread系統內核有助于提高系統的實時性。RT-Thread是中國開源社區主導開發的面向小型、低功耗設備的開源嵌入式實時操作系統。RT-Thread開發了統一的硬件抽象層、設備驅動框架、傳感器框架來解決硬件多樣化、碎化的問題,具有實時性高、占用硬件資源小、功能可裁剪等優點[9]。汪宇辰[10]設計的智能輪式機器人使用RT-Thread操作系統進行開發,充分發揮了該系統的實時性與穩定性優勢,使輪式機器人具備優異的平衡性能,具有較高的研究價值。傳統方法大多在微控制器上采用無操作系統的“裸機”方式開發任務程序,這種方式開發效率低、多任務時難以保證實時性,本文采用RT-Thread系統有助于高效開發和提高系統的實時性。
綜上所述,基于當前振動檢測系統存在的問題和對現場總線協議及實時嵌入式系統的研究。為了解決振動檢測系統延遲大、傳感網絡可控性差、檢測精度低等問題,本文設計了一種基于Profibus技術的振動檢測系統,主要有以下特點:1)為保證振動傳感網絡的魯棒性和可控性,本設計采用Profibus協議,即在振動檢測設備上實現了Profibus協議。2)在每個振動傳感器節點處實現卡爾曼濾波、快速傅里葉變換等復雜計算,減輕了傳感網絡負載和工作站的計算壓力,有助于提高系統的實時性和計算能力。3)為保證檢測設備的實時性和穩定性,采用RT-Thread實時嵌入式系統內核實現資源分配和任務調度。
結合Profibus技術架構和對振動檢測系統開發經驗,本文設計提出的振動檢測系統架構如圖1所示,工作站電腦通過虛擬“路由器”的方式與可編程邏輯控制器(Programmable Logic Controller, PLC)主站連接,PLC主站通過Profibus與振動檢測設備連接。本文系統主要實現了對振動的采集、振動數據處理和計算、數據傳輸等功能,為后期振動狀態診斷奠定基礎。該設計可應用于中大規模振動檢測場景,如火車軌道振動檢測、大型器械振動檢測等領域。

圖1 振動檢測系統的結構
振動檢測設備軟件功能設計如圖2所示,由振動數據采集、數據處理、重要數據存儲、網絡控制與數據傳輸協議、異常預報警等部分組成,通過輕量級的RT-Thread實時嵌入式系統內核實現任務管理與對微控制器的資源分配。

圖2 振動檢測設備功能設計
振動檢測設備的設計是本系統設計的重要環節,圖2中振動檢測設備功能設計的具體描述如下:
1)振動數據采集。采用高性能振動傳感器來進行振動數據的采集,它的檢測精度可達0.003 9 mg,采樣頻率可達500 Hz。
2)振動數據處理。數據處理包含數據預處理、卡爾曼濾波、快速傅里葉變換(Fast Fourier Transformation, FFT)等。本設計選用的微控制器集成了數字信號處理器,可硬件實現部分復雜計算,速度快。
3)重要數據存儲。每個節點的配置信息等重要數據保存在存儲器中,可實現掉電保存。
4)網絡控制與數據傳輸。本設計采用Profibus協議實現對傳感器網絡的控制與數據傳輸。
5)可通過串口協議輸出設備當前的狀態信息。
6)異常預報警。可通過數字模擬轉換器輸出模擬信號,可通過光耦隔離輸出數字信號,根據振動情況實現必要的現場控制與報警。
振動檢測設備實際的開發過程中的主要難點在于:1)數據處理與計算較復雜,如FFT、卡爾曼濾波等,在有限的微控制器資源內難以保證實時性;2)需要支持Profibus協議,該協議的實現和調試難度大;3)采集振動數據時要求精度高(不低于0.01 mg),采樣頻率高(不低于400 Hz)。
在RT-Thread實時操作系統中用線程的方式完成各種任務,具有任務執行上下文和優先級等信息的線程是RT-Thread的基本調度單位。為了保證系統任務的有序執行,在設計時可以把緊急任務的優先級設置高一些,并適當放低非實時任務的優先級。在RT-Thread中,線程調度器是基于優先級的全搶占方式:除了中斷服務例程、調度器上鎖等線程不允許搶占,系統中的其他線程任務都允許搶占[11-12]。
如圖3所示,RT-Thread實時系統中的線程包含初始化、就緒、運行、掛起、關閉這5種狀態,系統能夠根據線程運行的情況動態調整線程狀態。例如線程通過調用接口rt_thread_init進入到初始狀態(initial),通過調用接口rt_thread_startup進入到就緒狀態(ready)。RT-Thread系統的內存管理根據任務需求和系統資源的不同提供了不同的內存分配管理算法,主要分為兩類:靜態分區內存管理與動態內存管理。在動態內存管理中采用適用于小內存塊的“小內存管理算法”和適用于大內存塊的“Slab內存管理算法”等內存管理方式。

圖3 RT-Thread的線程狀態轉換
本設計在振動檢測設備上開發實現了RT-Thread實時操作系統內核,保證了振動檢測設備的實時性和穩定性。為保證實時性和系統性能最優,本設計將振動檢測設備的整體功能劃分為振動數據獲取、數據處理、Profibus協議收發等多線程任務,線程間大多采用消息隊列的方式實現線程間通信。此外,本系統把RT-Thread內核與微控制器硬件資源(定時器)融合改進設計:在振動數據獲取時需要每秒采集400次數據,即2.5 ms采集一次,但是RT-Thread內核默認的系統時間片為10 ms,不能滿足要求;而微控制器中的定時器可以實現微秒級計時,可滿足要求。若將系統的時間片改小,則會嚴重影響系統性能,增加功耗,因此本設計在此線程任務中融合使用微控制器的定時器資源和RT-Thread內核,在線程任務中控制定時器完成所需任務。該改進設計的具體實現方法如下:1)振動數據采集任務線程啟動后,開啟微控制器的一個定時器,利用微控制器的定時中斷機制以固定頻率(比如400 Hz)讀取振動傳感器的數據,并將讀到的數據依次放入到棧空間中。與此同時,該振動數據采集任務線程通過調用函數rt_mq_recv進入掛起狀態,等待定時器數據采集完成后發出消息。2)數據采集任務完畢后(比如已完成連續采集512個振動數據任務),定時器中斷服務例程會調用函數rt_mq_send給數據采集任務線程發送消息,同時自動關閉定時器。3)數據采集任務線程收到該消息后會進入就緒狀態,進而讀取棧空間的振動數據并進行后續處理。
系統軟件流程如圖4所示,系統上電后開始系統內核初始化,為整個系統系統穩定運行奠定基礎。然后對振動傳感器、串口等各個功能模塊進行初始化,為系統所需的功能實現作好準備。緊接著初始化Profibus協議,為數據傳輸作準備。然后進入振動數據采集和振動數據處理環節,最后通過Profibus協議進行數據傳輸與系統管理。
此外,振動檢測設備可以根據部分特征值對振動狀態進行預診斷,常用的特征值如峰峰值、FFT后最大幅值及對應的頻率、均方根值等,若發現異常可立即報警,并通知工作站,實現快速對現場進行保護。振動檢測設備可通過串口輸出自身的狀態信息,并把重要數據保存在存儲器中。

圖4 系統軟件流程
一個Profibus網絡一般由一個主站和多個從站組成,在本設計中,PLC主站作為Profibus網絡中的主站,振動檢測設備作為從站。主站的參數配置包括參數化數據和主站所控制的從站信息,并且只和屬于自己的從站建立通信,主站可以根據參數化和組態這兩個報文確定屬于自己的從站。系統啟動后主站通過組態時設置的波特率與從站建立通信,同時從站會利用專用集成電路自動適應主站報文的通信波特率。在通信過程中從站實時分析收到的每個報文,若有異常的報文信息可以自動把輸出設置到安全模式,此時主站也會利用診斷報文及時發現異常。
從站的狀態機由“上電”“等待參數初始化”“等待組態”“數據交換”四部分組成。系統啟動后,從站接收主站發出的“設置從站地址”報文,并且只有此時從站能夠改變地址號。本設計把默認或者重新配置的從站地址保存在從站(振動檢測設備)的存儲器中,能夠實現掉電保存。然后從站進入等待參數化狀態,此時從站可以接收參數化報文或者診斷請求報文,并且自動屏蔽其他報文。其中參數化報文包含是否支持同步或者鎖定方式等標準化的信息以及其他用戶定義的功能信息。參數化完成后進入等待組態階段,主站發出的組態報文定義了數據交換的輸入/輸出的字節數等信息,從站會檢查是否能匹配該組態報文并反饋給主站。如果從站接受了參數化和組態報文說明通信組態成功,之后主站和從站自動進入數據交換狀態。
在振動檢測設備上開發實現Profibus協議時,首先對相關軟硬件進行初始化設置,采用SPI方式與Profibus協議芯片實現通信控制,然后由RT-Thread內核線程輪詢以下接口任務:1)看門狗定時器翻轉,實現“喂狗”;2)查詢Profibus事件,獲取當前狀態;3)進入Profibus從站狀態機,根據不同狀態執行相應任務;4)判斷是否有Profibus中斷緊急事件,若有則執行相應任務。本研究中的振動數據處理后有較多浮點型數據(float型,占用4 B),在實際應用中多采用字符串形式(一般大于4 B)傳輸浮點型數據,這種方式雖然處理簡單,但是會損失精度、增大數據傳輸量。在本設計中采用共同體的數據結構實現對浮點型數據的存儲和“壓縮”傳輸,并在PLC主站“接收端”進行相應的“解壓縮”處理,因此傳輸每個浮點型數據僅占用4字節,即保證了精度,又降低了數據傳輸量。
一般來講,每個振動檢測系統至少有幾十甚至幾百個振動檢測設備節點。若每個節點的檢測數據都交給工作站電腦處理計算,會給工作站電腦帶來巨大的負擔,再加上傳感器網絡數據傳輸的延遲,會使整個系統的實時性變差甚至使系統崩潰。
本文對振動檢測系統的數據處理改進設計如圖5所示,與傳統的振動檢測系統相比,本文系統在每個檢測設備節點處實現了一些必要的數據處理和計算。以400 Hz的采樣頻率為例,若采用傳統的檢測系統,單個檢測設備在傳感網絡中每秒需要傳輸的數據約400個;若采用本文設計的改進型檢測系統,只需要傳輸峰峰值、FFT后最大幅值對應的頻率、均方根值等約20個數據,因此傳感網絡的負載降低了約95%,縮短了網絡傳輸時間和工作站的計算時間,提高了整個系統的計算能力和實時性。

圖5 振動檢測系統的數據處理改進設計
振動檢測設備中的數據處理過程如圖6所示。

圖6 振動檢測設備中的數據處理過程
傳統的設計一般僅輸出振動傳感器數據。在本設計中,檢測到原始數據后,首先進行零點校正和卡爾曼濾波等預處理,以求得更真實的振動數據。然后進行數據處理和計算,在時域信號中可以求得峰峰值、均方根等特征參數,但精準的振動診斷還需要FFT后最大幅值及對應的頻率、能量譜密度等頻域中的特征參數,所以有必要進行數字濾波和幅頻變換等處理。最后若發現異常的數據,則進行預報警。
在實際應用中,直接從傳感器讀取的原始數據與仿真時的數據差距較大,原始數據一般是離散的,并且往往含有許多壞值[13]。若將這些數據直接輸給控制器,將嚴重影響控制效果,甚至會帶來災難性后果,所以對傳感器數據的預處理非常重要。
卡爾曼濾波算法已被廣泛應用。該算法以最小均方差為估計的最佳準則,將被關心的隨機過程用狀態空間概念來描述,采用遞推估計算法估計多個狀態變量,可以實現較好的實時濾波效果[14]。卡爾曼濾波采用振動傳感器的典型應用是從一組有限的并且包含噪聲的物體位置觀察序列(該序列可能有一定偏差)預測出物體的速度及位置信息。
由于振動場景一般是非線性系統,所以本設計采用擴展卡爾曼濾波算法對振動數據進行處理,濾波效果如圖7所示。由圖7可以看出,原始的振動傳感器測量值有較多壞值和毛刺,若不作處理會嚴重影響后續峰峰值等計算的正確性。經過擴展卡爾曼濾波后的數據更加平滑真實,更能反映實際的振動特征,有效過濾掉了一些雜波,有利于后續的數據處理。

圖7 擴展卡爾曼濾波處理
為了提高系統的計算能力和實時性,減輕工作站的計算壓力和傳感網絡負載,本設計在每個檢測設備節點處實現了一些必要的數據處理和計算,對振動數據處理的部分計算式如下所示:
其中:k=0,1,…,N/2-1。
(1)
快速傅里葉變換把時域信號轉換成頻域信號,從而獲得FFT后的最大幅值及對應的頻率等在頻域中的特征信息,其計算方法如式(1)所示。X(k)=DFT[x(n)],x(n)為有限長度為N的振動信號數據,DFT[]為離散傅里葉變換(Discrete Fourier Transform, DFT)。盡管傳統的DFT能夠獲取頻域特征,但是它的計算量大、耗時長,嚴重影響實時性,所以在本設計中使用了快速傅里葉變換,把運算復雜度從N2減少到N*lbN。
功率譜密度的定義是單位頻帶內的“功率”,功率譜密度譜是采用概率統計方法實現對隨機變量均方值的量度,計算方法如式(2)所示:
(2)
其中x(n)為有限長度為N的振動信號數據,功率譜密度在隨機振動分析領域中應用普遍。本設計采用的微控制器集成了數字信號處理器,本節內容所述的FFT等復雜計算可由微控制器硬件實現,在計算時直接調用相關庫函數即可,縮短了計算時間,提高了計算的可靠性。
本系統的所有功能都已通過嚴格測試,在本章只呈現較重要功能的實現與測試。所需硬件平臺:1)工作站電腦(Windows 7系統);2)PLC控制器套件,作為現場總線協議的主站;3)振動檢測設備,是自主設計并生產的振動檢測設備。所需軟件平臺:1)振動檢測設備軟件;2)PLC控制器開發平臺;3)Matlab工具。
本設計振動檢測系統實驗平臺如圖8所示,“1”是工作站電腦,“2”是PLC主站,“3”是振動檢測設備,“4”是直流穩壓電源。將振動檢測設備固定在振動平臺上,實現下文中系統的整體測試。

圖8 振動檢測系統實驗平臺
本系統已經實現Profibus協議,其中振動檢測設備作為從站,PLC控制器設備作為主站,其功能測試結果如圖9所示。首先在PLC控制器開發平臺可看到振動檢測設備的狀態為“No error”,并且此時PLC中Profibus主站模塊常亮綠燈,說明Profibus協議工作正常。然后進行了大量的Profibus協議數據收發測試,所有數據與預期結果一致,進一步說明Profibus協議工作正常。

圖9 Profibus通信功能測試
為充分說明Profibus協議的可控性,本文設計還對該系統進行了大量故障測試,比如故意將某個振動檢測設備的Profibus接線反接,測試效果如圖10所示,PLC主站會快速提示“Server bus fault”,并顯示已有1 300個通信報文Profibus從站未回應。本文設計通過對Profibus協議的全面測試說明它有效提升了系統的可控性與穩定性。

圖10 Profibus通信故障測試
為方便操作和使用,本研究為該系統設計了振動檢測系統上位機。上位機運行在工作站電腦上,操作界面如圖11(a)所示:“Station No.”代表振動檢測設備的設備號;“Display Mode”代表振動數據的呈現方式,有實時振動波形顯示方式、歷史數據文本顯示等方式;Peak-Peak、FFT_Mag、FFT_Fre、RMS分別代表振動數據的峰峰值、FFT后最大幅值、FFT后最大幅值對應的頻率、均方差值。
為對比說明本文系統的精確性和可靠性,振動檢測設備檢測到振動后(振動平臺以3.8 Hz左右的主頻振動),一方面將振動數據通過Profibus協議發送到工作站電腦,工作站電腦將此振動數據用Matlab工具進行數據處理;另一方面振動檢測設備將振動數據作傅里葉變換等處理。所得結果如圖11所示,由圖11(a)可知振動數據已經成功傳輸到上位機,振動檢測系統得到的峰峰值、FFT后最大幅值對應的頻率、均方根等值和真實的振動數值(用Matlab工具計算得到的數據,如圖11(b)和圖11(c)中的曲線和數據)一致,分別為0.472 2、3.783 0、0.163 2,實現了預期功能。

圖11 振動檢測系統數據處理與傳輸測試
在實時性方面,圖5和圖6所示的數據處理改進設計使總線網絡傳輸數據量是傳統方法的5%,實驗表明此改進使總線網絡傳輸時間降低約21.5%。另外,對于由512個原始振動數據組成的一組樣本數據,單個振動檢測設備對這組數據進行FFT等處理所用時間是工作站電腦所用時間的75.6倍左右。以100個振動檢測設備組成的檢測系統為例,本系統數據處理所用時間是傳統方法的75.6/100=0.756倍,即數據處理時間降低約24.4%。綜上所述,以100個振動檢測設備組成的檢測系統為例,理論上本系統與傳統的振動檢測系統[15]相比綜合節省時間(綜合考慮系統的網絡傳輸時間和數據處理時間)約22.95%,在實際測試中綜合節省時間為21.6%。
為提高振動檢測系統的實時性和計算能力,本文設計并實現了一種基于Profibus技術的振動檢測系統。在檢測設備中采用RT-Thread實時嵌入式系統,保證了設備的實時性和魯棒性;在振動傳感器節點處實現濾波處理和必要的計算功能,降低了網絡負載,提高了系統的實時性和計算能力。實驗結果表明,本文所提的改進使振動監測系統更加實時、可控、精確,有利于推動振動檢測技術的發展。在未來的研究中,將重點放在振動診斷算法中,尤其是可以在振動檢測嵌入式設備中運行的輕量級診斷算法,進一步減輕工作站電腦的計算壓力,提高系統的實時性。