电子产业一站式赋能平台

PCB联盟网

搜索
查看: 300|回复: 0
收起左侧

CAN FD网络中每秒最多可以发送多少帧报文?

[复制链接]

854

主题

854

帖子

8396

积分

高级会员

Rank: 5Rank: 5

积分
8396
发表于 2023-6-16 12:00:00 | 显示全部楼层 |阅读模式

dgbh1hqondt64015966134.gif

dgbh1hqondt64015966134.gif

3 r( T4 Y+ A! T% K( E9 I点击上方蓝色字体,关注我们
. E+ F( }5 ?/ q9 X! j& w
: B1 N; E. Q5 G9 |随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。
' l: Z0 Q6 `, \* L" D' K
4 d! w+ m4 L4 i8 N+ @: e因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。  R8 H3 n( ^& n

& X8 Q9 g1 G: y) k+ I% Z2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。2 f0 g) H! F+ ~# S1 G# _0 O
1; U. y9 {8 u2 T7 ?" y4 p% d1 Y* M* `
什么是CAN FD?" t9 U, H3 i2 _( h4 N% w/ A
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。: C7 W  @. x6 i
* Y$ N  P) t) d- V) {; d* m- R
CAN FD具有以下4个主要优点:; g$ V8 T* Z: P" m( ]
2 l; ^4 A% |' T( i4 Z

7 I3 H. h5 X" o% ]4 L* n3 h1、增加了数据的长度
) ^8 K8 o4 n) Q! h& k7 l1 PCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。) _' l3 M& X0 w: r- U" f  u

