中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

搜索附件  
汽车工程师之家 附件中心 结构原理专业知识特区 『汽车控制器VCU/BMS/MCU/域控』 你知道CAN报文的发送类型有哪些吗?w11.jpg
左侧广告
附件中心&附件聚合2.0
For Discuz! X2.5 © hgcad.com

你知道CAN报文的发送类型有哪些吗?w11.jpg

 

你知道CAN报文的发送类型有哪些吗?:
我们在用CANoe进行CAN总线的测试时,会发现CAN报文的发送类型有很多种,有些类型不太容易理解,有些类型之间又容易混淆,一不小心就会用错,今天我们就来介绍下CAN报文的发送类型。

CAN报文的发送类型分为基本发送类型和混合发送类型两大类。

基本发送类型包括Cyclic周期发送、OnChange变化时发送、OnWrite写入时发送和IfActive有效时发送。

基本发送类型中的Cyclic称为周期型,而其他3个类型称为事件型(event)。

混合发送类型就是指基本类型中的周期型与事件型的组合,包括Cyclic and OnChange、Cyclic and OnWrite、Cyclic and IfActive。

1.基本发送类型

1.1Cyclic周期发送

周期发送是指报文独立于信号,按照固定的周期发送,也就是报文的发送与报文中的信号变化没有关系。

周期性发送报文是我们最常用的报文,这类报文中包含的通常都是需要经常使用或者变化频率较高的信号,比如车速、转速等信号。


Cyclic周期性发送报文示例

如上图示例所示,ID为201的报文按照200ms的固定周期发送车速信号,车速信号在这个期间会有些变化,从52->51->52->53>,但是无论信号如何变化,报文周期都是6.8-6.6=7.0-6.8=7.2-7.0=200ms。

周期型报文就像大城市的公交汽车,报文中的信号就像是乘车的人员,一旦公交汽车发车周期确定了,比如10分钟,则每间隔10分钟都会有一辆车从始发站启动后发出,无论车上有几个人,都会按时发送。



周期型报文(公交车)按固定时间发送,即使信号为0(空车)也要发送

1.2OnChange变化时发送

变化时发送是指当报文中的信号变化时,报文才会发送。

这类报文中包含的通常都是变化频率不高的信号,比如通过中控屏进行的按键调节信号,OnChange报文的目的是为了节省总线资源。



OnChange变化时发送报文示例

如上图示例所示,ID为368的报文为OnChange变化时发送的报文,假如当前的背光亮度为30,此时总线上没有368报文;

此时通过中控屏的触摸按键将背光设置改为32,则中控屏会发出一帧ID为368,背光信号为32的报文。

1.3OnWrite写入时发送

写入时发送是指当报文中的信号被重新写入时,报文才会发送。这里的重新写入主要是指在测试软件中对信号的重新设置写入,在ECU中也可以认为是应用层对底层通信信号的写入。

OnWrite与OnChange的主要区别是OnWrite重新写入不一定就是数值的改变,也可以保持不变。

还是以中控屏的背光设置为例,比如背光原来为30,可以再次设置为32,设置后又继续设置了两次,但都是32,并没有改变这个值。



OnWrite写入时发送报文示例

以上示例中,最后两帧的背光信号都是32,对比第2帧并没有改变,但是中控屏依然会发出这两帧,因为都是写入的操作。

这里要注意的是发送时间都是实时随机的时间(中控按键确认的时间),并没有固定发送周期。

1.4IfActive有效时发送

有效时发送是指当报文中的信号为有效值时,报文会以一个快速的周期(cycle time fast)发送,当信号变为无效时,报文就不再发送。

无效值Inactive Value也就是默认值,比如BCM的报文ID是380,其中的DoorOpen门开信号的无效值是0,表示门关,有效值是1表示门开,快速周期为100ms。

开始状态为门关,总线上没有报文,当门开有效,即门开信号为1时,380报文立即以100ms为周期发送报文;当门关后,即门开信号为0时,报文立即停发。



IfActive有效时发送报文示例

以上示例中,报文是以快速周期100ms发送的,不发送时就表示门开信号为0(无效)。

OnChange、OnWrite和IfActive都属于事件型报文,这类报文就像在出租车站点等待的出租车,没人打车的时候不需要上路,只有乘客打车时才会上路,否则大量的空载出租车在道路上行驶,不仅没有作用,反而容易挤占道路资源,造成道路拥挤。



事件型报文(出租车)没有信号触发(无人打车)时不需要发出

1.5 Repetitions重复发送参数

对于基本型中的OnChange、OnWrite来说,它们虽然不是周期发送,但是并不是说只能发一次,也可以发送多次。对于IfActive来说,也可以按快速周期发送的同时限制发送次数。而发送次数是通过定义Repetitions重复次数来实现的。

所以基本型中又衍生出3个子类型OnChangeWithRepetition、OnWriteWithRepetition和IfActiveWithRepetition。

比如在OnChangeWithRepetition子类型中,如果设置了Repetitions=3,则报文会连续发送三次,三次之间的时间不小于最小报文发送的延迟时间Delay time。


OnChangeWithRepetition示例

注意连续发送报文的时间间隔都比较短,但是也不能小于最小报文发送的延迟时间Delay time,示例中的间隔为100ms。

再比如在IfActiveWithRepetition子类型中,Repetitions=2,快速发送周期cycle time fast=100ms,则报文只发送两帧。



IfActiveWithRepetition示例

注意此时报文的发送周期是按照cycle time fast快速周期时间100ms发送,虽然与上面的间隔时间100ms相等,但是含义不同。

2.混合型

