CAN总线简单讲用四根线实现通讯,+/-两根,高地位两根,四根线可多个元件共享,德国发明,用在汽车制造8 Z: ]% V* [8 \) g) ]8 b) V
CAN总线 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。; W6 c& l( U$ x i$ \# m" C O# e
CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。+ Q( A& p) D# V$ x! P9 r" q
优势编辑
: ~3 r, q! |3 QCAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
3 x6 X2 j) G# b1 t0 S9 ? m8 L网络各节点之间的数据通信实时性强
/ H3 s( x/ j% Y) X6 q1 g首先,CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;" M( z e O8 l5 f/ P* N j: O) z5 O, I
开发周期短
3 y$ {3 ^0 k: a) v, c8 cCAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。2 i2 j4 t2 n& l" J$ U' v' n. k
已形成国际标准的现场总线
5 @" B, O. z) a- r: B2 g+ R另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
' b* B8 c# g' U% Y4 s2 k7 A最有前途的现场总线之一+ n4 X; z- \% L4 X, B
CAN 即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(捷豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有:SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。) ]3 m' `6 E0 M1 \! g/ v% C
发展编辑
. n4 D! r/ z0 B- E# E控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领域推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在中国迅速普及推广。; H9 A) E, W+ y$ C& s
随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。
. C4 j. C& D f" h0 E分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将 5C技术--COMPUTER(计算机技术)、CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和 CHANGE(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。6 G) H9 N" L& X- ^; ?0 Y, ?4 I
典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。尽管对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格必将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。控制器局部网 CAN(CONTROLLER AERANETWORK)正是在这种背景下应运而生的。, {% Z' o2 e3 T) U, f
由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,1991年 9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
5 `/ V4 n3 `# a$ p/ K2 e特点编辑
5 C' T; O4 @, q/ C1 a4 ZCAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps。- x- V; C" g( z- r
完成对通信数据的成帧处理
" ?' g: K4 P. bCAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。) U" t6 Q1 c& v7 o. l# U: \' w$ E
使网络内的节点个数在理论上不受限制3 q, U$ Y, w2 a3 ]+ n
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。7 }$ K4 Y1 e/ P2 b' z, c
可在各节点之间实现自由通信 E% ]+ q) ?" ^$ g
CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数据通讯。CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式监控系统。& c3 j1 ]' }* b2 y& u
结构简单+ D- f: D m. R0 M |3 R2 ^
只有2根线与外部相连,并且内部集成了错误探测和管理模块。
$ J6 S. O' S2 `3 b传输距离和速率. L$ r5 P9 U: F* l% @1 ?: D
CAN总线特点:(1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信; (2) 多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞; (3) 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);(4) CAN总线传输介质可以是双绞线,同轴电缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。8 ^6 a. @( t" J2 Z2 `
技术介绍编辑
( a; S3 l. V0 v" u; M# j( ~2 K位仲裁
, n& _% d- c% i J& M# h- J要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。
) M# l9 y- s# y5 }+ hCAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2所示,当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。
; ?) l$ s0 l' d: M% ^CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。
, V+ A- C) g, z& ?& B) T! Y对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取 (许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。
& E6 x5 H8 p' A$ @- U# bCAN与其它通信方案的比较
- k2 P1 j2 F1 F, I/ L% o在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配(如:EthernetCSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。
v* [; b( B7 _- C% O- rCAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。
" z% [- m: W1 ^' PCAN的报文格式
% L9 H ^% T' D5 m/ K4 a在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。 N! q0 z/ u/ u7 }" X# N7 f+ I
在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
' n/ H9 q1 l. U2 E- R" q6 Q控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
7 t( X# d( l4 E应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。0 @$ U6 v, k2 x$ }5 S a
报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
( ]2 L5 Y7 z4 [CAN数据帧的组成% w4 Z; J# B, l# |& ~! E
远程帧
0 D( i- J# O- o# m t远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧不存在数据场。' N9 h% o% @1 X) w* P: Z) c
远程帧的RTR位必须是隐位。
& l3 B/ t+ ^ w& rDLC的数据值是独立的,它可以是0~8中的任何数值,为对应数据帧的数据长度。
. e' x. P8 N1 p- b0 S6 s错误帧$ W; x+ U- c3 M* V4 ^
错误帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是错误界定符
* W, }8 T# k/ r6 a8 w" u) m3 u错误标志具有两种形式:
" [: d6 Q7 @' g: R/ f活动错误标志(Active error flag),由6个连续的显位组成2 N8 c8 Y3 }$ v! J. v( y5 A
认可错误标志(Passive error flag),由6个连续的隐位组成
) N8 \ O, {1 M7 S0 d* O6 j9 o8 J错误界定符包括8个隐位
) _0 w" H+ b8 d: w! E+ B1 D5 N超载帧
) v/ W; y2 h' h超载帧包括两个位场:超载标志和超载界定符
# X9 r6 r$ ?; m' C1 }% R% J0 F9 A发送超载帧的超载条件:
/ `4 o; y8 o/ C0 Q( U% m要求延迟下一个数据帧或远程帧
" ], M4 [) i5 m' q2 |在间歇场检测到显位, |, ^- U7 e, `+ w% f
超载标志由6个显位组成4 J8 @& M+ Q4 x% y- k; B
超载界定符由8个隐位组成
' F! k% D" N: U$ w数据错误检测5 s! A* L2 T% ?4 z) D$ Q) A1 m
不同于其它总线,CAN协议不能使用应答信息。事实上,它可以将发生的任何错误用信号发出。CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。: I& j( K( K6 x
3.4.1循环冗余检查(CRC), H4 l( `8 Q; ~# c# u2 E
在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。
5 X. ~2 K+ I' j; e( w9 \" P1 `3.4.2 帧检查3 Q! E* n/ S8 ~1 O; S+ j" S
这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。# q b; M4 d1 y; K* E% Q2 n: w9 c
3.4.3.应答错误! f8 M6 e/ x" k5 e c1 F, f8 t
如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。
9 n. K1 w/ i9 u3 A3.4.4 总线检测; @! t* `/ d5 G5 E( R% u
有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。" J1 k8 }. v$ t8 ]1 w$ j y: `
3.4.5 位填充
. h2 L# H3 m6 ~' v! x% \; P一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。
" u) J( p) h$ K如果至少有一个站通过以上方法探测到 一个或多个错误,它将发送出错标志终止当前的发送。这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。当大量发送数据被终止后,发送站会自动地重新发送数据。作为规则,在探测到错误后23个位周期内重新开始发送。在特殊场合,系统的恢复时间为31个位周期。
. ?1 T: J( L7 b9 L0 {: L. K但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。因此,如果不采取自监测措施,总线系统应采用模块化设计。为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。! h. o( y5 _- Q3 u: ~! }
硬同步和重同步9 n: l8 @4 |4 ]9 k. a
硬同步只有在总线空闲状态条件下隐形位到显性位的跳变沿发生时才进行,表明报文传输开始。在硬同步之后,位时间计数器随同步段重新开始计数。硬同步强行将已发生的跳变沿置于重新开始的位时间同步段内。根据同步规则,如果某一位时间内已有一个硬同步出现,该位时间内将不会发生再同步。再同步可能导致相位缓冲段1被延长或相位缓冲段2被短。这两个相位缓冲段的延长时间或缩短时间上限由再同步跳转宽度(SJW)给定。
g, M: L# u8 Z+ r可靠性编辑
' H# B a% _5 r, ~1 E3 M# v# O* o0 i为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。
* h3 Q) f: O' j) {7 k n2 r残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么最大位错误概率为10—13数量级。例如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。换句话说,一个系统按每年365天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。[2]
7 _% b$ S4 R% n5 h0 A( z+ f应用举例编辑1 D; k" N& E# @6 H- X" J
CAN总线在工控领域主要使用低速-容错CAN即ISO11898-3标准,在汽车领域常使用500Kbps的高速CAN。
7 V; \, {; Z/ ^+ |" ?+ H某进口车型拥有,车身、舒适、多媒体等多个控制网络,其中车身控制使用CAN网络,舒适使用LIN网络,多媒体使用MOST网络,以CAN网为主网,控制发动机、变速箱、ABS等车身安全模块,并将转速、车速、油温等共享至全车,实现汽车智能化控制,如高速时自动锁闭车门,安全气囊弹出时,自动开启车门等功能。
# j. J& ^: ~! y+ e5 nCAN系统又分为高速和低速,高速CAN系统采用硬线是动力型,速度:500kbps,控制ECU、ABS等;低速CAN是舒适型,速度:125Kbps,主要控制仪表、防盗等。[3] . S! \1 e8 S' I! ~
某医院现有5台16T/H德国菲斯曼燃气锅炉,向洗衣房、制剂室、供应室、生活用水、暖气等设施提供5kg/cm2的蒸汽,全年耗用天然气1200万m3,耗用20万吨自来水。医院采用接力式方式供热,对热网进行地域性管理,分四大供热区。其中冬季暖气的用气量很大,据此设计了基于CAN现场总线的分布式锅炉蒸汽热网智能监控系统。现场应用表明:该楼宇自动化系统具有抗干扰能力强,现场组态容易,网络化程度高,人机界面友好等特点。
1 L5 q) u8 b6 V7 h( Z6 Q优点编辑
l: x8 k& M1 E废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;
" ]6 Y5 U5 Z& F2 e采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突;% w& d+ t" |4 D' S# d. E5 e
采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短;) k2 D. v8 s+ k; o/ i
每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;7 y5 N" C/ ~5 M8 n# Q) L1 v' ?/ _/ n& j
节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;/ P' s! N* x6 u, Q, d& i5 {3 {
可以点对点,一对多及广播集中方式传送和接受数据。/ U8 \0 g' R! W i- C5 h
具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
6 y, [/ v$ k/ h2 `; h采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;0 `2 A; m1 K$ U( y
具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CAN-Bus上,形成多主机局部网络;. ]$ B: g! R; K+ z. ~7 S2 X
可根据报文的ID决定接收或屏蔽该报文;
% K5 g9 I! L6 k7 O$ t9 ?1 S- I5 z# j可靠的错误处理和检错机制;
* [2 Q3 j& S& s; g) p# j) W发送的信息遭到破坏后,可自动重发;
' k) z# Z1 Q2 Z: K1 B+ v+ w节点在错误严重的情况下具有自动退出总线的功能;8 q$ Y, g0 ^4 z/ L3 w
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
. {( z, [; B/ J测试工具编辑
8 w4 j% Y) }' B3 P! D+ dCAN总线多用于工控和汽车领域,在CAN总线的开发测试阶段,需要对其拓扑结构,节点功能,网路整合等进行开发测试,需要虚拟、半虚拟、全实物仿真测试平台,并且必须测试各节点是否符合ISO11898中规定的错误响应机制等,所以CAN总线的开发需要专业的开发测试工具,并且在生产阶段也需要一批简单易用的生产线测试工具。CAN总线开发测试工具的主要供应商有ZLG、Passion IXXAT、IHR、Vector、Intrepidcs、Passion Warwick、LAIKE等。常用的开发测试工具如CANScope、CANalyst-II、Passiontech DiagRA、canAnalyser、X-Analyser、AutoCAN、CANspider,LAIKE CANTest等。- n# F# K: I& p
错误处理编辑
7 X- ~' R; s X9 I在CAN总线中存在5种错误类型,它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因及处理方法。) e! {1 h" G* G: V3 f- m& E
位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平和送出的电平不同时,则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。
2 Q' r# p$ v$ f4 |1 q- J' h填充错误:在使用位填充方法进行编码的报文中,出现了第6个连续相同的位电平时,将检 测出一个填充错误。$ C: T8 T; y. q
CRC错误:CRC序列是由发送器CRC计算的结果组成的。接收器以和发送器相同的方法计算CRC。如果计算的结果和接收到的CRC序列不同,则检测出一个CRC错误。" C/ ~% _0 K7 n3 i8 }
形式错误: 当固定形式的位区中出现一个或多个非法位时,则检测到一个形式错误。, D' {3 ~$ g+ b0 @8 G
应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。
0 d+ @7 B% T4 A% W检测到出错条件的节点通过发送错误标志进行标定。当任何节点检测出位错误、填充错误、形式错误或应答错误时,由该节点在下一位开始发送出错误标志。" s2 s( D! K( p$ Y$ x. R' _
当检测到CRC错误时。出错标志在应答界定符后面那一位开始发送.除非其他出错条件的错误标志已经开始发送。/ k& i6 T% Y+ q* @
在CAN总线中,任何一个单元可能处于下列3种故障状态之一:错误激活状态(ErrorActive)、错误认可状态(Error Passitive)和总线关闭状态(Bus off)。
- r4 P x; G% Y. y错误激活单元可以照常参和总线通信,并且当检测到错误时,送出一个活动错误标志。错误 认可节点可参和总线通信,但是不允许送出活动错误标志。当其检测到错误时,只能送出认可错 误标志,并且发送后仍为错误认可状态,直到下一次发送初始化。总线关闭状态不允许单元对总 线有任何影响。5 n8 b4 p0 t' t; M" O# W: ^5 f3 p" T
为了界定故障,在每个总线单元中都设有2个计数:发送出错计数和接收出错计数。这些 计数按照下列规则进行。) E' z4 o! T7 n/ O8 L A, y! k
(1)接收器检查出错误时,接收器错误计数器加1,除非所有检测错误是发送活动错误标志或超载标志期间的位错误。0 A" `/ }1 ]# A m% z, ]
(2)接收器在送出错误标志后的第一位检查出显性位时,错误计数器加8。' C: ?0 {# d) ~' E% p% f
(3)发送器送出一个错误标志时,发送器错误计数器加8。有两种情况例外:其一是如果发 送器为错误认可,由于未检测到显性位应答或检测到应答错误,并且在送出其认可错误标志时,未检测到显性位;另外一种情况是如果仲裁器件产生填充错误,发送器送出一个隐性位错误标志,而检测到的是显性位。除以上两种情况外,发送器错误计数器计数不改变。7 I3 v' y, w% }, i) W# W3 H
(4)发送器送出一个活动错误标志或超载标志时,检测到位错误,则发送器错误计数器加8。
+ r6 G& J7 r$ |" u# z; K6 Z' t(5)在送出活动错误标志、认可错误标志或超载错误标志后,任何节点都最多允许连续7个显性位。在检测到第11个连续显性位后,或紧随认可错误标志检测到第8个连续的显性位,以及附加的8个连续的显性位的每个序列后,每个发送器的发送错误计数都加8,并且每个接收器的接收错误计数也加8。1 v3 n9 |, v3 X% H t3 P
(6)报文成功发送后,发送错误计数减1,除非计数值已经为0。
3 D+ h+ Y8 b, _5 ^(7)报文成功发送后,如果接收错误计数处于1~197之间,则其值减1;如果接收错误计数为0,则仍保持为0;如果大于127,则将其值记为119~127之间的某个数值。
& |' M t* W2 E9 \; }+ r N/ V(8)当发送错误计数等于或大于128,或接收错误汁数等于或大于128时,节点进入错误认,可状态,节点送出一个活动错误标志。) X( y+ ` N% B, n( W% t) d, P) F
(9)当发送错误计数器大于或等于256时,节点进入总线关闭状态。+ o" U d# ?) l3 {
(1O)当发送错误计数和接收错误计数均小于或等于127时,错误认可节点再次变为错误激活节点。
$ }/ V9 w3 ^" w: c# N(11)在检测到总线上11个连续的隐性位发送128次后,总线关闭节点将变为2个错误计数器均为0的错误激活节点。' Z0 t# H( h5 b9 {- j! W
(12)当错误计数器数值大于96时,说明总线被严重干扰。
- x+ v. O+ |$ h5 l' s如果系统启动期间仅有1个节点挂在总线上,此节点发出报文后,将得不到应答,检查出错误并重复该报文,此时该节点可以变为错误认可节点,但不会因此关闭总线 |