|

ee3fmzviqqw640181900.gif
5 n# y3 x3 k3 \7 E( f
点击上方蓝色字体,关注我们
$ x/ ~4 X! n$ n& }: o3 v# ?8 y8 H% }+ H6 O
- o5 d5 H% `0 Y" l
在CAN总线中,实时性表现为数据传输的延迟和响应时间。
9 {- c0 F8 q4 v. J2 S/ S8 ^% z" `8 @) Y! z& H, z) X
在多节点通信中,多个设备通过同一个总线传输数据,这意味着多个消息可能会同时请求发送,进而影响总线的访问顺序和数据传输的实时性。# ?& M$ j$ T% w8 S1 x
* \' a% j( I! ~1 R& n3 d. B
j30jwimly0z640182001.png
- X& s3 G9 O* T$ s3 Z. U; e' X" _4 o4 a; K8 X
1
- } k* V# P8 f' {( w延迟的来源
. d+ A# X: U* F# c& t F2 ?9 k7 HCAN网络中的延迟主要来源于以下几个方面:1 G& P0 Q+ B; J4 W6 w. n
总线访问冲突: CAN采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)协议,允许多个设备在同一总线上争用传输权。当多个设备同时请求发送数据时,总线仲裁机制(基于优先级)会确定哪个节点先发送数据。虽然仲裁过程非常快速,但在节点数多、通信繁忙时,可能会引入一定的延迟。消息优先级: CAN总线通过消息的标识符(ID)决定消息的优先级。ID较小的消息具有较高优先级。如果低优先级消息正在传输,高优先级消息会被挂起,直到低优先级消息传输完成。这可能导致高优先级消息的延迟,尤其是在总线负荷较重时。帧长度: 数据帧的长度直接影响消息的传输时间。CAN协议的最大数据帧长度为8字节,每个数据字节的传输需要若干比特时间。此外,CAN协议的传输速率(如1Mbps)也会影响帧的传输速度。
8 R/ n* n" k; d: e t: B# G2 e' C3 X/ Y$ a3 P
2: c3 j3 l$ v1 h9 D/ [) ~
实时性要求* k5 i8 J8 b v5 U; y2 k6 Y: W
在一些关键应用中,如汽车安全系统、工业自动化等,CAN网络的实时性要求十分严格。
# H% d# H- Y9 w I" f8 ]9 v. `6 z9 H% V3 \$ C
实时性通常分为硬实时和软实时:1 @# R. d& v3 v8 X* D, `- B) f
硬实时要求: 数据必须在严格的时间窗口内传输完成,否则系统将无法正常工作(如气囊、ABS等安全系统)。软实时要求: 数据传输有一定的灵活性,延迟可以容忍,但过长的延迟可能影响系统的整体性能(如车辆娱乐系统、温度传感器等)。
6 B- ]8 S }' I- b0 T
* q- ?. L4 I& d! ~3
. ?2 b# A( }( ^延迟分析模型
1 H/ s0 m2 T% k' Z6 T为了深入了解延迟的影响,可以通过以下几个因素来分析:
; W- O; p, e: w2 h- d- U! J+ G传输延迟: 包括数据帧的传输时间、仲裁时间等。每个数据帧的传输时间可以通过以下公式计算:
5 G+ `% W% R: n( D
+ b1 t3 \( J0 [
nzkbhpjav2w640182101.png
9 W6 E. K: m' S j
其中,Lframe是数据帧的长度(以比特为单位),Rbus是总线速率(以比特每秒为单位)。- {" Q' r& {* K' ]( S
) n9 M- \4 x) L4 P
这代表了消息传输的基础延迟。0 H- @ Q) M: f+ C+ ]+ b" x& x
: s' u/ W: @+ L6 G仲裁延迟: 因为CAN采用优先级仲裁,消息的优先级和总线的负载情况会影响仲裁的延迟。在高负载情况下,低优先级消息可能需要等待较长时间才能访问总线。排队延迟: 如果多个节点同时发送消息,较低优先级的消息会被挂起,形成排队延迟。特别是当多个节点发送频繁时,可能导致高优先级消息等待较长时间。
0 x& f/ ]; I/ _5 I' ^9 R3 f9 Q( ^
0 m6 H6 M6 f: b% O% `5 V. w/ W# U4
U1 e6 \: h+ T) U, Z优化低延迟通信的策略
8 f0 ^# ~; Q' o) {为了确保CAN总线的低延迟通信,可以采取以下优化策略:9 y- H1 ?2 |1 U5 k$ R
* i' r' ~+ p2 s4 {1. 优化消息优先级. r4 z7 ~! D0 k# O/ p& L3 c" `
CAN总线使用消息标识符(ID)决定消息的优先级,ID越小,优先级越高。
5 k. @9 S3 h3 C: V% E
6 U: O/ Z4 B1 C! F1 D在设计CAN网络时,可以通过合理分配消息ID来确保重要的消息获得较高的优先级。( u" B7 l- y7 m9 a7 S/ E( q) U5 t
) l' C' N* N0 U7 v* \2 L
对于实时性要求高的应用,可以将关键控制信号分配较小的ID,确保其能够在短时间内被传输。& t9 U- [/ W) _" }) C: V) c" G
- k% u( T5 @& f7 _. }' g" T) g* L
2. 减少消息长度" ?" y* q; o4 w5 ^$ m4 k0 n
+ O! i9 w6 }2 C( r+ d$ H较长的数据帧会导致较长的传输时间,从而增加延迟。% _, p: t! c& O
3 S1 {# ~2 s) I6 i* V9 m- _在设计CAN消息时,应尽量减少数据帧的长度。$ v1 e6 `5 a( D1 ]7 a8 t! m# \# v
1 N d8 V% h) }! T如果传输的数据量较大,可以考虑将数据分割成多个较小的消息,以减少每个消息的传输时间,虽然这样会增加消息的数量,但可以减小单个消息的延迟。
7 `! f1 V& G# a0 A; W" S" Z0 Q% x' g0 {
3. 使用较高的总线速率2 M$ a" n0 T5 z+ O9 n% @8 V- }0 R
提高总线速率(如从500kbps提高到1Mbps)可以有效减少每个数据帧的传输时间,从而减少延迟。
% m' `) d/ k6 A% Z5 A& K7 f) Q, l
然而,提高总线速率可能会对信号质量和总线长度产生影响,因此在实际应用中需要平衡速率与信号稳定性。
# T" i0 E9 H: k# b& v$ c! n
" M& L& o3 \' D) |$ p/ c4. 优化节点设计* [) s+ W; i5 f. f" c
各个节点的硬件和软件设计也会影响延迟。$ M a+ {& Y% I$ W' Q2 @, v
5 {5 C9 J4 s2 E
在嵌入式系统中,节点的处理速度、内存管理、任务调度等因素都会影响消息的处理速度。
. w9 q/ ^& D: k& K' E4 [+ `
* q3 x/ n; E1 [* Z) y; h- n合理设计任务调度算法(如采用优先级调度或基于事件触发的调度机制)可以减少节点的响应时间,从而降低整体通信延迟。
5 C: I" I8 ?9 x* H, t7 _9 o5 \, ]. ^5 e2 ~1 B# C
5. 使用分布式调度策略6 X6 d2 ~" W1 a; a8 L
对于某些实时性要求较高的应用,可能需要在多个节点之间采用分布式调度策略。
- D+ p- I0 `* g/ G7 X% J. o* c* T2 B6 F( k
这种策略通过动态分配资源、调节节点发送消息的时间窗口等方法,减少总线的竞争和排队延迟。3 q, p7 r. V6 W: Z7 V
Y, [- i, |- Y; V5 {2 a; _* ~
例如,在多个节点需要发送数据的情况下,可以通过调整节点之间的发送周期,避免节点之间的消息冲突,从而减少延迟。
, S5 X2 z" j1 n& @3 C7 j+ `' U3 l
* K; X" }* ~* Y6 g' H6. 采用CAN-FD(Flexible Data-rate)) F9 k' ^$ \8 }5 G1 ~) A
CAN-FD是CAN的一个扩展版本,支持更高的数据速率和更大的数据帧。
, h9 e; |, h, C1 [& V8 C5 ]2 G8 W2 ?
CAN-FD允许每个数据帧传输更多的数据,并且能够在数据传输阶段使用更高的速率,从而提高总线的有效带宽,减少总线拥塞,降低延迟。* ~* s7 T, {0 B" R3 `6 h' |
* n# j2 o( g9 |4 a/ [/ q8 @0 R( ^
尤其对于需要传输大量数据的应用,CAN-FD能够显著提高传输效率和实时性。2 r2 E6 @" A8 P' N3 f. ^5 R( J5 y( Z) K
' K/ d, `6 [% j( C2 t* w0 a
7. 网络拓扑优化
4 N5 l+ M: P" h& L1 ?CAN总线的网络拓扑结构也会影响传输延迟。9 H8 O) H% r& I, o6 ^
尽量避免复杂的拓扑结构和长的总线线缆,以减少信号传播的延迟。
8 i2 c+ ^- u3 [8 [ |" [0 V h9 Z2 B" Y$ h) c% G8 [. ]
采用星型或总线型拓扑可以减少信号传输路径的长度,提高实时性。
G: n; O9 @ c! a3 ~
* S# E. A' a2 J8. 合理配置节点的通信周期4 _9 ?5 a7 Y8 c$ J, G$ b7 e
每个节点的通信周期决定了消息发送的频率。) Z2 B. C4 v, c( A! k( G
7 T f# r" [: L, d
通过合理配置节点的周期,可以避免频繁发送消息导致总线拥塞。0 r; P0 Y' Z) l# f
1 N, z7 R2 B. [5 }) e
对于实时性要求较高的节点,可以配置更短的周期,以确保数据尽快传输。8 q2 C2 o" Q3 \7 Z
& [* h* Y, i4 R4 ]7 t4 ?( f
对低优先级的节点,可以适当增加发送周期,以减少对总线的占用。
_0 U6 U( H" y8 K3 J
vo2nkb0updj640182201.jpg
7 M4 \- |0 m4 A" R
lnpfdqlsdtj640182301.gif
4 s) E: h, T% u+ n8 `: w) b
点击阅读原文,更精彩~ |
|