顶级欧美丰满熟妇XXXXX视频,中文字幕亚洲精品乱码,久久黑国产,中文字幕一区二区三区日韩精品 ,色九月亚洲综合网

造車網(wǎng)二級技術(shù)頁面

基于C++ Builder的自動變速器電控單元實車試驗數(shù)據(jù)采集系統(tǒng)

ainet.cn   2008年12月19日

  1 引言

  液力自動變速器是將車速和節(jié)氣門開度等車輛的狀態(tài)信號作為電控單元(ECU)的輸入信號,經(jīng)電控單元識別判斷處理后,根據(jù)換檔規(guī)律,發(fā)出信號給相應(yīng)電磁閥,利用電磁閥控制油壓回路,通過控制油路的通/斷(ON/OFF),使各檔的變速閥動作,完成變速控制。

  圖1為自動變速箱ECU開發(fā)的簡略技術(shù)路線圖。自動變速器半實物仿真試驗臺采用硬件在回路(hardware-in-loop)技術(shù)建立,該試驗臺可模擬自動變速器電子、液壓和與此對應(yīng)的車輛行駛狀態(tài),可比較全面的對電控單元進行信號分析、多工況系統(tǒng)仿真,以此進行ECU開發(fā)并獲得初步的換檔規(guī)律和控制策略。本文論述的電控單元實車試驗數(shù)據(jù)采集系統(tǒng)作為自動變速器車載分析試驗臺的核心部分,將采集與存儲實車運行過程中ECU各輸入輸出信號。這樣可通過采集的數(shù)據(jù)發(fā)現(xiàn)自開發(fā)ECU在功能性、換檔規(guī)律和換檔品質(zhì)等方面的缺陷,通過對得到的試驗結(jié)果進行相應(yīng)的分析,從而提出較好的控制策略,提出改進方案。所以,開發(fā)出性能較好的電控單元實車試驗數(shù)據(jù)采集系統(tǒng)是對于整個ECU開發(fā)工作是必不可少的。

  2 數(shù)據(jù)采集系統(tǒng)硬件結(jié)構(gòu)

  本數(shù)據(jù)采集系統(tǒng)硬件結(jié)構(gòu)框圖如圖2。數(shù)據(jù)采集系統(tǒng)采集的信號包括從自動變速器ECU引出的所有輸入、輸出信號。這些信號主要有三種形式,即模擬信號、數(shù)字信號和脈沖信號。其中模擬信號和數(shù)字信號經(jīng)過幅值轉(zhuǎn)換等簡單的調(diào)理之后就可以分別引入數(shù)據(jù)采集卡的模擬信號輸入口和數(shù)字信號輸入口,而脈沖信號需經(jīng)過信號調(diào)理模塊中的F/V信號轉(zhuǎn)換電路將脈沖信號轉(zhuǎn)換為標(biāo)準(zhǔn)的電壓信號,然后作為模擬信號輸入來采集。研華公司的數(shù)據(jù)采集卡PCL-818L可以16通道單端模擬信號輸入采集,12位A/D轉(zhuǎn)換和16通道數(shù)字信號采集,加上PCL-726數(shù)據(jù)采集卡提供的數(shù)字信號輸入采集端口,能夠滿足系統(tǒng)的要求。最后使用工控機作為控制的主體,用以運行數(shù)據(jù)采集程序。

  3 數(shù)據(jù)采集系統(tǒng)軟件程序的編制

  3.1數(shù)據(jù)采集程序流程圖

  本程序采用Borland C++ Builder編寫,Borland C++ Builder以其豐富的可視化組件庫(VCL)而使程序的編寫顯得非常容易。根據(jù)要求,本系統(tǒng)采集程序的流程圖如圖3:

  程序采集開始調(diào)用多媒體定時器給每次采集循環(huán)定時。由于自動變速器ECU對各管腳信號每25ms掃描一次,所以對于ECU實車試驗數(shù)據(jù)采集系統(tǒng)的采樣頻率要求并不高,因此我們把多媒體定時器定時為10ms,即每10ms采集一組信號數(shù)據(jù),其中包括17個數(shù)字量、6個模擬量和2個經(jīng)過F/V轉(zhuǎn)換的頻率量,并完成數(shù)據(jù)存儲。

  3.2模擬量、數(shù)字量采集子函數(shù)

  在確定了采集程序的程序框圖和界面之后,就要著手編寫采集中最重要的兩個子函數(shù)了,即模擬量和數(shù)字量采集子函數(shù)。廠家提供的動態(tài)連接庫(DLL)中包含了進行數(shù)據(jù)采集操作的C/C++函數(shù),在C++Builder下可對這些函數(shù)進行調(diào)用,就可以很方便的對數(shù)據(jù)采集系統(tǒng)進行設(shè)置、采樣和數(shù)據(jù)處理。以下通過對模擬量的采集來概要說明。

  使用時先在程序中聲明,即把含有函數(shù)聲明的.h文件包含在程序體中。然后利用項目管理器將包含函數(shù)實體的.lib文件加入到項目中。這樣在程序體中就可以調(diào)用其中的函數(shù)了,具體的模擬量數(shù)據(jù)采集子函數(shù)代碼如下:
  float readvoltage(int device,int channel)              //參數(shù)為設(shè)備號、通道號
  { ………………                            //變量定義、說明等
  lDevNum=device;
  usChan=channel;
  dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);  //打開設(shè)備
    if (dwErrCde != SUCCESS)
    { ErrorHandler(dwErrCde);}
  n = usChan;  //配置設(shè)備
