CCP 协议
转载
1、 CCP协议概述
CCP(CAN Calibration Protocol)是一种基于CAN总线的匹配标定协议。ECU都需要经过匹配标定的过程,从而确定其运行参数和控制参数。有时为了实现对ECU的精确控制以及参数匹配修改,满足预定的要求,必须对ECU进行精确的匹配标定以及优化各项控制参数。基于此,ASAM自动化测试系统标准协会(Association for Standardization of Automation and Measuring Systems)制定了CCP协议。更形象地说,CCP协议实现了ECU在运行过程中,内部变量的在线监测以及有需要时对某些变量的在线修改。监测ECU的内部变量可以测试ECU运行的正确性,若发现某个变量的值不是我们期望的,我们可以标定它,修改成期望的值。举例来说,我们要监测ECU中发动机的转速,若发现发动机转速是错误的,不是我们所需要的,我们立即就可以修改它成正确的我们需要的转速。
2、 CCP通信
上面我们对CCP有了个总体的印象,对CCP能够做什么有了了解,下面我们关键的是要怎么实现它。
基于CCP协议的ECU标定采用主-从通信方式,主设备通过CAN总线与多个从设备相连。其中主设备是测量标定系统MCS(Measurement Calibration System),从设备是需要标定的ECU。在这里测量标定系统我介绍一下CANape。CANape是一款ECU标定和测试工具。与CCP协议相结合,能完成对ECU标定,同时还能在ECU运行期间直接访问内存并进行操作。从上面的介绍,现在我们心中应该至少有这么一个框图(如下),通过CAN总线,CANape可以读出ECU中的变量,同时CANape也能写ECU中的变量。
3、 CCP协议报文帧格式
CCP属于CAN总线的应用层协议,它占用CAN报文两个ID标志符,即CRO(Command Receive Object)和DTO(Data Transmission Object),使用数据帧中数据场的8个字节。CRO用于主设备向从设备发送命令,DTO则用于从设备发送至主设备数据,ID标识符可以自行约定。CRO数据场的第一个字节为命令代码CMD(Command Code),CCP协议共规定了28条命令。从设备通过CMD代码判断主设备请求的是哪条命令。数据场的第二个字节是命令计数器CTR(Command Counter)。余下6个字节为命令参数,每条命令有各自对应的命令参数。CRO帧格式如下:

DTO数据场第一个字节PID定义了DTO的类型,用以标示DTO的类型;第2个字节为命令返回/错误代码ERR(Command Return-/Error Code),第3字节CTR是命令计数器,该位数值与其对应的CRO的CTR值相对应,DTO格式如下:

DTO分三种类型:
1) CRM (Command Return Message):由从设备发送,反馈CRO命令的报文。 PID=0xFF;
2) Event Message:当从设备检测到内部发生错误机制时,由从设备自行向主设备发送,报告其当前的运行状态,并请求主设备暂停当前工作进程以处理发生的错误。PID=0xFE;
3) DAQ-DTO(Data Acquisition-DTO):用于DAQ模式,由从设备定期向主设备发送。PID(0x00~0xFD);报文格式如下:

