Etas标定工具-Incacome.dll二次开发

 先粘贴一个INCA软件官网介绍:


        ETAS通过INCA软件产品,为汽车电子系统的标定、诊断和验证提供灵活的工具。

        INCA工具用于ECU开发和试验,以及车辆、试验台、工作台或电脑虚拟环境中电子控制系统的验证和标定。在全球范围内,超过35000台用于开发和省擦痕那个项目的装置使用INCA工具。INCA工具具有多种功能,包括计算机上功能模型的预标定、ECU闪存编程、测量数据分析、标定数据管理以及ECU参数的自动优化。生成的标定和测量数据可以进行持续处理和评估。

        这里直接进入主题,本篇主要是运用INCA官方提供的接口组件库incacome.dll,通过c#语言在VS2013平台上开发一个一键记录相关的变量的值。实际上标定过程中,常常需要记录一些变量的值,比如主预后喷角度和油量,TVA、EGR开度,进气量,进气温度,增压压力,NOx,烟度等。在一些设备比较老旧,相关功能的情况下,就需要自己一边标定,一边记录。所以说,你会发现,标定工程师的工作时的电脑一直都会挂着Excel表格,这就是为了记录数据。像现在AVL、Horiba公司的台架设备,一般都能自动记录数据,如果运用asap3协议、或者借助网线和相关通讯协议可以实现将电脑的数据转发到台架电脑上,这样一来就可以实现自动记录数据了,甚至更进一步可以实现自动标定和在线优化。

喜欢的朋友欢迎加个收藏点个赞,感谢。也欢迎各位关注公众号,谢谢。

希望能给各位带来灵感。

        不多说,先上预览效果:     

        具体操作,我这里只讲主要部分,关于UI界面和事件处理这里略过。

        关于一些类的一些设置,我在stackflow找到一些信息,供大家理解,这里想给文字附带原文链接,那和不能富文本操作(https://stackoverflow.com/questions/17932147/in-etas-inca-what-classes-correspond-to-each-type-of-database-item?r=SearchResults):

        首先需要创建一个Inca实例,实际上就是一个类。这类里面有个方法可以实现连接电脑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软件。

  •  
        public  void Connect_Inca()        {            if (m_Inca != null)            {                this.ConnectInca.Text = "连接成功";            }            else            {                m_Inca = new Inca();                this.ConnectInca.Text = "连接成功";            }
        }

        

连接试验环境,注意这里需要事先先打开实验:

  •  
        public void experienceGetIn()        {            if (m_Inca != null && m_Experiment == null)            {                m_Experiment = m_Inca.GetOpenedExperiment();                this.experienceIn.Text = "试验中";                //getAllMeasureElecmentPrint();            }            else            {                this.experienceIn.Text = "试验中";                //getAllMeasureElecmentPrint();            }        }

通过变量名字获取标定变量的值:

 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起动发动机进入试验环境,直接获取测量变量的值会报错,编程的时候需要特别注意:

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();

设置标定变量的值:

  •  
 MCalibrationScalarData.SetDoublePhysValue(double.Parse(Text2number));

有一点需要深入了解一下,关于Map,cur结尾的变量数据该怎么处理。这里我还是一个标定新人,学习bosch策略文档时间比较紧,目前还没有时间去了解。等弄明白了再发文。

表格的设计用到一个插件:ReoGrid-2.1.0.0-All-Packages,开源免费,有需要大家可以去了解一下。

关于源代码,由于本文编程格式比较随意(其实是奇差),这里就不放GitHub了。

关于入门参考:《汽车软件技术》这个公众号也发表过相关文章。

下一篇应该是讲一些标定的事。

猜你喜欢

转载自blog.csdn.net/CKJ898/article/details/88345113