三一智能CAN协议规范三一智能CAN-bus简介ISO/OSI7层模型CAN-bus相关概念三一智能CAN-bus简介三一智能CAN-bus简介控制器局域网CAN(ControllerAreaNetwork),最初是由德国Bosch公司设计的,应用于汽车的监测和控制;1991年9月,Philips半导体公司制定并发布CAN技术规范:CAN2.0A/B。1993年11月,ISO组织正式颁布CAN国际标准ISO11898;CAN-bus是唯一成为国际标准的现场总线,也是国际上应用最广泛的现场总线之一。三一智能CAN-bus简介CAN-bus的特性包括:无破坏性的基于优先权的逐位仲裁借助验收滤波器的多地址帧传递远程数据请求错误检测和出错信令很远的数据传输距离(长达10Km)高速的数据传输速率(高达1Mbps)高度实时性:每帧报文允许传输最高8个字节的数据发送期间丢失仲裁或出错而遭到破坏的帧可自动重发暂时错误和永久性故障节点的判别以及故障节点的自动脱离脱离总线的节点不影响总线的正常工作三一智能ISO/OSI7层模型三一智能ISO/OSI7层模型ISO-InternationalOrganizationforStandardization(国际标准化组织),1979年成立;OSI-OpenSystemsInterconnection(开放系统互连);ISO/OSI7层模型包括:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。三一智能ISO/OSI7层模型OSI开放系统互连模型7应用层最高层用户软件网络终端等之间用来进行信息交换如DeviceNet6表示层将两个应用不同数据格式的系统信息转化为能共同理解的格式5会话层依靠低层的通信功能来进行数据的有效传递4传输层两通讯节点之间数据传输控制操作如数据重发数据错误修复3网络层规定了网络连接的建立维持和拆除的协议如路由和寻址2数据链路层规定了在介质上传输的数据位的排列和组织如数据校验和帧结构1物理层规定通讯介质的物理特性如电气特性和信号交换的解释三一智能ISO/OSI7层模型应用层协议表示层协议会话层协议传/运输层协议网络层协议数据链路层协议物理层协议三一智能ISO/OSI7层模型逻辑链路控制(LLC)-验收滤波-过载通知-恢复管理介质访问控制(MAC)-数据封包、解包-帧编码(填充、消除填充)-错误检测、标定应用层表示层会话层传输层网络层数据链路层物理层OSIReferenceLayers物理层(PLS)-位编/解码-位定时/同步三一智能CAN-bus相关概念三一智能CANHCANL3.5V1.5V2.5VVdiff=2VVdiff=0VVdiff=0V隐性(逻辑1)显性(逻辑0)隐性(逻辑1)CAN总线电平标称值8us隐隐显隐显显“110100”CAN-bus相关概念三一智能CAN-bus相关概念帧格式标准帧:具有11位标识符的CAN帧;SOF11位标识符RTRIDEr0DLC仲裁域控制域数据域标准帧三一智能CAN-bus相关概念扩展帧:具有29位标识符的CAN帧;SOF11位标识符SRRIDEDLC仲裁域控制域数据域扩展帧18位标识符RTRr0r1三一智能CAN-bus相关概念帧类型数据帧:携带数据从发送器至接收器;帧间间隔帧起始仲裁场控制场数据场CRC场应答场帧结束帧间间隔或过载帧数据帧三一智能CAN-bus相关概念远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧;帧间间隔帧起始仲裁场控制场CRC场应答场帧结束帧间间隔或过载帧远程帧三一智能CAN-bus相关概念错误帧:任何单元检测到一总线错误就发出错误帧;数据帧错误标志帧间间隔或过载帧错误帧错误界定错误叠加标志三一智能CAN-bus相关概念过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时;过载标志帧间间隔或过载帧过载帧过载界定过载叠加标志帧结束错误界定过载界定三一智能CAN-bus相关概念帧起始:它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。只在总线空闲时,才允许站开始发送;仲裁场:标准格式里,仲裁场由11位识别符和RTR位组成,识别符位由ID.28…18构成;扩展格式里,仲裁场包括29位识别符、SRR位、IDE位与RTR位,其识别符由ID.28...0;SRRDI.28DI.1811位基本IDIDEDI.17DI.0RTR18位扩展IDRTRDI.28DI.1811位标识符帧元素三一智能CAN-bus相关概念识别符:基本可以理解为CAN帧的ID号;RTR位:该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”;SRR位(扩展格式):SRR的全称是“替代远程请求位(SubstituteRemoteRequestBIT)”。SRR是一隐性位。它在扩展格式的标准帧RTR位位置,因此代替标准帧的RTR位。因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的;IDE位(扩展格式):IDE的全称是“识别符扩展位(IdentifierExtensionBit)”IDE位属于:扩展格式的仲裁场标准格式的控制场标准格式里的IDE位为“显性”,而扩展格式里的IDE位为“隐性”。三一智能CAN-bus相关概念控制场:控制场由6个位组成,包括数据长度代码和两个将来作为扩展用的保留位。所发送的保留位必须为“显性”。接收器接收所有由“显性”和“隐性”组合在一起的位。数据长度代码指示了数据场中字节数量。数据长度代码为4个位,在控制场里被发送。三一智能CAN-bus相关概念数据长度代码中数据字节数的编码(DATALENGTHCODE):缩写:d—“显性”,r—“隐性”数据帧:允许的数据字节数:{0,1,....,7,8}。其他的数值不允许使用。三一智能CAN-bus相关概念数据场:数据场由数据帧中的发送数据组成。它可以为0~8个字节,每字节包含了8个位,首先发送MSB;CRC场:CRC场包括CRC序列(CRCSEQUENCE),其后是CRC界定符(CRCDELIMITER);帧结尾:每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。三一智能CAN-bus相关概念应答场:应答场长度为2个位,包含应答间隙(ACKSLOT)和应答界定符(ACKDELIMITER)。在应答场里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACKSLOT)期间(发送ACK信号)向发送器发送一“显性”的位以示应答;三一智能CAN-bus相关概念应答间隙:所有接收到匹配CRC序列(CRCSEQUENCE)的站会在应答间隙(ACKSLOT)期间用一“显性”的位写入发送器的“隐性”位来作出回答。ACK界定符:ACK界定符是ACK场的第二个位,并且是一个必须为“隐性”的位。因此,应答间隙(ACKSLOT)被两个“隐性”的位所包围,也就是CRC界定符(CRCDELIMITER)和ACK界定符(ACKDELIMITER)。三一智能波特率和距离的关系CAN-bus相关概念基本公式:MaxBitRate[Mbps]×MaxBusLength[m]≤60在使用过程中建议使用下表所列出来的波特率,它们都是CIA协会公布的标准波特率。位速率/kbps最大距离/m100040500130250270125530100620501300203300106700510000三一智能CAN-bus相关概念帧格式数据位数标准数据帧(8字节数据)111标准远程帧47扩展数据帧(8字节数据)131扩展远程帧67CAN数据帧,远程帧所占用的位长度为(含最短帧间隔3bits):1M波特率时发送标准数据帧(8字节数据):发送速度1000000/111=9009帧每帧带8字节数据即9009*8=72072字节三一智能CAN-bus相关概念总线仲裁总线上“显性”电平支配“隐性”电平;逻辑“0”=“显性”电平;逻辑“1”=“隐性”电平。总线空闲时,任何节点可以开始发送报文;总线上每条报文都具有唯一的一个11位或29位标识符;报文标识符的值越小,报文具有越高的优先权;多个节点同时发送时,总线在“仲裁场”进行“逐位仲裁”;传送高优先级报文的节点赢得仲裁,并继续传输报文;失去仲裁的节点在总线空闲时重新传送。三一智能CAN-bus相关概念总线仲裁示意图ControlFieldDataFieldNODE1NODE2NODE3SOF109876543210IdentifierControlFieldDataFieldNODE1、2、3同时传送NODE2退出仲裁NODE1退出仲裁NODE3赢得仲裁,传送报文三一智能CAN-bus相关概念位流编码(BitCoding)位流编码采用“不归零”(NRZ)方法编码;在完整的位时间里,位电平要么为“显性”,要么为“隐性”;有足够的跳边沿利于总线各节点重新同步;要求采取“位填充”(BitStuffing)。三一智能CAN-bus相关概念标准数据帧CANL波形CANH波形位流编码实例三一智能CAN-bus相关概念位填充(BitStuffing)当发送器检测到位流里有5个连续相同值的位,便会自动在位流里插入一补充位,接收器会自动删除这个补充位。最多经过5个位时间,各节点可以重同步;能够通过总线上的错误标志(ErrorFlag6个连续相同的位)反映发送错误。在固定的位场中不使用位填充。三一智能CAN-bus相关概念位填充示意图要传送的位序列经过位填充后传送的位序列123456789101112131415161718192021222324251234567S8910111213141516S17181920S2122三一智能CAN-bus相关概念错误检测机制进行检测错误,采取以下措施:监视(对发送位的电平与被监控的总线电平进行比较)循环冗余检查位填充报文格式检查三一智能CAN-bus相关概念错误检测的机制具有以下的属性:检测到所有的全局错误检测到发送器所有的局部错误可以检测到报文里多达5个任意分布的错误检测到报文里长度低于15(位)的突发性错误检测到报文里任一奇数个的错误对于没有被检测到的错误报文,其剩余的错误可能性概率低于:报文错误率4.7*10-11三一智能CAN-bus相关概念错误类型位错误(BitError):发送的位值和总线监视的位值不相符合时,检测到一个位错误(除仲裁场、应答场外);填充错误(StuffError):如果在使用位填充编码的位流中,出现了第六个连续相同的位电平,将检测到一个位填充错误;形式错误(FormError):当一个固定形式的位场含有一个或多个非法位时,将检测到一个形式错误;应答错误(AcknowledgmentError):在应答间隙(ACKSLOT)所监视的位不为“显性”,则会检测到一个应答错误;CRC错误(CRCError):如果接收器的CRC结果和发送器的CRC结果不同,将检测到一个CRC错误。三一智能CAN-bus相关概念总线单元使用两种错误计数器进行故障界定发送错误计数(TEC)接收错误计数(REC)错误计数规则(共12条规则)节点发送时产生错误,将导致TEC加8;节点成功发送1帧报文后,TEC将减1,直到0;节点接收时检测到错误,将导致REC加8;节点成功接收1帧报文后,REC将减1,直到0;…………………故障界定三一智能CAN-bus相关概念单元存在的三种状态错误主动(Erroractive):“错误主动”的单元可以正常地参与总线通讯,并在错误被检测到时发出主动错误标志。错误被动(Errorpassive):“错误被动”的单元不允许发送主动错误标志。“错误被动”的单元参与总线通讯,在错误被检测到时只发出被动错误标志。总线关闭(Busoff):“总线关闭”的单元不允许在总线上有任何的影响(比如,关闭输出驱动器)。单元状态三一智能