• 351查看
  • 0回复

[网络开发] CAN通讯系列2-如何学习CAN通讯

[复制链接]


该用户从未签到

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

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


对于汽车行业从业者,如何学习CAN通讯,最重要的是取决于你的岗位职责。一方面岗位职责的定义决定你所能获得的资源,另一方面敢岗位职责基本框定了你所使用的CAN通讯内容范围。比如你不是做底层软件开发,那么你很难切身地深入理解CAN通讯的控制流和数据流,因为你没法像底层软件工程师那样能亲自使用调试工具去一行一行地调试代码,去追踪一个一个函数的调用关系。另外,你不是底层软件工程师的话,就算你懂很深入,也很难有详细设计的机会,从而很难产生最直接的价值。当然并不是说你不需要就不要了解,其实知道的越多越好。汽车研发体系内有各种各样的角色,你了解的越多越广,将会非常助于你与不同角色的人员沟通,与对方进行同频道交流。除此之外,还存在很多可能性。
因此,不管你从事的具体是什么岗位,都可以去了解CAN通讯,总之自己的目标得定位好,比如你做系统集成的,别想着干底层软件的CAN通讯开发。而应该是基于自己岗位职责需要,首先需要知道CAN通讯的哪些内容,后续有余力有兴趣再去了解更多更深入的内容。那么,具体如何学习CAN通讯?从哪里开始?到何种程度?本文分享一些个人经验与思考。

1 CAN通讯是什么
在汽车上,任何形式的通讯,不管是LIN通讯,CAN通讯还是Ethernet通讯,其目的都是用来信息交互。即汽车上就是控制器(ECU)之间的信息交互。

CAN通讯系列2-如何学习CAN通讯w1.jpg
source:TBOX和CAN如何交互?对于CAN通讯传递信息形式:同一个CAN网络的通讯,同样的传输速率,就如上图的动力网或车身网内部各个控制器之间通讯。不同CAN网络的通讯,可能是不同的传输速率,CAN网络需要通过网关才能通讯,就如上图的动力网的安全带控制器与车身网的车门控制器通讯。总的来说,不管哪种CAN通讯传递信息形式,问题都要回归到这个信息具体如何进行传递,即下图的控制器1如何将信息传递给控制器2。

CAN通讯系列2-如何学习CAN通讯w2.jpg
可以细分为两方面的问题:

    从控制器1到控制器2:信息以怎样的承载方式进行传输?信息以多快的速度进行传输?信息如何能准确无误进行传输?关于信息,信息指的是什么?信息来自于控制器1的哪里?信息又要到控制器2的哪里?
2 CAN通讯基础
对于第一方面的问题,属于CAN通讯基础,应该适用于所有人汽车研发人员,需要参考CAN通讯的协议与标准,包括CAN2.0协议规范和 ISO 11898等,后续文章会结合这些进行介绍CAN通讯基础。
CAN通讯系列2-如何学习CAN通讯w3.jpg

source:CAN 总线 之三 CAN 国际标准 ISO 11898 解读_iso11898

对于第二方面的问题,我概括为两个部分:应用和实现。

3 CAN通讯应用

在整车层面,很多功能需要多个控制器来联合实现,因此就有了控制器间的信息交互,而这些信息是依赖于具体的整车功能,比如说新能源汽车要实现驱动功能,先需要整车控制器VCU计算目标转速或扭矩请求,再通过CAN通讯传输给电机控制器MCU;另外,VCU也需要根据驱动电机的实际状态(电流,温度等信息)来计算目标转速或扭矩请求,这时也需要MCU通过CAN通讯反馈这些信息给VCU。总之就是控制器间需要进行信息交互,本质上来自于整车功能的需要,所以信息具体指的是什么,来自于整车功能的定义。因此,这个时候应用CAN通讯,主要目的获取信息,服务于整车功能,用来分析与验证整车功能的定义或策略等工作。此时,CAN通讯只是你获取信息的工具,你熟悉工具和DBC就好,比如CANalyzer或CANape的使用,可以参考它们的用户手册或者视频教程,如下所示:
CAN通讯系列2-如何学习CAN通讯w4.jpg

source: 01 新建工程及通道配置_哔哩哔哩_bilibili
CAN通讯系列2-如何学习CAN通讯w5.jpg

source: CAN通讯: DBC协议、DBC解析报文、Layout、C语言程序解析DBC报文实例其实CAN通讯应用还包括另一个大功能:诊断。这是对于工具的使用要求会远高于上面所述,另外需要知道CDD文件。关于诊断主题可以先关注本公众号故障诊断系列文章。

4 CAN通讯实现

