CAN Bus协定介绍 CAN协定是参考ISO/OSI的七层协定模式而做定义的,但因它主要是用来传送简短且简单的讯号,而且是一封闭性的系统,并不需要负责系统的安全、产生用户介面的资料,以及监控网路的登入等动作,因此只涉及了实体层(Physical Layer)和数据链结层(Data Link Layer)的定义。
■实体层规范特性 实体层负责的是网路中节点与节点之间的连结,以及在铜线、同轴缆线、光纤,甚至是无线讯号的实际电性脉冲传送。传送器(transmitter)的实体层会将从数据链结层来的数据转换为电子讯息,再传送出去;在接收端,实体层将这些电子讯息传换为数据格式,再传送到数据链结层。 在一个网路系统中,要确保各个节点之间能够顺利的沟通,先决条件是每个节点的实体层特性必须是相同的,而CAN实体层的作用就在于规范位元表示法(bit representation)、位元时序及同步性(bit timing and synchronization),通常还包括脚位连接器和接线的型式。CAN藉由两条序列匯流排(CAN_H and CAN_L)即时传输资料,传输速率可高达1M bits/sec。理论上,每个CAN匯流排最多可连结2032个节点,但受限于收发器的功能,实际运用上最多大约可连结100个节点,而在一般的运用上则大约是连结3到10个节点。CAN实体层示意图请见(图二)。
图二 CAN实体层架构示意图
■数据链结层规范特性:匯流排仲裁 CAN数据链结层可以说是CAN功能的核心,其目的在于建立数据讯框(data frame)封包,在讯框内包含数据和控制资料。在数据链结层中的主要功能之一,就是当系统中出现有两个讯号同时想使用网路中的相同资源时,如何防止冲突的发生,这就是所谓MAC(Medium Access Control)的功能。在CAN协定中,MAC功能会让具有最高优先权的数据讯框先使用匯流排的网路资源,此机制对于网路效能的影响很大。 在网路的接取控制上有两大方向,一是先决式(determined),一是随机式(random)。在先决式的接取控制中,匯流排的使用权必须在节点接取匯流排前就预先定义好了,以确保不会发生任何冲突。此类的网路需要一个中央管控的装置来进行网路管理,但一旦此装置失常,整个网路就无法运作了;也有非中心化的架构,但相对上会复杂许多。 在随机式的接取控制中,当匯流排闲置时,每个节点都能够要求使用网路资源。最常见的随机式接取控制方式是载波侦测多重存取(Carrier Sense Multiple Access,CSMA) ,CSMA又分成限制或防止讯号碰撞的CSMA/CA方式,和允许碰撞再进行处置的CSMA/CD方式。由于CSMA/CD较浪费频宽资源及会产生较长的延迟性,CAN採用的是CSMA/CA的方式,此作法又称为非破坏性的按位元仲裁(Non-Destructive Bit-Wise Arbitration)机制。 CAN协定让优先权较高的讯号先接取使用匯流排资源,在每个讯号讯框的一开始处就存在有仲裁域(Arbitration Field),仲裁域中有一个识别码(Identifier),当识别码的数值愈小时,表示其优先权限愈高。此作法能有效的利用匯流排资源,其具有最高优先权的讯号,最大的延迟时间大约只有150ms。 在CAN的2.0A标准中,一开始定义识别码(identifier)的长度为11位元,后来因市场的需求又提出了延伸性的2.0B版本。2.0B的格式通常被称为延伸性CAN(Extended CAN),它允许29位元的识别码,而且又主动及被动式两种:2.0B active,也就是能收、发延伸讯框的节点;以及2.0B passive,它会放弃掉接收到的延伸讯框。2.0B的29位元识别码能够提供512,000,000个独特的讯号及优先等级,足以因应来自愈来愈多节点的大量存取要求。
■数据链结层规范特性:讯框格式 所谓的讯框即是包含由传送器送出的完整讯号的资料封包。在CAN协定中具有四种讯框:数据讯框(Data Frame)、远端讯框(Remote Frame)、误码讯框(Error Frame)及额外负载讯框(Overload Frame)。以下主要看看数据讯框的组成。 数据讯框包含了识别码和各种控制资讯,以及最多8位元组的数据。其基本组成包括:讯框开始(Start of Frame)、仲裁域(又包括识别码和RTR)、控制域(Control Field)(又包括IDE、r0和数据长度码)、数据域(Data Field)、循环冗余码检验(Cyclic Redundancy Check,CRC)域、确认域(Acknowledgement Field),以及讯框终点(End of Frame)等。请参考(图三)。
图三 延伸型CAN的数据讯框组成架构
其中控制资讯是用来识别讯框、决定对匯流排的使用,以及进行误码侦测。控制资讯的另一项主要功能,就在于能够分辨出某一讯号是否已损毁了。当数据在任何网路中传送时,随机性的误码是很常见的,所以数据链结层的重要任务之一,就是要限制这类错误的发生。 CAN的特色之一,就是五种方式来进行误码侦测,进而能掌控错误的发生。这五种方式包括:位元检验(Bit Check)、讯框检验(Frame Check)、循环冗余码检验(CRC)、确认检验(Acknowledement Check)及填充规则检验(Stuff Rule Check)。透过这些方式,CAN系统中未被发现的错误发生率能够有效地被降低到4.7 x 10-11。 此外,当损毁的讯号被发现后,侦测到错误的节点会对这个讯号做记号(flag),其它节点会忽视这些讯号,并等待正码讯号再被重传。如果没有更多的错误出现,从侦测到重传的恢復时间是29个位元时间。 |