电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

854

主题

854

帖子

8396

积分

高级会员

Rank: 5Rank: 5

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

sdxlh5hp2mi64023078346.gif

sdxlh5hp2mi64023078346.gif
. `: L6 p: [/ L1 Y% @, X
点击上方蓝色字体,关注我们
5 u" b" z- v. S5 `) @
& @$ ^$ C- _, {" Q  X6 \* z) M; q随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。# o# S. K2 R5 V8 f+ |# B& P
& y) _; Z9 a" P
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
& a( u: ~6 e3 V% a
' `( q" j: X1 ~, M8 G4 t, a2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。( z: m! {- q! x: g  @4 n1 |
1
3 I; \* q3 c% o3 Q什么是CAN FD?
2 ^- j3 _2 M6 V/ y1 i3 s. HCAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
+ ^2 H) u* A; d& h6 z. y2 B; \
  Z2 K7 m% ^4 J3 @7 _CAN FD具有以下4个主要优点:
! m* R+ w& }% i7 o! m8 V: \  `5 ]. N( }
! c2 ]6 ~. Z9 \- z( ^$ K, H0 r
1、增加了数据的长度1 U' N3 {' V1 v* F* u9 y- |2 y# F
CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
2 L0 a+ O" n) B& L# J/ f6 p6 b# Q4 T& y: I) T' v* b6 ]' q) K
' ~6 L8 X3 C4 \5 U% i: @; A
2、增加传输的速度( t  ?2 P8 L( q: {0 C3 B1 V
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。
- R; S8 |- m( g( N% B8 @
4 j: R7 g) g# m
& V) O8 G3 u4 c+ X) K9 y( T
3、更好的可靠性1 Q( j2 h' l$ T- C
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。$ V0 @5 v( k% g4 V7 w
, c% k* e) L+ N$ J
+ ]$ |& s6 d& @" E2 w3 U* [4 S
4、平滑过渡$ b; R( Y- l3 T0 h  `& R; m
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。$ _6 m/ L: }2 w( ?
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
  w+ w4 f! @* h' T( z% Z' k+ I2
0 S  K& }/ q# u0 LCAN FD帧结构
9 q# t( D- [' _6 e4 H+ g. `% f$ ICAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。& L# a" r/ Y' u4 y" I; S5 o7 U
' P' w7 k1 V1 w! ?  ~5 L

v3afzoqxqcx64023078447.png

v3afzoqxqcx64023078447.png

# C5 S% h1 S  `* e4 j: e7 q" H( n! k2 h6 p" `
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
! ^' D) L. H. m; j  S" }) ]
, x% C5 P, w# o" \- \; S  m* ]( O2.1、帧起始$ ]& v0 [, d4 r0 y
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
3 I  m% R! z$ _+ T2 ?; G
$ y) Q! S/ s% e# L0 y, g* n

g2igutxyds164023078547.png

g2igutxyds164023078547.png
$ T. f: J3 C. \8 W2 I3 A) [7 N- h

+ i5 L0 L5 Q7 O' O2.2、仲裁段4 h: k0 x( r$ J2 P% B; ]! c
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。% e- n7 I* z" f# V! M$ K
) H. ~* n+ c% I) _

faqz0m3axtx64023078647.png

faqz0m3axtx64023078647.png
- U: S4 Q9 A. M) a. F$ S. A

