2 基于CCP协议的接口程序实现

基于CCP协议进行标定,需要MCS与ECU的应用程序都能够支持CCP协议,这部分应用程序称为CCP driver。本文采用Vector提供的free CCP driver[2]。由于CCP协议基于CAN总线,因此CCP driver与ECU的结合主要分为与CAN driver及与其他应用程序两方面。

CCP driver与CAN driver的结合如图3,主要分为以下两方面:

图3 CCP标定程序接口

·发送端:DTO通过CAN driver的发送子函数以CAN报文的格式上传给MCS。

·接收端:主设备发送的命令以CAN报文的格式首先进入CAN driver的接收子函数,由其判断为CRO后,进一步交给命令处理器处理。

命令处理器作为CCP driver的一个主要组成部分,负责将接收到的CRO,通过其CRM代码进行命令解释,执行相应操作,组织反馈数据并调用CAN发送子函数。DAQ处理器支持DAQ工作模式,当命令处理器判断收到的命令为DAQ请求后,进一步将数据传给DAQ处理器,由DAQ处理器组织数据并直接调用CAN 发送子函数,以DAQ-DTO的形式定期向主设备上传。

基于CCP协议的基本CAN通信流程如图4所示。ECU接收到报文后,转入CAN接收子函数,在常规接收流程后,对报文的ID标识符进行判断,如为CRO_ID,则将CCP标志位(Ccp_indicator)置位。由于采用中断方式接收报文,为了避免占用过多中断时间而影响其他函数或中断级别较低的程序运行,在对ID标识符进行判断后,并不直接在函数中调用CCP driver的命令处理器。命令处理器的调用会在主函数中进行。

图4 接口程序基本流程图

主函数通过判断标志位的状态,调用CCP driver的ccpCommand()子函数。该函数是命令处理器的主要组成部分,也是命令处理器与CAN driver的接口函数,它负责解释并执行收到的CRO命令,调用CCP driver中的其他函数,进行数据处理并组织需要反馈的数据。

ccpCommand()通过调用CAN driver中的CCP发送子函数ccpSend()发送一帧DTO。ccpSend()须在CAN driver中实现,由CCP driver调用。按实际情况,将CAN发送子函数直接以ccpSend()的形式实现,或在保留原有发送子函数的基础上添加一个ccpSend()子函数,在其中调用CAN发送子函数,以完成DTO的发送。

CCP协议为确保主设备与ECU之间正常通信,每次发送后,程序必须通过调用CCP driver中的ccpSendCallback()子函数检查刚才的DTO是否已经发送,否则不能发送下一帧报文。针对不同的CAN driver实现,该函数调用的位置不同。最后主函数将CCP标志位清空,等待下一条CRO命令。

一个完整的CCP driver 接口还包括与ECU其他应用程序的接口。每次单片机初始化后,主函数调用一次CCP driver的CCP初始化子函数ccpInit(),将上次标定残留在ECU内存中的数据清空,为下次标定与测量做准备。

python调用canape_利用CANape进行基于CCP的汽车控制器的匹配标定的设计相关推荐

  1. 匹配系统Java开发,基于RFID的机场行李快速匹配系统的设计(Java,MySQL)

    基于RFID的机场行李快速匹配系统的设计(JAVA,MySQL)(论文11400字,程序代码,MySQL数据库) 摘要:机场设备的智能化体现了我国在航空领域的水平.现代技术的快速发展也为机场行李匹配的 ...

  2. 基于canoe 新建一个lin工程_基于CANoe的车身控制器CAN/LIN网络设计方法

    龙源期刊网 http://www.qikan.com.cn 基于CANoe的车身控制器CAN/LI N网络设计方法 作者:王 蓉 程安宇 王 平 李 锐 来源:<中国新技术新产品> 200 ...

  3. python调用msf_MSF利用python反弹shell-Bypass AV

    本文主要介绍两种利用msf生成python版 payload,并利用Py2exe或PyInstaller将python文件转为exe文件,可成功bypass某些AV反弹shell msf-python ...

  4. 利用计算机软件温度补偿,基于自主传感器信号调理芯片温度补偿的软件设计

    0 引言 针对压阻式压力传感器在应用中易发生温度漂移的问题,开发了一种智能压阻式传感器温度补偿系统.该方法利用现代信号调理技术,以信号调理芯片为核心,通过插值法对采集的温度补偿参数进行拟合,从而实现了 ...

  5. 利用f2py实现python调用fortran

    利用f2py实现python调用fortran 利用f2py实现python调用fortran 参考文献 引言 最快的直接使用方式 生成.pyf文件的使用方法 在fortran源码中加入注释的使用方式 ...

  6. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  7. Python调用CANape读取和写入XCP Device的变量实现自动化标定

    Python调用CANape读取和写入XCP Device的变量实现自动化标定 1. 背景及概要     Vector现在对于Python的支持越来越丰富了,最近知道了Python 可基于 CANap ...

  8. 利用python制作点读翻译软件(基于google api)

    利用python制作点读翻译软件(基于google api)         摘要:实现点读功能,自动朗读翻译整段.         完整代码git地址:https://github.com/luoq ...

  9. (超详细)0基础利用python调用Hadoop,云计算

    第一章配置Hadoop 前言 本次我们python+大数据的作业我选择附加一 利用hadoop+python实现,最近考完试有时间来完成. 这次我们用到的是Hadoop,利用python进行操作首先我 ...

最新文章

  1. Shell之while循环
  2. XGBoost算法的相关知识
  3. Android中用GridView实现九宫格的两种方法(转)
  4. java递归实现多级菜单栏_vue+ java 实现多级菜单递归效果
  5. oracle11g备份出错,Oracle 11g备份导入12c错误
  6. 服务器端修改yapi-cli默认IP,centos部署yapi
  7. 香肠派对电脑版_6款好玩的吃鸡小游戏,和平精英、香肠派对、迷你攻势、、、...
  8. 大学生html作业总结,总结 HTML标签作业
  9. Win10(Win7)局域网设置共享文件夹,超全面步骤。
  10. python 管道游戏_用python写游戏之 Flappy Bird
  11. Volatility 工具分析
  12. 【Focal Loss】Focal Loss理解
  13. Burp Suite爆破Basic认证密码
  14. 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统
  15. jquery图片放大镜插件—jqzoom
  16. 基于neo4j构建西游记知识图谱
  17. python findall函数
  18. Linux常用命令——pmap命令
  19. matlab英文文献及翻译,外文文献及翻译MATLAB 介绍_蚂蚁文库
  20. 解决error: undefined reference to g2o::OptimizableGraph::addVertex问题

热门文章

  1. CNS网络GPU加速配置步骤
  2. C语言实现数独小游戏
  3. 大数据信息资料采集:视频信息采集及评论内容爬取八爪鱼采集规则
  4. 学霸的计算机组成原理知识点清单
  5. UE4打包(烘焙)错误 CSC : error CS2012: Cannot open '...BuildGraph.Automation.dll' for writing '...'
  6. 360影视爬虫--python
  7. AntV G6修改节点label样式
  8. 2021秋招面试-美团
  9. 从零开始在虚拟机下安装Ubuntu (转)
  10. 百万员工不上班也能领工资!原来黑客破解了保险公司的考勤系统