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