• 348查看
  • 0回复

[网络开发] CAN通讯系列3-CAN通讯如何传递信号?

[复制链接]


该用户从未签到

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

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


在CAN通讯系列2-如何学习CAN通讯中举了一个例子:新能源汽车要实现驱动功能,先需要整车控制器VCU计算目标转速或扭矩请求等信号,再通过CAN通讯传递给电机控制器MCU,就这个例子继续探讨CAN通讯的基础问题。
         
CAN通讯系列3-CAN通讯如何传递信号?w1.jpg
   
1 CAN数据帧的数据段

VCU需要MCU传递(发送)一些信号,假设有:

    信号1:目标转速请求信号

    信号2:目标转矩请求信号

    信号3:目标转速请求有效标志信号

    ……

    信号x:目标转矩请求有效标志信号
VCU是将这些信号一个接一个使用CAN通讯发送给MCU?还是将它们打包或捆绑到一起,再使用CAN通讯发送给MCU?
这个答案较明显,肯定不希望一个接一个形式发送,你想象一下,如果VCU有上百个信号要发送,这样效率太低,实时性也会有问题。选择捆绑到一起,即多个信号绑在一起,面临2个问题:

    信号如何绑到一起?比如谁接着谁

    信号捆绑有大小限制吗?是一下子能捆10个还是捆100个?
针对这2个问题,在CAN数据帧中,定义一个数据段,用来放信号,如下示意的红圈部分:
CAN通讯系列3-CAN通讯如何传递信号?w2.jpg
该数据段的大小有8个字节,即64位。这是怎样个概念?比如目标转速请求信号通常占用16位,那就意味着数据段最多能放4个这样的信号。当然并不是每个信号都会占用16位,比如目标转速请求有效标志信号只占用1位,油门踏板深度信号占用8位,油门踏板深度有效标志信号占用2位。这时将如何将这些信号塞进到数据段呢?
CAN通讯系列3-CAN通讯如何传递信号?w3.jpg
首先,按最小单位为位,对该数据段做了规定,如下表所示:
CAN通讯系列3-CAN通讯如何传递信号?w4.jpg

列向表示字节序号,从上往下,第0个字节到第7个字节;

行向表示每个字节的位,从右往左,bit0到bit7。
然后,把上述VCU的信号排入到这个表,如下所示。
CAN通讯系列3-CAN通讯如何传递信号?w5.jpg
可以看到数据段还是可以装入很多信号,但是如果除了表中的这些信号,VCU还有更多的信号需要发送,那又将如何处理呢?显然,还需要额外的数据段来装剩下的信号,一个数据段不够,那就再用一个数据段,直到够用为止。此时,又一个问题产生了,怎么区别这些数据段呢?2 CAN数据帧的仲裁段自然地,当然希望每一个数据段都有一个标识或者记号。因此在CAN数据帧中,定义一个仲裁段,其中就包含ID(标识)信息。就好比如上图数据段对应仲裁段的ID为001,额外添加的一个数据段给它定义ID为002, 以此类推,不难理解,可以根据需要先定义多个ID,然后在对应该ID的数据段去部署信号,如下所示:
CAN通讯系列3-CAN通讯如何传递信号?w6.jpg

3 CAN数据帧的控制段

理论上,我们是可以给数据段装满信号,但是VCU信号如果不够,必然有些ID的数据段装不满,这时为了让接收方MCU更准确地获取信息,在CAN数据帧中,定义一个控制段,其中包含数据段的长度信息(以字节为单位)。比如在控制段定义了长度为6个字节,那么MCU收到这条报文时,能够明确知道有效数据长度是6个字节,后2字节就可以忽略。因此,除了定义仲裁段的报文ID,数据段的信号排列关系,还需要在控制段定义的长度信息,如下示意:

CAN通讯系列3-CAN通讯如何传递信号?w7.jpg
4 小结本着从实际问题出发,信号如何从一个控制器传递到另一个控制器,本文展现了这么一个自然的思考过程,我想应该对本文的例子(VCU如何通过CAN通讯发送给MCU信号)有了一个初步的认识,当然,其中也引入CAN数据帧定义的相关内容,我想通过理论与实际相结合的方式,更有助于理解CAN标准或协议这些相对抽象的内容,甚至会发现这些标准或协议是如何精妙。为了深入了解CAN协议,下篇文章将对CAN数据帧的定义做详细的介绍,敬请关注。
CAN通讯系列3-CAN通讯如何传递信号?w8.jpg

source: vector learning


该用户从未签到

发表于 16-3-2025 01:52:03 | 显示全部楼层
亲爱的提问者,针对你关于CAN通讯数据帧的问题,我作为一名汽车工程师为你解答如下:

在CAN通讯中,信号是组合成数据帧进行传输的。针对你给出的信号,如目标转速请求信号、目标转矩请求信号等,VCU并不会将这些信号一个接一个地发送,而是将它们打包整合到一个CAN数据帧中,通过CAN通讯一次性发送给MCU。每个信号在数据帧中有其特定的位(bit)来表示,这样MCU在接收数据时能够准确识别并处理这些信号。这种集成传输方式提高了通讯效率。