n = 0;
  dwErrCde = DRV_AIConfig(lDriverHandle, &ptAIConfig);
  if (dwErrCde != SUCCESS)
  { ErrorStop(&lDriverHandle, dwErrCde);}
   = usChan;                         //讀一個數(shù)據(jù)
   = 0;                 
  de = 0;          
  e = &fVoltage;     
  dwErrCde = DRV_AIVoltageIn(lDriverHandle, &ptAIVoltageIn);
  if (dwErrCde != SUCCESS)
  { ErrorStop(&lDriverHandle, dwErrCde);}
  dwErrCde = DRV_DeviceClose(&lDriverHandle);         //關(guān)閉設(shè)備
  if (dwErrCde != SUCCESS)
  { ErrorStop(&lDriverHandle, dwErrCde);}
  return fVoltage;                                     //返回采集數(shù)據(jù)
  }
  
   同理,數(shù)字量采集子函數(shù)也是類似的操作。


  3.3多媒體定時器

  由于多媒體定時器具有很好的實時性和較高的優(yōu)先級,最高定時可達(dá)1ms,所以我們這個數(shù)據(jù)采集系統(tǒng)采用多媒體定時器來定時。需要的系統(tǒng)資源為:#include ;在borland環(huán)境下首先需要將文件通過implib命令轉(zhuǎn)化為borland下的格式,然后將相應(yīng)的lib加到工程里。具體的多媒體定時器代碼如下:
  void start_timer(double m_time_val)        //啟動多媒體定時器,m_time_val的單位是秒
  { TIMECAPS TC;
  UINT TIMERES="0";
    UINT TIMEID;
    m_time_val*=1000;
    int time_interval;
    time_interval=(int)m_time_val;
    if(timeGetDevCaps(&TC,sizeof(TIMECAPS))!=TIMERR_NOERROR)
    { exit(0);}
  timeBeginPeriod(TIMERES);      TIMEID="timeSetEvent"(time_interval,TIMERES,&(LPTIMECALLBACK)callbackfunction ,0,TIME_PERIODIC);

 g_TIMEID=TIMEID;
  }
  void end_timer()                   //終止定時
  { timeKillEvent(g_TIMEID);
  timeEndPeriod(0);
  }
  void WINAPI callbackfunction(UINT uID,UINT MSG,DWORD DWUSER,DWORD DW1,DWORD DW2)
  {                       //在此函數(shù)中加入定時內(nèi)自己要做的內(nèi)容,本系統(tǒng)即要加入
                        //模擬量、數(shù)字量采集子函數(shù)的調(diào)用和存儲數(shù)據(jù)等語句
  }


  首先調(diào)用void start_timer(double m_time_val)啟動多媒體定時器,多媒體定時器將每隔一個時間間隔調(diào)用void WINAPI callbackfunction(UINT uID,UINT MSG,DWORD DWUSER,DWORD DW1,DWORD DW2)函數(shù),通過改變time_interval的值可以改變時間間隔(time_interval的單位是毫秒),在定時結(jié)束時調(diào)用void end_timer()來終止定時。

  3.4存儲數(shù)據(jù)

  本數(shù)據(jù)采集系統(tǒng)還將把采集到的數(shù)據(jù)存儲起來,以便將來對這些數(shù)據(jù)進行分析?,F(xiàn)在最常用的數(shù)據(jù)庫就是微軟的Access,而C++Builder對數(shù)據(jù)庫也有較好的操作,所以我們采取將數(shù)據(jù)存入Access的方案來實現(xiàn)數(shù)據(jù)的存儲。基本的操作步驟如下:

  ●使用ADO組件頁中的ADOTable組件來連接存儲數(shù)據(jù)的數(shù)據(jù)庫。

  ●由于ADOTable組件只負(fù)責(zé)連接數(shù)據(jù)庫,無法取得數(shù)據(jù)庫文件內(nèi)的字段數(shù)據(jù),所以我們?nèi)缘檬褂肈ata Access組件頁中的DataSource組件來實現(xiàn),將它的DataSet屬性指定為ADOTable1(即前一步驟加入的ADOTable組件名稱)。

  ●往數(shù)據(jù)庫存數(shù)據(jù)的過程即是新增記錄的過程,所以只需添加幾句簡單的語句:

  ADOTable1->Insert();
  ADOTable1->FieldValues["voltage1"]=voltage1;
  …………
  ADOTable1->Post();

  首先調(diào)用Insert方法創(chuàng)建一個緩沖區(qū)(即成為編輯模式),接著進行數(shù)據(jù)字段值的編輯,當(dāng)我們完成數(shù)據(jù)輸入的操作后,必須調(diào)用Post方法,或者將當(dāng)前的數(shù)據(jù)位置移到另一筆數(shù)據(jù)上,這樣才會將新增的記錄內(nèi)容寫入到數(shù)據(jù)庫。

  4 結(jié)論

  試驗結(jié)果表明本文基于Borland C++ Builder開發(fā)的汽車自動變速器電控單元(ECU)實車試驗數(shù)據(jù)采集系統(tǒng),能夠滿足車載分析試驗臺的要求,這為ECU的開發(fā)和優(yōu)化控制策略打下基礎(chǔ)。

 

標(biāo)簽: C++ Builder 自動變速器 數(shù)據(jù)采集系統(tǒng) 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
億萬克
專題報道