CAN 协议具有以下特点。
* N: v$ [. V l' I(1) 多主控制( `! B( a" j) m8 O: ~
在总线空闲时,所有的单元都可开始发送消息(多主控制)。% ]: g6 s0 \& C: G& B' d
最先访问总线的单元可获得发送权(CSMA/CA 方式*1)。
2 L m5 r* s4 |) D: I! B多个单元同时开始发送时,发送高优先级ID 消息的单元可获得发送权。
D$ k& X6 s& j6 y( r/ \(2) 消息的发送: \, ?( c! D0 U2 H# d
在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新/ Z9 s, l+ A7 `3 o: H' P0 w
消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不
( g; Z# R3 b+ m" I% ]是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消
- h3 f; G( {$ w* U f" P/ h息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的' n' ]' i% X$ [. N/ @( W6 @, m4 ?; g+ u* Q
单元则立刻停止发送而进行接收工作。
/ ?% } e* G( L8 s2 N9 T6 w(3) 系统的柔软性& _; n3 z* C6 }& D
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬7 w2 C3 | {& D. ^) w
件及应用层都不需要改变。
. l: }: V/ G3 e/ s' o(4) 通信速度
: E8 R; W( M/ F1 d) O; Y根据整个网络的规模,可设定适合的通信速度。% |" E3 A, f2 E; U; N7 G* k
在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元
7 e) L. r3 l6 p) b, M) Q也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。+ e, @( Q/ G) Q {) l+ ]: \# v- _$ A
(5) 远程数据请求
* L+ J$ |6 p4 |可通过发送“遥控帧” 请求其他单元发送数据。
! h9 R* P- V4 T! V& M' W(6) 错误检测功能•错误通知功能•错误恢复功能4 F: D: {) m3 j: F; S3 G6 ~
所有的单元都可以检测错误(错误检测功能)。
3 v" K' P) l( q检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
1 O. X5 Q$ }) [' K, k正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送$ |1 ` G M/ n9 c4 e# y
此消息直到成功发送为止(错误恢复功能)。
f4 ]3 Q, u- y9 K(7) 故障封闭( V/ D' s6 `) Q7 A1 j: Y; N
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部
3 j/ p; t" k7 y% J4 \* [) h! G故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上& R1 E# V' j% e
隔离出去。
8 J: t2 Y/ X5 S$ I7 f! f+ ?(8) 连接
2 U1 S1 ?0 i: YCAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元: E7 E1 t, \1 ~2 @/ K5 B
数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。3 N* V( M& M8 E! Z
|