590 likes | 745 Views
数据通信与控制网络. 第 7 章 控制局域网( CAN) 总线技术原理. 主要内容 7.1 CAN 的性能特点 7.2 CAN 的技术规范 7.3 CAN 的工作原理. 7.1 CAN 的性能特点. 1986年2月 Robert Bosch 公司在 SAE 汽车工程协会大会上,介绍了一种新型的串行总线—— CAN 控制器局域网 , 那是 CAN 诞生的时刻。
E N D
第7章 控制局域网(CAN)总线技术原理 • 主要内容 • 7.1 CAN的性能特点 • 7.2 CAN的技术规范 • 7.3 CAN的工作原理
7.1 CAN的性能特点 • 1986年2月Robert Bosch 公司在SAE汽车工程协会大会上,介绍了一种新型的串行总线——CAN控制器局域网,那是CAN诞生的时刻。 • CAN最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。 CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。
7.1 CAN的性能特点 • 其特点可概括如下: • CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无需站地址等节点信息。利用这一特点可方便地构成多机备份系统。 • CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134μs内得到传输。 • CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪情况(以太网则可能)。
7.1 CAN的性能特点 • CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。 • CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。 • CAN上的节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。
7.1 CAN的性能特点 • 采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。 • CAN的每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低。 • CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。 • CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。
7.2 CAN的技术规范 • 随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。 • 1991年 9月Phihps Semiconductors制订并发布了CAN技术规范(Version2.0)。该技术规范包括A和B两部分。2.0A给出了CAN报文标准格式,而2.0B给出了标准的和扩展的两种格式。 • 1993年11月ISO正式颁布了道路交通运输工具一数据信息交换一高速通信控制器局域网(CAN)国际标准ISO 11898,为控制器局域网的标准化、规范化铺平了道路。
7.2 CAN的技术规范 • 7.2.1 CAN的基本概念 • 报文:总线上的信息以不同格式的报文发送,但长度有限制。当总线开放时,任何连接的单元均可开始发送一个新报文。
7.2 CAN的技术规范 • 信息路由:在CAN系统中,一个CAN节点不使用有关系统结构的任何信息(如站地址)。这里包含一些重要概念: • 系统灵活性——节点可在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接入CAN网络。 • 报文通信——一个报文的内容由其标识符ID命名。ID并不指出报文的目的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。 • 成组——由于采用了报文滤波,所有节点均可接收报文,并同时被相同的报文激活。 • 数据相容性——在CAN网络内,可以确保报文同时被所有节点或者没有节点接收,因此,系统的数据相容性是借助于成组和出错处理达到的。
7.2 CAN的技术规范 • 位速率:CAN的数据传输率在不同的系统中是不同的,而在一个给定的系统中,此速度是唯一的,并且是固定的。 • 优先权:在总线访问期间,标识符定义了一个报文静态的优先权。 • 远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送一个相应的数据帧,该数据帧与对应的远程帧以相同标识符ID命名。 • 多主站:当总线开放时,任何单元均可开始发送报文,发送具有最高优先权报文的单元,赢得总线访问权。
7.2 CAN的技术规范 • 仲裁:当总线开放时,任何单元均可开始发送报文,若同时有两个或更多的单元开始发送,总线访问冲突运用逐位仲裁规则,借助标识位ID解决。这种仲裁规则可以使信息和时间均无损失。 • 若具有相同标识符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧。 • 仲裁期间,每一个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可继续发送。当发送一个“隐性”电平(recessive level),而在总线上检测为“显性”电平(dominant level)时,该单元退出仲裁,并不再传送后续位。
7.2 CAN的技术规范 • 安全性:为获得尽可能高的数据传送安全性,在每个CAN节点中均设有错误检测、标定和自检的强有力措施。 • 检测错误的措施包括:发送自检、循环冗余校验、位填充和报文格式检查。 • 错误检测具有如下特性:所有全局性错误均可被检测;发送器的所有局部错误均可被检测;报文中的多至5个随机分布错误均可被检测;报文中长度小于15的突发性错误均可被检测;报文中任何奇数个错误均可被检测。未检出的已损报文的剩余错误概率为报文出错率的4.7×10-11。
7.2 CAN的技术规范 • 出错标注和恢复时间:已损报文由检出错误的任何节点进行标注。这样的报文将失效,并自动进行重发送。如果不存在新的错误,自检出错误至下一个报文开始发送的恢复时间最多为29个位时间。 • 故障界定:CAN节点有能力识别永久性故障和短暂扰动,可自动关闭故障节点。
7.2 CAN的技术规范 • 连接:CAN串行通信链路是一条众多单元均可被连接的总线,理论上,单元数目是无限的,实际上,单元总数受限于延迟时间和(或)总线的电气负载。 • 单通道:由单一进行双向位传送的通道组成的总线,借助数据重同步实现信息传输。在CAN技术规范中,实现这种通道的方法不是固定的,例如,可以是单线(加接地线)、两条差分连线、光纤等。 • 总线数值表示:总线上具有两种互补逻辑数值:显性电平或隐性电平。在显位与隐位同时发送期间,总线上数值将是显位。例如,在总线的“线与”操作情况下,显位由逻辑“0”表示,隐位由逻辑“1”表示。
7.2 CAN的技术规范 • 应答:所有接收器均对接收报文的相容性进行检查。 • 睡眠方式及唤醒:为降低系统功耗,CAN器件可被置于无任何内部活动的睡眠方式,相当于未连接总线的驱动器。 • 睡眠状态借助任何总线激活或者系统的内部条件被唤醒而结束。 • 在总线驱动器再次置于在线状态之前,为唤醒内部活动重新开始,传输层将等待系统振荡器至稳定状态,并且一直等待至其自身同步于总线活动(通过检查11个连续的隐位)。 • 为唤醒系统内仍处于睡眠状态的其他节点,可使用具有最低可能标识符的专用唤醒报文:rrr rrrd rrrr,其中,r为隐位,d为显位。
7.2 CAN的技术规范 • 7.2.2CAN协议结构 • 7.2.2.1CAN协议层次 • CAN只采用了ISO/OSI模型全部七层中的两层,物理层和数据链路层。 • 物理层又分为物理信令(PLS,Physical Signalling)、物理媒体附件(PMA,Physical Medium Attachment)与媒体接口(MDI,Medium Dependent Interface)三部分,完成电气连接、实现驱动器/接收器特性、定时、同步、位编码解码。 • 数据链路层分为逻辑链路控制子层LLC和媒体访问控制子层MAC两部分,分别完成接收滤波、超载通知、恢复管理,以及应答、帧编码、数据封装拆装、媒体访问管理、出错检测等。 • CAN的分层结构和功能如图7-1所示。
7.2 CAN的技术规范 图7-1 CAN协议分层结构
7.2 CAN的技术规范 • 在CAN技术规范2.0A的版本中,数据链路层的LLC和MAC子层的服务和功能被描述为“目标层”和“传送层”。 • 目标层的主要功能是:确认要发送的信息,确认接收到的信息,并为应用层提供接口。 • 传送层的主要功能是:帧组织;总线仲裁;校验、错误报告、错误处理。 • CAN数据链路层由一个CAN控制器实现,采用了CSMA/CD方式,但不同于普通的Ethernet,它采用非破坏性总线仲裁技术,网络上节点(信息)有高低优先级之分以满足不同的实时需要。当总线上有两个节点同时向网上输送信息时,优先级高的节点继续传输数据,而优先级低的节点主动停止发送,有效地避免了总线冲突以及负载过重导致网络瘫痪的情况。
7.2 CAN的技术规范 • LLC子层的主要功能是:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际已被接收,并为恢复管理和通知超载提供信息。 • MAC子层是CAN协议的核心,它描述由LLC子层接收到的报文和对LLC子层发送的认可报文。 • MAC子层的功能主要是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。 • MAC子层要确定,为开始一次新的发送,总线是否开放或者是否马上接收。MAC子层特性不存在修改的灵活性。
7.2 CAN的技术规范 • CAN物理层选择灵活,没有特殊的要求,可以采用共地的单线制、双线制、同轴电缆、双绞线、光缆等。网上节点数理论上不受限制,取决于物理层的承受能力,实际可达110个。 • CAN可以实现点对点、一点对多点(成组)以及全局广播等几种方式传送和接收数据。
7.2 CAN的技术规范 • CAN支持四种报文帧:数据帧、远程帧、出错帧和超载帧。 • 数据帧自一个发送节点携带数据至一个或多个接收节点。 • 远程帧用于请求发送具有相同标识符的数据帧。 • 出错帧用于传输错误检查。 • CAN采用短帧结构,每帧有效字节数为0~8个,因此传输时间短,受干扰概率低,重新发送时间短。 • 数据帧的CRC校验域以及其他检查措施保证了极低的数据出错率。 • CAN节点在严重错误情况下具有自动关闭总线的功能,切断它与总线的联系而不影响其他操作。
7.2 CAN的技术规范 • 7.2.2.2CAN与其他通信方案的比较 • 在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。 • 在按时间表分配方法中,不管节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。
7.2 CAN的技术规范 • 在按需要分配方法中,总线按传送数据的基本要求分配给一个站(如Ethernet CSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时任何一个站都不会获得总线存取权。 • CAN可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。 • 当总线在重负载情况下,以消息内容为优先的总线存取也是一种有效的方案。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。 • 在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。
7.3 CAN的工作原理 • 7.3.1 报文传送及其帧结构 • 在进行数据传送时,发出报文的单元成为该报文的发送器。该单元在总线空闲或丢失仲裁前恒为发送器。如果一个单元不是报文发送器,并且总线不处于空闲状态,则该单元为接收器。 • 对于报文发送器和接收器,报文的实际有效时刻是不同的。 • 对于发送器而言,如果直到帧结束末尾一直未出错,则对于发送器报文有效。如果报文受损,将允许按照优先权顺序自动重发送。为了能同其他报文进行总线访问竞争,总线一旦空闲,重发送立即开始。 • 对于接收器而言,如果直到帧结束的最后一位一直未出错,则对于接收器报文有效。
7.3 CAN的工作原理 • 构成一帧的帧起始、仲裁场、控制场、数据场和CRC序列 均借助位填充规则进行编码。 • 当发送器在发送的位流中检测到5位连续的相同数值时,将自动地在实际发送的位流中插入一个补码位。 • 数据帧和远程帧的其余位场,包括CRC定界符、应答场和帧尾,采用固定格式,不进行填充。 • 出错帧和超载帧是固定格式,也不进行位填充。 • 报文中的位流按照非归零码(NRZ)方法编码,这意味着一个完整的位电平要么是显性,要么是隐性。
7.3 CAN的工作原理 • 报文传送由4种不同类型的帧表示和控制: • 数据帧携带数据由发送器至接收器; • 远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧; • 出错帧由检测出总线错误的任何单元发送; • 超载帧用于提供当前的和后续的数据帧的附加延迟。 • 数据帧和远程帧借助帧间空间与当前帧分开。
7.3 CAN的工作原理 • 7.3.1.1数据帧 • 数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。数据场长度可为0。CAN2.0A数据帧的组成如图7-2所示。 图7-2 数据帧的组成
7.3 CAN的工作原理 • 在CAN2.0B中存在两种不同的帧格式,其主要区别在于标识符的长度,具有11位标识符的帧称为标准帧,而包括29位标识符的帧称为扩展帧。标准格式和扩展格式的数据帧结构如图7-3所示。 图7-3 标准格式和扩展格式的数据帧结构
7.3 CAN的工作原理 • 为使控制器设计相对简单,并不要求执行完全的扩展格式,但必须完全执行标准格式。 • 控制器至少具有下列特性,认为与CAN技术规范兼容:每个控制器均支持标准格式;每个控制器均接收扩展格式报文,不至于因为格式而破坏扩展帧。 • CAN2.0B报文滤波以整个标识符为基准。屏蔽寄存器可用于选择一组标识符,标识符被选中的报文会映像至接收缓存器中,屏蔽寄存器每一位都是可编程的。它的长度可以是整个标识符,也可以仅是其中一部分。
7.3 CAN的工作原理 • (1)帧起始(SOF)标志数据帧和远程帧的起始,它仅由一个显位构成。 • 只有在总线处于空闲状态时,才允许站点开始发送。所有站都必须同步于首先开始发送的那个站的帧起始前沿。 • (2)仲裁场由标识符和远程发送请求位(RTR)组成。仲裁场如图7-4所示。 图7-4 仲裁场组成
8.3 CAN的工作原理 • 对于CAN2.0A标准,标识符的长度为11位,这些位以从高位到低位的顺序发送,最低位为ID.0,其中最高7位(ID.10~ID.4)不能全为隐位。 • RTR位在数据帧中必须是显位,而在远程帧中必须为隐位。 • 对于CAN2.0B,标准格式和扩展格式的仲裁场格式不同。 • 在标准格式中,仲裁场由11位标识符、远程发送请求位RTR组成,标识符位为ID.28~ID.18。 • 在扩展格式中,仲裁场由29位标识符、替代远程请求SRR位、 标识位IDE和远程发送请求RTR组成,标识符位为ID.28~ID.0。
8.3 CAN的工作原理 • 为区别标准格式和扩展格式,将CAN规范较早标准中的rl改记为标识位IDE。在扩展格式中,先发送基本ID,其后是IDE位和SRR位。扩展ID在SRR位后发送。 • SRR位为隐位,在扩展格式中,它在标准格式的RTR位上被发送,并替代标准格式中的RTR位。这样,标准格式和扩展格式的冲突由于扩展格式的基本ID与标准格式的ID相同而得到解决。 • IDE位对于扩展格式属于仲裁场,对于标准格式属于控制场。IDE在标准格式中以显性电平发送,而在扩展格式中为隐性电平。
7.3 CAN的工作原理 • (3)控制场由6位组成,如图7-5所示。 • 控制场包括数据长度码和两个保留位,这两个保留位必须发送显性位,但接收器认可显位与隐位的全部组合。 • 数据长度码DLC指出数据场的字节数目。数据长度码为4位,在控制场中被发送;数据字节的允许使用数目为0~8,不能使用其他数值。 图7-5 控制场组成
7.3 CAN的工作原理 • (4)数据场由数据帧中被发送的数据组成,它可包括0~8 个字节,每个字节8位。首先发送的是最高有效位。 • (5)CRC场包括CRC序列,后随CRC界定符。CRC场结构如图7-6所示。
7.3 CAN的工作原理 • CRC序列由循环冗余码求得的帧检查序列组成,最适用于位数小于127的帧。 • 为实现CRC计算,被除的多项式系数由包括帧起始、仲裁场、数据场(若存在的话)在内的无填充的位流给出,其15个最低位的系数为0。此多项式被发生器产生的下列多项式除(系数为模2运算): • X15+X14+X10+X8+X7+X4+X3+l • 该多项式除法的余数即为发向总线的CRC序列。
7.3 CAN的工作原理 • (6)应答场(ACK)为两位,包括应答间隙和应答界定符,如图7-7所示。 • 在应答场中,发送器送出两个隐位。一个正确地接收到有效报文的接收器,在应答间隙,发送一个显位报告给发送器。 • 应答界定符是应答场的第二位,并且必须是隐位,因此,应答间隙被两个隐位(CRC界定符和应答界定符)包围。 • (7)帧结束:每个数据帧和远程帧均由7个连续隐位作为结束标志。 图7-7 应答场组成
7.3 CAN的工作原理 • 7.3.1.2 远程帧 • 作为接收器的节点可以通过向相应的数据源节点发送一个远程帧来激活该源节点,让它把该源节点的数据发送给接收器。 • 远程帧由6个不同位场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。 • 同数据帧相反,远程帧的RTR位是隐位。远程帧不存在数据场。DLC的数据值是独立的,它可以是0~8中的任何数值,这一数值为对应数据帧的DLC。远程帧的组成如图7-8所示。 图7-8 远程帧的组成
7.3 CAN的工作原理 • 7.3.1.3出错帧 • 出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,后随的第二个场是出错界定符。出错帧的组成如图7-9所示。 图7-9 出错帧的组成
7.3 CAN的工作原理 • 错误标志具有两种形式,一种是活动错误标志(active error flag),一种是认可错误标志(passive error flag), • 活动错误标志由6个连续的显位组成,而认可错误标志由6个连续的隐位组成,除非被来自其他节点的显位冲掉重写。 • 出错界定符包括8个隐位。错误标志发送后,每个站都送出隐位,并监视总线,直到检测到隐位。此后开始发送剩余的7个隐位。
7.3 CAN的工作原理 • 7.3.1.4 超载帧 • 超载帧包括两个位场:超载标志和超载界定符,如图7-10所示。 图7-10 超载帧的组成
7.3 CAN的工作原理 • CAN2.0A指明了两种导致发送超载标志的超载条件: • 一个是接收器因内部条件要求延迟下一个数据帧或远程帧; • 另一个是在间歇场检测到显位。 • 由前一个超载条件引起的超载帧起点,仅允许在间隙场的第一位时间开始,而由后一个超载条件引起的超载帧在检测到显位的后一位开始。 • 在大多数情况下,为延迟下一个数据帧或远程帧,两种超载帧均可产生。
7.3 CAN的工作原理 • 超载界定符由8个隐位组成。 • 超载界定符与错误界定符具有相同的形式。节点在发送超载标志后,监视总线,直到检测到由显位到隐位的跳变。这说明总线上的所有节点都已经完成超载标志的发送,因此所有节点开始发送超载界定符的剩下7个隐位。
7.3 CAN的工作原理 • 7.3.1.5帧间空间 • 数据帧、远程帧通过帧间空间与前一帧分开(前一帧可为任何类型)。 • 在超载帧和出错帧前面不需要帧间空间,并且多个超载帧之间也不需要帧间空间分隔。 • 帧间空间包括间歇场和总线空闲场, • 对于 “活动出错”的发送器节点或报文接收器节点,其帧间空间如图7-11(a)所示; • 对于 “错误认可” 节点,其帧间空间如图7-11(b)所示。
8.3 CAN的工作原理 图7-11 帧间空间
7.3 CAN的工作原理 • 间歇场由3个隐位组成。间歇期间,不允许启动发送数据帧或远程帧,它仅起标注超载条件的作用。 • 总线空闲周期可为任意长度。此时,总线是开放的,因此任何需要发送的节点均可访问总线。在其他报文发送期间,暂时被挂起的待发送报文紧随间歇场从第一位开始发送。此时总线上的显位被理解为帧起始。 • 暂停发送场是指:出错认可节点发完一个报文后,在开始下一次报文发送或认可总线空闲之前,它紧随间歇场后送出8个隐位。如果此时另一节点开始发送报文(由其他站引起),则本站将变为报文接收器。
7.3 CAN的工作原理 • 7.3.2 错误类型和界定 • 在CAN总线存在5种错误类型(它们并不互相排斥)。 • (1)位错误: • 节点在发送每一位的同时也对总线进行监视,当监视到总线位数值与送出的位数值不同时,则在该位时刻检测到一个位错误。 • 例外的情况是,在仲裁场的填充位流期间或应答间隙送出隐位而检测到显位时,不视为位错误。节点在发送“出错认可标志”期间检测到显位,也不视为位错误。 • (2)填充错误: • 在应使用位填充方法进行编码的报文中出现了第6个连续相同的位电平时,将检出一个位填充错误。
7.3 CAN的工作原理 • (3)CRC错误: • CRC序列是由发送器CRC计算的结果组成的。接收器以与发送器相同的方法计算CRC。如计算结果与接收到的CRC序列不相同,则检出一个CRC错误。 • (4)格式错误: • 当固定形式的位场中出现一个或多个非法位时,则检出一个格式错误。 • (5)应答错误: • 在应答间隙,发送器未检测到显位时,则由它检出一个应答错误。
7.3 CAN的工作原理 • 检测到出错条件的节点通过发送错误标志来指示错误。当任何节点检出位错误、填充错误、格式错误或应答错误时,该节点将在下一位开始发送出错标志。 • 当检测到CRC错误时,出错标志在应答界定符后面那一位开始发送,除非其他出错条件的错误标志在此之前已经开始发送。
7.3 CAN的工作原理 • 为了界定故障,在每个总线单元中都设有两种计数:发送出错计数和接收出错计数。 • 当发送错误计数大于或等于256时,节点进入总线关闭状态。 • 当错误计数数值大于96时,说明总线被严重干扰。它提供测试此状态的一种手段。 • 若系统启动期间仅有一个节点在线,此节点发出报文后,将得不到应答,检出错误并重发该报文。它将会变为错误认可状态,但不会进入总线关闭状态。
7.3 CAN的工作原理 • 8.3.3 位定时与同步 • CAN总线中有关位定时包括如下一些重要概念。 • 正常位速率:为在非重同步情况下,借助理想发送器每秒发出的位数。 • 正常位时间:即正常位速率的倒数。 • 正常位时间可分为几个互不重叠的时间段。包括: • 同步段(SYNC-SEG) • 传播段(PROP-SEG) • 相位缓冲段1(PHASE-SEG1) • 相位缓冲段2(PHASE-SEG2),如图7-12所示。 7-12 位时间的各组成部分