电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

854

主题

854

帖子

8396

积分

高级会员

Rank: 5Rank: 5

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

sdxlh5hp2mi64023078346.gif

sdxlh5hp2mi64023078346.gif
* D( f, {4 e$ v: h0 i
点击上方蓝色字体,关注我们# |) W- Q3 |$ @' W; v1 C! {
9 {$ ]# f4 E$ B5 @1 p/ C4 Z! c
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。
( v$ Q, U! Q' _
( ]$ h" m: Q( Z" D$ J因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。8 F9 e, |1 N( {5 R3 y' \; E

3 X9 ?5 z4 t% n0 A# E' T2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
. l5 C7 e8 h8 Z, X3 X! U$ i1
9 b, Q/ @- d4 R+ d$ B什么是CAN FD?: ]3 j2 L, B/ P& Q
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
1 |3 T) p8 ^: ^& r; R4 g2 J
" ]: L' h7 W- C$ L$ L- OCAN FD具有以下4个主要优点:# Y- r* e: _9 [" L5 s
1 m+ B1 y  l3 `+ ^

, O* f  F5 R0 |4 Z; r  V4 y) T$ O- j1、增加了数据的长度
3 S; s+ J9 _( y3 j9 E. e) f4 rCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。) j' x8 G. c) W
1 h" v. R, \: T- `7 ]

0 G) f! {5 F' d3 D; a9 t0 g2、增加传输的速度0 C; z) M' r* C0 {/ ^0 t
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。- u% c4 W  {$ t9 r" T9 J: H

& k0 d. w* z* z6 p: J1 U
: ~/ k* P* U- c! o
3、更好的可靠性6 f. J. R4 K: [4 _7 S
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。' O, f& ?2 _: R

+ K6 Y: u9 D! s0 I) w

6 u2 c; |- e- }/ |4、平滑过渡
; Y. c2 M/ k! [. ~8 D6 I3 e9 W: y7 d在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。# {9 s8 T6 M$ h2 h. d
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
$ ~+ C' K; E5 r2 X2& Z& p% W( s8 p# s5 k7 R5 k
CAN FD帧结构
% e" t, [, j. r& q- K) QCAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。! J8 l' d) Z% s

( l4 N! ?$ V9 d1 V1 I% d

v3afzoqxqcx64023078447.png

v3afzoqxqcx64023078447.png

& n1 _- n$ l) C) S6 P9 S5 i) R. P: x
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。( y! o' m$ q9 _2 i8 i& b

6 d, g+ M- ?+ H0 S: x8 w/ V2 O2.1、帧起始- N) N+ ~4 O, @$ i, N+ a
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
" i' W+ n! L7 o/ T# _+ v4 [0 }0 m3 K9 e3 J  T

g2igutxyds164023078547.png

g2igutxyds164023078547.png
/ G  Y* w) v7 Y  j3 F" J. ]7 Z7 Q
  B4 r  Y- o' _3 b) e
2.2、仲裁段
  o" k( S" c1 R; L" M+ R与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。, R+ r! v1 P! h. z1 V- P! Y6 r
" M5 L# ^8 }* {

faqz0m3axtx64023078647.png

faqz0m3axtx64023078647.png

. B" z2 \- a, F$ @2 m+ G8 w9 X, L- k" @
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。2 m, z$ {( a* ~) _% v/ C
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
! X. a  H, G0 H! Q* E
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。- d' ]3 m* \- a, ~

    8 A$ R% f3 t1 O4 r; ?2.3、控制段
    " G; z2 E$ ^: A) o! |CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。
    * M: @2 G) u8 n& E1 {9 \2 d4 }
  • 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)。
      S3 L8 ]0 E! e: b) `/ T2 i
    # ]" E" J1 x; e

    & ]8 k: @7 z1 W) W. z

    13mbibowr3m64023078747.jpg

    13mbibowr3m64023078747.jpg
    - U$ m" t+ Y4 [+ S& U; r7 g

    : i: ^5 ?* ^* E2 m1 C2 `* J2.4、数据段 # O! @; J3 R* D& u
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    ! A! S7 S- ~( [) `# y# z' m4 J! {+ i* A
    像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。 ' N3 {- Z, Z! G) r

    . P- I3 V. W  R+ I

    3uruo2vv0zk64023078847.png

    3uruo2vv0zk64023078847.png

    $ T! g; s6 F" p; ]编辑
    ) X/ d9 e: L4 U& S/ E- V

    2psyieqqeny64023078947.png

    2psyieqqeny64023078947.png
    / U7 f) i6 b' F- L2 h1 X
    0 o' ^/ @; H; R7 h% Y
    2.5、CRC段
    * H  f' V. J. F2 _/ Y传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    + [/ o) f" G- l5 E- S: E$ P! Q6 O* ]7 |/ W+ M- u# a

    5wvqzcetprl64023079048.png

    5wvqzcetprl64023079048.png

    5 Z9 R3 ?+ S5 R6 y$ k6 ?8 U4 o7 T
    $ r, z5 V$ C8 W6 s固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。* t% Z; F* u, w4 H/ {$ C) F: \
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。
    1 I6 e5 c4 h4 N4 ]2 d

    9 m: y0 ]: O! m8 S" k7 O- Q+ p# V填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。" m$ \; x8 s# _0 g' W7 @- J) q' @
    9 l$ S4 {, a- C$ B" U  R9 b
    CRC:
    5 m2 w: l; K1 G+ ^! @
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
      W' Q% p4 D& ^
    7 J, [5 A/ F3 l6 ?4 }. \
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。
    # G. g4 v, _9 K/ R; o2 v2 G
    # N/ r. r6 d( s7 d9 y; {

    kmb3mzuhv3v64023079148.png

    kmb3mzuhv3v64023079148.png

    2 |+ V; v2 L5 a0 R5 M" u; f6 r- o4 H' }2 y$ ^
    2.6、ACK段
    0 C# [( f5 w0 e9 ^  eACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。- M" C4 n$ W# C& T& v" R0 ~
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。* U0 ~. X5 L# K
    8 \4 c0 x: L: p3 j
    6 X* w4 N2 K6 n, f8 J' X6 _

    jxyjkjblqln64023079248.png

    jxyjkjblqln64023079248.png
    " A8 O$ o6 X- S0 w. D

    + C( `# e4 U0 Z" u% t: |2.7、帧结束
    ( E4 |3 k1 }; Z9 S1 C0 _5 P7 O% b与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
      m( h8 V$ [" a) E' S8 k3& F  L: c  c9 V- k
    一帧CAN FD报文位数
    4 e9 m6 \; |( _. @0 E1 a根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:/ x3 w3 C/ R1 B# D9 Y& E( U
    * _' |  D- L4 R5 P
    CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    0 O5 g% t& d* _" I1 T( a2 }2 k9 s
    ! {3 I0 ~0 v3 E, i) w; x. @) M. V

    & y7 W( x7 a# M& i; }影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    ! z% D) w0 t' L2 u  o! K7 h/ A* D5 M8 [& v
  • 标准帧,数据0字节
    : G- ?4 Y. @2 K" N7 N
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位
    , X* W& F0 N$ c9 {
  • 标准帧,数据64字节' H* w" a* m: W+ O# B
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位5 l4 U: W0 ]8 O+ X( c: _% J& u; D. x
  • 扩展帧,数据0字节4 r) E2 x1 l* s% R2 @1 u
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位
      [1 I: N5 R9 ^, W
  • 扩展帧,数据64字节3 H9 R! r# b1 T, A" d
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    3 A2 _$ C; Z+ \# s6 q46 p" n$ Y% a* A" u$ X; C4 o% h/ }$ ^
    精品专栏仲裁域和数据域位数: B9 \. j, B5 c1 x, b1 y+ X2 \
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。: ?! H; L+ G* A" y) V0 c; m
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    3 D4 U( F9 K& d# M, p* X9 ~

    7 |+ _9 J" x& l& [3 f" p主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率' |! ]8 D0 m8 ]% K3 k/ N+ B
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
      ]- J' q+ V- [- E+ Z; l; e% [

    - `' W' h! q! n+ T* B此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    - p; L6 J' @" d- F( k3 a5
    2 p- t4 w/ y( z$ V位填充3 W6 m6 C# Y# I+ d6 T4 f
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。: U7 E8 x8 V6 e0 b
    5 @: r- T. t9 c* q
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    2 V# O, `- a. F, ?, P3 C  c5 z; x7 u) v" L- m( M+ D. H
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。1 y8 w# {8 Y; f8 J8 p
    6
    9 {$ a5 M: m5 ~; Q* q8 A不同类型报文位数
    0 X* {. T9 ^* N/ m基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    & z* S1 x# y* T% k5 c
    5 T& _3 h3 X& r

    oy3eoqdeuc064023079348.png

    oy3eoqdeuc064023079348.png
    9 C6 Z9 M& d. o7 {
    * s" A! d) o3 A( |7 w# e$ T" _1 m8 \
    从上表可知:, J& L3 j. z1 ^) z! d0 _4 m" ]
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。1 ^2 S( V; M- I9 B4 d
    9 o3 Z& Q4 \& o$ S
    7. m: r+ M* k8 n
    CAN FD报文时间计算# \! o) y7 ~- S6 y, n0 a
    最后,可以根据波特率算出不同类型报文时间了,计算公式如下:+ ~. @( _' Z$ n2 V

    ; m# b; R2 @& b报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数
    ' W2 |6 b7 f+ f* D
    + }/ }  I3 B7 O  C; j! p
    ; v( M1 J- L; c/ j. H: G
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。! C  z, y- X. Q7 O# @( M
    1 O0 L, {0 ]& P( a5 z
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。" e& \" T& J  u; F3 n, m3 l* a
    - \5 s9 n% [5 n8 c

    5 m* V: d* ?/ j+ C下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。1 o( X/ t5 a, u+ x. s7 R0 r
    & u8 R  [0 L# [7 J$ E$ x

    fbspcz3rczh64023079448.png

    fbspcz3rczh64023079448.png

    & B1 w5 a/ V8 d( Y: M0 L
    4 d1 z) X3 ^! i8 c! V# n1 Z* T8 ^. i* W' m, J; U

    bocu3ozk13u64023079549.png

    bocu3ozk13u64023079549.png
    % x" j0 A% g' n  B! S5 J6 l1 \0 H

    ; O: L3 H% i5 J+ x0 s
    + N/ P' {% g' X: A

    5v5ftubro0e64023079649.png

    5v5ftubro0e64023079649.png

    ( X. D% ?; |( Z/ }& n
    / q7 B0 S! c  p9 U8 A: d
    4 Z$ t* t* Q% U/ G- Q+ C

    gd1pfmze1mm64023079749.png

    gd1pfmze1mm64023079749.png
    : n4 q$ N6 {+ K. `7 ~! L! H
    往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    5 L; v; Z% H. J+ F" n2 vCAN总线网络中为什么需要安装终端电阻?
    # l$ W" l# ]6 u  t5 L一文搞懂CAN和CAN FD总线协议
    ' _/ E. k. N- g5 ~; z" FCAN与CAN FD通信之间存在的问题# M' p% O$ o( c' w4 D
    详解CAN总线:CAN总线通信优先级机制4 r( U2 ?/ d* b; l4 `. x/ ~' m
    详解CAN总线:CAN总线故障界定与管理
    8 R, g  X" h; q4 L/ Q7 l$ F

    1 d: P1 c0 O  U

    0vfmzdsnsmp64023079849.jpg

    0vfmzdsnsmp64023079849.jpg

    0 V3 l* h+ R3 I0 |

    kmvqlwlgzec64023079949.gif

    kmvqlwlgzec64023079949.gif
    + x0 V) g& L1 r; r( W# Z9 y
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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