根据CCP协议,主设备首先与从设备建立逻辑连接。建立逻辑连接后,主、从机之间所有的数据传递均由主机控制,从机执行主机命令后返回包含命令响应值或错误代码等信息的报文。任何一个从机都可以定时地根据由主机通过控制命令所设置的列表来传递内部的数据。所以说数据的传递是由主机初始化,由从机来执行,并且是由固定的循环采样频率或事件触发的。
4、CCP协议工作模式
CCP定义了两种工作模式:Polling(查询)模式及DAQ(Data Acquisition Command)模式。查询模式下,主设备与从设备间每一次通信都由主设备发送命令来起始,从设备收到主设备命令后,执行相应操作并反馈一帧报文。这种工作模式需要主机与从机之间进行“一问一答”信息交互,工作效率不高,但实现简单,占用ECU内存资源较小。 DAQ模式使从设备可以脱离主设备命令控制按一定周期自动向主设备上传数据。DAQ模式下,主设备首先发送一条请求DAQ命令,从设备收到后,按命令中参数自行配置并组织需要上传数据,然后按一定周期自主向主设备上传数据。这种模式不需要主机命令逐步控制,工作效率高,但实现较复杂,需要上传数据量很大,会占用大量ECU内存空间。
5、两种模式对应的处理过程
定义两种处理器只是为了更好的理解接收CRO报文后的处理过程,DAQ模式首先也还得经过命令处理器对命令进行解读,若为DAQ命令则转给DAQ处理器处理。
1)、针对Polling模式的命令处理器
命令处理器主要是获取并解读主设备的CCP命令,并执行该命令;命令执行完后,向主设备发送应答;若执行出错,应答中应包含向主设备报错的信息;若主设备命令要求对DAQ进行操作,则该操作传送给DAQ处理器处理,由DAQ处理器完成DAQ操作。
2)、DAQ处理器实现DAQ模式
DAQ处理器的任务是根据主设备的需要,定时向CAN总线上发送DAQ数据。DAQ模式,简单的说就是由ECU组织,定期的向CANape发送数据。DAQ传送的数据由一系列的表来组织,这些表称为ODT,每个ODT表包含7个元素。这些ODT描述的参数需要ECU用DAQ-DTO帧周期发送给CANape用来监测。当ECU的DAQ机制启动后,ECU按CANape里设定的周期,将每个ODT表描述的参数当前的值顺次放入相应的DAQ-DTO帧中,然后发送给CANape。
标定的实现过程:CANape发送GET_DAQ_SIZE命令(参数为指定的list号),得到指定的list的ODT数量,并且得到该list中DTO的第一个PID号,然后发送SET_DAQ_PTR命令(参数为list号,ODT号,ODT中的元素号),指定需要初始化的元素。最后,根据命令SET_DAQ_PTR设置的具体元素,发送WRITE_DAQ命令(参数为元素的byte大小,元素的地址),通过反复地执行SET_DAQ_PTR和WRITE_DAQ这两条命令,初始化一个具体的ODT表,然后初始化完一个具体的List表,最后初始化完所有的list表。这样,CANape就完成了ODT的初始化工作。之后开始和停止DAQ数据的传输。CANape发送START_STOP命令(可以准备DAQ数据的上传),发送START_STOP_ALL来上传所有准备好的DAQ数据。ECU采集指定的数据后以DTO的形式上传给CANape,实现DAQ模式。
6、测量标定系统的总体框图介绍
测量标定系统的简单框图如下图所示。主设备发送CRO报文到总线,经过ECU CAN Driver的接收,由CAN Driver与CCP Dirver的接口函数把接收的报文转给命令处理器,由命令处理器解析命令,若是查询模式的命令,则根据命令返回相应的CRM报文;若是DAQ模式的命令,则转给DAQ处理器进行处理,之后按命令给定的周期,自己组织采集需要的数据,通过DAQ-DTO报文的形式返回给主设备。
CANape里已经集成了CCP和CAN的驱动,CANape发送命令的形式是通过测量窗口的配置。举例来说,如要测量发动机的转速,首先根据ECU里的map文件确定转速在ECU中的地址,配置成A2L格式的数据库文件,在测量配置窗口配置转速这一变量,设置成polling模式,新建一个显示窗口添加该变量,运行CANape即可实现转速的在线监测。
7、标定数据库(A2L)
CANape与ECU之间的通信需要一个描述文件支持,这个文件称为ASAP2描述文件。CANape对ECU参数标定和数据测量都是基于这个文件,该文件记录了ECU中各参数详细信息,如标定参数和测量变量ECU中存储地址、存储结构、数据类型和转换公式等。CANape中,每个标定参数和测量数据都会有一个变量名,如发动机温度、冷却水温度。当CANape需要访问某个变量时,找到ASAP2描述文件中变量名,找到该变量在ECU中的存储地址、数据长度等信息。为了对ASAP2文件进行维护和修改,CANape集成了一个ASAP2 Editor的数据库编辑器,生成和修改ASAP2控制器描述文件。所有信息都能对话框形式进行设置和修改。该数据库编辑器还能工作在独立模式下,以生成一个A2L格式的控制器描述文件。 当ECU底层程序修改后,一些标定参数和测量数据内存址可能发生变动,CANape支持linker map文件自动更新ASAP2文件里的信息。Map文件是ECU底层程序编译时由编译器生成一种映射文件,Map文件可以自动更新ASAP2文件,保证了测量与标定变量时地址的一致性。
CCP 协议的更多相关文章
- CCP浅谈
说明 如果想详细了解CCP,可以下载AN-AMC-1-102_Introduction_to_CCP.pdf或者ccp211.pdf 本文不涉及到专业的知识讲解,如果想查看更加专业的知识可以选择看完以 ...
- PPTP协议握手流程分析
一 PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可 ...
- PPTP协议握手流程分析--转载
一 PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网 ...
- ppp 完全理解(二)【转】
转自:https://blog.csdn.net/tianruxishui/article/details/44057717 ppp 完全理解(二) pppd 协议及代码分析 作者:李圳均 日期:20 ...
- ViCANdo新版本发布(PART2)| XCP集成
大家好,这是ViCANdo功能更新的第二篇,上一篇我们介绍了ViCANdo对PCL的集成,这一篇我们介绍ViCANdo工具支持的另外一个功能:XCP解析功能集成. 标定 ...
- PPTP协议
PPTP协议 PPTP(Point-to-Point Tunneling Protocol)点对点隧道协议是PPP协议的一种扩展,它将PPP帧封装进IP包中,通过IP网络进行传输.它通过PPTP控制连 ...
- RFC(请求注解)--各种协议-标准
转自:http://blog.sina.com.cn/s/blog_65d6476a0101cj8n.html RFC(Request For Comments)-意即“请求注解”,包含了关于Inte ...
- CAN协议教程
介绍:CAN总线 CAN总线是广播类型的总线.这意味着所有节点都可以侦听到所有传输的报文.无法将报文单独发送给指定节点:所有节点都将始终捕获所有报文.但是,CAN硬件能够提供本地过滤功能,让每个节点对 ...
- 怎样从Cortex-m向STM32移植使用SPI接口协议
/*************************************************************************************************** ...
随机推荐
- quartz详解1:初步了解quartz
http://blog.itpub.NET/11627468/viewspace-1763389/ 一.引入 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后 ...
- mysql 时区问题导致的时间相差14小时
1.mysql 字段名称 类型 begin_time TIME begin_time=08:18:39 2.java数据库连接串 jdbc:mysql://x.x.x.x:3306/y?useUnic ...
- 阿里P7Java最全面试296题:阿里天猫、蚂蚁金服含答案文档解析
[阿里天猫.蚂蚁.钉钉面试专题题目加答案] 不会做别着急:文末有答案以及视频讲解,架构师资料 1. junit用法,before,beforeClass,after, afterClass的执行顺序 ...
- cf1208 D Restore Permutation (二分+树状数组)
题意 让你构造一个长度为n的序列,记为p1……pn,(这个序列是1~n的全排列的一种) 给你n个数,记为s1……sn,si的值为p1……pi-1中小于pi的数的和. 思路 显然,应该倒着来,也就是从p ...
- pycharm和python安装
1.pycharm安装:https://www.cnblogs.com/dcpeng/p/9031405.html 2,python安装:https://www.liaoxuefeng.com/wik ...
- 腾讯大佬告诉你,写Python到底用什么IDE合适
不管你是 Python 新手还是老鸟,肯定纠结过一个问题: 到底用什么编辑器写 Python 代码好? 为此,我们调查了数十位鹅厂程序猿们爱用的 Python IDE,从他们对每款编辑器的看法中,也许 ...
- mysql插入文本文档及读取
1.把本地的一个文件插入到数据库中,数据库字段用text保存 public static void main(String[] args) { PropKit.use(“pro.txt”);Druid ...
- sql注入入门--基本命令
本文转载自http://blog.csdn.net/zgyulongfei/article/details/41017493 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过. > > ...
- UML-包的设计
1.准则 1).准则1 包在水平和垂直划分上,要功能性内聚.即:同类关联功能的模块化,将参与共同目的.服务.协作.策略和功能的强相关类型(类或者接口)组织在一起. 如:在NextGen项目中,Pric ...
- Numa解释
原路径:http://www.sohu.com/a/126402403_609500 内容概要 今天的文章我们将简单学习下Hyper-V如何通过NUMA(Non-Uniform Memory Acce ...