EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
总线故障 " W( |1 `2 c y3 |/ a$ q5 C9 {" T0 u: ?( S2 L! G
CAN总线故障的原因多种多样,如节点发送周期异常、节点掉线甚至整条总线被拖垮。一个故障节点或者隐患节点往往会危害到整个产品的安全,如新能源车的控制总线中,故障节点导致仪表盘数据更新滞后、显示错误导致司机判断错误引发道路安全事故。
7 ?, b O$ w! [/ y" f% K2 T( F6 c& ~7 `0 k+ R$ ]! R- t: p, R* g% O- ^1 P6 [
图1 总线故障案例 * N9 R: }, A. b" i8 C. d. r. P) b
1 ?% |2 y/ S$ n- b& V* k; F; n$ M4 h, I
9 `9 i3 d# }: W- w1 T- M0 I, W6 h
& {" f5 r& E" T' i方法一:将CAN节点一个一个往总线上接,每接一个节点后观察、测试总线通信状况。该方法相信是绝大多数现场应用工程师都有尝试,往往可以零成本揪出问题节点。以上方法虽然非常简单,但弊端也很多。其一,当总线节点过多或者总线布线复杂时往往使工程师抓狂;其二,假如故障原因是各节点容抗、阻抗控制不好导致的,往往多个节点的累积效应才导致问题出现,因此最后一个挂上去且总线出问题的节点不可避免要“背锅”。 7 t! d! b; T0 z+ u' e$ r1 p1 z1 W6 s' A! b% d( p V8 s# W- y
- B( E, R. p. P6 d
" i, {0 R, g0 y6 _( o4 x图2 节点依次接入总线
* u9 ?* Y K5 X: D3 V8 P" F$ z1 @9 T/ m% } N( u
5 S G( L# P1 ?" ` 3 {# {# O% C( i* G5 W3 |1 E3 |( B* G
方法二:根据特征电平判断错误原因。从波形上对通信错误的诊断往往是最直接、高效的,但这依赖丰富的现场经验,笔者此处列举几个CAN波形案例供参考。
9 j, \6 z; ^# A" c$ C2 y: ]/ o7 z) g( `- V- }- ~! a6 d9 `) o! m, W8 [
% E K4 ^1 T; j) e
图3错误帧是在帧结束位置出现电平台阶。此错误由主动错误标志+错误标志叠加而成,二次抬高的是?6?个连续显性电平,因某节点错误后全局通知,各节点错误标志叠加造成的。通常,当节点受较强的电磁场干扰后易发生此类错误,如变频器、逆变器、电机等功率器件。此时,我们亦可配合FFT分析工具分析干扰频点,以此定位到干扰源并屏蔽它,如图4。 - q( r* ]( m" m, p) I* B# @
6 A% m4 g6 Q) C! _, G I
图3 帧结束波形台阶 F6 z+ }* u$ e% C. O- M0 O% m& [+ p
. O" N8 Q5 n& E图4 FFT分析干扰频点 # G" \9 {0 s0 @( W
6 h$ K* N" _6 K8 n3 r2 B, @- l( B# a, ]- c F; i" X X* q+ `
# W- K6 Y! \9 d7 P- _ # U/ {& c8 M4 h4 {3 U; Y; o, ?
图5错误帧波形边沿出现抖动,此错误一般是长分支导致。在一字型总线网络拓扑布线完整且两端各匹配120欧终端电阻情况下,为了再将远端新节点接入网络使用一根较长通信线直接接入CAN网络,此节点将带来长分支问题。一般地,长分支仍需要做阻抗匹配,更好的方式是从两端延长通信线接上该节点,仍“手挽手”保持一字型网络拓扑。 ' _2 o% e0 {8 h5 y- g
6 M9 U" h+ L, }- A; i' D
8 r8 q9 D1 u* o7 W图5 长分支导致边沿抖动
+ m0 f. t6 S+ a' A j9 Q2 t7 W1 d+ ]+ [7 ~! W! U7 l e! q: I) z5 w, h. _
/ m9 T8 D; A# T
9 |' o' m$ Z( ~/ R图6波特率异常(位宽度从2us突然变成1.6us),导致位错误引起错误帧。位宽的不稳定是波特率不稳定导致的,最有可能的原因是晶振问题,建议更换晶振测试。
' B8 Z4 L5 s: |" h2 Y6 M
" e: q; k' M2 l# N" _1 W图6 波特率偏差引起错误帧 2 E& M+ A2 R- [# e+ ^
! ]) T: C( C" s/ Q1 ?4 B; [ # I1 p8 s2 i" G% M& z( b/ }$ X: ~# X y& M! X
方法三:使用CAN转换器或接口类产品辅助排查。简单的故障排查一般我们采用USBCAN卡解决,通过抓取总线上的报文分析故障节点。极端情况下,一个故障节点往往能直接拖垮一个总线,总线上将无任何数据,此时怎么通过抓取报文解决问题呢?通过一个多路的CAN集线器能解决以上问题。CAN集线器的每个CAN接口都是一个独立的CAN节点,一路CAN的严重故障不会导致所有节点不能进行数据收发,此时不能正常发出数据的节点可判定为故障节点。 5 }5 I1 @; [/ z4 C
1 b& T& Y* }8 d. P8 b" p2 ^4 Y7 h9 c. h4 F
3 ~7 w$ j$ O, i% Z6 O3 x0 M6 y; j图7 CANHUB提供8路独立CAN网络 2 t% n3 I* c3 [3 l- W
1 Y6 Q1 ?" L0 y! M1 p1 }1 } 8 g0 r1 v0 J; Z3 `
4 C( G$ j3 Q7 ^
# n* I+ k" D% p2 `# D以上内容为工程师呈现几种常用的CAN总线故障定位方法,从便捷、成本、高效方面考虑,笔者优先推荐方法三。此外,CAN集线器也兼顾中继器、信号放大器的作用,把多个节点拆分到不同独立的CAN总线上能消除负载集中,有效减小总线故障的发生。若您有更好的CAN总线故障排查方法可在文章下方留言,与广大工程师交流分享。 2 x3 M) m1 }& z0 @$ i
0 ^+ A, m% M$ b: k$ D# \6 x% I- k2 Z/ }5 }2 R+ g
图8 CANHub-AS8应用实例
8 T9 X8 W5 L. s, @6 m2 Q' V4 P; P4 L+ L9 p& u: r8 r& _( a
( g S, E+ P3 e; f" l$ Q |