6 S4 t: p8 B+ {8 q+ j. |  H标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。1 O- L3 F% |; B& F8 [, D. |
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
( Z# A5 Y! G0 x7 Q3 n  Q/ a
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。# [0 _- e+ [  k5 L
      A# s9 L) ^& z7 e6 A5 l7 }
    2.3、控制段& b/ i/ l* ^: o* o
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。  N' ^+ k, S4 ^7 B6 H6 Q' D
  • 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)。
    8 B* L; }- P. X4 y/ n
    , }/ t! r, K- j0 _; }$ b. l

    5 {" E& x0 g& A9 Q# |% ]$ X

    13mbibowr3m64023078747.jpg

    13mbibowr3m64023078747.jpg

    ' j$ g* w9 R$ h, i  U- A  M  i8 p
    2.4、数据段
    % W0 F& n* r6 O3 C, R7 ^+ B5 GCAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    ( t& B; V  e( |" A; w- {1 |0 `
    ' T0 q0 _( d3 \3 I# o像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    ' E" u9 c3 K; V% S) [
    ( c, B1 o" X% m. t( L! o" _

    3uruo2vv0zk64023078847.png

    3uruo2vv0zk64023078847.png
    ' I4 V# O8 V2 j9 U/ _: w
    编辑: z' c  d- |$ K! o6 R. b, \  m

    2psyieqqeny64023078947.png

    2psyieqqeny64023078947.png

    " e6 R. g! d1 Y& |0 o4 C# W! Q$ ^; |' k
    2.5、CRC段
    ( _' g! f; X) _; Z; L传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。" J5 \6 a) `+ v3 e: H! k

    + v% Y/ \' W! p8 ]! t6 i

    5wvqzcetprl64023079048.png

    5wvqzcetprl64023079048.png
    ) y+ E& b/ b% V+ Q, J3 {

      G* C2 [9 W* b4 E) b; @固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。/ s0 ~& e! s1 X
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。0 k, X: y5 c8 h9 g6 q" z% X
    3 u! e6 K% u* l
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。2 v6 S0 d- J6 E$ E! a, Y% p1 d

    # g* a1 z. S+ n& k- O$ ~CRC:
    ( D- j! y' w$ ]1 @
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。4 J4 s+ ]1 ~- d' x; C6 C( i. K

    ! F7 [# _; p+ J. f$ U0 QCRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。( i' P0 V, p% D* V
    * }7 i0 E: L) \7 T

    kmb3mzuhv3v64023079148.png

    kmb3mzuhv3v64023079148.png
    $ s+ M: o( t0 w# k6 U4 e

    0 d# _- D  E* U2.6、ACK段: b; A; o3 Y; z8 O: t0 G3 z
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    & X0 h7 P7 S) u4 N1 o1 j* Y$ z; g
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    8 W7 D7 i6 K: Q9 c) O
      C* T  D# U" @9 ]* p
    6 o% }( m7 E' X; \, A8 V& N

    jxyjkjblqln64023079248.png

    jxyjkjblqln64023079248.png
    : D! s/ N+ m$ @, P% ^7 v; K' v

    $ S6 O* o2 _/ r2 u7 M% {" {2.7、帧结束
    % u8 w: a7 A1 v3 g3 @与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。5 p" k7 a$ Y2 r8 F$ V$ F; n
    3* c& h( a( A9 t0 ~; K0 y" z& u
    一帧CAN FD报文位数' e( h3 G5 D0 R4 N2 q& Z
    根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:& R9 e6 L; F) g$ G& e% H
    9 T) p* O2 M: S- m+ ]7 d
    CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    , Y8 }: b7 ?6 ?. W( K( r# a& E  @/ x3 t. K0 m4 [  ~
    ; ~0 _3 W/ n+ M% t% f9 T" w
    影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    : I1 N! V2 T4 D( f
  • 标准帧,数据0字节
    7 W  Q: d  a8 b( e  {+ F
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位# Q0 F' H+ |! z
  • 标准帧,数据64字节+ H. ]. a& q: {, n1 q
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位5 C7 S. P' h! C. ^9 F+ f" K5 s
  • 扩展帧,数据0字节) _) U. L9 i1 p' Q. P/ J( f
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位4 o4 X3 j; l) T% `
  • 扩展帧,数据64字节) m5 h# [# ]- i- }
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位0 M( L% l+ b1 f( l7 P' y' k
    4
    1 s9 h9 R8 C# C* w! L4 H' l精品专栏仲裁域和数据域位数6 ?- F! J' I9 K. X$ V5 a" _
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
    1 c) T& z' F, O( \. ~6 B
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    * H. v9 D: w+ i0 w0 h4 B+ N0 `, X
    7 N/ U) I3 S4 v8 j
    主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率  e9 g$ \3 x7 M, _
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
    3 E2 f1 y3 `& U" I+ `% q
    # a. z) y: L& h, _$ ^# }( f
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    . g2 q) P2 T# K) T- G5
    # K. n. e0 m2 r& e( q位填充) ^$ x8 g7 C: _; \% I% S% m& ]# I
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    ; ^0 m* j/ S5 _
    ; D3 r( d1 l: q& v$ a我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。" Q: {: M1 X4 x- }& D
    ' X4 t! e7 p0 d: ?2 I
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。
    $ |' H: q+ S/ N, ^68 @3 k+ ^0 c  j/ X
    不同类型报文位数
    # I6 i2 Q% n. C基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    ' ]. O: i) a8 t2 N
    * Z- l' \' H; @' M4 J5 J% Y4 Q5 j

    oy3eoqdeuc064023079348.png

    oy3eoqdeuc064023079348.png
    ) d% _! L% z" w, ^' I/ q

    9 H5 h' e  T/ \从上表可知:1 _: ~# x5 L. @, W' z* a
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    1 w0 M1 s# q( t4 e7 H

    3 Y' O2 m1 f+ r0 M7
    0 Z" c. Z3 u% b3 @( f& KCAN FD报文时间计算
    ; i. ?; ]# m$ q最后,可以根据波特率算出不同类型报文时间了,计算公式如下:" k# L: w. _/ D  `" j5 D! o' F

    7 G3 ?) q" h' o7 n+ |报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数
    7 T- B: g1 x2 k6 D+ `6 P
    3 d# V" E4 ?: e" m- m* q- E

    , c; {, d( s* E) X4 J/ b7 t以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。
    7 Z& d, ^2 p0 r! m3 ^* P$ O0 B9 `: q& `3 [% m/ y6 [; f: }
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。: Z9 A2 ~8 ]/ |- t; S+ q
    ( D$ Q$ W1 a0 M8 S

    3 R3 g, y+ k- ]+ G9 X下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
    ; z3 u1 k) b# ^1 E" J8 r7 ]4 g+ f3 P# ]0 |

    fbspcz3rczh64023079448.png

    fbspcz3rczh64023079448.png

    ! g# R: v7 H+ ^# s; R
    * ]- ?/ u9 {8 G( x+ Z  \; M' Z, `0 K) X% D9 b2 o- T8 ~4 `/ Y0 R

    bocu3ozk13u64023079549.png

    bocu3ozk13u64023079549.png

      i% @  ]* g4 U+ j2 i; X
    , u) Y0 N: v! O/ F. l7 k- P: p
    ; x% X/ L# U3 n1 i( X4 ^

    5v5ftubro0e64023079649.png

    5v5ftubro0e64023079649.png

    * I# t& `% f9 R1 i. s5 `% b0 S9 N6 \& g7 c! T8 k

    3 F# s) N6 v3 U, x4 s" a6 s  r) z1 ]

    gd1pfmze1mm64023079749.png

    gd1pfmze1mm64023079749.png

    ! p" {  Z1 R7 F往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM4 w- |7 Q! n) E
    CAN总线网络中为什么需要安装终端电阻?
    8 m! A  @, y) ~# _一文搞懂CAN和CAN FD总线协议
    ; z& y! r& V' P0 M, N, iCAN与CAN FD通信之间存在的问题5 n0 H' W2 d: g. O) Y
    详解CAN总线:CAN总线通信优先级机制2 ]6 n% U" e5 t9 g, H
    详解CAN总线:CAN总线故障界定与管理* }( w1 \/ A1 I, k
    - n5 Z! m, f$ K' D6 k: r

    0vfmzdsnsmp64023079849.jpg

    0vfmzdsnsmp64023079849.jpg
    5 V: ^$ s* B# v+ R

    kmvqlwlgzec64023079949.gif

    kmvqlwlgzec64023079949.gif
    8 f- z* A, ?# N- t$ @7 `
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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