基于CAN总线的汽车测试解决方案
- 格式:doc
- 大小:16.59 KB
- 文档页数:7
基于CAN总线的汽车ECU刷写方案蔡晓辉发布时间:2021-09-09T02:57:48.609Z 来源:《中国科技人才》2021年第17期作者:蔡晓辉[导读] 随着汽车制造业和电子信息技术的迅猛发展,汽车ECU的功能日益丰富,汽车ECU刷写成为了汽车ECU的一个必备功能。
广西金奔腾车联网科技有限公司广西贵港 537100摘要:随着汽车制造业和电子信息技术的迅猛发展,汽车ECU的功能日益丰富,汽车ECU刷写成为了汽车ECU的一个必备功能。
针对汽车ECU的特点,提出一个基于CAN总线的汽车ECU刷写方案,介绍汽车ECU刷写的实现方法。
该设计不仅方便汽车行业研发人员开发和测试,还对汽车的升级与维护都有至关重要的作用。
关键字:汽车ECU CAN总线 UDS协议诊断服务前言半导体技术的不断进步,MCU内部集成的逻辑功能外设越来越多,存储器也越来越大。
消费者对于汽车节能型、舒适性、互联性、安全性的要求越来越高,更大大加速了汽车电子技术的发展,使得汽车具备了通信、办公和娱乐等丰富功能[1-3]。
为了适配各式各样的汽车,汽车ECU应用功能变得越来越丰富,这也使得汽车ECU的生产变得复杂。
为了匹配车辆的性能和车辆相应模块的功能,在开发车辆电子控制单元的过程中,需要经常调校参数以及更新软件。
传统方法需要将单个零件从整车上拆卸,并通过端口调试进行更新,这样会增加工作量并容易造成整车的损坏。
为了解决传统方法的繁琐问题,提出了一个基于CAN总线的汽车ECU刷写系统,并介绍汽车ECU刷写实现的方法。
1 相关概念1.1 BootLoader功能BootLoader是驻留在ECU非易失性存储器中的一段程序加载代码,每次ECU复位后,都会运行BootLoader[4]。
它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入BootLoader模式,建立与程序下载端的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM(非易失性存储器)驱动程序,将其编程到NVM中,并校验其完整性,从而完成应用程序更新。
基于CAN总线的虚拟测控网络设计基于CAN总线的虚拟测控网络设计随着汽车电子技术的发展和普及,车辆上的各种传感器和控制器数量越来越多,车辆电子系统也变得越来越复杂。
而这些传感器和控制器的数据交换需要一种可靠的传输方式,以确保数据传输的实时性和准确性。
CAN总线就是一种基于串行通信协议的多控制器数据总线,被广泛应用于车辆电子系统中。
虚拟测控网络(Virtual Instrumentation Network,VIN)是一种以计算机为核心、以网络为媒介、以虚拟仪器为手段、以软件为基础、以分布计算为特点的测控系统网络。
VIN不仅充分发挥了计算机的强大计算和控制能力,还能利用网络技术实现分布式数据采集和控制。
基于CAN总线的虚拟测控网络是一种新兴的测控系统方案,它将CAN总线和VIN技术相结合,实现了车辆各个传感器和控制器间的精确数据交换和智能控制。
CAN总线作为传输媒介,提供了高速、可靠、实时的数据传输通道,而VIN则负责数据采集、处理、显示和控制等功能。
基于CAN总线的虚拟测控网络设计通常包括以下几个方面:硬件设计:首先需要设计CAN总线电路和传感器接口电路,以保证数据传输的可靠性和准确性。
此外,还需要选用合适的数据采集卡和控制卡,并进行相应的调试和测试,以确保硬件系统的稳定性和正确性。
软件设计:软件设计是整个系统中最重要的部分。
首先需要编写CAN总线接口程序,以实现CAN总线数据的读取和发送。
其次需要编写数据采集程序和控制程序,以实现对传感器数据的采集和处理,以及对系统的控制和调节。
最后还需要编写用户界面程序,以实现数据显示和用户交互等功能。
系统集成:系统集成是将硬件和软件系统整合成一个完整的系统并进行测试和验证的过程。
在集成过程中需要注意硬件和软件之间的接口问题,以及系统的稳定性和可靠性问题。
集成测试要充分考虑各种异常情况和故障,以确保系统的可靠性和有效性。
总结:基于CAN总线的虚拟测控网络是一种应用前景广阔的新兴测控系统方案。
基于CAN总线的汽车电子信息系统设计随着科技的不断进步和人们对汽车功能需求的不断增加,汽车电子信息系统变得越来越复杂。
作为现代汽车的核心,基于CAN 总线的汽车电子信息系统设计尤为重要。
本文将介绍基于CAN总线的汽车电子信息系统设计的相关知识和实施步骤。
一、概述CAN(Controller Area Network)总线是一种广泛应用于汽车领域的串行通信协议。
它允许多个微控制器互相通信,并可以操作和监控汽车中的各种电子器件。
基于CAN总线的汽车电子信息系统设计的目标是实现各个子系统之间的高效通信和数据交换,从而提供更好的驾驶体验和车辆性能。
二、系统架构设计基于CAN总线的汽车电子信息系统设计通常包括以下几个子系统:动力系统、安全系统、车辆网络系统和驾驶辅助系统。
系统架构设计的目标是使各个子系统之间实现有效的通信和协调工作。
1. 动力系统动力系统是汽车的核心,主要包括引擎、变速器和传动轴等部件。
在基于CAN总线的汽车电子信息系统设计中,动力系统需要与其他子系统进行信息传递和协调工作,以确保汽车的正常运行和性能优化。
2. 安全系统安全系统是为了保障驾驶员和乘客的安全而设计的。
基于CAN 总线的汽车电子信息系统设计中,安全系统包括制动系统、安全气囊系统和稳定控制系统等。
这些系统需要实时地与其他子系统进行数据交换和信息共享,以确保汽车的安全性能。
3. 车辆网络系统车辆网络系统主要用于实现汽车的各种功能,如娱乐系统、导航系统和网络连接等。
在基于CAN总线的汽车电子信息系统设计中,车辆网络系统需要与其他子系统进行数据交换和通信,以实现全面的车辆功能。
4. 驾驶辅助系统驾驶辅助系统是为了提供更好的驾驶体验和驾驶安全而设计的。
基于CAN总线的汽车电子信息系统设计中,驾驶辅助系统包括自动巡航控制系统、驻车辅助系统和车道保持系统等。
这些系统需要与其他子系统实时地交换数据和信息,以提供准确的驾驶辅助功能。
三、实施步骤基于CAN总线的汽车电子信息系统设计的实施步骤如下:1. 系统需求分析首先,进行系统需求分析,明确系统的功能和性能需求。
can总线解决方案
《Can总线解决方案》
Can总线是一种广泛应用于汽车、工业控制和其他领域的串行
通信协议,它具有高可靠性、低成本和实时性强的特点。
随着现代汽车和工业控制系统对通信效率和可靠性要求的提高,Can总线技术也不断得到改进和完善。
为了解决Can总线在实际应用中可能遇到的问题,人们提出了各种解决方案。
首先,Can总线解决方案的关键之一是网络拓扑结构的设计。
不同的应用场景需要不同的网络拓扑结构,如星型、环型、总线型等。
合理的网络拓扑结构可以提高系统的稳定性和可靠性,降低通信延迟。
其次,Can总线解决方案还包括通信协议的优化。
Can总线通
信协议本身具有一定的帧格式和传输速率,但在实际应用中可能需要额外的协议或协议栈来满足特定要求。
例如,对于高速高精度的工业控制系统,可能需要使用Canopen或DeviceNet
等协议来实现更复杂的通信功能。
此外,Can总线解决方案还涉及硬件和软件方面的优化。
在硬
件设计上,可以采用抗干扰性能更好的芯片和模块,增强系统的抗干扰能力;在软件开发上,可以采用更高效的通信协议栈和驱动程序,提高数据传输的速度和稳定性。
总之,Can总线解决方案是一个综合性的工程问题,需要考虑
硬件、软件、通信协议等多个方面的因素。
只有在这些方面都
得到合理的设计和优化,才能实现Can总线系统的高效、稳定和可靠运行。
基于CAN总线的汽车诊断协议UDS(上位机开发驱动篇)本篇作为UDS上位机的驱动开发篇,从市⾯上多见的CAN分析仪着⼿介绍UDS上位机驱动开发和移植的⼀般过程,⽬的是使UDS上位机软件能适应多家CAN分析仪,降低使⽤者的硬件成本。
⼀:⼴成CAN分析仪的驱动开发⾸先创建ECANDLL类,从⼴成提供的⼆次开发包中获取ECANVCI.dll⽂件,将DLL⽂件放置与⽣成程序的⽬录中,如下类中创建了CAN常⽤的控制函数。
public static class ECANDLL{[DllImport("ECANVCI.dll", EntryPoint = "OpenDevice")]public static extern ECANStatus OpenDevice(UInt32 DeviceType,UInt32 DeviceInd,UInt32 Reserved);[DllImport("ECANVCI.dll", EntryPoint = "CloseDevice")]public static extern ECANStatus CloseDevice(UInt32 DeviceType,UInt32 DeviceInd);[DllImport("ECANVCI.dll", EntryPoint = "InitCAN")]public static extern ECANStatus InitCAN(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd,ref INIT_CONFIG InitConfig);[DllImport("ECANVCI.dll", EntryPoint = "StartCAN")]public static extern ECANStatus StartCAN(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd);[DllImport("ECANVCI.dll", EntryPoint = "ResetCAN")]public static extern ECANStatus ResetCAN(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd);[DllImport("ECANVCI.dll", EntryPoint = "Transmit")]public static extern ECANStatus Transmit(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd,ref CAN_OBJ Send,UInt16 length);[DllImport("ECANVCI.dll", EntryPoint = "Receive")]public static extern ECANStatus Receive(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd,out CAN_OBJ Receive,UInt32 length,UInt32 WaitTime);[DllImport("ECANVCI.dll", EntryPoint = "ReadErrInfo")] public static extern ECANStatus ReadErrInfo(UInt32 DeviceType,UInt32 DeviceInd,UInt32 CANInd,out CAN_ERR_INFO ReadErrInfo);}在MainForm中,针对不同的控件调⽤不同的控制函数如初始化:INIT_CONFIG init_config = new INIT_CONFIG();init_config.AccCode = 0;init_config.AccMask = 0xffffff;init_config.Filter = 0;switch (m_Baudrate){case 0: //1000init_config.Timing0 = 0;init_config.Timing1 = 0x14; break;case 1: //800init_config.Timing0 = 0;init_config.Timing1 = 0x16; break;case 2: //666init_config.Timing0 = 0x80; init_config.Timing1 = 0xb6; break;case 3: //500init_config.Timing0 = 0;init_config.Timing1 = 0x1c; break;case 4://400init_config.Timing0 = 0x80; init_config.Timing1 = 0xfa; break;case 5://250init_config.Timing0 = 0x01; init_config.Timing1 = 0x1c; break;case 6://200init_config.Timing0 = 0x81; init_config.Timing1 = 0xfa; break;case 7://125init_config.Timing0 = 0x03;init_config.Timing1 = 0x1c;break;case 8://100init_config.Timing0 = 0x04;init_config.Timing1 = 0x1c;break;case 9://80init_config.Timing0 = 0x83;init_config.Timing1 = 0xff;break;case 10://50init_config.Timing0 = 0x09;init_config.Timing1 = 0x1c;break;}init_config.Mode = 0;if (ECANDLL.OpenDevice(m_devtype, m_devind, 0) != ECAN.ECANStatus.STATUS_OK){MessageBox.Show("Open device fault!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}//Set can1 baudif (ECANDLL.InitCAN(m_devtype, m_devind, 0, ref init_config) != ECAN.ECANStatus.STATUS_OK){MessageBox.Show("Init can fault!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);ECANDLL.CloseDevice(1, 0);return;}⼆:周⽴功CAN分析仪驱动开发周⽴功的CAN分析仪与⼴成基本相同,将DLL⽂件替换为周⽴功的DLL⽂件。
基于CAN总线的汽车测试解决方案
于CAN总线的汽车测试解决方案一、前言
随着中国汽车市场的快速发展和汽车电子的价值含量迅速提高,针对汽车电子的测试技术也变的日益复杂,在全球化的汽车设计和生产的趋势下,中国本地的工程师越来越感觉到汽车电子测试所面临的种种困难,其中主要包括:(一)无法满足产品线不断更新的需求,并希望减少产品投放市场的周期。
1.汽车电子产品的日益更新,要求测试系统以最快的速度满足新的需求。
而目前国外引进的专用测试系统往往升级周期较长,无法满足本地瞬息万变的产品测试需求。
图1:基于PXI TestStand平台的测试系统
2.专业汽车电子厂商往往生产多个不同型号的同类产品,并根据订单、物流的条件,其生产计划经常发生变化。
如果不同型号的产品都采用不同的测试设备,将会导致测试设备重复利用率过低,大大降低投资效率。
(二)目前汽车电子测试缺乏通用仪器的解决方案,如汽车音响及仪表盘的测试往往需要专门定制的仪器,而且这些仪器价格非常昂贵。
(三)本地的售后服务和及时的故障响应。
测试生产线上一切以生产线的持续运行为最高目标,当中国工程师不能
掌握全面的故障诊断和维修技术时,就只能向国外的工程师求助,这样容易导致响应速度慢,且代价昂贵。
(四)复杂的汽车测试系统常常需要多种测量和控制任务的协同工作,一个用于集成的软硬件同步平台就显得尤为的重要。
二、支持CAN协议的柔性测试设备
20世纪80年代Bosch公司为解决汽车系统中各个电子单元之间的通信问题开发了CAN总线标准。
这种串行总线用2根或1根电线把汽车里的各个电子设备连接起来,相互可以传递信息。
采用CAN总线避免了电子模块间大量繁复的连线,比如仪表板上车速、发动机转速、油量和发动机温度的指示就不需要连接不同的线缆到对应的传感器,而只需要接入CAN总线,就可以从总线上获取相应信息。
CAN 的卓越表现使汽车制造商们纷纷开发并使用基于CAN和数据采集设备的测试系统。
国际标准组织将CAN总线接纳为ISO 11898标准。
NI公司在其标准虚拟仪器测试平台上推出CAN控制器系列,支持多种CAN总线的协议,其中包括高速CAN、低速容错CAN和单线CAN。
尤其是新推出的PXI-8464软件可选类型的CAN控制器,可以让你不用更改硬件连接,就适应各种CAN通信协议,同时既可以作为总线控制器,又可以作总线通信分析仪,使得测试设备可以在最大程度上适应柔性生产。
三、PXI TestStand汽车测试平台
在基于CAN总线的汽车电子测量领域,最为成功的测试平台当属基于PXI总线和TestStand软件的虚拟仪器平台。
PXI作为一个符合工业标准的测试平台,它是建立在高速的CompactPCI总线基础之上,并加入了类似VXI所具有的定时、触发和同步功能。
为了便于集成,PXI采用了开放的软件标准,其中包括通用的操作系统,即插即用的驱动和网络技术等。
基于PXI的各种模块化仪器不仅具有标准化的硬件外形和接口,即插即用的安装方式,而且支持更高级别、更高兼容性的软件协议,比如可互换虚拟仪器标准(IVI)和虚拟仪器软件构架标准(VISA)等等。
这样使得任何测试都可以标准化为相同的层次结构模式。
被测单元的物理信号经过传感器和信号调理接入测试测量硬件,这些模块化仪器都插在PXI机箱内和PXI总线接口相连。
驱动程序通过PXI底层通信和模块化仪器交换测控数据。
测控软件包通过驱动程序实现通用的数据采集、仪器和被测单元控制。
信号处理软件包调用信号处理工具,实现通用信号分析功能。
测试测量模块调用测控软件包和信号处理软件包,实现和具体被测单元相关的测试测量。
这些测试测量模块构成整个检测的单项步骤,被测试软件平台调用。
NI公司的TestStand软件是一个国际广泛应用的测试管理软件。
它提供了每项测试所共有的内容,比如测试
流程管理、结果存档和报表、用户权限管理、操作工界面等等。
以这个软件为平台,向下可以调用各个测试模块形成标准的测试流程,向上可以把数据记录到数据库,从而和硬件系统一起构成完整的测试测量系统(图1)。
四、成功案例
上海聚星仪器有限公司作为NI中国授权的系统联盟商,是国内将PXI TestStand平台技术应用在基于CAN总线的汽车系统测试的倡导者之一,已为数家国际知名汽车电子生产厂提供了数十套基于该技术的测试系统。
例如聚星公司开发的基于CAN总线的汽车音响测试系统,用于全自动汽车收音机流水线的测试,每条自动流水线配备了6个PXI测试站,对音响不同组装阶段中的不同的功能进行自动测试。
当该流水线又承接了另一个全新的汽车收音机的项目,并要求根据订单调配该流水线的生产计划时,由于采用了PXI TestStand的平台技术,流水线改造无需购买新的测试仪器,只需修改相应的软件程序既可快速投入新产品的测试中。
这家厂商对新收音机的测试系统改造只花了1个多月的时间,而如果从国外系统集成公司进口测试仪器至少需要4-6个月的时间。
提前3个月推出新产品不仅意味着提前盈利,更在很大程度上抢先占领了市场份额。
图2:收音机测试连接示意图。
图2显示了一个典型的基于PXI TestStand的收音机测试系
统。
其中1为采用Pentinum M的PXI-8196嵌入式控制器,控制器上提供了串口、并口、以太网口、USB和GPIB 等接口,并且所有的软件都在它上面运行;2为PXI-8664 CAN控制器,与收音机的CAN总线连接;3为PXI-4472动态信号采集卡,配合聚星的音频分析软件实现音频分析仪的功能,它同时和收音机的喇叭输出连接,8个输入通道可以和4声道平衡输出匹配;4为PXI-5671射频信号发生器,配合聚星的射频软件实现立体声无线电信号源的功能,它和收音机的天线输入连接;5为PXI-2565高性能继电器,负责电源开关和其他开关切换,它的接触电阻仅30毫欧姆,单路可承载5安培的电流;6为PXI-4070数字万用表模块,它和电源以及继电器连接,测量电流和电压,提供6位半的精度。
以上是PXI TestStand检测平台的一个典型应用。
被测件-收音机的CAN、音频、射频和电源是物理的测控对象,它们和各自的模块化仪器连接。
模块化仪器都和PXI总线连接,交换测控数据和指令。
所有的模块化仪器都有相应的软件控制,形成功能独立且可相互集成的测试软件模块。
这些测试软件模块再由测试管理软件TestStand有机地构建成统一的测试流程。
五、PXI TestStand平台的优势
对于客户而言,这种基于PXI TestStand软硬件平台的测试系统具有集成度高、可靠性好、升级维护方便、开放彻底
的优点。
首先,您可以使用一个标准3U的PXI机箱插上各种模块来替代原来塞满整个机柜的多个传统仪器;对于基于CAN总线的被测单元,又往往需要多种测试模块协同工作对被测单元的各种性能进行测试。
比如一个汽车仪表板的功能测试就需要CAN控制器、模拟电压和电流采集、指示灯的开关控制、夜间照明的PWM采集、LED的视频检测等,而所有这些检测仪器都可以集成在一个PXI机箱里。
这样在减小设备体积和占地的同时,又大大简化了检测设备的复杂度和连线的复杂度,从而提高了设备的可靠性。
其次,由于采用了标准化的平台结构,使得设备的检修和升级被大大的简化。
比如一个工厂想更换现有的示波器或升级到PXI的示波器时,由于PXI的示波器和这些传统示波器一样都支持GPIB和IVI的标准,您只须在IVI驱动程序中配置相应的系统资源名称,不需要更改任何的测试代码,就可以轻松的完成替换和升级。
这样你可以在节约投资的同时大大减少维护和升级的代价,尤其是减少生产线的中断时间。
此外,从软件角度讲,由于所有的测试都采用相同的TestStand平台软件,当由于生产工艺变化或被测产品升级需要更改测试的流程或设置时,生产维护工程师只需要掌握一种软件TestStand,即可以轻松维护所有的检测站。
最后,对中国工程师可能也是最重要的,就是一个彻底开
放的测试系统。
它需要向测试工程师开放全部的测控信息,使得工程师有机会掌握自动测试测量的核心技术。
这样的测试系统构架将数据采集、信号分析、测试流程和数据管理分层次地开放,使得工程师可以轻松地获取原始信号、调整分析方法和预处理参数、优化测试流程和定义数据报告结构格式等。
比如在基于CAN总线的测试中,您可以用另一块CAN控制卡监视被测单元和外界的通信时序,分析总线逻辑是否符合规范。
又比如您可以获取有问题的汽车音响的音频输出,作详细的事后分析,找出问题所在。
曾经有一款汽车收音机的信噪比较低,用标准的检测方法无法诊断问题的原因。
测试工程师对信噪比测试程序稍作修改后,将原始音频记录下来,再用FFT函数作频谱分析,发现在超过20kHz的某个频率有异常的峰值,改进设计后立刻就排除了故障。