|
ee3fmzviqqw640181900.gif
' _6 T% r# O9 ]5 u# P
点击上方蓝色字体,关注我们
& O1 _3 u* U" e* t6 B- O
: M- R* C `2 e6 M7 Q6 t* S% h0 d' J9 k9 M" F4 L: |
在CAN总线中,实时性表现为数据传输的延迟和响应时间。7 S# |/ O4 u' z( F$ {! @
C* Q4 |/ \: s8 w1 P# ]
在多节点通信中,多个设备通过同一个总线传输数据,这意味着多个消息可能会同时请求发送,进而影响总线的访问顺序和数据传输的实时性。5 M& O0 x. K5 u8 z7 u& J9 f
( T5 s5 @0 O$ [4 c# i& H4 G4 P+ f
j30jwimly0z640182001.png
( a6 a, r' J6 p: M4 {5 b9 X
0 `' f6 A9 ?1 \2 ?2 i11 k. M, d2 N! Q# Z: _" X
延迟的来源
4 [5 N$ L5 E& E zCAN网络中的延迟主要来源于以下几个方面:
2 a1 j, l+ V! o9 V7 z- O0 ~总线访问冲突: CAN采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)协议,允许多个设备在同一总线上争用传输权。当多个设备同时请求发送数据时,总线仲裁机制(基于优先级)会确定哪个节点先发送数据。虽然仲裁过程非常快速,但在节点数多、通信繁忙时,可能会引入一定的延迟。消息优先级: CAN总线通过消息的标识符(ID)决定消息的优先级。ID较小的消息具有较高优先级。如果低优先级消息正在传输,高优先级消息会被挂起,直到低优先级消息传输完成。这可能导致高优先级消息的延迟,尤其是在总线负荷较重时。帧长度: 数据帧的长度直接影响消息的传输时间。CAN协议的最大数据帧长度为8字节,每个数据字节的传输需要若干比特时间。此外,CAN协议的传输速率(如1Mbps)也会影响帧的传输速度。1 ]9 W! P. X/ O
' d3 j+ ]- y) I% ]: Q( d8 d
2! R, r' |1 U% z2 |/ K+ e* r' v, }
实时性要求
* R/ @0 L$ ]) r在一些关键应用中,如汽车安全系统、工业自动化等,CAN网络的实时性要求十分严格。: C9 W, g$ U$ J5 B
* @6 K P# {5 a/ U) T实时性通常分为硬实时和软实时:3 f; i: ]- ^- q& O" P( R
硬实时要求: 数据必须在严格的时间窗口内传输完成,否则系统将无法正常工作(如气囊、ABS等安全系统)。软实时要求: 数据传输有一定的灵活性,延迟可以容忍,但过长的延迟可能影响系统的整体性能(如车辆娱乐系统、温度传感器等)。
6 R. X6 p7 b- l9 z3 f( b
! V; M2 `. {2 l* e* ]. s1 U3' Y! l3 P9 }2 @9 N
延迟分析模型
4 @* {0 i' T( O* v' @2 U2 s: f为了深入了解延迟的影响,可以通过以下几个因素来分析:* }# [4 ^% @* T' `9 A- c# J3 \, m
传输延迟: 包括数据帧的传输时间、仲裁时间等。每个数据帧的传输时间可以通过以下公式计算:
# _5 e0 B' ~2 R2 G
z) j: r n1 R5 e1 U/ [8 r) k$ M- M
nzkbhpjav2w640182101.png
; S2 o+ A* [, R# N0 ~0 X
其中,Lframe是数据帧的长度(以比特为单位),Rbus是总线速率(以比特每秒为单位)。
* P: z! f& B1 K; {% s
" D y& p8 F1 Z. S5 z5 T这代表了消息传输的基础延迟。" W+ t: `: {% q" f f' c
% Q' L5 v" [2 Q% Y" n仲裁延迟: 因为CAN采用优先级仲裁,消息的优先级和总线的负载情况会影响仲裁的延迟。在高负载情况下,低优先级消息可能需要等待较长时间才能访问总线。排队延迟: 如果多个节点同时发送消息,较低优先级的消息会被挂起,形成排队延迟。特别是当多个节点发送频繁时,可能导致高优先级消息等待较长时间。) r& P- w! N, g( Q+ V
( X$ u) H% L+ u B0 _7 Y2 j1 J! F
4
2 U$ L+ j- s& s7 I! X优化低延迟通信的策略
^" R- ?0 I7 f/ e4 O; n9 c$ f% z6 h为了确保CAN总线的低延迟通信,可以采取以下优化策略:3 O# d s" z9 n6 F3 x* n% l" a
( ~* `+ x; k# S
1. 优化消息优先级0 x7 ^! O6 Q4 I# r5 S( V' H' t
CAN总线使用消息标识符(ID)决定消息的优先级,ID越小,优先级越高。
. u- U: Z8 a, s: I2 k4 n B6 ?- i; Y- s9 Y
在设计CAN网络时,可以通过合理分配消息ID来确保重要的消息获得较高的优先级。
6 g$ x1 R P) @8 U2 m+ _
9 ], C% ?, n+ B对于实时性要求高的应用,可以将关键控制信号分配较小的ID,确保其能够在短时间内被传输。
( |" T& P4 _! s; {4 r+ b7 h
. G8 ?' k1 p: ^" ]- F g2. 减少消息长度 ?% _4 K$ ^& o7 ]5 Y6 V
3 W# i3 S$ z- h
较长的数据帧会导致较长的传输时间,从而增加延迟。
+ K2 i8 T8 n, M7 w" J; r: M- u5 i9 \: P+ p0 {1 m5 C
在设计CAN消息时,应尽量减少数据帧的长度。; E/ ^/ d% Z3 g8 S1 J a; m5 f- D
7 N9 q6 i2 R0 b3 U
如果传输的数据量较大,可以考虑将数据分割成多个较小的消息,以减少每个消息的传输时间,虽然这样会增加消息的数量,但可以减小单个消息的延迟。
6 {. t, p2 ~/ I% j5 k E9 K [/ h. ~$ l; q" A+ L
3. 使用较高的总线速率
4 W0 F; @. N7 o, h$ w" C+ c7 P提高总线速率(如从500kbps提高到1Mbps)可以有效减少每个数据帧的传输时间,从而减少延迟。
5 ?" r2 Z& ]" B6 L' i0 c
9 P8 }1 Q4 V; t然而,提高总线速率可能会对信号质量和总线长度产生影响,因此在实际应用中需要平衡速率与信号稳定性。
1 e: B, ]! X! }+ N: a* x' Y" g1 Z0 i; L- U8 @- e
4. 优化节点设计: i7 w: {5 T0 s& S( U
各个节点的硬件和软件设计也会影响延迟。
# u3 q) x+ W3 F- W! |6 r
5 R& t f6 d- L: Q" _! }+ e7 P3 S在嵌入式系统中,节点的处理速度、内存管理、任务调度等因素都会影响消息的处理速度。5 R( r8 G' X6 A# X: o1 m
$ c' o0 l% D0 T+ w
合理设计任务调度算法(如采用优先级调度或基于事件触发的调度机制)可以减少节点的响应时间,从而降低整体通信延迟。
- o2 @/ g, Q% G, O1 g7 M7 C$ G4 S; Z: Q- n
5. 使用分布式调度策略 b: l9 r% M5 a( p
对于某些实时性要求较高的应用,可能需要在多个节点之间采用分布式调度策略。: ]# M% Z% b8 l8 ]9 N$ E
+ [6 g0 v7 n( p& f) X这种策略通过动态分配资源、调节节点发送消息的时间窗口等方法,减少总线的竞争和排队延迟。1 [* A5 P7 T$ h7 @. J
8 {, G3 O% V! K3 \+ q
例如,在多个节点需要发送数据的情况下,可以通过调整节点之间的发送周期,避免节点之间的消息冲突,从而减少延迟。3 t* Z; F- v" V$ o
/ A b5 u: }9 S K& `, v6. 采用CAN-FD(Flexible Data-rate)4 P% h$ ^; g) W( j8 _
CAN-FD是CAN的一个扩展版本,支持更高的数据速率和更大的数据帧。
8 X9 `5 g, G( F0 T6 Q! z% O5 E1 H7 N& X9 U& p
CAN-FD允许每个数据帧传输更多的数据,并且能够在数据传输阶段使用更高的速率,从而提高总线的有效带宽,减少总线拥塞,降低延迟。
% F# X) B" I8 N+ j
" p @" C9 `) w2 e* R6 `( `尤其对于需要传输大量数据的应用,CAN-FD能够显著提高传输效率和实时性。0 R1 Y4 F9 d. K5 i/ U' V8 Z
1 v8 g$ c% ^! V" z/ Q7. 网络拓扑优化
& Q6 S" u# i. f1 ~3 U9 w p: NCAN总线的网络拓扑结构也会影响传输延迟。$ d" n# p8 S. Q6 W9 c* ?, p
尽量避免复杂的拓扑结构和长的总线线缆,以减少信号传播的延迟。& {; i* p& b5 V" k" g
/ f- N/ Q4 @) l! x7 s
采用星型或总线型拓扑可以减少信号传输路径的长度,提高实时性。
, C2 z0 g7 o: P5 L+ M+ H3 O& S# T$ v. I% n7 |
8. 合理配置节点的通信周期9 @, P7 {6 D |! X& F" a$ x0 F5 r) p
每个节点的通信周期决定了消息发送的频率。% \; N* b. y2 k) a+ C' U
S/ ?$ E C; l. l
通过合理配置节点的周期,可以避免频繁发送消息导致总线拥塞。/ J- j) _6 ^ S# G8 ^/ @8 _" P$ M. o
# O+ B' z! W4 ]: |对于实时性要求较高的节点,可以配置更短的周期,以确保数据尽快传输。+ A1 @& V% [* d4 b( m; @% P
+ t6 S9 W7 V* t
对低优先级的节点,可以适当增加发送周期,以减少对总线的占用。 S* z0 p8 h3 G! y& M2 ^
vo2nkb0updj640182201.jpg
3 @+ w4 I& _+ c- |, p( s# y0 U* g5 e! t
lnpfdqlsdtj640182301.gif
$ q e& s8 u# {+ Y0 v! x点击阅读原文,更精彩~ |
|