CAN 协议具有以下特点。
% I" `4 F7 A+ N V(1) 多主控制
7 x x1 e. k; \) t$ m: w* f在总线空闲时,所有的单元都可开始发送消息(多主控制)。
- N ]$ |# @" t7 y' C最先访问总线的单元可获得发送权(CSMA/CA 方式*1)。
# h. B/ f% i2 Q1 b多个单元同时开始发送时,发送高优先级ID 消息的单元可获得发送权。
, S# @3 S* ?& B; x(2) 消息的发送/ v ^0 m1 L/ @9 Y% N6 ?
在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新
. N- w6 w8 R. h5 d t消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不
3 z% C i5 W; T是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消; V! |" L/ ^1 e& x
息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的" W* D( A8 t0 ]
单元则立刻停止发送而进行接收工作。+ e# Z3 n) ^4 U
(3) 系统的柔软性
4 J c: x) A4 h+ i% v: X, o与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬
* _# c8 r5 J! F4 b) y+ p件及应用层都不需要改变。( ^3 A( L7 n5 Q! g( V2 v
(4) 通信速度
' T* Q( Y( | I. j0 m V根据整个网络的规模,可设定适合的通信速度。- L; O. b# d, ~! G, |
在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元
2 O/ O% w0 N0 F5 m也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。2 K4 d$ m- ?1 O8 F( M
(5) 远程数据请求
+ u" @: g* s* G8 w. o. m9 G可通过发送“遥控帧” 请求其他单元发送数据。, X' }+ G* W! J: K: {2 A
(6) 错误检测功能•错误通知功能•错误恢复功能; N# Q, a u" O$ o4 p
所有的单元都可以检测错误(错误检测功能)。
2 O9 A, l: X2 m) _检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。" }* o; Q% s* ]8 x
正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送
7 `0 |7 H$ i* p1 V# F3 C& A7 l* w m此消息直到成功发送为止(错误恢复功能)。
3 V- x! B: Z# g$ u4 N(7) 故障封闭, g0 r1 M) [' O3 m: i8 a7 Q4 f
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部$ _' g; m6 }( K
故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上
5 C* b3 N% h; X* h! T隔离出去。
7 ?& A* _0 }( D8 `(8) 连接) `8 D. J7 t, f& [# U
CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元
5 T/ a9 p" S6 G- \% E3 H数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。
' t5 ?2 H/ e) V5 i7 u V |