【学习篇】CCP协议

前言:我只是一个抄书人,以下关于CCP协议知识点的学习均抄录自书籍,侵权请联系删除。

CCP协议介绍

CCP的全称是CAN Calibration Protocol(CAN标定协议),是ASAP标准的有机组成部分,属于ASAP1a规范标准,是基于CAN总线的ECU标定协议规范。CCP协议遵从CAN2.0B通信规范,支持11位标准与29位扩展标识符。

CCP通信方式

CCP协议采用主从通信方式,其中主设备是ASAP标准中的MCD系统,从设备是需要标定的ECU。根据CCP协议,一个主设备可通过CAN总线与多个从设备相连,每个从设备均有其特定地址。主设备通过每个ECU的地址,与其建立一对一的关系。按CCP协议,在某一时刻只有一个从设备能与主设备建立连接并进行通信。
CCP协议中MCD与ECU的通信又可具体分为以下两种。
(1)Polling模式:这种模式可通俗地理解为一问一答的通信模式,即通过主设备先问,从设备回答,两者之间不断交互来实现主、从设备间的通信和数据交换。在这种模式下,当主设备与某个从设备建立逻辑连接后,主设备与从设备的每次通信都是通过主设备首先发送一条请求命令,请求从设备执行某项操作,或请求其内部数据。从设备收到命令后,执行相应操作,通过返回一帧消息,提供主设备请求的数据及命令执行情况代码。这种通信方式实现起来比较简单,占用ECU内存资源少,但效率较低。
(2)DAQ模式:与Polling模式相对应的是DAQ模式,其英文全称为Data Acquisition Mode。不同于Polling模式一问一答的通信机制,DAQ模式下从设备可以脱开主设备的控制,按一定的通信周期自主向主设备上传数据。这种方式数据上传效率高,但实现起来复杂,尤其当所需上传数据量较大时,会占用ECU较多RAM空间。

DAQ模式下的数据通信

DAQ是一种高效的数据上传模式,它可以使从设备脱离主设备,自主地按一定周期向主设备上传数据。DAQ通信的实现需要借助DAQ列表,ODT列表及DAQ-DTO。首先按不同的上传周期,ECU内部需要实现多个DAQ列表,DAQ列表的个数是由上传周期决定的。比如在同一个ECU内,部分数据需要以10ms定期上传,部分数据需要以20ms定期上传,另一些数据则需要以25ms定期上传。这样就需要实现3个DAQ列表,同一个上传周期下的数据变量归在同一个DAQ列表下。
一个DAQ列表下又可包含多个ODT列表,ODT列表中存放具体需要上传的数据变量的信息,包括数据变量的存放地址,数据长度及其偏移地址。每个ODT的最大元素数目为7,可存放7个单字节数据变量的信息。
ODT列表需要转换成DAQ-DTO的形式才能向主设备发送。每个ODT都有一个唯一的绝对编号,对应一个DAQ-DTO,通过PID号标识。同时每个ODT还有一个相对编号,表征了该ODT在所在DAQ列表中的位置,排在最前的ODT相对编号为0,总的ODT数目不能超过254。
在CCP协议中,ODT列表的编号规则是每个ODT列表都有一个绝对编号,即与其对应的DAQ-DTO的PID,同时每个ODT列表有一个相对编号。CCP协议规定一个ECU内部最多只能有254个ODT列表,因此DAQ-DTO的PID取值范围是0-0xFD。
在使用DAQ模式进行通信前,主设备需要对DAQ列表及ODT列表进行配置,具体的步骤如下:
(1)获取ECU内所实现的DAQ列表数目及ODT数目,DAQ列表数目由数据上传的周期决定,ODT列表数由每个周期下所需上传的数据个数及长度决定;
(2)向相应的ODT元素中填入内容,即数据的存储地址和数据长度(数据长度一般为1个字节)。数据将根据其类型及上传周期,被写在不同DAQ列表的不同ODT元素中。
(3)根据上传数据的上传周期,针对不同的DAQ列表赋以事件通道(Event Channel)和预分频值(Prescaler)。事件通道与上传周期是一一对应的,同一个DAQ列表中的不同ODT享有同一个事件通道和预分频值,即同一个DAQ列表中的所有数据的上传周期相同。通过预分频值可将数据的上传周期成倍扩大。
(4)启动DAQ模式,进行数据采集。

CCP协议在ECU端的实现

CCP协议是基于CAN总线的ECU标定协议,在对ECU进行标定和测试前,必须先在ECU内部实现支持CCP协议的程序,使ECU能够接收并发送符合CCP规范的CRO与DTO,并能够对收到的CRO命令进行解释并执行,这部分程序称为CCP驱动代码(CCP Driver)。为了节省开发时间,提高效率,Vector公司提供了ECU侧实现的免费的CCP驱动代码,其CCP驱动代码包含两个处理模块。
(1)命令处理模块:命令处理模块是CCP驱动代码的核心组成部分。根据CCP协议,MCD与ECU之间的通信遵循严格的命令应答机制。当ECU接收到MCD的CRO命令后,由命令处理模块负责解释并执行收到的命令,并且组织CRM-DTO消息对CRO进行应答。
(2)DAQ处理模块:该模块用于DAQ数据采集模式。该模式下MCD与ECU之间通信是单向的,即只有ECU发给MCD的DAQ-DTO。当命令处理模块收到的请求DAQ通信的CRO后,就将CRO数据进一步转给DAQ处理模块。由DAQ处理模块对DAQ列表进行配置,组织DAQ-DTO向MCD上传。
在ECU端除了需要实现CCP驱动代码外,还需要实现CCP驱动代码与CAN驱动代码的接口程序。因为CCP驱动代码只负责解释并执行基于CCP规范的CRO命令,并组织返回的DTO消息。它需要CAN驱动代码的支持,来接收并发送基于CAN报文格式的CRO与DTO。

你可能感兴趣的:(学习,网络)