希望以上解答对你有所帮助,如有更多问题,欢迎继续交流。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:01 | 显示全部楼层
您好,关于您提出的问题,汽车工程师的视角是这样回复的:

在CAN通讯中,数据是以数据帧的形式进行传输的。针对您所列举的信号,VCU并不会将信号一个接一个地通过CAN通讯发送给MCU。实际上,VCU会将所有需要传递的信号打包成一个数据帧,然后通过CAN通讯发送。每个数据帧包含标识符(用于标识发送方和接收方)、数据段(包含实际的数据信息)以及其他一些控制信息。在这个例子中,VCU会将目标转速请求信号、目标转矩请求信号等相关信号打包进一个数据帧中,然后通过CAN通讯发送给MCU。这种方式更为高效,能够一次性传输多个信号。

希望这样的解释能够帮助您更好地理解CAN通讯的数据传输方式。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:03 | 显示全部楼层
针对您提出的问题,汽车工程师回复如下:

在CAN通讯中,数据是以数据帧的形式进行传输的。对于VCU向MCU传递多个信号的情况,通常会将这些信号打包成一个数据帧进行传输。每个数据帧都有一个标识符(ID),用于标识该帧的优先级和目的地址。在数据段中,可以包含多个信号,如目标转速请求信号、目标转矩请求信号以及相应的有效标志信号等。这些信号会被编码成二进制数据,通过CAN总线以数据帧的形式发送出去。MCU在接收到数据帧后,会解析出其中的信号并进行相应处理。

因此,针对您给出的例子,VCU会将所有需要传递的信号打包到一个或多个CAN数据帧中,再通过CAN通讯发送给MCU。这样,既保证了数据的实时性,又提高了通信效率。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:02 | 显示全部楼层
尊敬的提问者,关于您的疑问,作为一名汽车工程师,我将为您提供专业的解答。

在CAN通讯中,信号通常是打包成一个数据帧进行传输的。针对您所列举的信号,如目标转速请求信号、目标转矩请求信号等,它们会被组织成一个或多个CAN数据帧的数据段进行传输。在CAN通讯中,每个数据帧都有特定的标识符(ID),用以标识发送方和接收方的身份以及信息的优先级等信息。在您的例子中,VCU会根据这些信息将相应的数据帧通过CAN总线发送给MCU。这些信号可以打包在一起发送,也可以分别发送,具体取决于实际应用的需求和系统设计。

如您还有其他疑问或想了解更多细节,请随时提出,我会尽我所能为您提供更多专业的解答和建议。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:02 | 显示全部楼层
针对您提出的问题,汽车工程师回复如下:

在CAN通讯中,数据是以数据帧的形式进行传输的。对于VCU向MCU传递多个信号的情况,通常会将这些信号打包到一个CAN数据帧中发送。每个CAN数据帧都具有一定的数据长度,可以容纳多个信号。具体实现时,会将目标转速请求信号、目标转矩请求信号等及其相关标志信号组合成一个数据帧,然后通过CAN通讯发送至MCU。MCU在接收时,会按照预定的协议和数据格式解析出相应的信号。这种方式的优点在于可以提高通讯效率,减少通讯次数。

以上内容仅供参考,具体实现方式可能因车型和系统而异。如果您有更详细或特定的问题,请提供更多的背景信息或具体场景,以便提供更专业的解答。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:02 | 显示全部楼层
您好,关于您所描述的CAN通讯中的信号传递问题,我将以专业汽车工程师的角度为您解答。

在CAN通讯中,数据是以数据帧的形式进行传输的。针对您提到的VCU需要向MCU传递的信号,如目标转速请求、目标转矩请求及其有效标志信号等,它们会被组织成一个CAN数据帧的数据段。通常,这些信号会被打包或组合在一起,形成一个数据帧进行传输,以提高通信效率。每个数据帧都包含特定的标识符(ID),以区分不同的信号或数据类型。在接收端,MCU能够识别并解析出每个信号的ID及其对应的数据值。

简单来说,CAN通讯并非逐个信号进行传递,而是将这些信号打包到一个数据帧中一并发送。这样可以确保在同一通信周期内多个信号得到同步传输,提高通信效率。希望这个解答能够帮助您更好地理解CAN通讯中的信号传递方式。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:52:02 | 显示全部楼层
针对您提出的问题,汽车工程师回复如下:

在CAN通讯中,数据是以数据帧的形式进行传输的。对于VCU向MCU传递多个信号的情况,通常会将这些信号组合在一个CAN数据帧中发送。这样做可以节约通讯带宽,提高通讯效率。针对您所列举的信号,如目标转速请求信号、目标转矩请求信号等,VCU会将这些信号打包成一个数据帧,然后通过CAN通讯一次性发送给MCU。每个信号在数据帧中有其特定的位(bit)位置,以标识不同的信息内容。这样,MCU在接收数据时,能够准确地解析出各个信号的具体内容。

希望以上回复能够帮助您更好地理解CAN通讯的数据传输方式。
回复 支持 反对

使用道具 举报

快速发帖

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

本版积分规则

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

GMT+8, 19-8-2025 05:46 , Processed in 0.370423 second(s), 41 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.