電動助力轉向系統(EPS)數據采集的實現
Declare Sub Outport Lib "vbio.dll" (ByVal portID As Integer,
ByVal nByte As Integer)
Declare Function Inport Lib "vbio.dll" (ByVal portlD As Integer)
As Integer
Declare Function Getval Lib "EPS.dll" (ByVal portID As Integer)As Single
在這樣聲明之后,函數Output、Input、Getval才可以像使用VB本身自帶的函數那樣在需要時進行直接調用。
3.3 VB中高精度定時數據的采集
在電動助力轉向臺架試驗的過程中,所有的扭矩,電流,角度,齒條位移等都是按照準確的物理時間來采集,并且記錄在數據文件中。
實時數據的采集過程需要用到定時器,定時器的精度必須能夠滿足實時采樣和數字濾波的要求。本試驗臺利用Windows API函數實現精確記時的方法,即利用高性能頻率記數法。利用這種方法需要使用兩個API函數:QueryPerformaneeFrequency和QueryPerPerformanceCounter。
(1) QueryPerformaneeFrequeney函數:獲得高性能頻率記數器的震蕩頻率,該函數的定義如下:
Private Declare Function QueryPerformaneeFrequeney Lib "kernel32"_
(lpFrequency As LARGE_INTEGER) As Long
函數中的數據結構LARGE_INTEGER定義如下:
Type LARGE_INTEGER
lowpart As Long
highpart As Long
EndType
調用該函數后,函數會將系統頻率記數器的震蕩頻率保存到lpPerformanceCount中,其中低位保存到lowpart中,高位保存到highpart中。
(2) QueryPerformanceCounter函數獲得系統頻率記數器的震蕩次數,函數的定義如下:
Private Declare Function QueryPerformaneeCounter Lib”kernel32”_
(lpPerformanceCount As LARGE_INTEGER) As Long
獲得記時器震蕩次數保存在lpPerformanceCount中。
在程序設計中。首先通過利用QueryPerformanceFrequency函數獲得頻率記數器的震蕩頻率,然后在執行數據采集程序段之前調用QueryPerformance Counter函數獲得頻率記數器的震蕩次數,在數據采集程序段結束時再調用QueryPerformanee Counter函數獲得頻率記數器的震蕩次數,將兩次獲得的震蕩次數相減后再除以震蕩頻率就獲得了兩次間隔之間的時間(以秒為單位)。因此在數據采集程序中建立了一個循環。在循環中不斷的調用QueryPerformaneeCounter獲得頻率記數器的震蕩次數并同先前的頻率記數器的震蕩次數相減,將結果除以頻率記數器的震蕩頻率,如果達到設定的采集時間則執行數據采集任務,這樣就達到了精確記時采集的任務。
在試驗的過程中,程序每隔3ms訪問一次A/D板,也就是每3ms會讀一個數據到內存中,為了更加清楚的觀察各種狀態下曲線的變化情況,以及尖脈沖干擾出現的時間,在軟件設計時盡可能把這些點全部讀入,并在實時曲線上顯示出來。但是如果把這些點全部記錄下來,數據量會非常大,不利于后續的助力特性等的分析,因此在軟件中設定一個N值,當采集到的點數達到此值時,程序將這N個值做一次濾波處理,然后將處理過的數保存在數據庫中,供后續的分析與處理。在這里N值取為50。實驗證明,該定時器能滿足EPS定時采集的要求。
3.4采集數據的過濾
試驗臺外部干擾對于傳感器的影響很大,因此采集到的數據需要經過處理。進行軟件濾波的方法主要有:限幅濾波法,中位值濾波法,算術平均濾波等。
(1)限幅濾波法。對于超過被測鼉可能上限和可能下限的測量值,則被認為是由于偶然的脈沖噪聲麗引起,忽略該測量值。
(2)中位值濾波法。對一組測量值,去掉其中的最大值和最小值,只對中位進行處理。
(3)算術平均值法。取多個中位值的平均值。
在數據采集過程中,試驗臺系統不可避免會產生尖脈沖干擾。本數據采集系統對模擬量采取的數字濾波方法是結合防脈沖干擾平均法和移動平均濾波法各自優點,即既能防止脈沖干擾,又能提高系統實時性,這里設置數據氏數據的個數為N個,每采樣一次新數據,主程序就調用一次防脈沖移動平均濾波子程序,去掉N個數據中的最大值和最小值,再取余下(N-2)個數據的算術平均值來逼進真實的模擬量數值,然后再將所得的平均值記錄下來。
4 小結與實驗結果
本文詳細介紹了EPS試驗臺數據采集用的主要傳感器,在試驗臺硬件的基礎上。開發了基于VB語言的數據采集系統,給出了數據采集系統的程序框圖。介紹了VB對于底層硬件的訪問方法,以及在采集過程中高精度定時器的應用,最后介紹了程序的濾波方法。圖3為數據采集軟件的t作界面
圖3數據采集軟件的工作界面
本文作者創新點:利用Visual Basic進行數據采集可以利用兩種方法,利用MSComm控件和利用API函數的方法,本文利用API函數的方法,具有采集精度高,數據采集實時的特點。
項目經濟效益:20萬元。
評論