陳智君,王元真,雷本鑫,高 超
(武漢理工大學 能源與動力工程學院,湖北 武漢 430063)
由于我國主動隔振系統(tǒng)的研究起步較晚,技術并不成熟,較多主動隔振控制算法仍在仿真實驗階段,很少有在實際應用中的案例[1]。而對于實驗階段的主動隔振來說,為驗證控制算法的控制效果,往往希望能夠?qū)崟r觀察被控對象的振動情況,并通過對比參數(shù)調(diào)整前后被控對象的振動曲線,來判斷控制算法在不同條件下控制效果的好壞。因此,擁有1個配套上位機監(jiān)控系統(tǒng)對于隔振實驗來說很有必要。本文作者以某型柴油機為對象,開發(fā)了1套主動隔振系統(tǒng)上位機監(jiān)測軟件,并對自適應主動隔振算法進行研究。
主動隔振系統(tǒng)是指能夠?qū)崿F(xiàn)對被控對象的振動實時監(jiān)測,并根據(jù)所監(jiān)測的振動信息利用自適應算法得出實時的控制規(guī)律,最終控制作動器產(chǎn)生反振力從而抑制其振動的1套完整系統(tǒng)。系統(tǒng)主要由上、下位機2部分組成。
下位機是系統(tǒng)硬件部分,主要功能是實時采集被控區(qū)域的振動信號,并根據(jù)所采集的振動信號進行次級通道辨識,再由自適應算法得出實時的控制規(guī)律,經(jīng)由功率放大器輸出給作動器,控制作動器產(chǎn)生相應頻率的反振力。上位機是系統(tǒng)PC端顯示系統(tǒng),主要功能是通過以太網(wǎng)接收下位機辨識結(jié)果以及采集的實時加速度信號,并在顯示軟件中繪制成曲線。本文上、下位機之間的通訊連接采用C/S模式,即客戶端/服務器模式[2]。下位機為系統(tǒng)服務器,上位機顯示系統(tǒng)為客戶端。系統(tǒng)具體結(jié)構(gòu)如圖1所示。
圖 1 主動隔振系統(tǒng)整體框架Fig. 1 Active vibration isolation system overall frame
本文中上位機的主要功能是接收并顯示下位機加速度傳感器采集的實時振動信息,以及讀取、存儲并修改下位機的重要參數(shù),本文采用UDP協(xié)議發(fā)送和接收數(shù)據(jù)。
為保證數(shù)據(jù)傳輸?shù)某晒β?,在設計過程中應避免數(shù)據(jù)報發(fā)生分片。對UDP數(shù)據(jù)報來說,需要在應用層限制每個UDP數(shù)據(jù)報的大小,一般不超過1 472個字節(jié)[6]。本文采樣頻率為4 K,每個通道的單個數(shù)據(jù)為2個字節(jié),總的通道數(shù)為12個,則每秒采集96 KB大小的數(shù)據(jù)。為方便編程及數(shù)據(jù)的解析同時避免IP分片,本文將每次采集的12個通道的數(shù)據(jù)組合為一個數(shù)據(jù)結(jié)構(gòu)體作為最小的數(shù)據(jù)單元,每個數(shù)據(jù)包中均包含50個這樣的數(shù)據(jù)單元,即總的用戶數(shù)據(jù)大小為1 200字節(jié),上位機每秒將接收到80個這樣的數(shù)據(jù)包。
此外,UDP協(xié)議在通信過程中發(fā)送端可于任意時刻自由發(fā)送數(shù)據(jù),接收端無法確認何時接收到來自何地的數(shù)據(jù),且接收到數(shù)據(jù)后也不會有任何確認信息。因此,本文在UDP協(xié)議的基礎上,在應用層協(xié)議中引入了數(shù)據(jù)包確認、掉包重發(fā)以及排序機制。為此本協(xié)議自定義了一個長度為5個字節(jié)的應用層協(xié)議頭,協(xié)議頭的組成為1個字節(jié)的數(shù)據(jù)包類型標識、2個字節(jié)的數(shù)據(jù)包序號(包括1個字節(jié)的前序號和1個字節(jié)的后序號)以及2個字節(jié)的數(shù)據(jù)長度標識,使通訊在不占用太多系統(tǒng)資源的條件下滿足一定的傳輸可靠性。此外,在模擬量通道數(shù)據(jù)之前為3個字節(jié)的數(shù)字量通道數(shù)據(jù),用于標識下位機的重要報警信息。因此,一個UDP數(shù)據(jù)報的大小應為協(xié)議頭大小加上用戶數(shù)據(jù)大小,總共為1 208個字節(jié),遠小于1 472個字節(jié),不會發(fā)生IP分片。自定義用戶協(xié)議頭結(jié)構(gòu)如圖2所示。
圖 2 自定義用戶協(xié)議頭結(jié)構(gòu)Fig. 2 Custom user protocol header structure
數(shù)據(jù)包的確認機制主要通過自定義協(xié)議頭中的數(shù)據(jù)包序號來實現(xiàn),數(shù)據(jù)包序號包含前序號和后序號2個信息。前序號為當前數(shù)據(jù)包的序號,后序號為期望下一個數(shù)據(jù)包的序號。為保證確認機制的實現(xiàn),在客戶端引入接收緩沖區(qū),用于存放驗證后的數(shù)據(jù)??蛻舳舜_認機制的流程圖如圖3所示。其中VeriFied和LastVerif分別為保存當前接收到數(shù)據(jù)包序號和前一個接收到的數(shù)據(jù)包序號的數(shù)組,Count為接收到數(shù)據(jù)包的次數(shù)。
圖 3 客戶端確認機制流程圖Fig. 3 Client confirmation mechanism flow chart
在服務器與客戶端進行通信的過程中,當數(shù)據(jù)傳輸過程中發(fā)生了掉包或者是發(fā)送的數(shù)據(jù)出現(xiàn)了錯誤,就需要對丟掉的以及發(fā)生錯誤的數(shù)據(jù)包進行重新發(fā)送,并在客戶端對重發(fā)的數(shù)據(jù)進行排序,以確保接收數(shù)據(jù)的正確性。為實現(xiàn)重發(fā)以及數(shù)據(jù)包的排序,在服務器引入2個發(fā)送緩沖區(qū),一個用于存放已發(fā)送的數(shù)據(jù)包,一個用于向上位機發(fā)送數(shù)據(jù);在客戶端引入一個接收隊列,用于存放驗證后的數(shù)據(jù)包。服務器采用2個緩沖區(qū)的目的是存放發(fā)送后的數(shù)據(jù)包,用于客戶端驗證掉包后的重發(fā)。重發(fā)機制如圖4所示。
對于客戶端,為保證顯示數(shù)據(jù)的實時性,本文使用多線程技術,將接收數(shù)據(jù)以及驗證過程放在一個線程中,將解碼數(shù)據(jù)包的過程放在另一個線程中,2個線程同步運行從而保證接收數(shù)據(jù)與解碼顯示數(shù)據(jù)的同步性。為給重發(fā)及排序過程留出一定的時間,且保證接收數(shù)據(jù)的實時性,規(guī)定上位機在接收到10個數(shù)據(jù)包之后再開啟解碼線程??蛻舳私邮贞犃腥鐖D5所示。
圖 4 重發(fā)機制流程圖Fig. 4 Retransmission mechanism flow chart
圖 5 客戶端接收隊列Fig. 5 Client receive queue
對于服務器,為保證數(shù)據(jù)包重發(fā)的實現(xiàn),服務器需要緩存部分已發(fā)送的數(shù)據(jù)包。為此,在服務器引入了2個緩沖區(qū),一個用于發(fā)送實時的數(shù)據(jù),另一個用于緩存部分已發(fā)送的數(shù)據(jù)包。服務器的2個緩沖區(qū)及工作模式如圖6所示。
圖 6 服務器緩存區(qū)工作模式圖Fig. 6 Server cache area working mode diagram
本文中上位機使用Socket以簡化編程。為減小數(shù)據(jù)通信過程中出錯的可能性,在進行參數(shù)配置時,選用與實時數(shù)據(jù)不同的Socket進行通信。這里將實時數(shù)據(jù)通信所用Socket命名為Socket1,而將參數(shù)配置所使用的Socket命名為Socket2。由于在進行參數(shù)設置時,并不是每次都需要配置所有參數(shù),大多數(shù)情況下僅需要修改個別參數(shù)。因此在本設計中,將所有參數(shù)分別通過不同的數(shù)據(jù)包進行發(fā)送,且只有當界面上發(fā)生更改后,才將更改的參數(shù)數(shù)據(jù)發(fā)送至下位機,沒有更改的參數(shù)不做處理。
參數(shù)配置界面的主要功能是對下位機某些重要參數(shù)的值進行修改,同時具有從下位機中讀取出這些參數(shù)值的功能。此外,還可將修改后的參數(shù)值或者從下位機中讀取出來的參數(shù)值保存至計算機本地文件中,也可從本地文件中讀取參數(shù)信息并下載至下位機。本文使用XML文檔來存儲用戶配置信息,包括下位機配置參數(shù)以及通道辨識數(shù)據(jù)。下面將對操作XML文件的具體方法進行說明。
1)創(chuàng)建XML文件
這里首先聲明一個XmlDocument對象命名為xml-Doc,隨后創(chuàng)建XML文檔的文件頭,創(chuàng)建完文件頭后,需要創(chuàng)建文件的根元素,即根結(jié)點。這里創(chuàng)建一個名稱為Settings的根結(jié)點,根結(jié)點創(chuàng)建完成后,通過xml-Doc.Save方法將該XML文件保存至本地文件夾中。
2)讀取XML文件
讀取XML文件信息之前,首先聲明一個XmlDocument對象,再調(diào)用該對象的Load方法,從指定的路徑中加載XML文件。加載完XML文件后,即可通過調(diào)用對象的SelectSingleNode以及GetAttribute方法來獲取該XML文件指定的結(jié)點和屬性值。這樣就可根據(jù)該元素的屬性名稱得到該結(jié)點的屬性以及所包含的子結(jié)點信息。
3)向XML文件中添加數(shù)據(jù)
在向XML文檔中添加新數(shù)據(jù)的時候,也必須先通過XmlDocument對象加載整個XML文檔。然后調(diào)用SelectSingleNode方法來獲取根結(jié)點,通過CreateElement方法創(chuàng)建新的元素,使用CreateAttribute方法創(chuàng)建屬性,用AppendChild將新建的結(jié)點掛接在其他結(jié)點上,通過SetAttributeNode來設置結(jié)點的屬性。完成后,再創(chuàng)建該結(jié)點的子結(jié)點,最后將新創(chuàng)建的
結(jié)合用戶對監(jiān)測系統(tǒng)界面的要求可將界面劃分如下:
1)通道辨識界面,主要用于顯示接收下位機通道辨識得到的濾波器系數(shù),并以曲線的形式顯示在界面上,并且軟件提供了辨識系數(shù)保存至本地和本地辨識系數(shù)下載的功能。此外,界面上留有指定區(qū)域用以顯示下位機的報警信息,當下位機出現(xiàn)報警時,會在界面上以紅色標出。
2)實時曲線界面,用于顯示各個通道的實時數(shù)據(jù),并可選擇將其中4個通道的數(shù)據(jù)以曲線的形式顯示在界面上,并且軟件提供了數(shù)據(jù)保存功能,可以一次保存1 000個數(shù)據(jù)點,用于進一步的數(shù)據(jù)分析。此外,該界面也留有指定的報警顯示區(qū)域。
3)參數(shù)配置界面,用于完成下位機配置信息的下載。打開該界面時,軟件會讀取下位機當前的配置信息并顯示,辨識濾波器系數(shù)也會被讀取,并以曲線的形式顯示在通道辨識界面上。此外,軟件提供了配置信息保存至本地和本地配置信息下載功能。設計好的系統(tǒng)界面主要功能模塊如圖7所示。
圖 7 系統(tǒng)界面功能模塊圖Fig. 7 System interface function block diagram
圖 8 次級通道估計模型計算流程圖Fig. 8 Secondary channel estimation model calculation flow chart
假定次級通道的估計模型為M階的橫向濾波器,即
則該時刻的誤差信號為:
則可將誤差信號表示為:
根據(jù)梯度下降法,可知控制濾波器權(quán)向量的遞推方程為:
將式(10)代入式(9)得到濾波器權(quán)向量的遞推公式為:
以上即為FxLMS算法,F(xiàn)xLMS算法與LMS算法最大的區(qū)別在于增加了一個次級通道來減小甚至消除功率放放大器、作動器等設備形成的誤差通道所造成的影響。
在該驗證環(huán)節(jié)中,首先配置下位機,使下位機共上傳4 800個數(shù)據(jù)包,且每上傳5個數(shù)據(jù)包便丟失一個數(shù)據(jù)包,之后通過修改數(shù)據(jù)包的上傳時間間隔,觀察上位機記錄的丟包次數(shù)和接收到的重發(fā)數(shù)據(jù)包數(shù),以檢測通信協(xié)議的可靠性。經(jīng)驗證,當下位機上傳時間間隔在4 ms及以上時,上位機收到的總包數(shù)為4 800,記錄的丟包次數(shù)和重發(fā)包數(shù)均為960,此時協(xié)議可靠。而當時間間隔約為2.6 ms時,上位機收到的總包數(shù)為4 607,丟包次數(shù)為1 003,重發(fā)包數(shù)為910,此時協(xié)議丟包率達到4%。而下位機在實際控制過程中數(shù)據(jù)包的上傳時間間隔約為20 ms,因此可以認為該通信協(xié)議可靠。
在本驗證環(huán)節(jié)中,以控制器輸出的白噪聲作為次級通道的輸入,利用LMS算法對次級通道估計模型的橫向濾波器權(quán)向量進行更新。并將辨識得到的次級通道的估計模型應用到主動控制上,進行主動控制的臺架試驗。首先打開功放對4個通道依次進行辨識,穩(wěn)定后所得的4個次級通道估計模型的權(quán)向量系數(shù)如圖9所示。
圖 9 次級通道辨識結(jié)果Fig. 9 Secondary channel identification results
可以看出辨識數(shù)據(jù)均逐漸趨于收斂,適合用于主動隔振控制。將該組辨識結(jié)果應用于主動隔振,所得到的控制數(shù)據(jù)如圖10所示??梢钥闯隹刂茢?shù)據(jù)平穩(wěn)且峰值適當??烧J為主動隔振監(jiān)控系統(tǒng)運作良好,無嚴重丟包現(xiàn)象,且達到隔振目的。
圖 10 控制數(shù)據(jù)Fig. 10 Control data
本文在分析主動隔振系統(tǒng)對于振動監(jiān)測顯示需求的基礎上,運用C#語言進行上位機系統(tǒng)軟件的開發(fā),實現(xiàn)上、下位機之間的實時、可靠的傳輸數(shù)據(jù),對自適應主動隔振算法進行了研究。并在臺架試驗中,上位機軟件實現(xiàn)了對柴油機振動狀態(tài)的實時監(jiān)測,監(jiān)測精度較高,同時取得了較好的主動隔振效果。通過使用此上位機軟件對柴油機進行實時監(jiān)測,一方面有助于柴油機主動隔振系統(tǒng)的開發(fā),另一方面通過觀察和分析柴油機運行過程中振動狀態(tài)的變化,能夠及時發(fā)現(xiàn)甚至預測柴油機可能出現(xiàn)的故障,提高柴油機運行的安全性,同時也符合智能船舶的發(fā)展理念。本監(jiān)控系統(tǒng)軟件的設計思路和實現(xiàn)方法,可為國內(nèi)柴油機主動隔振系統(tǒng)開發(fā)等領域提供一定的參考。
此監(jiān)控軟件還有些需要改進的方面,例如目前該軟件只能導出短時間內(nèi)的振動數(shù)據(jù),因此在后續(xù)的開發(fā)過程中可通過使用數(shù)據(jù)庫等技術進行優(yōu)化等。