首页 > 其他分享 >【CAN通讯系列2】与CAN通讯的故事

【CAN通讯系列2】与CAN通讯的故事

时间:2024-07-18 09:29:59浏览次数:12  
标签:通讯 系列 故事 CANape 报文 软件 CANalyzer 刷写

3年前在知乎撰写很多CAN通讯相关的文章,那时主要偏于软件视角,反馈还不错。3年过去了,随着系统与软件的增加,对CAN通讯的认识有所加深,那就在此基础上,重新更新一个CAN通讯系列文章。


先从我与CAN通讯的故事说起:

1 初始CAN通讯

最初接触CAN通讯,那时刚工作,在主机厂的研发部门,经常需要去车上采集和分析数据。比如使用CANalyzer,先选定对应控制器的DBC文件导入,再选定许多CAN信号,配置好波特率就可以采集数据;然后可能需要对采集数据进行处理,通常使用CAPL语言编写一些脚本文件。

图片

在这个使用过程会关注的一些点:

  • CAN波特率是500kbps还是250kbps?

  • 报文协议或DBC,即每条CAN报文都有哪些信号

  • 也许会使用CAPL脚本实现数据过滤或加工处理

2 应用层软件中的CAN通讯

后续做具体的应用层软件开发工作后,几乎天天都需要使用CANape进行测量与标定。这时,仍需要选定CAN的波特率,同时需要配置这个报文的发送ID和接收ID,还要选择A2L文件,然后再去选定测量信号和标定量。

Source:如何使用CANape实现XCP/CCP“Measurement测量”和“Calibration标定”变量_canape标定

在这个过程会产生一些疑问:

- 测量和标定与CAN通讯有什么关系?

- 为什么去设置报文的发送ID和接收ID?

- A2L文件是什么?与测量和标定有什么关系?

同时,作为应用层软件工程师,经常需要刷写软件,一般采用UDS服务来刷写,也有支持XCP刷写。这时使用CANape或CANalyzer脚本来刷写,当选择目标可执行文件(hex或s19格式等),运行起来会看到类似下图所示的数据流。大多数时候刷写都会成功,偶尔刷写失败,而且还刷死了,这时有同事会告诉去快速重复地发送一个指令,看是否能够救回来。

图片

Source: UDS Bootloader刷写软件 - 元享技术

在这个过程又会产生很多问题:

  • 这个CANape或CANalyzer脚本怎么实现刷写的?

  • 这个刷写的数据流怎么看?是什么意思?

  • 刷死需要发送特定的指令,为啥要快速重复地发送?又为啥能救回?

后面又接触了应用层软件中的CAN通讯模块,这时能模块中有做信号转换的逻辑,有做ID , checksum, rolling counter等信息检查的逻辑,有做信号有效性校验的逻辑,另外,也需要去CAN通讯模块的测试,比如使用CANalyzer或CANape发送一条报文,看软件是否按照预期的逻辑执行。

source: 使用CANAPE脚本script周期性发送报文_canape发送can报文

到此,仍然有很多问题:

  • checksum, rolling counter都表示什么意思?

  • 应用层软件收到CAN信号都在底层软件中做了什么?

  • CANape或CANalyzer是怎么发送报文的?

为了更进一步了解这些问题,有幸从事了底层软件开发。

3 底层软件中的CAN通讯

对于一个成熟的底层软件平台,会发现客户最多的需求变更就是和通信相关,一会要增加一条报文,一会要报文中增减信号,一会要改波特率或采样点。对于基于AutoSAR工具链的底层软件开发,这部分内容好像并不是很难,理想地情况下,也许只需要一份guideline,你依葫芦画瓢就可以整出来了。然后利用CANape或CANalyzer进行测试,发现确实正确地实现客户的需求。但是基于AutoSAR架构在底层软件中具体是如何实现CAN通讯的?其控制流和数据流是怎么样的?

图片

source: Vector learning

4 系统中的CAN通讯

有了软件开发CAN通讯经验,再接触系统工作之后,又是如何去理解CAN通讯呢?可参考:
【CAN通讯系列1】需求解析(上)

【CAN通讯系列1】需求解析(下)

5 小结