信息来自于控制器1的哪里?信息又要到控制器2的哪里?这两个问题涉及到CAN通讯实现。基于AutoSAR软件架构,信息来自于应用层软件或者底层软件,要到的也是应用层软件或者底层软件。那么,在软件中具体如何实现CAN通讯,包括两方面数据流和控制流,即一方面是数据是以怎样的形式在软件模块中传递,另一方面是CAN通讯相关的模块中,不同模块或同一模块的函数是怎样的调用关系。
CAN通讯系列2-如何学习CAN通讯w6.jpg
source:vector learning了解这块内容,需要可以从实际开发工作入手,联合调试与测试工具,比如从CANalyzer中发送一条ECU接收列表已有ID的CAN信息,通过调试工具(比如trace32)断点功能,跟踪传输路径,包括函数调用和对应的数据信息。同时再结合AutoSAR文档,这样基本能摸清CAN通讯功能的主干。

CAN通讯系列2-如何学习CAN通讯w7.jpg

source: Lauterbach TRACE32工具的新增支持功能可简化MIPS和ARM CPU结合设计的调试工作
以上仅是CAN通讯开发的部分内容,还包括基于AutoSAR工具链对CAN通讯开发,比如采用Davinci configurator配置BSW和RTE,以及CAN通讯开发过程碰到各种问题。如果还更全面地说,对于软件开发而言,还涉及开发流程的执行,CAN通讯在ASW和BSW的分工等内容。
总的来说,CAN通讯实现包括开发,调试,测试和debug等工作,最重要的是实践,在实践需要理论支持,这是可去参考:微控制器用户手册,AutoSAR文档和调试工具帮助文档等资料。
5 小结
以上就是涉及到CAN通讯方面,个人的一些学习经验。对于CAN通讯,实际上还与功能安全和信息安全两个主题相关,上文并未提及,有兴趣的也可以自行了解。希望通过本文和上篇文章,能帮大家有所了解:

    CAN通讯与汽车研发的关系不同角色用CAN通讯做什么,需要掌握多少你真正想了解CAN通讯哪些内容,到何种程度你可以怎样去学
本系列接下来的文章将详细介绍CAN通讯相关知识,请持续关注后续文章,也可关注知乎已有的CAN通讯文章。



  • TA的每日心情
    无聊
    1-7-2015 18:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 16-3-2025 01:53:00 | 显示全部楼层
    针对汽车行业从业者如何学习CAN通讯,需结合岗位职责和个人发展进行规划。首先,明确自身岗位所需掌握的知识范畴,如非底层软件开发岗位,重点了解CAN通讯的基本原理、网络结构和应用层协议。其次,通过参加专业培训、阅读相关书籍和文献、参与项目实践等途径深入学习。此外,尽管岗位限制可能无法深入所有细节,但拓宽知识领域有助于更全面地理解汽车系统,提升工作效率和团队协作能力。因此,建议积极学习并了解更多的CAN通讯相关知识,以助于个人职业发展。
    回复 支持 反对

    使用道具 举报

    
  • TA的每日心情

    1435747603
  • 签到天数: 1 天

    发表于 16-3-2025 01:53:00 | 显示全部楼层
    针对汽车行业从业者如何学习CAN通讯,需结合岗位职责和个人发展进行规划。首先,明确职责范围,了解所需掌握的CAN通讯内容。若不从底层软件开发入手,可能难以深入理解控制流和数据流,但并不意味着无需了解。作为汽车工程师,广泛的知识储备至关重要。

    建议从以下几个方面学习CAN通讯:

    1. 理论基础:学习CAN通讯的基本原理、协议结构、数据传输等。
    2. 实践操作:结合实际工作,学习使用相关工具进行CAN通讯的调试、监控等。
    3. 交流合作:与同行交流,了解不同角色在CAN通讯方面的应用和实践。

    了解越多,越有助于拓宽视野,提升专业技能,为职业发展打下坚实基础。
    回复 支持 反对

    使用道具 举报

    

    该用户从未签到

    发表于 16-3-2025 01:53:00 | 显示全部楼层
    针对汽车行业从业者如何学习CAN通讯,需要基于岗位职责及个人兴趣进行有针对性的学习。作为非底层软件开发人员,可能难以深入理解控制流和数据流,但并不意味着无需了解CAN通讯。实际上,对CAN通讯的广泛了解有助于更好地完成工作。建议通过以下途径学习:

    1. 阅读相关CAN通讯的文献和标准,了解其基本原理和应用;
    2. 参加相关培训课程和研讨会,与同行交流;
    3. 了解汽车行业内的CAN通讯应用场景,结合实际工作进行学习和实践;
    4. 借助网络资源和在线教程,加深理解和提高技能。

    了解的内容越多越广,将有助于你在汽车行业中更好地完成工作。
    回复 支持 反对

    使用道具 举报

    快速发帖

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

    本版积分规则

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

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

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.