2.1Cyclic and OnChange

周期和变化时发送是指报文平时是周期性发送,当报文中的信号变化时,此报文会额外的发送一次,原来的周期不变。



Cyclicand OnChange示例

如上图示例所示,其中的第3帧就是额外发送的帧,它的发送时间为6.920s,是个实时的随机时间,不是按照周期发送的。

2.2 Cyclicand OnWrite

周期和写入时发送是指报文平时是周期性发送,当报文中的信号被重新写入时,此报文会额外的发送一次,原来的周期不变。


Cyclicand OnWrite示例

如上图示例所示,其中的第3帧和第5帧就是写入时额外发送的帧,它们的发送时间分别为6.920s和7.110s,都是实时的随机时间,不是按照周期发送的。

注意第5帧的重新写入数据仍然是32,没有改变,这也是OnWrite与OnChange的主要区别。

2.3Cyclic and IfActive

周期和有效时发送是指报文平时是按正常周期cyclic time发送,当报文中的信号为有效值时,报文会按IfActive报文的快速周期cyclic time fast发送,等到信号变为无效值时,报文又会恢复到原来的正常周期发送。


Cyclicand IfActive示例

如上图示例所示,其中前4帧是按正常周期1s发送,信号为无效值0;从第5帧开始,当信号变为有效值1时,则按照快速周期100ms发送,所以中间4帧是快速发送。后面4帧,信号又恢复为无效值0,周期也恢复为正常周期1s。

快速周期时间 cycle time fast这个参数仅在IfActive及其组合的类型中使用。

混合型的报文就像旅游景点的接驳班车,平时人少时(基本不变),可以慢周期发车;等到节假日乘客突然很多(变化)时就临时改为快速发车。这样平时可以较少的占用道路资源,假日期间又可以解决临时客流量大的问题。



混合型的报文(接驳班车)发送周期平时慢,紧急时快



信号触发(人流量变化)时需要快速的把消息发送出去

3应用实例

在实际使用时,有些信号涉及到相互同步的问题,比如仪表和中控的背光设置。

传统产品中,仪表的按键可以设置仪表屏的背光亮度,中控按键可以设置中控屏的背光亮度。在智能座舱的架构中,希望仪表和中控的背光能一体化联动,同步变化。也就是通过仪表或中控都可以设置车内屏幕的统一亮度,这时就需要仪表和中控信号同步,互相发送背光亮度信息。

如果仪表和中控都按周期报文发送,两者是可以实时同步,一方发现对方的需求与自己不同时,与对方同步即可。

但这种方式也有缺点,就是对软件处理的时序要求很高,比如在中控系统上进行手动设置后,在中控发出新的报文给仪表时,仪表在未收到新报文前已经将包含旧数值的报文发给中控系统,而中控系统误以为这个旧报文是仪表的新设置,就会导致仪表和中控两者不停地向对方同步,陷入死循环,背光一直在跳变,无法达成稳定状态。

这种情况要求软件上必须在数据变化发送时做对方报文的延时处理,也就是短时间内不接收对方的报文,以防止被对方旧的数据干扰。

还有一种简化的方法就是一方为周期型发送,另一方为事件型发送。比如仪表(假设ID=350)为周期发送,发送周期为500ms;中控为OnChange有变化时发送,变化时重复发送3帧,则报文如下:


仪表中控背光同步发送

由上图示例可知:

1-4帧为仪表发送的周期帧,周期为500ms,背光为30;

5、6、7三帧为中控发送的事件帧,连续发了三帧,间隔为100ms,背光改为32;

8、9帧为仪表收到中控发来的事件型报文后,同步更新自身的背光亮度值后发出的周期帧,周期仍然是500ms。

这种方式将仪表的背光信号定为周期型发送,可以保证较好的同步实时性,将中控定为事件型方式发送,可以避免两者进入死循环的可能。但是中控会有被仪表的旧信号覆盖的可能,所以中控中仍需要做报文的延时处理,但是整体上来看,这种方式风险更低、处理更简单。

小结:

CAN总线的报文发送类型主要包括周期型和事件型,周期型就是按照固定周期发送,与具体发送的信号无关。事件型不按周期发送,是按照信号的特点发送,具体分为信号变化时发送、信号写入时发送和信号有效时发送。周期型与事件型还可以分别组合成混合型。

周期型的特点是稳定、可靠,实时同步效果好,但占用总线资源多;事件型的同步效果没那么好,但是占用总线资源少!

你知道CAN报文的发送类型有哪些吗?w11.jpg
         同一主题附件:
    你知道CAN报文的发送类型有哪些吗?w1.jpg
    你知道CAN报文的发送类型有哪些吗?w2.jpg
    你知道CAN报文的发送类型有哪些吗?w3.jpg
    你知道CAN报文的发送类型有哪些吗?w4.jpg
    你知道CAN报文的发送类型有哪些吗?w5.jpg
    你知道CAN报文的发送类型有哪些吗?w6.jpg
    你知道CAN报文的发送类型有哪些吗?w7.jpg
    你知道CAN报文的发送类型有哪些吗?w8.jpg
    你知道CAN报文的发送类型有哪些吗?w9.jpg
    你知道CAN报文的发送类型有哪些吗?w10.jpg
    你知道CAN报文的发送类型有哪些吗?w11.jpg
    你知道CAN报文的发送类型有哪些吗?w12.jpg
    你知道CAN报文的发送类型有哪些吗?w13.jpg
    你知道CAN报文的发送类型有哪些吗?w14.jpg

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

GMT+8, 20-2-2025 06:54 , Processed in 0.417107 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.