CAN通信最常⽤的标定协议--CCP与XCP
CCP与XCP
CCP协议( Calibration Protocol)
CAN标定协议,基于CAN总线的标定协议
XCP协议(Universal Measurement and Calibration Protocol)
通⽤测试标定协议
可以应⽤在许多总线上:
XCP on CAN
XCP on Ethernet
XCP on FlexRay
XCP on USB
CCP与XCP的⽤途
XCP/CCP主要应⽤于控制系统的开发和测试
XCP/CCP使⽤者为control system或mechanical engineers
通信协议XCP/CCP也⼴泛应⽤于system verification和testing
如果不⽤XCP/CCP,那么在ECU的软件开发中,将⾮常频繁使⽤C-code编译器和debugger。
通过XCP/CCP协议,配合A2L⽂件,可以直接在软件上更改某些参数,执⾏器就会给相应的反馈。
例如我们以前做⼀个单⽚机板⼦,如果想要修改⾥⾯的程序的话,需要先修改代码,再进⾏编译调试,⽣成hex或S19⽂件,再将程序烧写进单⽚机中,才算完成程序的修改。但是对于复杂的ECU来说,标定时是需要经常修改各种参数的,如果每次修改参数都需要编译调试⽣成再下载这⼀系列步骤的话,是⾮常影响⼯作效率的,所以使⽤CCP和XCP进⾏标定是⾮常便捷的。
CCP与XCP的优点
1、当ECU运⾏的时候,可以实时记录ECU内存中的变量。
2、可以具有真实物理意义和单位的数值来直接读写ECU变量,⽐如RPM、温度、开关等,⽽不是以原始的字节、位来读取。
3、实时改变ECU内存中的变量值,测试中实时改变ECU⾏为和性能,⽽不需重新编译ECU程序。
4、标定过程中,数据记录功能可以获取和记录全⾯的数据。
⼀、CCP的介绍
CCP主要功能
CCP全称CAN Calibration Protocol(CAN标定协议),是ASAM标准的组成部分,属于ASAM MCD1a规范标准。
CCP协议主要可提供以下功能:
1、随机读取ECU中RAM和ROM数据
2、测量数据采样
3、标定数据采样和传输
4、同时处理多个ECU系统
5、F1ash编程技术
CCP通信⽅式
CCP协议采⽤主从通信⽅式,具体⼜可分为两种:
1、查询(Polling)模式
2、DAQ(Data Acquisition Command)模式
在详细介绍CCP的通信⽅式之前,我们需要先了解⼀下CCP的系统结构。
如下图所⽰为CCP系统的整体架构,标定系统和各个ECU通过CAN总线连接。
下图是CCP系统结构:
从CCP系统内部具体结构可以看出,CCP系统结构主要由主设备MCD系统和电控单元ECU构成,其中ECU内部的CCP驱动程序⼜由命令处理器和DAQ处理器组成。
命令处理器主要是处理查询模式,是由标定系统主设备给命令处理器发出⼀个CRO的命令,ECU接受到之后再反馈响应给标定系统。
DAQ处理器主要是处理DAQ模式的,DAQ模式不需要主设备请求,每隔⼀段时间它会⾃动将ECU⾥相关信息传到测量与标定系统中。
⼆、XCP的介绍
XCP----标定和测量应⽤的焦点
Andreas Patzer(Vector Informatik,恒润科技提供译稿)
针对多种传输层和应⽤的协议
现代汽车系统中加⼊了越来越多的安全舒适性电控功能。虽然ECU的数量得到了控制,但是这就意味着要增加单个设备的复杂度来补偿功能的增长。XCP通信协议为这些分布式系统开发过程的合理化做出了重要的贡献,其主要任务包括实时地测量和标定ECU内部变量。该协议继承了CCP,它的⼀个巨⼤优势就是与物理传输层⽆关。
在当前,汽车控制模块中的变量数⽬超过1万的情况已经不⾜为奇了!在车辆的控制中有众多的动态过
程需要控制,⽽ECU标定的主要任务就是优化这些控制算法。例如针对PID控制器,标定其⽐例、积分和微分环节时可能产⽣不计其数的变化版本(图1)。因此,就需要寻到⼀个在稳定性、速度和动态特性⽅⾯⾜够好的结合点。这些可以通过实时读取和更改变量来实现(图2)。
图1 PID控制算法优化
图2 使⽤图形化标定和诊断⼯具CANape优化PID控制器
为了控制ECU标定的时间和成本,⼯程师和技术员通常会依赖可以灵活读写变量和内存的强⼤的⼯具和标准。为此,在90年代出现了CAN标定协议(CCP),当时CAN总线是汽车中唯⼀的主流总线。CCP后来被指定为⼀种交叉OEM标准。然⽽,随着汽车电⼦的持续发展,其它总线系统诸如FlexRay、LIN、MOST等也开始成为主流。但是,CCP仅限于CAN⽹络应⽤,所以在其它潜在领域的应⽤局限⽇益增加。这样就导致了其后继协议XCP的出现。
通⽤的标准协议
与CCP⼀样,“通⽤测量与标定协议”(XCP)也是源于⾃动化和测量系统标准化协会(ASAM)[1],它在2003年被定为标准。其中的“X”代表可变的和可互换的传输层。XCP通过双层协议将协议和传输层完全独⽴开,它采⽤的是单主/多从结构。根据正在讨论的不同的传输
层,XCP协议可能指的是XCP-on-Can、XCP-on-Ethernet、XCP-on-UART/SPI 或XCP-on-LIN,如图3所⽰。
图3 传输层和协议层的隔离使得XCP可以利⽤⼤量的硬件接⼝
XCP主设备可以和不同的XCP从设备同时通信。这些XCP从设备包括:
ECU或ECU原型
测量和标定硬件,如调试接⼝或内存仿真器
快速控制原型硬件
HIL/SIL系统
为了满⾜作为针对⼤量不同应⽤的通⽤的通信解决⽅案的挑战,ASAM⼯作组强调了下列XCP设计准则:最⼩的资源使⽤(包括ECU中的RAM、ROM和必需的运⾏时资源),⾼效的通信,轻松实现XCP Slave,需要较少配置⼯作的即插即⽤性能,较少的参数,以及可伸缩性。
可互换的传输层
XCP可以在不同的传输层上实现同样的协议层。这是⼀种通⽤的测量和标定协议,可以独⽴于所使⽤的⽹络类型⽽⼯作。⽬前,ASAM 已经在标准中定义的传输层包括:XCP-on-CAN,XCP-on-SXI(SPI,SCI), XCP-on-Ethernet(TCP/IP and UDP/IP),XCP-on-USB和XCP-on-FlexRay。最后命名的版本(XCP-on-FlexRay)是协议家族中的最新成员,它早在2006年就产⽣了。XCP-on-FlexRay的⼀个特别的技术特征是动态带宽控制。测量、标定和诊断⼯具(MCD⼯具),⽐如CANape,可以识别可⽤带宽并能够⾮常⾼效地将其动态分配到当前的应⽤数据通信中。这样XCP通信的可⽤带宽就可以得到最理想的使⽤,并且不影响正常的FlexRay通信。
正在为将来考虑的其它⽅案包括XCP-on-LIN;如果有充⾜的客户需求,则也可能包括XCP-on-K-Line或XCP-on-MOST。由于⽀持⼴泛的传输层,使得从开发阶段的宽带(⽐如Ethernet或USB)⽅案移植到批量⽣产阶段的CAN接⼝⽅案变得⼗分简单。
⼀主多从概念
测量和标定系统承担了XCP主设备的⾓⾊,ECU作为XCP从设备⼯作。主设备和从设备的通信是通过集成在其中的XCP驱动程序来实现的。对于每个从设备都有⼀个ECU描述⽂件;这些⽂件规定的信息包括:(符号)变量名及其地址范围分配,数据的物理意义,使⽤的校验⽅法。XCP主设备可以从A2L描述⽂件⾥读取所需的全部信息。
XCP通信使⽤“命令传输对象”(CTO)和“数据传输对象” (DTO)来区分(主从通信)。XCP主设备可以在总线上向ECU通过CTO发送命令。ECU会在执⾏完请求的服务后以同样的途径进⾏应答。CTO会提供:CMD(命令), RES (响应), ERR (错误), EV (事件)和SERV (服务请求处理机)。数据传输对象DAQ(数据采集)和STIM(激励)⽤于以事件驱动⽅式从内存中读取测量变量或者向XCP从设备的内存中写⼊变量值。
图4:XCP主设备和XCP从设备之间的通信
从汽车总线到标准PC接⼝
PC平台⼏乎只⽤作测量和标定的主设备。为了直接连接到汽车总线系统,⽐如CAN、LIN、 FlexRay、MOST 或 K-Line等,通常会为PC机安装⼀个或多个硬件接⼝。此外,XCP主设备也可以利⽤标准PC接⼝,例如以太⽹、USB和RS232等。当然,在这些解决⽅案中不会增加额外的硬件接⼝成本。带调试接⼝(JTAG,TRACE等)的测量和标定系统以及内存仿真器都可以通过这种⽅式实现。原则上,标准PC接⼝⾮常适合于连接存在于不同总线系统间的⽹关,⽐如FlexRay-on-Ethernet就可以很好地实现此功能。最后,在很多开发和测试计划中会使⽤到传统模拟和数字I/O通道,这些通道尤其会涉及时间-关键测量。
使⽤XCP的⼀个显著优势就在于这样⼀个单⼀标准协议满⾜了所有这些应⽤需求。如果没有XCP,就
需要为每个通信通道定义⼀个专⽤的驱动,然⽽在同时使⽤多种驱动时需要考虑性能损失,此外还会增加出现不受欢迎的相互影响的风险和不稳定性。
通⽤、可扩展并节约资源
⼀个,并且是同⼀个XCP驱动代码可以应⽤于所有的通信过程。它可以⽤于从低端控制器和接⼝发送仅仅⼏个字节的数据,⽐如集成了串⾏接⼝的8位处理器。同样的代码也可⽤于通过⾼速的⽹络(⽐如以太⽹)使⽤32位处理器发送兆字节量级的数据。XCP驱动是由强制功能和可选功能组成的,驱动的⼤⼩可以根据可⽤的ROM/Flash的⼤⼩进⾏调整。在ECU中,通过是否具有⾼数据吞吐量或低处理器负载和RAM尺⼨来表征资源⽤量。
对于总线负载,主要考虑传输信号的数⽬相⽐总线带宽。总之,XCP驱动容易实现,⽽且仅需要很少的⼏个变量。
事件驱动的周期性数据采集
ECU在离散的时间间隔上运⾏。可以将这样的⼀个时间间隔长度固定(⽐如10ms),或者定义其依赖于某种事件(⽐如发动机转⼀圈)。在固定时间间隔的情况下,时间⽚的结束是以定时器的溢出来标记的。从⼴义上讲,这种定时器溢出也是⼀个事件。ECU的任务是在⼀个特定的时间⽚内完成所有的
计算和控制任务。为了从XCP从设备中获取相关的数据信息,使⽤了XCP协议中的DAQ机制。在该机制中,在测量开始前XCP主设备会先通知XCP从设备:特定的事件发⽣时需要测量哪些信号。如果现在事件发⽣了(如10ms定时器溢
出),XCP从设备就从内存中读取这些先前定义的数据,并且将他们拷贝到受保护的RAM区,然后通过消息的⽅式发送给XCP主设备。这保证了数据值来⾃同⼀事件循环并且是相关的。
XCP主设备接收带有时戳的数据并且将其保存在相应的测量⽂件中。时戳要么通过XCP从设备作为数据发送,要么分配到消息中通过硬件接⼝(⽐如CANcardXL)发送。在测量⽂件中,所有数据参考XCP主设备的时间基准进⾏同步,然后被进⼀步处理,例如在⼀个统⼀的时间轴上对测量数据进⾏可视化显⽰(图5)。这就允许在⼀张图中⼀致地显⽰不同XCP从设备的多个数据通道。
图5 在同⼀个时间轴上显⽰不同信号源的各种信号
除了前⾯已经提到的XCP相对于CCP的优点,XCP还⽀持所谓的冷启动测量和⽤于循环数据采集的任务的内部ECU时戳。在冷启动测量中,可以配置ECU让它在被激活后就⽴即周期性地发送数据,⽽XCP主设备不需要明确地初始化该功能。如果使⽤了内部ECU时戳,该时戳就不是在测量和标定系统中与后期评估相关的数据接收时间了,⽽是在XCP从设备中数据被创建的时刻。这样就消除了由于传输延迟⽽引起的不确定性(⽐如在总线带宽不⾜或者⾼负载情况下都会产⽣)。
优化特性曲线和特性图
除了基于数学模型的控制算法,ECU还要使⽤由离散插值点组成的特性曲线和特性图。为了达到预期的系统⾏为,通常通过试验⽅法(⽐如台架试验)建⽴和优化这些特性值表。A2L⽂件是⽤来描述测量变量和标定参数的。描述的选项覆盖了从简单标量参数到复杂数值表的范围。其中,描述内容包含了数据类型、原始值和物理值间的转换规则、特性map图的存储⽅案以及更多的功能。Vector Informatik公司提供的CANape及类似的⾼性能标定⼯具可以在屏幕上通过图形图表或数值表格的⽅式清晰地显⽰特性曲线和map图。
使⽤CANape和XCP进⾏快速原型
在ECU开发过程中,经常会频繁地将重要功能导出到外部仿真系统,这样可以花最⼩的代价来计算这些功能。直到仿真模型中的算法达到⼀定的成熟度,开发者才会从这些算法⽣成代码,这些代码可与其它ECU代码⼀起编译并烧写到ECU中。然⽽,在此之前,可以使⽤⼀种被称作“旁通”的技术(该技术耦合了真实ECU及其模型),通过旁通可以在开发初期不依赖硬件进⾏测试和优化⼯作。
在使⽤XCP的旁通技术中,XCP主设备使⽤DAQ从ECU中读取数据,将这些数据作为输⼊值发给模型并且使⽤STIM将模型返回的结果发送回ECU。值得注意的是,使⽤运⾏MCD⼯具CANape的普通PC机平台就⾜以满⾜旁通和建模的要求。这是个好消息,因为基于特殊实时硬件的解决⽅案可能会贵好
多倍,⽽且在开发部门中这类设备也可能为数不多。CANape作为⼀个⾼度优化的XCP主设备,可以同时处理与真实ECU的通信和与在PC上运⾏的模型之间的通信(图6)。ECU参数和模型参数都可通过CANape和XCP进⾏标定。
图6 旁通:使⽤标准PC和CANape作为测试系统

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。