Etas标定工具-Incacome.dll二次开发
?先粘貼一個INCA軟件官網(wǎng)介紹:
????????ETAS通過INCA軟件產(chǎn)品,為汽車電子系統(tǒng)的標定、診斷和驗證提供靈活的工具。
????????INCA工具用于ECU開發(fā)和試驗,以及車輛、試驗臺、工作臺或電腦虛擬環(huán)境中電子控制系統(tǒng)的驗證和標定。在全球范圍內(nèi),超過35000臺用于開發(fā)和省擦痕那個項目的裝置使用INCA工具。INCA工具具有多種功能,包括計算機上功能模型的預(yù)標定、ECU閃存編程、測量數(shù)據(jù)分析、標定數(shù)據(jù)管理以及ECU參數(shù)的自動優(yōu)化。生成的標定和測量數(shù)據(jù)可以進行持續(xù)處理和評估。
????????這里直接進入主題,本篇主要是運用INCA官方提供的接口組件庫incacome.dll,通過c#語言在VS2013平臺上開發(fā)一個一鍵記錄相關(guān)的變量的值。實際上標定過程中,常常需要記錄一些變量的值,比如主預(yù)后噴角度和油量,TVA、EGR開度,進氣量,進氣溫度,增壓壓力,NOx,煙度等。在一些設(shè)備比較老舊,相關(guān)功能的情況下,就需要自己一邊標定,一邊記錄。所以說,你會發(fā)現(xiàn),標定工程師的工作時的電腦一直都會掛著Excel表格,這就是為了記錄數(shù)據(jù)。像現(xiàn)在AVL、Horiba公司的臺架設(shè)備,一般都能自動記錄數(shù)據(jù),如果運用asap3協(xié)議、或者借助網(wǎng)線和相關(guān)通訊協(xié)議可以實現(xiàn)將電腦的數(shù)據(jù)轉(zhuǎn)發(fā)到臺架電腦上,這樣一來就可以實現(xiàn)自動記錄數(shù)據(jù)了,甚至更進一步可以實現(xiàn)自動標定和在線優(yōu)化。
喜歡的朋友歡迎加個收藏點個贊,感謝。也歡迎各位關(guān)注公眾號,謝謝。
希望能給各位帶來靈感。
????????不多說,先上預(yù)覽效果: ????
????????具體操作,我這里只講主要部分,關(guān)于UI界面和事件處理這里略過。
????????關(guān)于一些類的一些設(shè)置,我在stackflow找到一些信息,供大家理解,這里想給文字附帶原文鏈接,那和不能富文本操作(https://stackoverflow.com/questions/17932147/in-etas-inca-what-classes-correspond-to-each-type-of-database-item?r=SearchResults):
????????首先需要創(chuàng)建一個Inca實例,實際上就是一個類。這類里面有個方法可以實現(xiàn)連接電腦inca軟件。
????????incacom.dll里面有兩個命名空間,我們主要使用用下面這一個。
????????廢話不多說,上代碼。
????????定義一些需要用到的變量。
- private Inca m_Inca = null; private Experiment m_Experiment = null; private CalibrationScalarData m_CalibrationScalarData; private MeasureScalarData m_MeasureScalarData; string[] Measure_Lable =new string[] {}; MeasureElement[] measureArray; IList<InfoMeasureItem> MeasureSelectList = new List<InfoMeasureItem>(); IList<string> MesureList = new List<string>(); DataTable dt = new DataTable(); System.Data.DataSet ds = new System.Data.DataSet();
????? ?
初始化inca實例,意義就是使這個app連接電腦inca軟件。
- ?
????????
連接試驗環(huán)境,注意這里需要事先先打開實驗:
- ?
?
通過變量名字獲取標定變量的值:
CalibrationScalarData calibrationData = m_Experiment.GetCalibrationElement(labelname).GetValue() as CalibrationScalarData; //this.textBox2.Text = calibrationData.GetDoublePhysValue().ToString(); return Math.Round(calibrationData.GetDoublePhysValue(),2).ToString(); //this.textBox2.Text = m_CalibrationScalarData.GetDoublePhysValue().ToString();?
獲取測量變量的值同理,需要注意的是,不連接Ecu起動發(fā)動機進入試驗環(huán)境,直接獲取測量變量的值會報錯,編程的時候需要特別注意:
MeasureScalarData measureData = m_Experiment.GetMeasureElement(labelname).GetValue() as MeasureScalarData; //this.textBox3.Text = measureData.GetDoublePhysValue().ToString(); return Math.Round(measureData.GetDoublePhysValue(),2).ToString();?
獲取所有變量:???????
CalibrationElement[]?calibrationArray?=?MExperiment.GetAllCalibrationElements(); MeasureElement[] measureArray = m_Experiment.GetAllMeasureElements();?
設(shè)置標定變量的值:
- ?
?
有一點需要深入了解一下,關(guān)于Map,cur結(jié)尾的變量數(shù)據(jù)該怎么處理。這里我還是一個標定新人,學(xué)習(xí)bosch策略文檔時間比較緊,目前還沒有時間去了解。等弄明白了再發(fā)文。
?
表格的設(shè)計用到一個插件:ReoGrid-2.1.0.0-All-Packages,開源免費,有需要大家可以去了解一下。
?
關(guān)于源代碼,由于本文編程格式比較隨意(其實是奇差),這里就不放GitHub了。
關(guān)于入門參考:《汽車軟件技術(shù)》這個公眾號也發(fā)表過相關(guān)文章。
下一篇應(yīng)該是講一些標定的事。
總結(jié)
以上是生活随笔為你收集整理的Etas标定工具-Incacome.dll二次开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 撰写中文论文出现Package CJK
- 下一篇: 组合数学之排列组合