这就是目前与CAN通讯的故事,对于汽车研发而言,基本上涉及到了总成系统测试,控制器系统开发和控制器软硬件开发的CAN通讯内容。也是在这样一个长期的工作过程,不断地带着问题又不断解决问题,走成了目前的职业生涯。

想了解CAN通讯更多更深刻的内容,请持续关注后续文章。

-------------------------------------------------------------------------------------------------------------------------

创作不易,欢迎点赞收藏关注。

汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车行业从业人员。

标签:通讯,系列,故事,CANape,报文,软件,CANalyzer,刷写
From: https://blog.csdn.net/menghuyouyou/article/details/140477813

相关文章

  • 新手教学系列——简单的服务配置项集中管理
    前言在开发和运维过程中,配置管理是一个非常重要但经常被忽视的环节。常用的配置文件格式包括env、ini和yaml等,它们非常适合模块级别的系统配置,尤其是一些敏感信息的配置,例如数据库连接字符串和密码等。但是,对于系统业务级别的配置,通常要求不需要重启服务即可更新,这就是我们今......
  • Profibus协议转profinet协议网关模块连接电磁阀通讯案例
    一、背景工业通讯中常见的协议有:Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,ProfibusDP协议,EtherCAT协议,EtherNET协议等。然而,有许多现场需要将ProfibusDP协议设备与Profinet协议设备连接并通讯。针对这一问题,很多企业选择使用Profibus协议转Profinet协议网关模块来实现......
  • 项目:通讯录
    通讯录需求分析创建联系人-insert删除联系人-delete搜索联系人-search输出所有联系人-traversal保存文件-save-存储方式key:value的实现加载文件-load-将键值对读入并加入到存储结构中架构分析 实现分析底层实现采用链表实现,因此要定义通讯录结构体,并......
  • Modbus转Ethernet/IP网关模块与汇川PLC通讯案例
    Modbus转Ethernet/IP网关模块(XD-MDEP100)是一种用于将Modbus协议转换为Ethernet/IP协议的设备。在汇川PLC通讯中,使用Modbus转Ethernet/IP网关模块可以方便地实现与其他设备的数据传输和通信。Modbus转Ethernet/IP网关模块(XD-MDEP100)连接到ETHERNET/IP总线中做为从站使用。Modb......
  • 自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍
    文章目录1.背景介绍2.功能定义3.功能原理4.传感器架构5.实际应用案例5.1典型场景1:换道时无其他交通参与者5.1.1直道中的车道变换5.1.2弯道中的车道变换5.1.3综合场景应用5.2典型场景2:换道方向车道线非虚线5.3典型场景3:换道方向车道线为虚实线5.4典型场景4:换......
  • 大语言模型系列 - Transformer:从基础原理到应用
    文章目录大语言模型系列-Transformer:从基础原理到应用一、Transformer简介二、Transformer的基础原理自注意力机制多头注意力机制位置编码残差连接和层归一化三、Transformer的架构编码器解码器四、Transformer的应用场景机器翻译文本生成文本分类问答系统五、Trans......
  • Evil-WinRM一键测试主机安全情况(KALI工具系列四十四)
    目录1、KALILINUX简介2、Evil-WinRM3、信息收集3.1目标IP3.2kali的IP4、操作步骤4.1用户访问4.2使用哈希值4.3文件处理5、总结1、KALILINUX简介KaliLinux是一个功能强大、多才多艺的Linux发行版,广泛用于网络安全社区。它具有全面的预安装工具和功......
  • 钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦
    BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPCUA等。如果您正在考虑部署BL20X系列耦合器又不知选择哪款,那不妨来看一看钡铼......
  • Kylin系列(一)入门
    Kylin系列(一)入门ApacheKylin是一个开源的分布式分析引擎,它提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,能够支持超大规模数据的快速查询和分析。Kylin的出现极大地解决了大数据环境下数据分析和查询的难题,为企业数据仓库和商业智能(BI)应用提供了强大的支持。以下是......
  • 【攻防技术系列+权限维持】Linux隐藏技术
    #权限维持#Linux#隐藏一、隐藏文件二、隐藏文件时间戳三、隐藏权限四、隐藏历史操作五、隐藏端口六、隐藏进程一、隐藏文件创建一个隐藏文件:touch.test.txt一般的Linux下的隐藏目录使用命令ls-l是查看不出来的,只能查看到文件及文件夹,查看Linux下的隐藏......