原创 CAN协议介绍1

2009-10-27 11:11 2994 3 3 分类: 工程师职场
CAN简介

 

控制器局域网(CAN)为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN 连接发动机控单元、传感器、防刹车系统、等等,其传输速度可达1 Mbit/s。同时,可以将CAN 安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。

为了达到设计透明度以及实现柔韧性,CAN 被细分为以下不同的层次:
? CAN 对象层(the object layer)
? CAN 传输层(the transfer layer)
? 物理层(the phyical layer)

对象层和传输层包括所有由ISO/OSI 模型定义的数据链路层的服务和功能。对象层的作用范围包括:
?? 查找被发送的报文。
?? 确定由实际要使用的传输层接收哪一个报文。
?? 为应用层相关硬件提供接口。

在这里,定义对象处理较为灵活。传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。

 


随着串行通讯进入更多应用领域,因此,在一些应用里,需要对通讯功能的报文识别位提出分配标准化的要求。原先的ID范围由11 个识别位定义,如果ID范围扩大,则这些应用就可以更好地由CAN 来实现。因此引入了第二种报文格式(‘扩展格式’)的概念,其定义的ID范围更宽,由29 位定义。系统设计者将从考虑定义良好的结构命名方案中得到解放。有的用户不需要由扩展格式提供的识别符范围,可以继续沿用常规的11 位识别符范围(‘标准格式’),在这种情况下,可以采用市场上可用的CAN 仪器,或使用兼容这两种模式的新控制器类仪器。为了区别标准格式和扩展格式,按CAN 1.2 规范定义,使用了CAN 报文格式的第一个保留位。因为CAN1.2 定义的信息格式相当于标准格式,因此仍然是有效的。此外,由于扩展格式已经定义,因此网络中会共存标准格式和扩展格式的报文。

 

CAN 规范技术规范由两部分组成:
? A 部分:CAN 的报文格式说明(按CAN1.2 规范定义)。
? B 部分:标准格式和扩展格式的说明。
为了兼容CAN2.0,要求CAN 的仪器应兼容A 部分或B 部分

 

CAN 具有以下的属性:


? 报文的优先权
? 保证延迟时间
? 设置灵活
? 时间同步的多点接收
? 系统宽数据的连贯性
? 多主机
? 错误检测和标定
? 只要总线一处于空闲,就自动将破坏的报文重新传输
? 将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭错误的节点

 

远程数据请求(Remote Data Request):
通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由
相同的识别符(IDENTIFIER)命名的。

 

多主机(Multimaster):
总线空闲时,任何单元都可以开始传送报文。具有较高优先权报文的单元可以获得总线访问权。

仲裁(Arbitration):
只要总线空闲,任何单元都可以开始发送报文。如果2 个或2 个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。仲裁的机制确保信息和时间均不会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监控视到一“显性”电平(见总线值),那么该单元就失去了仲裁,必须退出发送状态。

 

安全性(Safety):
为了获得最安全的数据发送,CAN 的每一个节点均采取了强有力的措施以进行错误检测、错误标定及
错误自检。

错误检测(Error Detection):
为了检测错误,必须采取以下措施:
- 监视(发送器对发送位的电平与被监控的总线电平进行比较)
- 循环冗余检查
- 位填充
- 报文格式检查

 

错误检测的执行(Performance of Error Detection):
错误检测的机制要具有以下的属性:
- 检测到所有的全局错误
- 检测到发送器所有的局部错误
- 可以检测到一报文里多达5 个任意分布的错误
- 检测到一报文里长度低于15(位)的突发性错误
- 检测到一报文里任一奇数个的错误
对于没有被检测到的错误报文,其残余的错误可能性概率低于:报文错误率* 4.7 * 10 –11。

错误标定和恢复时间(Error Sinalling and Recovery Time):
任何检测到错误的节点会标志出已损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出现新错误的话,从检测到错误到下一报文的传送开始为止,恢复时间最多为29 个位的时间。


故障界定(Fault Confinement):
CAN 节点能够把永久故障和短暂扰动区分开来。永久故障的节点会被关闭。

 

连接(Connections):
CAN 串行通讯链路是可以连接许多单元的总线。理论上,可连接无数多的单元。但由于实际上受延迟时间以及/或者总线线路上电气负载的影响,连接单元的数量是有限的

 

单通道(Single Channel):
总线是由单一进行双向位信号传送的通道组成。通过此通道可以获得数据的同步信息。要使此通道实现通讯,有许多的方法可以采用,如使用单芯线(加上接地)、2 条差分线、光缆等等。

 

总线值(Bus value):
总线可以具有两种互补的逻辑值之一:“显性”或“隐性”。 “显性”位“隐性”位同时传送时,总线的结果值为“显性”。比如,在执行总线的“线与”时,逻辑0 代表“显性”等级,逻辑1 代表“隐性”等级。

 

应答(Acknowledgment):
所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答;对于不连的报文,接收器作出标志。

睡眠模式/唤醒(Sleep Mode / Wake-up):
为了减少系统电源的功率消耗,可以将CAN 器件设为睡眠模式以便停止内部动及断开与总线驱动器的连接。CAN 器件可由总线激活,或系统内部状态而被唤醒。唤醒时,虽然传输层要等待一段时间使系统振荡器稳定,然后还要等待一段时间直到与总线活动同步(通过检查11 个连续的“隐性”的位),但在总线驱动器被重新设置为“总线在线”之前,内部运行已重新开始。为了唤醒系上正处于睡眠模式的其他节点,可以使用一特殊的唤醒报文,此报文具有专的、最低等级的识别符。(rrr rrrd rrrr; r =‘’隐性’ d= ‘显性’)
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条