; l; C+ W' r2 F: [
0 a8 U0 o: l. R0 t( ~( s3 }9 D
2、增加传输的速度. F, k8 e4 j2 D4 n$ |7 Q$ l
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。, r! I' ^# t7 k% h7 x: m
, y) |: l5 M0 @# S# x
" z- |& ~) ~$ C' E( _0 ~* V
3、更好的可靠性
0 b; H( m: w' S" H/ n" OCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。: E7 Z1 y$ E- D8 z# y8 S: s
) D3 P% a) P" S  `) B% `7 c
: b+ b/ B# A: h: C6 l. m, L
4、平滑过渡
: \, u6 W1 X& G1 K在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。- s; y/ `9 n( \) A) B8 S" |
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
- h7 ~7 G, v- r- u6 F, O2. ~: s1 ^, S3 o8 i3 s
CAN FD帧结构4 q( L7 _! g7 j+ Z$ n
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。
! q% `; q) X2 p% W: `! A- Z5 |- L- l4 N% [1 H) M

uhrqn5nk5nb64015966234.png

uhrqn5nk5nb64015966234.png
( d; w+ n9 s6 ]6 w. J- ?

7 k% T1 K& l- n5 e2 R* h4 S. ?4 B与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
8 E: z7 w; {* @) g6 P; C# c
8 v+ ~  [) {9 z6 t1 `! f2.1、帧起始) b) B" k- |9 ^8 x7 i! O, F
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。- N1 ~8 I" ?  ~6 x$ c5 }9 I( C; V
% J% `- M8 l* l- f

zdm303polzo64015966334.png

zdm303polzo64015966334.png
, l4 l$ ]* u, M, G2 h( F

' U# p9 A- A0 l& N  v( l. }2.2、仲裁段% ^. I* Z( o1 c2 C/ M- ^
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。% Q! u4 L: @- q- @, R4 s( z

3 e8 S; r2 b9 I$ Q1 ^" r( g

g3jb15xxwee64015966434.png

g3jb15xxwee64015966434.png

  X% L4 p! e' z" }- P, r, v" v9 d& q, ?9 m# Q4 f* o% _
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。' O2 {  m0 L2 R1 }# Z5 W' X% P
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。) ~( Y7 D( y2 y7 I
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。( ?: k: M( d3 i/ M, z6 a* D/ p! |4 X
    & ^4 F0 `6 t6 M
    2.3、控制段  ^0 g+ w/ L% x" X8 }
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。$ {6 c% B6 T/ u  v6 P
  • FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r。表示 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性(1),表示 CAN FD 报文;
  • BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位(1)时速率可变(即 BSR 到 CRC 使用转换速率传输);
  • ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。, `% k' X9 F) G5 O, A
    ) C  R" I- E$ D; b4 S  t

    ( ^5 J, \- H4 R" _

    n4vj0bysa2t64015966534.jpg

    n4vj0bysa2t64015966534.jpg

    - _4 ^; J" _! I3 T  ]( J* w" P& l7 J. K& }0 c1 Z
    2.4、数据段
    7 ~4 H8 E' s/ e5 vCAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    + i8 ^7 ^1 f7 F
    ! S* \: I+ A7 X像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。 9 t6 }! I; c5 v2 l

    ) i0 ]5 Y1 o( S  C, u5 T

    zscg0ks41pr64015966634.png

    zscg0ks41pr64015966634.png

    4 c( S& e! ]# F- _3 c编辑  N4 R& o- [% Q6 R( r8 }

    zld33e3svdm64015966735.png

    zld33e3svdm64015966735.png
    7 [1 E  F# Z4 g* F$ H5 t3 W0 T

    ' `! M% ^7 _) f3 K$ {8 j2.5、CRC段
    " z$ K  |. ^0 H. B5 o6 n. B传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
      y) J2 ^1 Z6 D8 A
    9 t; k7 `+ s$ X3 d

    3qdvqztrj3164015966835.png

    3qdvqztrj3164015966835.png
    ( x7 w4 A/ h" C# k9 k

    + L% }2 d- q. `) e8 p/ ~: `固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。+ m2 A# P) N* f1 R
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。% B* t& o  r- b

    - M5 h8 k4 }3 c& X填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。
    " c, j4 l5 _% S. D: f8 j! W2 A6 y2 S9 U5 d# w' l4 W6 Y; u& Q
    CRC:
    ' S7 k: Z  A: r# \
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。9 @) o3 @- g5 r: L
    " T9 }, d& W/ O. }  t" [5 l
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。3 f, \3 _' j5 d
    , j& [' Z9 I$ Z$ R4 ^

    bzzkv3bx4ap64015966935.png

    bzzkv3bx4ap64015966935.png
    1 r  a# k' x6 }+ f8 N* x
    $ M5 _! J$ V# D. e$ h
    2.6、ACK段* Q" ~8 A' q$ s: K4 J  A! W
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。% ~! ^" Q- }+ z3 Y* `9 G
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    ) R$ }1 f  Q, K- \, Z6 w$ h

    5 X% ~/ b2 h7 ]# P
    * j' w2 g8 U. _4 l! a$ M

    gxcpst4evnf64015967035.png

    gxcpst4evnf64015967035.png

    ( c3 H4 `! j/ \9 e7 _/ q4 Y
    : R- w9 ]# \3 D1 w5 T1 \; l/ l2.7、帧结束, [6 q' P* C2 ]! L# R  F# ?
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
    - E. O; |! D) Q' Z# m  O0 m5 V5 x34 i; Q0 R6 a, [# b9 T5 y+ x
    一帧CAN FD报文位数7 E6 S+ o: X9 a$ a: t  i" k% d, a
    根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:. p4 o5 G9 L* @* T' S; ?
    # U3 C6 e' a) Y" _
    CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)  Q$ M0 K4 c7 `9 Q$ N

    ' T2 |0 i$ ~& d1 E8 Z# G3 z9 l

    ) u/ v7 p: u- S影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:& I% [$ }) p2 n2 k! |- g9 s! c
  • 标准帧,数据0字节
    8 u3 ]% c8 e/ p! r
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位
    5 d4 N3 l: }" B+ l
  • 标准帧,数据64字节6 u3 ?! S: y  j, f$ Q5 N0 |" N# C
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位8 d6 K- C- |3 h0 \
  • 扩展帧,数据0字节* L$ L2 R! d1 f" ^! l% A
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位. I0 f4 I* a( f7 ~7 t
  • 扩展帧,数据64字节6 i3 v* _" o# ?; E! Z# ^# b
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    % `& T' [  r2 z4 a40 O  u' d8 U$ a8 w. q. Z
    精品专栏仲裁域和数据域位数
    0 [/ P9 Y9 F' q( L由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。3 g/ g2 a; h1 d* ^2 C
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)" F9 U3 C2 `/ t; k/ \0 n; l

    * K4 A, l8 z5 T3 V% {主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率
    1 Y7 Q5 T2 s( u: ~+ v- m, j
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。6 x6 C8 S0 @* G" {9 q2 Z2 h
    # o$ f7 w7 v# Z: N$ s1 z
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    9 D0 K4 O/ r+ g5
    * [) H9 |/ G5 B% {4 i, W5 z1 U位填充
    , N/ S2 ]( i8 ]& v当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    # Q4 m8 S/ l! L; }3 M) e8 q$ s; g$ O( ]
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。+ @% E& z3 E% n
    5 l0 w& A- ]' h) B' v4 S& t5 @! z
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。- f; p" N; c+ D3 L& E4 z
    62 R1 ?2 |5 _2 _2 T" j: z
    不同类型报文位数
    2 U, N6 D* G5 l基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:) m5 v5 E. C; G% Y

    + ~0 |' `$ v2 h' q: x9 I

    ybhvtx5n4d364015967135.png

    ybhvtx5n4d364015967135.png
    & u9 _2 Y  s9 `# z6 t' g

    8 P: d. I  u7 c从上表可知:
    + f  g- c2 V$ r: _% p
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    / O: P; o& s4 J2 Z
    ) r7 A( Q( I: H$ A) j
    7- {9 N$ h8 _, x- `, `5 p
    CAN FD报文时间计算
    & U4 V; G, p  n: r最后,可以根据波特率算出不同类型报文时间了,计算公式如下:. T4 v+ B7 Y! Z: p& b1 t" A5 d5 O- P

    ! Y8 g: i& L: y5 q) y/ B报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数7 z( ^) P* o' A2 E2 G

    1 V  `: S" B  D7 F. A. g/ G

    # E2 k! |9 c; l) q0 {, ~8 i0 t以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。0 j) m8 \% K0 ^
    # ?7 H  ~3 e+ ?  G1 d. c# v; f9 a$ ~
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。9 r5 S! \& H6 R8 p4 C8 ~$ K
    6 E* }& r# a+ a4 a
    ' p; P( j/ |( e  b; d6 L) w$ V% b
    下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
      Q# B1 c1 ^  o+ g, b, p7 Y& _$ Z; \" B

    sm3btnqvbvu64015967235.png

    sm3btnqvbvu64015967235.png
    * m. ^* F2 |# _
    . R& n& a' J( I1 X  q
    % ]- Y2 A: Z4 W1 ?: O

    fgijceomwio64015967335.png

    fgijceomwio64015967335.png

    1 W: m  ~* o# j& m9 S
    ! _! X/ ^" A, {3 L: E
    8 X2 P$ L, O, X" U4 F: [" A- L

    ofnpmsztn5264015967435.png

    ofnpmsztn5264015967435.png
    4 }# b  f* }6 D! {1 W/ P

    & |' R4 R  T% `0 r8 p6 X% f8 F2 i" R" D

    5e04vw2s2sy64015967535.png

    5e04vw2s2sy64015967535.png

    . B) ^% ?( C, s! n, ?& J  X往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM" d; w$ U" L1 l3 Y) n
    CAN总线网络中为什么需要安装终端电阻?
    ( n. ~' ?4 G* M# x( r/ K一文搞懂CAN和CAN FD总线协议# N6 `. V* z, L7 B7 z
    CAN与CAN FD通信之间存在的问题( q( O# u9 o* F
    详解CAN总线:CAN总线通信优先级机制3 p. [* w$ c- C# T
    详解CAN总线:CAN总线故障界定与管理% D8 g5 \3 R4 k) U9 }6 A! `( b

    ' O  ^3 j# I1 _/ |" [" w8 r

    x2xk1vxuhra64015967635.jpg

    x2xk1vxuhra64015967635.jpg
    4 p4 _; x* g% v

    ab21bgkunbd64015967735.gif

    ab21bgkunbd64015967735.gif
    * X- O, b9 G2 c9 m4 v9 E# _
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表