電動(dòng)助力轉(zhuǎn)向系統(tǒng)(EPS)數(shù)據(jù)采集的實(shí)現(xiàn)
1 前言
電動(dòng)助力轉(zhuǎn)向系統(tǒng)已成為現(xiàn)代汽車(chē)發(fā)展的必然趨勢(shì)。只有精確實(shí)時(shí)的采集到車(chē)輛轉(zhuǎn)角數(shù)據(jù),助力轉(zhuǎn)向系統(tǒng)才能根據(jù)這些數(shù)據(jù)采用各種先進(jìn)的算法來(lái)控制助力電機(jī)的轉(zhuǎn)動(dòng)。所以說(shuō),車(chē)輛轉(zhuǎn)角數(shù)據(jù)的采集是電動(dòng)助力轉(zhuǎn)向系統(tǒng)的重要組成部分。此文章詳細(xì)的講述了電動(dòng)助力轉(zhuǎn)向系統(tǒng)數(shù)據(jù)采集的硬件和軟件。
數(shù)據(jù)采集硬件系統(tǒng)主要由計(jì)算機(jī),A/D轉(zhuǎn)換板,數(shù)字量信號(hào)輸入/輸出板,傳感器以及信號(hào)處理裝置等組成,基本的結(jié)構(gòu)如圖1所示。試驗(yàn)臺(tái)傳感器所輸出的信號(hào)一共有兩種,一種是模擬信號(hào),另外一種是數(shù)字信號(hào)。而計(jì)算機(jī)只能對(duì)數(shù)字量進(jìn)行處理,為了能使計(jì)算機(jī)處理或存儲(chǔ)模擬信號(hào),就必須將其轉(zhuǎn)換為數(shù)字量,因此模擬信號(hào)的采集主要通過(guò)A/D板進(jìn)行轉(zhuǎn)換,然后輸入計(jì)算機(jī)中進(jìn)行處理;數(shù)字信號(hào)(光電編碼器輸出的脈沖信號(hào))的采集是南數(shù)字信號(hào)輸入輸出處理板來(lái)完成。
圖1數(shù)據(jù)采集硬件系統(tǒng)
2.1 數(shù)據(jù)采集卡(A/D)-HY-1232A/D板
HY-1232板是一種IBM-PC XT/AT總線兼容A/D,D/A板,具有32路單端模擬輸入通道,12Bit分辨率,模擬輸入電壓范圍,雙極性為-5V,+5V,單極性為0,+5V。數(shù)據(jù)傳輸方式采用軟件查詢(xún)方式和中斷方式,而且可以直接插入到計(jì)算機(jī)的任一總線擴(kuò)展槽中,構(gòu)成計(jì)算機(jī)數(shù)據(jù)采集的控制系統(tǒng)。HY一1232的A/D轉(zhuǎn)換采用軟件觸發(fā)方式,在程序中首先向該板寫(xiě)入模擬通道,A/D板將自動(dòng)對(duì)該通道進(jìn)行A/D轉(zhuǎn)換。在程序中讀入A/D完成標(biāo)志位即可判斷轉(zhuǎn)換是否完成。當(dāng)A/D完成位為‘1’時(shí),則A/D轉(zhuǎn)換已完成。
2.2 HY-6160數(shù)字量信號(hào)輸入輸出板
HY-6160板有32個(gè)數(shù)字量輸入通道,32個(gè)數(shù)字量輸出通道和一個(gè)外部事件中斷通道。每個(gè)輸入或輸出通道為一組,占用一個(gè)地址。數(shù)字量輸入/輸出信號(hào)電平與TTL電平兼容。中斷申請(qǐng)信號(hào)為T(mén)TL電平。數(shù)字量輸出通道上電清零。光電編碼器將轉(zhuǎn)向盤(pán)的轉(zhuǎn)角轉(zhuǎn)換為電脈沖輸入給數(shù)字信號(hào)輸入輸出板,通過(guò)計(jì)算脈沖數(shù)的大小即町獲得轉(zhuǎn)向盤(pán)轉(zhuǎn)過(guò)的角度。
2.3 傳感器
2.3.1 扭矩傳感器
扭矩傳感器主要測(cè)量轉(zhuǎn)向盤(pán)輸出扭矩的大小和方向,然后將其轉(zhuǎn)化為相應(yīng)的電壓值傳送給控制器的ECU。扭矩是作為EPS系統(tǒng)控制策略的重要依據(jù),直接會(huì)影響到控制效果的好壞,因此扭矩傳感器也被作為重點(diǎn)對(duì)像進(jìn)行研究和開(kāi)發(fā)。本試驗(yàn)臺(tái)選用的傳感器為電位計(jì)式扭矩傳感器。
2.3.2 霍爾電流傳感器
霍爾元件是一種磁電轉(zhuǎn)換器件,能把磁場(chǎng)信號(hào)轉(zhuǎn)換為電信號(hào),當(dāng)霍爾器件H處于磁感應(yīng)強(qiáng)度為B的磁場(chǎng)中時(shí),在H(由半導(dǎo)體材料制成的薄片)縱向通過(guò)控制電流I,將引起薄片兩邊載流子數(shù)量的變化,因而產(chǎn)生一個(gè)電勢(shì)差,即霍爾電壓曲,Un=K/d*k*B
式中:K為所用材料的霍爾常數(shù);d為薄片厚度;IC為控制電流;B為磁感應(yīng)強(qiáng)度。
本試驗(yàn)臺(tái)中電流傳感器型號(hào)是CS500B(南京茶花港聯(lián)傳感測(cè)控技術(shù)有限公司)。
3 數(shù)據(jù)采集軟件總體設(shè)計(jì)
本試驗(yàn)臺(tái)的數(shù)據(jù)采集軟件系統(tǒng)采用VB作為編程語(yǔ)言,使用模塊化結(jié)構(gòu)。軟件的主體功能主要包括數(shù)據(jù)采集,數(shù)據(jù)存儲(chǔ)與處理,數(shù)據(jù)實(shí)時(shí)顯示,坐標(biāo)設(shè)定,實(shí)時(shí)曲線顯示等。駕駛員作用在方向盤(pán)上的扭矩由扭矩傳感器輸入到計(jì)算機(jī)內(nèi)的A/D板,A/D板將此模擬信號(hào)再轉(zhuǎn)換為數(shù)字信號(hào),通過(guò)采集軟件進(jìn)行存儲(chǔ)等操作;電流傳感器輸出模擬電流信號(hào)和扭矩信號(hào)一樣都進(jìn)入A/D板進(jìn)行轉(zhuǎn)換;安裝在方向盤(pán)上的光電編碼器將脈沖信號(hào)輸入到計(jì)算機(jī)內(nèi)的計(jì)數(shù)板上,由采集軟件通過(guò)計(jì)算脈沖數(shù)的大小來(lái)得到方向盤(pán)的轉(zhuǎn)角。軟件中除了基本的數(shù)據(jù)保存等功能外,還有實(shí)時(shí)數(shù)據(jù)顯示,實(shí)時(shí)曲線顯示,通過(guò)軟件叮以直接看到系統(tǒng)工作過(guò)程中扭矩、電流、方身盤(pán)轉(zhuǎn)角的大小,還可以觀察它們之間的關(guān)系。圖2為軟件的結(jié)構(gòu)框圖。
圖2數(shù)據(jù)采集軟件結(jié)構(gòu)框圖
3.1 Visual BASIC對(duì)底層硬件的訪問(wèn)
現(xiàn)實(shí)中經(jīng)常會(huì)對(duì)控制系統(tǒng)進(jìn)行數(shù)據(jù)采集或者發(fā)送控制命令,都要求對(duì)底層的硬件進(jìn)行操作,但是Visual BASIC沒(méi)有提供直接訪問(wèn)底層硬件的控件和方法,只能通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL或者使用AetiveX控件來(lái)讀寫(xiě)存儲(chǔ)器單元、端口,甚至控制硬件中斷。下面主要介紹使用Visual c++6.0編寫(xiě)數(shù)據(jù)采集函數(shù)的動(dòng)態(tài)鏈接庫(kù)DLL的過(guò)程。
動(dòng)態(tài)鏈接庫(kù)雖然是一個(gè)可執(zhí)行模塊,但它并不能直接運(yùn)行,它只是提供一組函數(shù)供Windows應(yīng)用程序或其他動(dòng)態(tài)鏈接庫(kù)調(diào)用,以完成其特殊任務(wù)。在使用Visual c++6.0創(chuàng)建DLL后會(huì)生成三個(gè)文件,*.cpp,stdafx.cpp,stdafx.h,只需在stdafx.cpp中將程序入口函數(shù)DLLMain()補(bǔ)全,加入自定義的功能函數(shù),并新建*.DEF模塊定義文件,將自定義的功能函數(shù)在此文件中一一輸出。其中,DllMain函數(shù)是Win32 DLL的入口和出口點(diǎn)。在每次裝入或卸載DLL時(shí),Windows 9x調(diào)用該函數(shù),主要用來(lái)完成一些初始化任務(wù),或在DLL卸載之前,Windows調(diào)用該函數(shù)做一些必要的釋放資源等清除工作。值得注意的是,DLL的調(diào)用約定共有4種方式:_fastcall、_pascal、_stdcall、_cdecl,vc++默認(rèn)調(diào)用方式為_(kāi)cdecl,而VB默認(rèn)調(diào)用方式則為_(kāi)stdcaU,因此必須限定調(diào)用方式,即將函數(shù)定義為如下格式:
extern“C" _declspec(dllexport)函數(shù)返回?cái)?shù)據(jù)類(lèi)型>_std-call函數(shù)名[參數(shù)列表]。
只有做這樣的限定后,生成的DLL庫(kù)才不會(huì)出現(xiàn)錯(cuò)誤。
3.2利用VB調(diào)用動(dòng)態(tài)鏈接庫(kù)
在VB中調(diào)用動(dòng)態(tài)鏈接庫(kù)之前,VB要求必須在窗體或模塊的聲明中定義所要調(diào)用的函數(shù),否則VB不能識(shí)別所調(diào)用的動(dòng)態(tài)鏈接庫(kù)。
如果調(diào)用的動(dòng)態(tài)鏈接庫(kù)中的函數(shù)無(wú)返回值,則將其聲明為過(guò)程:
Declare Sub 過(guò)程名 lib“.DLL庫(kù)名” (Byval參數(shù)As類(lèi)型)
如果調(diào)用的動(dòng)態(tài)鏈接庫(kù)中的函數(shù)有返回值,則將其聲明為函數(shù):
Declare Function 函數(shù)名 lib“.DLL庫(kù)名” (Byval參數(shù)As類(lèi)型) a8類(lèi)型
具體到本數(shù)據(jù)采集系統(tǒng)的端口操作函數(shù)及A/D轉(zhuǎn)換函數(shù),其聲明方式如下:
評(píng)論