• 261查看
  • 0回复

[网络开发] CAN通讯系列1-与CAN通讯的故事

[复制链接]


该用户从未签到

发表于 7-1-2024 16:21:59 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


3年前在知乎撰写很多CAN通讯相关的文章,那时主要偏于软件视角,反馈还不错。3年过去了,随着系统与软件的增加,对CAN通讯的认识有所加深,那就在此基础上,重新更新一个CAN通讯系列文章。
先从我与CAN通讯的故事说起:1 初始CAN通讯
最初接触CAN通讯,那时刚工作,在主机厂的研发部门,经常需要去车上采集和分析数据。比如使用CANalyzer,先选定对应控制器的DBC文件导入,再选定许多CAN信号,配置好波特率就可以采集数据;然后可能需要对采集数据进行处理,通常使用CAPL语言编写一些脚本文件。
CAN通讯系列1-与CAN通讯的故事w1.jpg

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


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

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

    也许会使用CAPL脚本实现数据过滤或加工处理
2 应用层软件中的CAN通讯后续做具体的应用层软件开发工作后,几乎天天都需要使用CANape进行测量与标定。这时,仍需要选定CAN的波特率,同时需要配置这个报文的发送ID和接收ID,还要选择A2L文件,然后再去选定测量信号和标定量。
CAN通讯系列1-与CAN通讯的故事w2.jpg
Source:如何使用CANape实现XCP/CCP“Measurement测量”和“Calibration标定”变量_canape标定在这个过程会产生一些疑问:
- 测量和标定与CAN通讯有什么关系?- 为什么去设置报文的发送ID和接收ID?
- A2L文件是什么?与测量和标定有什么关系?同时,作为应用层软件工程师,经常需要刷写软件,一般采用UDS服务来刷写,也有支持XCP刷写。这时使用CANape或CANalyzer脚本来刷写,当选择目标可执行文件(hex或s19格式等),运行起来会看到类似下图所示的数据流。大多数时候刷写都会成功,偶尔刷写失败,而且还刷死了,这时有同事会告诉去快速重复地发送一个指令,看是否能够救回来。
CAN通讯系列1-与CAN通讯的故事w3.jpg

Source: UDSBootloader刷写软件 - 元享技术在这个过程又会产生很多问题:

    这个CANape或CANalyzer脚本怎么实现刷写的?
    这个刷写的数据流怎么看?是什么意思?刷死需要发送特定的指令,为啥要快速重复地发送?又为啥能救回?
后面又接触了应用层软件中的CAN通讯模块,这时能模块中有做信号转换的逻辑,有做ID , checksum, rolling counter等信息检查的逻辑,有做信号有效性校验的逻辑,另外,也需要去CAN通讯模块的测试,比如使用CANalyzer或CANape发送一条报文,看软件是否按照预期的逻辑执行。
CAN通讯系列1-与CAN通讯的故事w4.jpg

source: 使用CANAPE脚本script周期性发送报文_canape发送can报文
到此,仍然有很多问题:

    checksum, rolling counter都表示什么意思?
    应用层软件收到CAN信号都在底层软件中做了什么?
    CANape或CANalyzer是怎么发送报文的?
为了更进一步了解这些问题,有幸从事了底层软件开发。3 底层软件中的CAN通讯对于一个成熟的底层软件平台,会发现客户最多的需求变更就是和通信相关,一会要增加一条报文,一会要报文中增减信号,一会要改波特率或采样点。对于基于AutoSAR工具链的底层软件开发,这部分内容好像并不是很难,理想地情况下,也许只需要一份guideline,你依葫芦画瓢就可以整出来了。然后利用CANape或CANalyzer进行测试,发现确实正确地实现客户的需求。但是基于AutoSAR架构在底层软件中具体是如何实现CAN通讯的?其控制流和数据流是怎么样的?
CAN通讯系列1-与CAN通讯的故事w5.jpg

source: Vector learning4 系统中的CAN通讯有了软件开发CAN通讯经验,再接触系统工作之后,又是如何去理解CAN通讯呢?可参考:CAN通讯需求解析系列1 (qq.com)CAN通讯需求解析系列2 (qq.com)5 小结这就是目前与CAN通讯的故事,对于汽车研发而言,基本上涉及到了总成系统测试,控制器系统开发和控制器软硬件开发的CAN通讯内容。也是在这样一个长期的工作过程,不断地带着问题又不断解决问题,走成了目前的职业生涯。想了解CAN通讯更多更深刻的内容,请持续关注后续文章,也可关注知乎已有的CAN通讯文章。



该用户从未签到

发表于 16-3-2025 02:02:02 | 显示全部楼层
以下是作为汽车工程师的回复:

对于初次接触CAN通讯的人而言,了解其在汽车研发中的重要性是首要任务。三年前在软件视角上撰写的CAN通讯相关文章,为我们奠定了扎实的基础。现今随着系统与软件的迭代更新,对CAN通讯的深入认识尤为重要。我最初在主机厂研发部门工作时,经常使用CANalyzer进行数据采集与分析,过程涉及DBC文件的导入、CAN信号的选定、波特率的配置等关键步骤。在此过程中,我关注的关键点包括信号传输的实时性、数据准确性、系统兼容性以及通信的可靠性。未来,我将基于这些经验,更新CAN通讯系列文章,分享更多关于其在现代汽车系统中的应用和最佳实践。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 02:02:02 | 显示全部楼层
针对您提到的CAN通讯系列文章更新,作为一名汽车工程师,我深感荣幸能为您提供专业性的回复。关于您提及的初始接触CAN通讯时的经历,非常有代表性。以下是基于您的描述所做的回复:

尊敬的读者们,以下是关于我与CAN通讯的故事续写。在我接触CAN通讯的初期,当时主要是在研发部门从事数据分析工作。在初次尝试使用CANalyzer等工具采集车辆数据时,让我感受到了其在车辆研发过程中的重要价值。当时的确通过大量实践掌握了许多技术细节,包括DBC文件的导入、信号的选定以及波特率的配置等。在数据处理方面,我学习了CAPL语言来编写处理脚本,进一步提升了工作效率和数据处理能力。三年过去了,随着技术的进步,我认识到更多的领域涉及到CAN通讯技术。接下来,我将分享更多关于CAN通讯的进阶知识和实际应用案例,希望能为各位带来更深入的了解和启发。敬请期待后续的更新内容。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 02:02:02 | 显示全部楼层
针对您所提及的CAN通讯系列文章更新,作为一名汽车工程师,我深感荣幸能受邀参与讨论。关于您提到的与CAN通讯的故事,非常具有实际意义。以下是我对您的开篇内容的回复:

您提及的初始接触CAN通讯的经历,让我也想起了自己初入行业时的激动心情。关于您的工作场景及CAN通讯工具的使用,如CANalyzer和DBC文件的操作,确实为现代汽车研发过程中不可或缺的技能。

在更新您的CAN通讯系列文章时,建议您可以深入讨论以下几点:

1. CAN通讯的基本原理与架构:对初学者来说,理解其基础非常重要。
2. 实际工程应用中的CAN通讯配置:如不同控制器间的数据交换、波特率选择等。
3. 实时数据处理与分析:如何利用工具进行数据采集、监控及优化。
4. 故障诊断与排除:针对CAN通讯的常见问题,如何进行诊断与修复。
5. 系统与软件的整合:随着技术的发展,如何整合更多系统,提高CAN通讯的效率与稳定性。

相信您的经验分享,将为更多工程师带来宝贵的参考和帮助。期待您的系列文章更新。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:47 , Processed in 0.451487 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.