电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

5fd0jsic4us64011353735.gif

5fd0jsic4us64011353735.gif

0 b( Y4 S0 D( z  k' i2 c6 {" \点击上方蓝色字体,关注我们, [: Z* q% S3 X/ P, }% f

& d" A3 Z- V: k1 [: o) a随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。
& x* P8 W& J6 M& I3 R' {; U/ O7 _! h7 H
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
0 W8 ]6 }$ }; O* m( D  O0 u& E' O. ?; l# ^+ g" \5 |
2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
+ r' [- x3 l8 d8 K% N; I/ `1
# i5 {5 _& S2 @' W  D. g什么是CAN FD?- ?: o6 B# k" Y; H
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。1 b9 j- G2 |+ t/ f! S+ g" m! u' r
6 q& Q' @! {8 P% k% Z- y
CAN FD具有以下4个主要优点:, L5 i* u, J$ D" z" g
8 |' m, V5 o! a+ j) t* U! v

( c+ m* U2 g$ i  [1、增加了数据的长度; B4 _2 x, v2 ^+ _) n7 R6 M
CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
2 x, x/ ^2 t/ j# ?/ N( Q0 k+ H  n, b4 {
- j! P; u9 l! g& q9 D- C
2、增加传输的速度' w6 a7 ]& D! A- q2 ~. y. z
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。
8 S: C  G' u4 h( m' O; D: l  [  h
" a0 t2 S9 x# `. H
3、更好的可靠性
$ e. _, o: W  X& L0 x( JCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
' \* H# F$ ]5 H4 ^& r4 |6 B/ O# N4 S5 w0 ]  K7 q

2 j* W3 ^, ~9 o- t" y4、平滑过渡0 n" C- [9 A7 h0 F/ g+ A% ?
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。
/ f2 s# F! t) B$ W- a; i- W实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。) L! O2 U/ {3 P( ?8 k& l
2
3 K/ A- S( p( Q& LCAN FD帧结构8 A1 r, S! S* x
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。" {+ E) j$ o3 a) S; Y+ D" y6 V9 W( o
# Z7 L( G" @3 x8 X

ytxc4r1tlsc64011353835.png

ytxc4r1tlsc64011353835.png
: H( g" k# I6 B: O9 |

- K: v1 {8 h7 S( @5 w9 ?与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
+ t4 q( J% I" r  k& b7 U5 `- R
1 b+ C( F. `4 B- d; q% E) M2 T' u2.1、帧起始
, P( ?! J/ r# z) eCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。( `, Z3 G, M' o4 V
- n* C8 J  z# A4 t6 V& z) M3 C

udcfcfuakrv64011353935.png

udcfcfuakrv64011353935.png

6 A" y6 g1 \$ `# B4 z, ^' M. h6 g# V2 i( p9 f. S5 j
2.2、仲裁段& k5 u' d/ a" _/ G
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。3 p* K; f- H7 o/ e& j: J0 T9 B
$ N1 e! u7 n; a+ m) N9 _

om3ewlcorey64011354035.png

om3ewlcorey64011354035.png
7 @0 J- _( R" e

1 k1 v9 h( q. ]* H  u标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。
; {$ _/ K6 L) n0 k! j( I扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
. p9 ~  p3 k$ N
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。, u* J- E8 H* N, i
    6 a* H+ ~1 S9 p. q
    2.3、控制段4 X2 B# R7 |+ A1 F, O" b$ P. m  T# W6 s
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。. j( ?( L3 @/ _
  • 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)。
    4 P% Z) ~1 d: y0 k; V; s( g
    7 u$ l* F4 `% c
    $ q8 ^9 P; {/ W* w8 {% u

    qyrslpftqjd64011354135.jpg

    qyrslpftqjd64011354135.jpg

    ; {! R% A0 R8 w4 Q- f
    - p( N( m- y# [2.4、数据段
    & ]5 W* i5 ]7 ]0 G- B/ ?0 YCAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。. m* t6 T; c: {7 w) A

    ! \2 D( F2 K0 K像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    4 d8 j* j8 I; O# K1 n1 S$ o8 h# E7 S  `' @

    irrukj1yut564011354236.png

    irrukj1yut564011354236.png

    ) e/ F2 b/ i( |* n编辑, U3 j4 E" }, j. @5 E7 D- m

    tk1iqvivays64011354336.png

    tk1iqvivays64011354336.png

    ( f& T0 N' H  \/ Q4 g0 v" }* \) {4 G' p
    2.5、CRC段# [# C2 D$ m1 g
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。: V3 z5 w$ y$ R; t% |  f7 S
    & t  _( S# k. P8 l; ?$ q0 M+ O% [

    m54wpdbnjps64011354436.png

    m54wpdbnjps64011354436.png

    6 F  D0 m0 H- \8 B! v7 f2 }# ]* P9 Z& B
    固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。1 S% |/ L; w7 ~4 Z! D
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。. h5 s6 N' A$ B' O' m% H& g$ ]
    % h4 w8 w, N  d3 F
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。$ O6 b; a1 x1 F  e( h
    9 _( I8 f; f. l; z
    CRC:' D" u% T1 }$ ]& P
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
      O) J: u4 n4 ^& S- c

    * w+ n* ]/ Y4 E" tCRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。
    7 [5 z* A4 S# g0 z5 |: w
    0 ?; i1 P/ L, C* k. y6 _

    4gunxkk2u2i64011354536.png

    4gunxkk2u2i64011354536.png

    9 }1 ?: n, z2 {) n7 q6 o6 B+ _1 |" B) h2 W5 c3 N1 H! K# F
    2.6、ACK段# d- o0 ]* W. h0 }
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    , b0 Y# `" B+ I) z3 B" W1 R. g
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。0 D$ o+ i: m8 b) X0 \
    , l/ U/ h& M6 ^7 N

    3 G5 G0 U: q) U2 \- {( z% Y- J! P! u

    o35aqmor4k164011354636.png

    o35aqmor4k164011354636.png
    ' C% e* t- q8 i* G: G/ U
    " w6 }) z3 l) J8 b
    2.7、帧结束
    5 [6 C$ M( L3 Q与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。  j3 _1 a  T6 o) U
    3
    ! n( W. @& h# d0 L一帧CAN FD报文位数! ?; x5 L5 \$ ?# r3 f$ A4 x
    根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:3 e% a6 v; G5 I: z" _5 h7 q  W
    , N! c" p, ~  \. H4 K* S
    CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    # L! [+ V9 m0 q' X; k! `
    " ~) ]: {/ I7 G2 \, u: W7 ?
      p1 e' M) {! m' D
    影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:! ~1 A; g" R, `1 }1 c9 H# K  V
  • 标准帧,数据0字节
    8 _1 z( _. [! w0 G: C( R
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位
    ' C# ~0 o( R4 l, ^' F# N# x3 `
  • 标准帧,数据64字节
    $ I/ G; l" b* c- }9 Q8 V& B
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位
    : J& i( @1 k- g) T9 Z: m
  • 扩展帧,数据0字节
    ) U5 g! v: X0 }( F# L0 x
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位7 j, N3 \; s" S6 v3 \: L9 _
  • 扩展帧,数据64字节
    & Q( @6 m7 S4 Y5 W/ ?8 G* A
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位1 c9 M2 g& W+ Z! P8 }2 v' c* C$ v
    4
    6 ?, ?  I6 p2 A+ W# J# `精品专栏仲裁域和数据域位数3 M' E# v. @: N6 q+ V4 k. t+ A
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
    4 b& z+ t" k* A- }
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    8 z3 L& B5 h/ C( H) @# g
    " _5 D8 p' A# b3 d3 S+ e/ \
    主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率+ I5 k7 q: G$ J! ~" |) m4 V9 e5 i
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
    ( |! ?7 Q1 r+ f, W

    6 f: v; w' u9 z! A此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。% d7 L4 q8 Q, ]3 R5 b
    5$ J7 C3 X% t6 v1 {4 p. l, X
    位填充: U- c% I% {. P% G/ j6 a$ U5 g3 ~
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。) }* Q/ C& q0 y/ M# ?
    1 [. e( Z8 N+ S1 d$ M  J
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    5 T' p: N1 q6 d8 d& h
    1 b  x! d. _9 ]$ d- e同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。4 g3 A% c! y4 N0 Y4 r
    61 A5 Q+ y5 Y# f- a2 F
    不同类型报文位数" X" ^9 o# R7 e
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:' o/ `7 H* }9 l1 ^2 m
    . `9 `7 Y! u4 p) _" V

    p015nc233mz64011354736.png

    p015nc233mz64011354736.png

    " z0 g2 S+ H5 I# G/ v+ `# _, V* d: r: t: y. D' e
    从上表可知:
    5 P. n7 J( g- o9 x
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    ' _1 j! ?7 M! Y& O' Y1 U2 Y
    " ?  j% h! k6 t7 Z6 k* ?
    7
      Y7 J" R2 B9 _CAN FD报文时间计算+ }: ]* Y& }4 _  `. w1 }
    最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    % P7 r5 [! u( U3 N1 \6 O4 G* s: F# A  V  b2 W
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数
    7 y/ R/ W, d0 e, ]7 ?: P2 ~2 T  E$ m  [" M9 e; p2 u4 X. z  u
    + K) S. U% C7 L- K$ E' T
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。4 S5 V3 c. r, B. i# N

    ; O2 O1 W. F2 x# r7 o那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    ) O4 B2 N" g8 L- G1 u. J6 F  g, D9 W7 W$ ~

    " }+ b8 H* A2 J  m/ a下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。; b  D; o2 e: `+ B% _. @

    # s' X9 `9 x2 K  P3 r/ Z

    uc1spznfeez64011354836.png

    uc1spznfeez64011354836.png

    ! ~3 K& D, O' s" n- }1 E1 w4 ~
    9 s% N: x: V# X  `3 M) Q2 P7 b* ^9 K3 {# y

    xvqfpvpqxjf64011354937.png

    xvqfpvpqxjf64011354937.png

    ; C, T) E! m) r4 k/ @' V
    3 \7 |3 y4 ~4 k* ~$ l3 z2 z% q4 o! u! j" C$ K

    5j1wbtytli064011355037.png

    5j1wbtytli064011355037.png

    $ i6 N  J9 w' J( e7 z9 v
    . ?6 G; g6 T1 m9 A+ R/ n- F. u2 {. `$ W" W, F9 ^; e" W' g$ ^

    doo21s5ag4h64011355137.png

    doo21s5ag4h64011355137.png

    ( l) P( g) R  i4 F% G, Y往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    9 d1 `# {1 d2 Z  uCAN总线网络中为什么需要安装终端电阻?
    4 y2 Y+ J# ^! ?7 c: `0 @+ A一文搞懂CAN和CAN FD总线协议
    ( g' n% v( K* t. F! p: r9 }! Z- jCAN与CAN FD通信之间存在的问题, ~( k4 q8 w5 M. p' G6 E
    详解CAN总线:CAN总线通信优先级机制, O2 {2 |1 g5 q0 u6 U
    详解CAN总线:CAN总线故障界定与管理* z) C& R! A& y1 \
    - w8 P& _5 O% d* {

    4oexc5b4qg064011355237.jpg

    4oexc5b4qg064011355237.jpg
    ) z9 ?+ x& N( z2 y2 ?

    v3nbtnpfyyg64011355337.gif

    v3nbtnpfyyg64011355337.gif
      T: O+ ?. ?2 v  u
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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