


摘? 要:振動信號采集儀通過外接傳感器,將機械結構的動態物理量轉換成電壓信號,之后再由AD模塊將輸入的電壓信號轉換成數字信號。研究人員通過分析這些數據可以準確地了解被測對象的運動特征,及時發現被測對象的設計缺陷。該文設計并實現了基于Qt的多通道振動信號采集儀上位機軟件。通過網口TCP/IP協議接收前端采集儀器上傳的數據,支持多通道同步采集,并實時顯示數據波形。
關鍵詞:Qt;多通道采集;實時顯示;實時存儲;時域數據分析
中圖分類號:TP311.5? ? 文獻標識碼:A? 文章編號:2096-4706(2023)03-0024-06
Design of Upper Computer Software for Multi-channel Vibration Signal Collector Based on Qt
LIU Hongwei
(Avic Changcheng Institute of Metrology & Measurement, Beijing? 100095, China)
Abstract: The vibration signal collector converts the dynamic physical quantity of the mechanical structure into a voltage signal through an external sensor, and then converts the input voltage signal into a digital signal by the AD module. By analyzing these data, the motion characteristics of the tested object can be acquired accurately by researcher, and the design defects of the tested object also can be found out in time. This paper designs and implements the upper computer software of multi-channel vibration signal collector based on Qt. Receive the data uploaded by the front-end collector through the TCP/IP protocol of the network port, support multi-channel synchronous acquisition, and display the data waveform in real time.
Keywords: Qt; multi-channel acquisition; real-time display; real-time storage; time domain data analysis
0? 引? 言
隨著科學技術的發展進步,人們在日常的生產和生活過程中,使用到的自動化機械設備也越來越豐富多樣。各類自動化機械結構的使用性能如何,運行狀態是否穩定等,都直接影響著最終產品的生命力和用戶的使用體驗。因此在研發生產階段就要求我們能夠實時獲取這些機械結構的運動特征,以便進行設計參數的迭代和優化。獲取各類運動特征數據的儀器有很多種,其中振動信號采集儀的應用范圍尤為廣泛,在汽車、船舶、航天等領域都有廣泛的應用需求。
振動信號采集儀通過外接傳感器,將機械結構的動態物理量轉換成電壓信號,之后再由AD模塊將輸入的電壓信號轉換成數字信號,即為采集到的數據。通過分析這些數據,研究人員可以準確的知道被測對象的運動特征,并能及時發現被測對象的設計缺陷。由于振動信號采集過程產生的數據量很大,而且分析這些數據時用到各種算法,若通過硬件實現也會比較困難復雜。因此,我們通常會將采集到的數據通過物理接口傳輸給PC端的上位機。由上位機來完成分析處理數據的過程。目前,振動信號采集系統的上位機軟件多是采用國外技術公司開發的LabVIEW或MATLAB來進行二次開發。借助LabVIEW或MATLAB提供的算法分析模塊,以及庫函數等,可以對采集到的數據進行快速的分析,并得出分析結果。開發過程簡單方便,大大節約了開發周期。但由于受到軟件使用授權的影響,開發使用過程無法實現自主可控。文獻[1]使用Visual C++開發了振動信號采集分析系統的上位機軟件,但沒有實現多通道同步采集并實時顯示,上位機操作界面相對簡單,且Visual C++僅支持在Windows系統下編譯運行,無法實現跨平臺編譯。文獻[2]使用C#開發了數據采集系統的上位機軟件,但只是將采集到的數據存儲在了文件里,沒有實現實時的圖形顯示。同樣的,C#也是僅支持在Windows系統下編譯運行,無法實現跨平臺編譯。
基于上述原因,本文討論并設計實現了基于Qt的多通道振動信號采集儀上位機軟件。通過網口接收前端采集儀器上傳的數據,支持多通道同步采集,并實時顯示數據波形;支持可選線數的實時FFT分析,并實時顯示分析結果的波形;支持原始數據的實時存儲等。
1? 軟件總體框架
上位機軟件在PC機上運行,負責實現對采集數據的接收、分析、顯示、存儲,以及對前端采集儀的控制。在功能設計上需要滿足以下要求:
(1)通過網口接收、發送數據。
(2)將采集到的數字量轉換成對應的電壓值。
(3)實時顯示測量到的時域電壓值波形。
(4)FFT算法功能。
(5)實時顯示時域信號經過FFT變換后的頻域波形。
(6)同步存儲采集到的原始數據。
(7)能夠對前端采集儀下發控制指令。
上位機軟件的功能模塊示意圖如圖1所示。
上位機軟件在PC機上運行,通過網線和前端采集儀相連,通信過程基于TCP/IP協議框架實現。其中,物理連接端口采用標準的RJ45接口;網絡層采用IPv4協議進行通信;傳輸層采用TCP協議進行通信;應用層通信協議由本文討論的上位機程序自定義。上位機軟件基于Qt開發平臺編程實現,可以實現跨平臺編譯運行,程序代碼無需重復開發,即可編譯出能在多個操作系統平臺上運行的可執行文件。
2? 功能模塊設計
2.1? 通信模塊
在TCP通信過程中,前端的振動信號采集儀作為服務端運行,上位機作為客戶端運行。服務端程序負責啟動監聽端口,等待客戶端接入。客戶端程序啟動后,發起對服務端的連接。Qt中實現TCP通信,需要用到Qt自帶的C++類QTcpSocket。第一步先創建QTcpSocket套接字對象;第二步使用第一步創建的對象連接服務器;第三步使用write函數向服務器發數據。第四步,服務器有數據返回時,會發出readReady()信號,在程序中定義一個該信號的槽函數,即可在槽函數中使用read函數讀取返回的數據。
2.1.1? 輸入網絡參數
在指點操作界面上輸入前端采集儀的網絡參數,主要指采集儀的IPv4地址。本文討論的上位機軟件支持多個采集模塊的分布式連接,即多個采集模塊通過交換機同時與上位機軟件進行通信。上位機軟件能夠實時顯示不同采集模塊上傳的數據波形。
2.1.2? 發送控制命令
上位機軟件采用自定義的應用層協議向前端采集儀發送控制命令。協議格式如表1所示。
其中:
(1)協議頭固定為0xA5A5A5A5。
(2)命令字段用來標識不同的控制命令,如開啟/關閉采用通道、讀取前端采集儀硬件信息等。
(3)通道指示器字段的16個bit,用來標識當前命令可控制的通道,總共可代表16個通道。最低有效位表示第1個通道,最高有效位表示第16個通道。bit位設置為1,表示當前命令對該bit位標識的通道有效,bit位設置為0,則表示當前命令不影響該bit位標識的通道。
(4)控制參數包括通道采樣率、信號輸入類型等采集參數的配置。
2.1.3? 接收采樣數據
上位機軟件同樣采用自定義的應用通信協議解析前端采集儀上發的數據。協議格式如表2所示。
其中:
(1)協議頭固定為0xAA55AA55。
(2)固定為0x00000004,其他值表示當前上傳的不是采樣數據。
(3)填充字節固定為4字節0x00。
(4)采樣數據長度,在本次設計中每包數據長度固定為4 096個字節。
(5)采樣數據,為前端采集儀實時采集到的數據。本次設計中,前端采集儀采用24位AD進行采樣,采集到的數據占3字節,采樣時,下位機程序在每個采樣點的首字節前面填充一個字節的通道號后組成4字節數據,再按照表2的傳輸協議打包,然后上傳給上位機。
采樣點的原始數據需要經過以下轉換成才能得到真正的電壓值:
其中,Dsample為采集儀上傳的原始數據,Dvoltage為計算得到的電壓值,N為AD的位數,本次設計中N的值取24,Vref為參考電壓。
2.2? 算法模塊
上位機接收并緩存采樣數據后,需要實時對數據進行分析,如FFT變換。算法模塊的功能為提供算法接口,供主程序調用。算法調用流程如圖2所示。
2.3? 測量模塊
測量模塊是上位機的重要組成部分,主要實現了用戶控制命令的操作界面,以及用圖形的方式,實時直觀地顯示測量結果。Qt作為一個GUI框架的開發平臺,提供了豐富的窗口部件集合。本次設計中的窗口界面均使用QMainWindow來創建對象。主窗口內部劃分為多個子窗口,子窗口內部由各類控件布局組成。控件供用戶操作,產生相應的操作信號。為每個操作信號添加對應的槽函數,就可以實現對該操作信號的響應,即信號與槽機制。
2.3.1? 選擇采樣通道
本次設計的上位機軟件支持6個通道同步采集與顯示,且6個通道的開啟和關閉都可以單獨控制。既可以同時打開全部通道,也可以選擇只打開一個或幾個通道。
2.3.2? 設置系統頻率
根據采樣定理f采樣≥2 f信號,即采樣頻率要大于等于信號頻率的2倍才能夠準確分析出信號頻率的特征。本次設計中將采樣頻率的1/2.56定義為可準確分析的最大信號頻率,即f采樣≥2.56 f信號。這時的最大信號頻率即為當前的系統頻率,將系統頻率記為f系統,即f采樣=2.56 f系統。通過上位機設置系統頻率,即設置了當前系統可準確分析的輸入信號的最大頻率,實際上也間接地設置了前端采集儀的采樣率。
2.3.3? 設置時域特性
本次設計中,可將時域波形的顯示時長設置為0.2秒到600秒之間的任意值。采樣時間超出設定時長后,按照先進先出的原則,實時刷新。
2.3.4? 設置FFT參數
本次設計中,可設置的FFT參數包括平均次數、譜線數、窗函數、顯示功率譜。
2.3.5? 時域波形實時顯示
每個采集通道都有一個時域波形的實時顯示窗口。通道打開,窗口自動出現;通道關閉,窗口自動關閉。所有采集通道同時打開的時候,對應的實時顯示窗口也會同時出現并刷新。
2.3.6? 頻域波形實時顯示
每一條時域波形曲線都有一一對應的頻域波形曲線。本次設計中,多個通道的頻域波形曲線和它對應的時域波形曲線同步顯示刷新。同樣的,當多個采集通道同時打開的時候,多條頻域曲線也會同時顯示并刷新。不同的是,多條頻域曲線顯示在同一個窗口界面內,用不同的顏色做區分。
2.4? 數據處理模塊
為了保證采樣數據的實時顯示,在對采集數據的處理上也要盡量保證高效。一般情況下,網絡通信的速度要高于圖形顯示的速度。因此,實時顯示理論上是有時間滯后的。我們要做到的是,使圖形刷新的頻率是數據采集的頻率整數倍,并保持不變,這樣一來,雖然采集時刻和圖形顯示時刻有時間差,但這個時間差是固定的,圖形顯示和數據采集也就可以同步刷新了。
2.4.1? 緩存
網口接收的數據順序緩存到預先定義的一個足夠大的緩存空間。程序按照通信協議解析出里面的有效數據并做二次緩存。二次緩存的數據僅限有效的采樣數據。圖形顯示和算法的輸入數據都從二次緩存區讀取。為了能做到快速訪問并讀取有效采樣數據,本次設計中的二次緩存過程采用隊列的方式實現。讀取緩存數據時,無需做數據的整體拷貝,只需傳遞數據所在的地址即可,保證數據傳遞準確性的同時,還大大減少了程序的執行時間。緩存流程如圖3所示。
2.4.2? 存儲
實際工程應用中,除了需要實時顯示采集的數據外,有時還需要將采集到的數據保存到本地硬盤中。本次設計的上位機軟件具備邊采集邊存儲二進制原始數據的功能。存儲的數據量的大小由電腦硬盤空間決定。原始數據的存儲格式如表3所示。
表中,No.為通道號,長度為1字節,取值01~06;Data為采樣數據,長度為3字節。n為當前打開的采集通道的個數。
3? 測試實驗
雙擊應用程序圖標,打開上位機軟件。按照提示輸入前端采集儀的IP地址,點擊連接按鈕。等待網絡連接成功后,進入測量界面,如圖4所示。
由圖4可知,上位機軟件連接的前端振動信號采集儀包含6個采集通道,最大采樣率為131 072 Hz,系統頻率默認是51.2 kHz。
3.1? 數據傳輸測試
選擇任意一個或多個通道,勾選激活框后,時域窗口和頻域窗口開始有波形顯示。表明網絡通信正常,前端采集儀的數據能夠實時傳輸到上位機。數據傳輸過程如圖5所示。打開全部通道時的數據傳輸過程如圖6所示。
3.2? 軟件操作測試
通過設置“顯示時長”可以調整時域數據在顯示界面上時間窗口寬度。如圖7所示,右圖的顯示時長為1 s,左圖將顯示時長調整為10 s。
采用信號發生器產生1 024 Hz的輸入信號,電壓大小為1 V。時域波形和經過FFT變換后的頻域波形實時顯示測試,如圖8所示。
由圖可見,實時采集到的數據轉換后的電壓值與輸入信號電壓一致。經過FFT變換后的頻域波形顯示的基頻信號幅值和頻率,與輸入信號一致。
將輸入信號頻率改為1 600 Hz,電壓幅值不變。修改FFT譜線數,可以提高頻域數據的分辨力。圖如9所示。
由圖可見,FFT譜線數改為3 200后的頻域圖形,與圖8所示的頻域圖形有了明顯的區別。
3.3? 數據存儲測試
在上位機軟件界面上點擊“實時記錄”開啟實時保存原始數據的功能。如圖10所示為記錄的通道5原始采樣數據。將該數據還原成波形后圖如圖11所示,與實時采集的波形一致。
4? 結? 論
本文基于Qt平臺設計實現了多通道振動信號采集儀的上位機軟件。通過網口進行通信,實現了采樣數據的接收和顯示,實現了和前端采集儀的命令交互,上位機軟件界面的設計,建立了將用戶的控制信號傳遞給前端采集儀的通道。實現了基本的時域數據分析算法,并能夠通過操作界面控制算法的輸入參數。同時還實現了對原始采樣數據的實時存儲。達到了操作上位機軟件控制振動信號采集儀工作,實時分析并保存采樣數據的預期效果。該上位機軟件,集合設備控制、數據采集、顯示、分析和保存功能于一體,操作方便,數據計算準確,實時存儲的數據不失真,是一款值得推廣的上位機軟件。
參考文獻:
[1] 龔楚云.基于Visual C++的振動信號采集分析系統的研究 [D].天津:天津工業大學,2016.
[2] 龔永富,王少云,雷仲魁,等.高速、高精度數據采集系統的上位機軟件設計 [J].電子設計工程,2020,28(15):38-42+47.
[3] 孫毅剛,何進,李岐.基于LabVIEW的多通道溫度監測系統設計 [J].現代電子技術,2017,40(8):183-186.
[4] Jasmin Blanchette,Mark Summerfield. C++ GUI Qt4編程 [M].閆鋒欣,曾泉人,譯.北京:電子工業出版社,2013.
[5] 崔永俊,郭峰.多通道振動信號采集系統設計 [J].儀表技術與傳感器,2022(4):75-79+95.
[6] 孫潔茹,陳曉寧,王健,等.基于Qt的探測器溫控上位機軟件設計 [J].安徽大學學報:自然科學版,2022,46(1):61-67.
作者簡介:劉宏偉(1985.11—),男,漢族,山西大同人,工程師,碩士,研究方向:機械電子工程。
收稿日期:2022-09-07