简介
CAN是在1980年代初所制定的规格,并在1993年标准化(ISO 11898-1),被广泛的应用在各种车辆与电子设备上。CAN为一序列总线,它提供高安全等级及有效率的即时控制。更具备了侦错和优先权判别的机制,在这样的机制下,网络讯息的传输变的更为可靠而有效率。CAN 亦提供多主控端的架构,这种特色,特别适合使用在主系统或子系统下提供更完整智慧型网络设备,如传感器及致动器。
CAN是建立在基于资讯导向传输协定的广播传输机制(broadcast communication mechanism)上。CAN定义资讯的内容,利用讯息识别子(message identifier,每个message identifier在整个网络中皆为独一无二的)来定义内容和资讯的优先顺位,以进行资讯的传递。并非使用指派特定站台位址(station address)的方式。
如此,CAN拥有了高度的弹性调整能力,可以在既有的网络中增加站台而不用在软硬件上作修正与调整的作业。除此之外,资讯的传递不是建构在特殊种类的站台上,增加了在升级网络时的便利性。
即时的资讯传输(Real-time data transmission)为CAN的特色之一。在即时的运算中,讯息传递的优先级应以重要性来分,重要性较高的讯息会比较不重要的讯息传递的更频繁。
仲裁机制
讯息的优先权是由讯息封包的message identifier所决定的,identifier的属性则是由系统一开始所给定的二进制数值决定,其数值是不能一直改变的。数值越小,就享有越高的优先顺位。
即时环境中使用的通讯协定优点:
- 讯息有分优先次序
- 有限度的讯息传递延迟
- 讯息可多重发送、资料确保一致性
- 可分辨资料是网络传送错误或是装置不正常运作所造成,进而将有问题的网络节点关闭
CAN base frame一开始是SOF(Start Of Frame),接着是仲裁区Arbitration field(包含identifier和远端传输要求RTR(Remote Transmission Request)),之后的IDE(Identifier Extension)用来分辨是base frame或extended frame。DLC(Data Length Code)记录了data field的大小。
当两种格式同时存在于同一个总线时,11-bit的讯息将会拥有比29-bit的讯息较高的优先顺位。可支援extended frame的CAN controller可正确的传送base frame与extended frame的讯息,但是只支援base frame的controller则无法正确的传送extended frame的讯息。
侦错机制
CAN 提供了五种侦错机制,使其错误发生率低于 4.7×10-11。当一个以上的上述错误发生时,传送中的传输将会失败中止并且产生错误封包,发讯端则会试着重新传送讯息封包。各个节点将会重新争取优先权。
CAN的五种侦测错误机制
循环冗余校验 (CRC) | CRC在讯息结尾处加上一个FCS(frame check sequence)来确保讯息的正确。接收讯息端会将其FCS重新演算并与所接收到的FCS比对,如果不相符,表示有CRC错误。 |
Frame check | 检查封包中几个固定值的字段以验证该封包是否有被讯号干扰导致内容错误。 |
ACK errors | 接收端在收到封包后会告知发讯端,发讯端若没有收到确认讯息,ACK错误便发生。 |
Monitoring | 传一个bit到网络上,从网络上再读进来检查是否一致。 |
Bit stuffing | 讯号同步用 |
实体层
实体层以电、光或物理的方式将讯息在网络中传递,它提供硬件性质的载体来传送与接收讯息。
ISO定义了一个标准,整合了CAN的规格与实体层physical layer,包括了编码Bit Encoding、时间机制Bit Timing和同步Synchronization。
CAN使用NRZ(Non-Return-to-Zero)bit encoding,而其signal level在位元期间内都是保持稳定的。其signal level甚至可以在更长的时段内维持稳定,因此必须确保讯号不会超过最大允许的时段范围,这对讯号同步而言是很重要的。利用bit stuffing在连续五个等值的bit后面填补一个 bit。接收端在将这个bit给去除(un-stuff)以处理原始资料内容。
Bus须能够呈现两种逻辑状态(dominant & recessive),假如有两个装置同时对bus传输不同的逻辑状态的讯息时,只有传送dominant状态的装置能够成功传输资料并继续其动作。
Bus必须能分辨网络传输错误或是装置运作错误所产生的错误讯息,并且可以将运作错误的装置关闭。
应用领域
- 载客车辆、卡车、巴士
- 载客与载货电车
- 航空、航海电子仪器
- 工厂自动化
- 工业机械控制
- 电梯、手扶梯
- 建筑自动化
- 医疗仪器与设备
高层通讯协议
模型是用来了解沟通对象、描述沟通对象与对象的功用。要明确使用一个语言,必须要先有大量词汇、了解文法并熟悉句型。相同的,为了要更简易明确的使用CAN,CAN的使用者运用高阶通讯协定(Higher-Layer Protocols)来使用自己建基于CAN的语言。在不同应用层皆有标准化的CAN通讯协定,例如DeviceNet、CANopen、CANKingdom等等