CAN总线协议解析李玉丽(吉林建筑工程学院电气与电子信息工程学院,吉林长春,130021)摘要:现场总线的发展与应用引起了传统控制系统结构的改变。控制局域网(CAN)总线因其自身的特点被广泛应用于自动控制领域。本文对CAN总线协议作了详尽解析。关键词:CAN总线;隐性位;显性位;节点中图分类号:TU85文献标识码:ACAN(ControllerAreaNetwork)是分布式实时控制系统的串行通信局域网,称谓CAN总线。在数据实时传输中,设计独特、低成本,具有高可靠性,得到广泛应用。本文着重解析CAN技术规范2.0B版的CAN的分层结构规范和CAN报文结构规范。重点在于充分理解CAN总线协议精髓,有助于CAN总线的局网设计、软件编程、局网维护。一、CAN的分层结构CAN遵从OSI(OpenSystemInterconnectionReferenceModel)模型,其分层结构由高到低如图1所示。图1CAN的分层结构对应OSI模型为两层,实际为三层,即LLC、MAC、PLS。由此而知,对应于CAN总线系统每个节点都是三层结构。数据发送节点数据流为LLC→MAC→PLS,然后将数据发送到总线上;而对于挂在总线上的所有节点(包括发送节点)的接收的数据流为PLS→MAC→LLC。这种分层结构的规范保证了CAN总线的多主方式工作模式,即不分主从,非破坏性的仲裁工作模式。而LLC层的报文滤波功能可实现点到点、一点对多点、全局广播、多点对一点,多点对多点等数据传递方式。各分层主要功能如下:LLC层:接收滤波、超载通知、恢复管理;MAC层:控制帧结构、执行仲裁、错误检测、出错标定、故障界定。该层是CAN的核心;PLS层:位编码/解码、位定时。二、CAN总线的报文规范CAN报文的传送有4种不同类型的帧结构,数据帧、远程帧、出错帧、超载帧。CAB2.0B有4种帧格式。(一)数据帧数据帧携带由发送节点到接收节点(或发送器到接收器),由7个不同的位场组成:帧起始位、仲裁场、控制场、数据场、CRC场、应答场、帧结束。如图2所示。图2数据帧结构CAN2.0B中存在两种不同的帧格式。主要区别在于标识符的长度。具有11位标识符的帧称为标准帧,具有29位标识符的帧称为扩展帧。本文只对第3卷第3期2008年9月长春理工大学学报(高教版)JournalofChangchunUniversityofScienceandTechnology(HigherEducationEdition)Vol.3No.3Sep.2008*收稿日期:20080514作者简介:李玉丽(1973),女,本科,实验师,研究方向为智能建筑电气设备远程监控。标准帧进行解析。1.帧起始标志位(SOF)由一个显性位构成,表明某个节点开始发送信息,所有其它节点必须与此同步(硬同步),但只有在总线空闲时才允许起始位的发送。2.仲裁场(1)仲裁场的组成仲裁场如图3所示。图3仲裁场的组成标识符为11位,远程发送请求RTR为一个显性位。(2)仲裁与优先级CAN总线的通讯模式为:载波监测、多主掌控/冲突(CSMA/CA)。这就使得总线上任一个节点向总线发送信息的机会是均等的。只要总线空闲,谁都可以发送。但如果在同一时刻有两上或两个以上节点同时发送信息,这就发生冲突,这就需要仲裁,而且获得仲裁的信息不受破坏。CAN是按位进行仲裁。当节点向总线发送信息同时,也在读取总线的电平。如果发送的电平与读取的电平相同,则继续发送下一位,若不同则停止发送,退出竞争。余下的节点继续重复上述过程,直到总线上只剩下一个节点发送的电平。而在冲突中被仲裁下的节点,待下一个总线空闲期再次尝试发送。这种总裁技术明显可以看出,在仲裁帧中,标识符的二进制数值小者有较高优先级。换句话在诸多竞争节点中,如果报文标识符的值最小,则此报文的优先级最高。3.控制场控制场如图4所示。图4控制场组成IDE:在CAN2.0B标准格式IDE应为显性(隐性用r表示)。r0:保留位。DLC3~DLC0:数据长度,最大数值为rddd(即隐显显显)。通常“显性”表示传输0,“隐性”表示传输1,则最大数据为1000H,即8。4.数据场数据场即为被发送的数据,长度为0~8个字节,取决于控制场中数据长度DL3~DL0。首先发送的最高有效位。5.CRC场CRC场结构如图5所示。图5CRC场结构CRC场由CRC序列和CRC界定符组成,CRC序列为16位CRC检验码,CRC界定符用于标注CRC序列的结束,为一位隐形位。CRC检验范围从帧起始位开始直到数据场结束。其生成多项式为15+14+10+8+7+4+3+1。6.应答场(ACK)应答场为两位,如图6所示。图6应答场组成在应答场中发送节点送出2个隐性位,所有接收到匹配CRC序列的节点,在应答间隙发送一个显示位,以报告发送器接收无误。应答界定符为一个隐性位。7.帧结束由7个隐性位构成,表示一帧内容结束。(二)远程帧节点A如果索取B节点的数据时,则由A发送远程帧,其A节点在仲裁场的标识符应为B节点的标识符相同。远程帧由帧起始位、仲裁场、控制场、CRC场、应答场、帧结束6个场组成。它与数据帧的区别有:①仲裁场的RTR位为隐性,标识此帧为远程帧;②无数据场;③控制场中的PLC可为0~8的任意数值,但无意义。说明:对于仲裁场、控制场、数据场、CRC场、帧间空间使用填充技术进行编码,即每5个同状态电平插入一位与它相补的电平,还原时再予以删除。(三)出错帧1.出错帧格式出错帧由2场组成,如图7所示。图7出错帧结构长春理工大学学报(高教版)182第3卷错误标志具有两种形式:活动错误标识(由6个显位组成)、认可错误标识(由6个隐位组成)。当一个节点发出错误帧时,其出错标识为连续6个显性位或连续6个隐性位。CAN总线规定使用填充技术的编码不允许连续出现6个同状态电平,某一节点标识传送后,其它节点由于总线上的连续电平的出现,破坏帧格式,补发送错误标识,因此错误标识叠加后占6~12位。各节点在发出错误标识之后,都在监视总线,当检测到一个隐性位后,再发送7个隐性位,故错误界定符为8个隐性位。2.CAN总线的错误类型CAN总线有5种错误类型、它们互不排斥。位错误:总线检测出某一位出错。填充错误:使用填充方法进行编码为报文中,出现6个连续相同的电平。CRC错误:CRC值不匹配。形式错误:固定的位场中出现非法位。应答错误:在应答间隙,发送节点未检测到显性位。当一个节点检测到一个CRC错误时,标识在应答界定符之后发送,而其它错误在检测出错误的下一位发送错误标识。3.CAN总线故障界定及处理每个CAN总线节点都设有发送出错记数器和接收出错计数器。发送器送出一个错误标识时,发送错误计数器加8,接收器检测出一个错误,接收错误记数器加1或加8,报文成功发送后,发送错误计数器减1,接报文成功接收后,接收错误计数器减1,有了如上规定之后,即可定义故障界定:一个节点如果其错误计数值在1~127(含1、127)则为错误激活节点;在128~255(含128、255)则为错误认可节点。错误激活节点检测出错误时,发送活动错误标识。错误认可节点检测出错误时,发送认可错误标识;当错误读数值大于或等于256时,总线关闭。错误计数值大于96时,说明总线被严重干扰。对于总线关闭的节点,在监测总线上11个连续隐性位发生128次,则此节点总线启动,成为错误计数器为零值的错误激活节点。(四)超载帧超载帧用于在接收节点未准备好的情况下请求对数据帧或远程帧延时,由2个位场组成,见图8。图8超载帧结构超载标志及超载界定符与出错帧标识相同,其引发和处理过程也是一样的。(五)帧间空间不管何种帧,均以称之为帧间空间的位场分开,但超载帧、出错帧之前无帧间空间,如图9所示。图9帧间空间结构间歇场为3个隐位,在此期间不允许启动数据帧和远程帧。总线空闲周期可以任意长。参考文献:[1]李正军.现场总线与工业以太网及其应用系统设计[M].人民邮电出版社,2006.[2]史久根,张培仁,陈真勇.CAN现场总线系统设计技术[M].国防工业出版社,2004.[3]求是科技.单片机通讯技术与工程实践[M].人民邮电出版社,2005.TheAnalysisofCANProtocolLiYuli(ElectronicSchoolofJilinArchitecturalandCivilEngineeringInstitute,Changchun130021,China)Abstract:Thedevelopmentandapplicationoffieldbuscausedthechangesforthetraditionalcontrolsystem.ControlLAN(CAN)busarewidelyusedinthefieldofautomaticcontrol.becauseoftheirowncharacteristicsThispapergivesadetailedexplanationtoCANbusprotocolworks.Keywords:CANbus;recessivebit;dominantbit;node183李玉丽:CAN总线协议解析第3期