电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

5fd0jsic4us64011353735.gif

5fd0jsic4us64011353735.gif
) R  K- Q" W8 \& D
点击上方蓝色字体,关注我们
+ d" b" [; E9 V0 I0 i
& j9 Q" V9 U; M( @随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。
0 E9 G7 w0 o. a: P/ m3 a1 C1 K: t- w+ ^: l3 \+ O4 V
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
1 D7 z$ R% j. n+ l! J0 h) A
9 H' T5 \8 a# x0 Z& H- m' o8 x& S, a2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
1 _' T) v  g0 i3 G, O" _6 z1! [9 \1 t" N" z1 T8 a2 B- v
什么是CAN FD?! |, B0 _* j' l; \1 n3 T6 z
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
) ]3 w# Q( x$ @: H/ J( b* S* D7 v% H. N  r
CAN FD具有以下4个主要优点:
5 f* @! ]# q* E& \/ X' R; x( V' |. d2 F6 S% `# `* L: Q+ B

% a6 v3 Y! D: Y; w! y4 s1、增加了数据的长度
& b: Q; h. {/ W" A2 zCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
% y4 P" Z7 c7 o+ o) W) Y* ^# b! s) J* m% C

. M$ D1 D! d6 w* ^( n2、增加传输的速度
% {$ `  ?4 A6 A) ~/ pCAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。
6 b* C  I: C' Q8 E+ r- [& D( ~6 f& s* p
3 |! v* d+ a) F- Q! J1 R5 r
3、更好的可靠性
8 \* x9 ?# p6 KCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。& P2 U/ W9 F& j3 R! {

# r0 _9 D7 c' [5 L% u& E( V" J
' [1 ?% \& g: |" d. o
4、平滑过渡5 P$ b0 ]$ _9 b' K
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。  k! z% ?5 B+ x: I2 K4 ?/ H, X1 R
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。1 d, G$ s3 g3 q# R3 v
2) E. b: {+ A) ^& Z8 d! E/ y; F- D
CAN FD帧结构
8 ^  a$ R% ~' f0 YCAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。
& I5 d1 X9 A# `6 _* J$ c  I7 u5 s

ytxc4r1tlsc64011353835.png

ytxc4r1tlsc64011353835.png

* a& s( }* w" B
0 T- ?( \- C& G/ W9 P& _$ _  F与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。  D7 v, d  t+ }, w2 @" c! F$ W
' h0 q! M& _* v$ Z
2.1、帧起始$ H& L( ^: v- X. H
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
4 P, j3 N$ b7 }4 k% f0 {- z/ b: W. ~9 W- U- R

udcfcfuakrv64011353935.png

udcfcfuakrv64011353935.png
% L1 b  Z6 V0 P/ M6 g! H- D( F

, j6 V8 |/ \$ t! r4 _5 p2.2、仲裁段
+ C6 m: J; j* L与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
. R" \: W' I4 U" z- ]4 O  |$ f( ~
% C- T: N6 S% R$ i. \! k9 ^

om3ewlcorey64011354035.png

om3ewlcorey64011354035.png
* w0 A0 E0 E, O+ }* H
$ Q8 v5 n3 i3 _1 S4 K5 C( X. P
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。
, F3 Y6 C1 @9 x- @9 a扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
6 {8 J, u& J& @3 A  Y$ E2 \* [
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。% Q4 f% @3 ]# t0 u+ x6 o6 h

    ' r, f' q+ [8 n  ~1 L9 g2.3、控制段" ~( p& J& L- ^" u5 E4 ]7 v7 p
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。/ K1 q) W" Q1 i0 s2 ~
  • 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)。! M" f+ U9 O% v
    ' _( ~/ z7 [( _) `* x* P5 [$ l
    ' q. J1 \- ]6 `! H! t

    qyrslpftqjd64011354135.jpg

    qyrslpftqjd64011354135.jpg

    / b' l2 B$ B( N1 T
    ! q" J& V% E7 p: A2.4、数据段 1 s$ c0 E. B! _3 Z1 m- Q* K$ U
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    % w/ J1 W. C" _8 s1 ?& e5 J% }  s
    + d4 J1 K5 R$ m) R; H( B3 c像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    6 l' n' o+ e8 \& A2 @! y  W$ G, ~

    irrukj1yut564011354236.png

    irrukj1yut564011354236.png
    $ U  h# m$ W" b3 w1 ?( f
    编辑
    * ~1 M1 u8 b5 X- ~/ x

    tk1iqvivays64011354336.png

    tk1iqvivays64011354336.png

    * H5 y3 }' ?( u( F* p2 k
    $ d( _8 F) m! b; g' v2 z: t$ W% W2.5、CRC段
    ; R  T6 J: R6 p8 j. L& V传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。2 T4 ^6 `1 R* u# E

    ; w. ^' K0 E+ L" H

    m54wpdbnjps64011354436.png

    m54wpdbnjps64011354436.png
    6 ^. u% j, D( P, w; x7 L

    - g9 J% v& }! f' ^8 a: g固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。
    ) i0 d/ R: {& q" |$ e
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。
    6 N$ D& b" e3 B2 c5 t% I1 I, E( x0 E) P

    $ G, g, F& g# b填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。' @* H1 Z- l' J7 b
    4 v, l7 [9 X: l0 t
    CRC:+ l# R- Z3 x+ C' ~
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    0 r9 \* Y4 ?# J6 K) J

    ( Z( N; U6 x) I7 ?& ^CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。! H- u0 x! f4 V9 F4 U& E, b2 g$ M
    $ t/ U2 g; }" C, b

    4gunxkk2u2i64011354536.png

    4gunxkk2u2i64011354536.png

    % ^  P9 y2 `6 h7 |0 j8 l& n, C* |$ o
    2.6、ACK段) U0 Q& M# B0 M3 r, Y8 o( e
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。# V/ J: L8 [& |  a$ ^) V
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。5 z2 Q" H5 O0 J# ?3 @

    0 M  x5 Q! Z4 _4 w5 F4 F0 Z% r2 W8 w3 c1 \) H9 ~

    o35aqmor4k164011354636.png

    o35aqmor4k164011354636.png

    7 ~' M" }& s! W" S1 y6 f; G: Y/ ^" Y+ N3 T- l
    2.7、帧结束. C# G5 O" F* a
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。9 @! L+ g$ x3 c* |+ |% @( u- V
    3
    0 a, m, N7 q" z% ]一帧CAN FD报文位数
    ) i# @" o2 w0 I! E: u- d8 M根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:' {/ \5 s. l3 `; b: o: N8 E1 ]
    6 H4 E5 C8 K- `* R  W
    CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    4 t  T$ D6 E2 F0 ?# i0 X; b. m, F/ ^8 X; R" j7 l% O7 q: Y

    # C  k+ B: [9 C6 [影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    8 u" W* Q. E9 C& K  ~
  • 标准帧,数据0字节  Z" X8 `9 A2 ^6 K; k% n8 c
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位
      b7 j2 b6 G" G7 d: h* [
  • 标准帧,数据64字节; ?- `# M; A  V$ y. _
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位8 P' Q/ C' g- g, y5 D
  • 扩展帧,数据0字节
    % Q5 [2 s/ {5 F) Q' N) y
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位
    0 y) p/ w& x0 i" l' ~/ u, J
  • 扩展帧,数据64字节
    1 Q: M/ B- Z$ `6 Z! ^, g) t
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    0 r( K* U# b$ h, T" E4
    ' R* {& L  W+ h' g+ |精品专栏仲裁域和数据域位数. P7 O1 j/ p! H4 I
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
    4 _: _, o! n/ e8 @' `
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    ' y% L. i  J  V0 g1 R# ~7 r

    ) h, t! u! x$ C$ M3 Q% F' R主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率- W1 d( S$ ~' _% a0 t# j: A
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。- W" h) c4 H! A# {
    0 k4 {7 V5 |3 D. a
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。5 p- {/ t2 V* f+ W/ e
    5
    6 M& \5 ?% A: M/ C  R7 s位填充
    . N5 |9 W5 ~- J7 y7 z当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    4 }4 _! }7 T' H9 E# t
    2 F, G% H2 k" r* o' u: k( X我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    " o0 @4 B' o% S9 `; F8 S7 Y/ J5 u7 f) U  A8 i" N1 W4 g
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。
    2 C4 |6 i( g; R0 B6' N! g. k; x! Q5 a
    不同类型报文位数! L2 I- L8 W  |  O
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    : R( x+ v/ _* f* z# |4 e/ l. Q& x% [/ V0 N9 C, a

    p015nc233mz64011354736.png

    p015nc233mz64011354736.png

    . ~- }6 Z* U: b" o
    * r8 e- l, `0 z' q- x6 {从上表可知:+ y# J; s5 u& E$ {- A
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。+ t$ J; A) W9 l+ V& w8 u" L+ Q7 v$ P1 ?

    ; ?4 p+ R& l' Y2 z4 l* ~( f' m7
    & g8 S( t9 h% d/ D( ECAN FD报文时间计算
      d% C! I/ L& b( p& h3 W最后,可以根据波特率算出不同类型报文时间了,计算公式如下:& U+ }/ \* C# K: E
    1 R) i( z8 D3 C% f5 O! g9 c
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数7 J5 Z3 }! v. I9 _/ p* ~' d/ G

    5 N! Q% p; Y( v9 C0 k7 D  b8 z( N

    3 ^( Q) ~& ]! _1 ]3 z以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。( C3 F3 g9 G1 N2 {; p) @

    $ \% d( q& e  W% ~5 u那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。* }" h6 h" {8 ~" o& y% d+ W" p, P% D8 i
    6 d* U' A0 s% T/ e+ t2 q! K  {

    + r8 }5 q6 X% }下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。. Z1 Y: O/ R9 o9 X; t" f

    ; |7 g# O2 f3 ]; D6 @, {

    uc1spznfeez64011354836.png

    uc1spznfeez64011354836.png

    , @2 a1 {% p, k9 f0 U2 _/ X) w, L: Z, Q
    : e  c/ ?/ H! E5 T1 {/ D3 _6 p$ P

    xvqfpvpqxjf64011354937.png

    xvqfpvpqxjf64011354937.png

    , `- u0 Z$ I1 L. t2 S
    ( P9 g0 m; M$ q+ K9 }, h7 ^: X& z
    + T0 p: b6 T  W# W" y$ K) s- t

    5j1wbtytli064011355037.png

    5j1wbtytli064011355037.png

    3 ]- y7 F" L! O. |5 _& }' p: i
    9 x/ {, f0 `; e& C/ G
    1 v, T$ f2 q3 h8 b  ]) T

    doo21s5ag4h64011355137.png

    doo21s5ag4h64011355137.png

    ( h& q+ U% Z* B往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    $ }) U" ]( j0 ?% @* lCAN总线网络中为什么需要安装终端电阻?8 c5 d$ I0 o( F7 F
    一文搞懂CAN和CAN FD总线协议; x: v" r2 M; ^' A4 [% Z$ @* ?
    CAN与CAN FD通信之间存在的问题
    2 G* @4 \, s9 `' \( x详解CAN总线:CAN总线通信优先级机制
    * w* w7 }% I. z3 N4 F, p1 j详解CAN总线:CAN总线故障界定与管理
    # V- e' S6 Q  {3 f. l7 e: Y; b
    & ]& ~& U7 j, }! p

    4oexc5b4qg064011355237.jpg

    4oexc5b4qg064011355237.jpg
    9 x0 n9 }+ ^# z* Y

    v3nbtnpfyyg64011355337.gif

    v3nbtnpfyyg64011355337.gif
    1 N) J! \! L7 E0 o
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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