电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

vsaznvdwyqj6406112336.gif

vsaznvdwyqj6406112336.gif
! ^$ u! e# v/ x- x$ d' j& _, M
点击上方蓝色字体,关注我们
! v# @; z$ @2 s( I  x3 q6 V% K) }
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。% S) s7 A  e1 b8 t' U0 p$ ^6 |
. |# J% x( x/ w' R+ F
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
1 \+ e& S( T% d, I" j/ z' k$ H
& z8 j( v3 f! Z4 t8 r* |2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
! x6 p( a5 o# I4 t- G13 |. j5 T9 ]8 l2 a5 V
什么是CAN FD?
/ ]3 a/ Z' l. w! lCAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
* k+ q! k8 {4 S
# T1 `6 u, y4 \$ o5 g4 yCAN FD具有以下4个主要优点:; S  q% `( q, D7 Y( D
% O9 j) \/ Y: {
. ]7 ?  E+ {( N. ?1 t
1、增加了数据的长度
) b# [( d, A. Y* SCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。$ D& o0 t' \5 x1 G
  z# Z# A+ v* K" {

8 ~4 V& B3 U! r; d2、增加传输的速度
! v& ?# R$ D1 d1 _0 m& tCAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。
$ y5 {* t$ J4 t8 u/ N$ |- r# U0 H7 B* f8 Y+ T- l0 h' A% Y9 r& k
- c: ^+ @* g  \0 K2 U! R' F
3、更好的可靠性
1 k% [/ {& }( W3 M) X2 w  LCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
# D3 }6 G' E& r; M0 l. n5 o) N1 K7 |# |3 f5 j, f3 x

0 H; y* J5 ^/ M# ~4、平滑过渡
  i7 a9 q4 O- O6 O$ `1 d: t! t. j. s在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。1 j. w  f2 D9 a# i
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。& w2 e, @" r" C- ^! P, L
27 U! p' c3 G. Q1 q/ v) s9 m
CAN FD帧结构: A. }) B3 Q' O0 R1 Y& i" Q
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。8 t- z) w( L$ A7 Q! ^- y
" e# {: U1 ^0 P: o. D

vgfl05pp5ki6406112436.png

vgfl05pp5ki6406112436.png
# x) b/ s  V0 y3 j
; _" I$ S9 S) P1 _5 M; z( I, r
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。6 `* ^5 g2 f- V: y5 k; S# v
* [/ r' Z, b) E# k
2.1、帧起始
9 I' ~2 t/ B$ ]& e$ MCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。4 w1 d  B5 C4 p$ Q  G

! q% s. h% o$ c, w) c( m1 [

iazxxsnvlhm6406112536.png

iazxxsnvlhm6406112536.png

7 @' g, u* W9 j# U; h( S3 v* X
2.2、仲裁段5 A- n" E5 U/ `4 a7 v4 W) H
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。5 G) s# l, V: F6 x9 v
  X8 z0 T. O. o; u5 m0 }* x! q

nsubajxnvjg6406112636.png

nsubajxnvjg6406112636.png

: o5 M7 c8 d4 F8 X" l: c4 s+ q" l+ Z  H( o) b" }( m
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。, U/ z6 v( j. S1 S9 ]; u
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
! h, S9 J3 h9 f; \
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。
    - W/ x( k$ H9 l  a- ]) D
    " d  K% N9 R; l* A
    2.3、控制段
    ' T; x2 j" r0 d4 a1 c- J" y: eCAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。
    % ~, o7 r" O( B& K$ a1 M' Y4 C* K* k
  • 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)。
    6 d" |! d$ W# u: s+ Z& O
    & U7 s1 P2 A% i1 h; [% o8 c) l$ W
    & E8 n& `' I% L! I

    sluxpmvpnow6406112736.jpg

    sluxpmvpnow6406112736.jpg
    * v0 D0 u1 q/ i% V1 b4 \1 d; y4 z
    : }. S; z! R. ?7 m. H6 w
    2.4、数据段
    , u: d% ?! M/ U5 m; fCAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    5 G+ ^# x0 K" B* N7 v' g- R$ s: J
    9 n& `# F8 N  u% ^像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    # ?6 E. r0 x" ~( J# e
    , ]% f- {$ L# n  [$ Y7 w0 G

    14ncgkusuei6406112836.png

    14ncgkusuei6406112836.png
    . V! U8 M  }' P+ p/ F
    编辑9 `* \( P; t/ q9 y1 e

    tbqwn41wsjd6406112937.png

    tbqwn41wsjd6406112937.png

    % G7 G7 ?# i% p
    # p' j" h, @  B% o. O2.5、CRC段9 o' A1 _! M5 y) z+ f
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    3 i5 b' {7 G- L. o# B
    ; i, x* E! M2 {7 F& n

    cv2avdi20he6406113037.png

    cv2avdi20he6406113037.png
    ; b  B: E9 ]/ L+ `9 C1 I8 O
    + i8 U4 I7 t, x6 ]: G% b
    固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。
    1 X6 V& A' M! Q5 W
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。9 d( X0 h2 S  \$ U# `! ~
    ; e3 U& C) q% v4 |6 M( q) g7 ?) a
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。. [0 Q( G, k& t8 ~( P

    5 C6 r0 K) {: ~  t% ICRC:* P- P- P7 E8 g6 r/ r; s/ Y# R
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    1 _" c5 p2 P$ r* _8 H7 I' z" v
    7 s- V+ a1 n4 |
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。5 V9 m3 W- _% o( x/ S2 c0 M& D

    $ H( E9 G( |  _0 t% I: e/ o7 G

    jvdxbtdd3ci6406113137.png

    jvdxbtdd3ci6406113137.png
    - l8 m; ]& {! ~& H* s
    * B% Q+ r: [! L2 a4 H8 t" \
    2.6、ACK段: B  |3 |; h/ c" V; f7 Q* [, u
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    6 O/ w& x0 \6 }  Z; D; i
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    ' O5 ?) Q+ d5 r# J$ K
    6 j+ y9 z9 U- ^+ B
    3 O$ a6 s# ?% v9 X! |$ `- f

    2ekjrri0udu6406113237.png

    2ekjrri0udu6406113237.png

    " U7 l4 F( a' ~3 L  I6 }, @
    ) f8 d5 Y5 `0 @/ A2.7、帧结束8 y) i& J( [2 Y" s: r) l
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。# L# ^0 c/ Z0 G) h$ ~2 \, ~
    39 i: p$ C. T& b& N# O7 Z$ C
    一帧CAN FD报文位数
    + w  b4 ~; m6 z根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:
    " g! N0 u9 t3 s6 S3 \
    4 T+ e/ H2 u9 y4 s8 K7 T) q8 j4 wCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)/ H; e. D( D, x3 I
    ( i/ D+ D! j9 u4 `! Y
    + S; M2 F) L1 m9 C8 g8 r. S4 H
    影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    ( ?" C& s2 C) n# p" o* f0 v
  • 标准帧,数据0字节' o- i3 M; _' B# H& r6 [
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位6 s1 g  g4 J5 e6 h  X' J
  • 标准帧,数据64字节
    1 v1 Y. g. E; a, B
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位* s# S8 a( e+ N# f% _; s# ~
  • 扩展帧,数据0字节8 \# u- j3 i$ v) k) p, V: [
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位: V5 D, s: ], o3 M: ?' K
  • 扩展帧,数据64字节& N! S6 R5 E, z& ]; J0 i& x* l
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    9 b- N! E' _1 i0 x' p/ B4
    - n6 y3 w4 o5 E# |1 ?精品专栏仲裁域和数据域位数8 a, W; V. N9 V( v- m
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。- q. B7 a( m# E8 ~
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    " M; m, J. m* X
    5 E3 M8 R# {3 Y3 s# {0 U
    主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率: p/ H4 v* e' {, _: w0 H
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
    ) Y9 C: D6 |' t+ c

    4 k5 t- k5 |7 \5 I# e8 K; K6 W此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    / Y. b* d! z( j. q- t) H5
    - F/ U+ \: A; I1 B5 Z. ^2 ]3 h位填充
    5 T: @0 @. h8 ~, k. S8 H当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    4 m: i, [; l+ B& [
    ; W5 t+ J! f; o! d' V我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    * y. M6 z. Z  Z0 j
    + C! o! S6 H/ y' D/ d! x/ A# f同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。
    ! L7 H- y% t' |* |# v/ J9 Y+ r* z0 W6
    1 c6 {/ ^: y9 o7 g, v8 N; x不同类型报文位数
    & t+ H4 s" x3 d  a9 d基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    % b! y* t2 p0 u  s. Y. W- [, H1 u1 D4 D! Q& r6 q

    fmdj1bho0kl6406113337.png

    fmdj1bho0kl6406113337.png
    " U# `1 U' D1 ?# m

    ; V1 r+ e4 ]3 p3 j9 ]8 x7 w/ p: x从上表可知:# l1 ^# v" d2 [: t% H2 ?( O/ Q
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。# c5 s% _8 a3 p( L

    % y  `  j% G  P. m7 h7' a: F+ v- W0 a: `8 y) y
    CAN FD报文时间计算
    : ]* R3 [) x7 b7 A, N2 o最后,可以根据波特率算出不同类型报文时间了,计算公式如下:8 b! W% [# k$ y# K' ^5 D$ H
    ) Y8 ]9 X- U3 z* J! w
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数- F  c; w, u" H4 p- U3 d

    $ u, R" j- O8 n6 ]

    ) c3 i* \+ }( ~. a以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。( ~; j1 B9 F; J' v9 m8 [/ ~
    2 j0 G' g/ j- X+ }2 V* a- }5 A1 H. S
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    1 [# `0 S  G. h& w
    % t+ n2 M4 |' [) t/ H/ E
    ! Y) {8 W8 Z* }
    下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。0 ?4 s& w! S9 d) d6 M; M

    7 Z+ N# D' ~, h3 i+ F  r

    rgut5qzr1mj6406113437.png

    rgut5qzr1mj6406113437.png

    2 j( {8 {  o2 _1 f2 K
    1 [$ q# D# w( |' }" X; a' w5 d2 O
    " ]' e; q# _' N

    lb3qithzupk6406113538.png

    lb3qithzupk6406113538.png
    5 c: s+ g% z2 t% `" M
    # @1 W9 i& I8 b# g: |) j
      |9 e1 Y: D* E: Q

    xroissy3sdc6406113638.png

    xroissy3sdc6406113638.png
    * Q4 I9 ^8 h6 `1 a# w# p

    9 Y) m  z3 N1 a4 c" w
      E0 N# `9 W6 M. L4 H

    23sshokgw2e6406113738.png

    23sshokgw2e6406113738.png

    : k8 E: S/ W% [( h4 K往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    4 V, m  Z& o( Z) D( s7 TCAN总线网络中为什么需要安装终端电阻?
    / ^% b0 G: D5 q! [1 V% H- c5 N% N一文搞懂CAN和CAN FD总线协议0 }& N0 f2 H6 P
    CAN与CAN FD通信之间存在的问题
    4 I9 n( V$ Z3 h3 z% b详解CAN总线:CAN总线通信优先级机制
      G% z8 K. N8 n3 p7 o* y( Z6 X8 e详解CAN总线:CAN总线故障界定与管理. R/ D0 s7 Q2 N- v) }# A( q' {  M

    $ |  d2 J; o5 }# D, \: N( D' \

    k5v3l5mn1ir6406113838.jpg

    k5v3l5mn1ir6406113838.jpg
    0 E$ _' H& D( K7 \

    ac4xnuwzc5k6406113938.gif

    ac4xnuwzc5k6406113938.gif
    $ @- O6 G/ N( G- v/ k5 B" T
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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