CAN总线应用层协议的研究与实现

哈尔滨工业大学

硕士学位论文

CAN总线应用层协议的研究与实现

姓名:杨金星

申请学位级别:硕士

专业:计算机科学与技术

指导教师:崔刚

20050601

摘要

控制器局域网CAN是现场总线的一种,被广泛应用于汽车、航天、医疗设备以及工业控制等分布式控制领域。CAN协议层模型与开放系统互连模型(ISO/OSI)保持~致,因为是单网络结构,所以只包括OSI中的物理层、数据链路层和应用层。通常所说的CAN只定义了数据链路层和物理层,而标准化应用层的工作仍在进行中。本文结合奇瑞公司项目~一奇瑞混合动力汽车的研制与实现,分析了国内外CAN总线应用层协议的研究现状,在此基础上,完成了适合汽车电控系统的CAN应用层扔议的设计与实现。

在设计与实现CAN应用层协议的过程中,“信息传输的实时性”、“网络的可靠性”和“系统的标准化”是三个最重要的考虑因素。为了满足实时性要求,应用层将通讯数据进行分类,不同类型的通讯数据分配有不同的传输优先级和传输方式;为了满足可靠性的要求,应用层协议应具备网络管理的功能,同时还具备设备级的检错、容错能力;而系统的标准化则通过提供标准的、统一的系统通讯模式和设备功能描述方式来实现。本文首先从协议层次模型的角度讨论了CAN,进而给出了CAN应用层协议的功能划分与实现手段,并通过定义、实现基于CANopen协议的通讯系统,对应用层通讯进行了验证。

本文的主要工作如下:

(1)定义了CAN应用层协议定义标识符的主要规则与方法:给出了CAN通讯传输数据的类型划分以及不同类型数据的发送优先级与传送方式。

(2)讨论了过程数传输和数据映射的方法;给出了点对点通讯信道的实现技术:给出了网络管理的实现和设备级错误检铡的方法;研究了设备建模及设备子协议的实现方法。

(3)针对CAN“主从”网络结构,设计了一个CAN应用层协议,该协议派生于CANopen,并给出了该协议的软硬件实现。

关键词控制器局域网CAN;应用层;主从网络

Abstract

Asakindoffieldbus,ControllerAreaNetwork(CAN)hasbeenusedin

widelyfields,suchasautomobile,spaceflight,medicalequipmentandindustrialcontr01.CommunicationmodeofCANisaccordingtoISO/OS[networklayers

module.BecauseCANbusonlyhasonenetwork,itjustcontainsthreelayers:

physicallayer,datalinklayerandapplicationlayer.Physicallayeranddatalink

layeralreadyhavebeenstandard,butapplicationlayerhasnotbeendefinedyet.BasedontheresearchofQiruiHybridElectricVehicle,thispaperdiscussesthe

designandrealizationofCANapplicationprotocolthatisusedforelectric

controllingsysteminhybridelectricvehic.

Itisimportanttotake“MessageReal—TimeTransmission”.“Network

Standardization’’intoaccountduringdesigningandReliability”and‘‘System

implementingaCANapplicationprotoc01.For“MessageReal?TimeTransmission”,applicationprotocoldividestransmittingmessagesintodifferentkindswhichhavedifferentprioritiesandtransmissionmodes;For‘‘NetworkReliability”,applicationprotocolshouldhaveabilitiesofnetworkmanagementandfaultdetecting,tolerantfunctionondevicelevel;And“SystemStandardization’’isimplementedbyprovidingstandardsystemcommunicationmoduleanddevicefunctiondescription.FirstlythispaperpresentsCANinprotocollevelmodule,thenitgivesthefunctionsandtechnique.Finallyitdescribeshowtodesign,implementandtestarealCANcommunicationsystem,whoseapplicationprotocolderivesfromCANopen.

ThispaperpresentsseveraltechnologiesweareconcernedasfoIlows:

(1)IdentifierDistributionrulesandmethodsonCANapplicationprotocollevel.Dividesanddefinesthekindsofmessagesandtheirtransmission.(2)Identifierdefinition,transmissiontypesanddatamappingofprocessdata.Techniqueaboutnode—to—nodedatatransmittingchannel.Implementationfornetworkmanagementandmethodsforfaultmanagementondevicelevel.Devicemoduleanddeviceprofiles.

(3)CAN“Master-Slaves”networkstructure.CANopenprotocolanditsminimumDevicewhichwasimplementedbyhardwareandsoftware.

KeywordsControllerAreaNetwork;ApplicationLeverProtocol;Master—SlaverNetwork

.III.

第1章绪论

1.1研究CAN应用层的背景及意义

在当今的分布式自动控制领域,总线技术的发展始终是一个被高度关注的话题。其中现场总线Ilo】的发展尤为引入注目,被誉为自动化领域的计算机局域网。控制器局域网CAN(ControllerAreaNetwork)131属于现场总线的范畴,它是一种有效支持分布式控制和实时控制的串行通信网络。与其他类型现场总线相比,具有非常明显的优越性,目前已广泛应用于航天、交通、医疗器械以及工业控制等诸多领域,发挥着越来越重要的作用。

CAN通讯协议主要描述设备之间的信息传递方式。CAN协议层的定义与开放系统互连模型(ISO/OSI)141一致。每~层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层is,6]:物理层和数据链路层。CAN没有规定应用层,本身并不完整,需要一个高层协议来定义cAN报文中的标识符以及字节数据的使用。

随着CAN产品的不断增加,为了保证同类产品之间的互用性与可交换性,必须制定相应的设备标准化协议。同时,基于CAN的自动化应用中,例如汽车领域,越来越需要一个开放的、标准化的应用层协议,这个应用层协议能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。国内目前对于CAN的应用多集中在物理层与数据链路层,大多数是根据特定需求进行特定设计,造成系统的可扩展性不高,与标准化的CAN应用层协议网络不兼容;同时对新的应用需求要进行全新的设计,不仅大大提高的产品成本,而且延长了产品的开发时间。因此,研究和实现cAN通讯高层协议有着十分重要的现实意义。

1.2CAN的应用及发展

CAN总线的出现和发展根源于现代控制理论f71的发展,最初是为汽车的自动化控制而设计【81的新一代总线。随着现代控制理论的不断深入,自动控制技术已从单变量控制到多变量控制,从局部的自动调节到全局的最优控

制。控制对象可能是复杂的、分散的,而且往往又是并行、独立工作的,但是整体上它们是相互关联的有机结合。这里要求对每一个现场设备的状态进行实时同步的采集、综合分析、推理、判断从而做出最佳的控制决策。而一个控制系统应具有高度的灵活性和可靠性,分布式控制系统pl就是为了适应这种要求而发展起来的。而CAN总线正是根据上述新的需要而设计的,在当前的分布式控制总线当中,依靠其突出的特性,应用于越来越多的领域。

CAN属于现场总线的范畴,是应用在最底层的一种总线型拓扑的网络。进一步讲,这种总线是用做现场控制系统的,直接与所有受控节点(设备)串行相连的通信网络。现场范围可以从一台简单的家电设备到汽车、飞机、卫星等复杂的控制网络。最初CAN被用在汽车等自动控制设备巾,之后被引入了工业控制领域ll…。由于设备和网络所处的环境可能很特殊,刺信号的干扰往往是多方面的,而要求控制必须是实时性很强,这些特性决定了CAN网络有别于一般网络的特性以及它的特殊应用范围。确切的说,CAN本身就是为可靠的,分布式实时控制系统而设计的{H+121。

CAN作为智能设备的联系纽带,把挂接在总线上、作为网络节点的只能设备连接为网络系统,并进一步构成自动化系统,实现基本控制、补偿计算、参数修改、报警、显示、监控、优化及控管一体化的综合自动化功能。是一项集嵌入式系统、控制、计算机、数字通信、网络为一体的综合技术。

早期对CAN的应用,各个厂家大都定义属于自己的应用层协议。随着CAN应用范围的不断扩大,当前对CAN的应用则越来越趋向于使用统一的应用层协议。对于CAN的研究与应用,国内起步较晚,但是其发展速度十分惊人。开发应用CAN技术的热潮正在兴起。很多公司都在考虑在自己的设备上应用这种新型、先进以及可靠的总线系统。但是对于它的应用,大多还停留在对CAN通讯帧结构的自定义分配和CAN控制器的直接编码上,并没有形成一套系统、成熟的CAN开发协议层。直接影响了CAN系统的可扩展性和可靠性,同时大大增加了重复开发的次数以及延长了开发时间。这种情况在最近有所改善,一些公司开始引入国外成熟并且被大量应用的CAN通信协议层结构,并且在国内开始推广,这不仅大大推进了CAN总线系统在国内的应用,而且提高了国内开发人员对CAN系统的认谚{和使用能力。

1.3CAN通讯协议层概述

为了达到设计的透明度以及实施的灵活性,CAN通讯协议的设计严格遵循ISO/OSI模型。由于CAN网络为单网结构,所以CAN通讯协议层只包括ISO/OSI模型的应用层(ApplicationLayer)、数据链路层(DataLinkLayer)和物理层(PhysicalLayer)。目前已经国际标准化的CAN协议层包括数据链路层和物理层¨31,实际设计中,这两层完全由硬件实现,设计人员无需冉为此开发相关软件(Software)或固件(Firmware)。而应用层针对不I司的应用,根据其应用范围、复杂程度和成本等因素,设计者可以综合考虑已有的成熟CAN高层协议,女ICANopenIl””】、DeviceNet[19】、SDS,也可以自行定义设计相应的CAN应用层协议。CAN应用层协议的引入是因为CAN总线协议并没有定义11/29位帧标识位和8字节数据的使用规则,不同应用层协议的网络结点支持数目、数据传输能力以及网络管理方式有很大差异,从而使得它们在作用范围和性能方面有着显著的不同之处。

CAN通讯协议层的基本结构示意图见图1—1。由于CAN的单网络特性,因此CAN通讯协议层省去了ISO/OSI模型中的网络层、传输层、会话层以及表示层,只保留了物理层、数据链路层和应用层。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。

发送设备接收设备

图1-1CAN协议层

Figurel?1CANProtocolLayers

物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实

际传输。同一网络内,物理层对于所有的节点必须是相同的。

数据链路层的作用范围主要包括查找被发送的报文、确定由实际要使用的传输层接收哪一个报文以及为应用层相关硬件提供接口。包括传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候丌始接收报文,均在数据链路层里确定。位定时的一些普通功能也可以看作是数据链路层的一部分。数据链路层的修改是受到限制的。

应用层的功能则包括为CAN网络提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。具体来说要具备以下的功能:为网络中的每一个有效设备都能够提供一组有效的服务与协议;提供配置设备、通讯数据的含义,定义数据通讯方式:为设备增加符合规范的行为。在整个应用层协议的设计与应用过程中,合理、高效的安排各类报文的传输对系统的性能有及其重要的影响。目前对于传输机制的研究也很多【2”23I,出发点都为了保证实时性与可靠性。

1.4已有CAN应用屡协议简介

基于CAN的应用层协议当前已有几个相对成型的标准。根据不同的要求,这些解决方案在作用范围和性能方面有着显著的不同之处。

通过应用直接采纳的应用层,其标准广泛的德到了接受。代表他们的是CALl24]和OSEK[2s。J。CAL可以被认为是不依赖于应用的应用层,它适用于各种基于CAN且赢接使用应用层服务的应用里,而OSEK.Corn/Net标准则具有应用层和网络管理的功能性,甚至提供了容错控制枧制1281,主要用于汽车网络中。

CAL(CANApplicationLayer)发布于1993年,是CiA的首批效力条款之一。CAL为基于CAN的分布式系统的实现提供了一个不依赖于应用、面向对象的环境。它为通讯、标识符分配、网络和层管理提供了对象和服务。CAL的主要应用在基于CAN的分布式系统,这个系统不要求可配置性以及标准化的设备建模。CAL的一个子集是作为CANopen的应用层,因此,CANopen的设备可以用在指定的CAL系统中。

OSEK/VDX是汽车行业里的一个联合开发项目,其目的是为汽车的分布式系统提供一个工业标准以便具有开放式的结构。这个标准包括一个实时

哈尔滨工业大学_[学倾士学位论立

操作系统的定义,软件接口的定义以及一个通讯和网络管理系统的定义。OSEK操作系统提供相关服务以便于任务管理和同步、中断管理、警告和错误处理。这个操作系统的主要目的是规定一个通用平台以集成不同厂家的软件模块。由于想把操作系统使用在任何类型的控制单元中,因此它必须支持大多数硬件的实时应用(time.criticalapplications)。OSEK通讯定义了一个硬件以及总线系统独立的应用接口。本地和远程任务的通讯是由操作系统通过“信息对象”执行的。这里要区别两种信息:“状态信息”和“事件信息”。状态信息通常表示大多数系统变量(没有缓冲)的实际状态,并通过事件信息报告事件。因此,使用者必须处理每个信息。这两种信息可以在点对点和多播传送方式中使用,传送模式有周期性、事件驱动和周期性/事件驱动。传输层服务额外的向不响应不分段的数据层服务提供响应的分段的数据传送。

由于汽车内系统的通讯要求非常高,为了确保通讯网络的安全性和可靠性提出了一个完善的网络管理系统。系统使用“节点监控”,即每一个节点都被网络中的其他节点监控(直接监控)。被监控的节点根据一个专门和统一的算法发送~个NM(NetworkMessage)信息。直接节点监控要求网络范围内的NM信息要同步。因此,这里使用了一个逻辑环(109icring)。任何节点都必须能够将NM信息发送到所有其他节点并从其他节点接收信息。

如果觉得直接监控对于一个设备来说太复杂,可以使用“间接监控”原则。这个原则基于应用信息的观察,并受限制于定期发送信息的节点。这种类型的节点可能被一个或更多的其他节点监控。

还有一个十分不同的开放式系统,其解决方案由SAE儿939t291标准提供。这个标准由汽车工程师重型汽车社团和总线部门为了向电子系统提供一个开放的互连系统而定义的。这个系统的主要应用范围是面向路面的或非路面设计的轻、中、重型机车,以及为了获取部件而专有的静止应用场合。机车包括行驶在公路上的卡车和拖车、建筑装备、农业装备和船用仪器。J1939标准是基于29为信息标识符的用法。这个标准化的信息标识符使得8个优先级别、预定义信息类型、指定目标的通讯和广播各有差异。J1939/7x定义了标准的汽车内信息和诊断信息。因此,数据类型、数据的范围、数据重复率等,以及相应的参数组号码,他们确定了各自的信息标识符。此外,J1939还定义了信息映射如何到参数组的CAN数据区。

工业应用中,主要代表开放式分布系统的标准是CANopen、DeviceNet

哈尔滨T业人学工学颂士学位论丈

和SDS。

开放式分布系统标准的工业应用包括工业自动化中由工业器件(传感器、执行器、控制器、人机接口)组成的低层网络。这种应用主要要求的有:可配置性、灵活性和可扩展性。为了保持生产厂商的独立性,必须以“设备子协议(DeviceProfile)”的形式定义器件的功能性。因此,这种类型的通讯系统解决方案提供了一个完整的通讯枢架、系统服务以及设备建模,其目的是便于系统配置和设备参数化。

CANopen标准是由CiA(CAN—inAutomation)旨在解答EU,研究程序结果的一组成员编制的。CANopen在通讯和系统服务以及网络管理的方面使用了CAL(CANApplicationLayer)子集。设备建模是借助于对象目录而基于设备功能性的描述。这种方法广泛的符合于其他现场总线(Interbus—S,Profibus)使用的设备描述形式。标准设备以“设备子协议”的形式规定。CANopen标准由CiA同行机构集团支持,设备子协议由CiA中专门的同行机构集团规定。

DeviceNet是由Allen.Bradley开发的非常成熟的开放式网络。它根据抽象对象模型来定义。这个模型是指可用的通讯服务和一个DeviceNet节点的外部可见行为。Device标准由一个独立的供应者组织(ODVA,OpenDeviceNetVendorAssociation)管理,这个组织同时广泛的支持DeviceNet市场。相应的设备子协议(DeviceProfile)规定同类设备的行为。

SDS(SmartDistributionSystems)是由HoneywellMicroSwitch丌发的一个开放式网络标准。由于它基于特定的应用层协议,因此定义了一个面向对象的等级设备模型以便在SDS设备之间建立互用性。SDS是特别为分布式二进制传感器和执行器设计的。

1.5课题来源、研究内容及本文结构

本课题来源于上汽?奇瑞公司预研项目“混合动力轿车”,并得到“863”项目支持。通过对分布式控制系统通讯特性的分析,结合已有的多种开放式CAN应用层协议,从一般性方向出发,研究CAN应用层协议特点、应具有的功能和实现方法。着重讨论应用层协议的标识符分配、过程数据交换、点对点通信、网络管理以及网络错误检测等功能,并设计实现一个具有上述特征的CAN应用层协议,以便作为进一步的研究平台,甚至应用于相应的工程应用。

哈尔滨工业夫学_T学硕J学位论文

整篇论文以CAN通讯协议层次(物理层、数据链路层以及应用层)的结构加以展开。第1章介绍了CAN总线的发展历史、应用及前景,论述了研究CAN应用层协议的目的、意义、主要功能和实现技术,并且对已有的广泛应用的CAN应用层协议进行了介绍。第2章重点讨论了CAN物理层和数据链路层的功能及工作机制。第3章给出了CAN应用层功能的一般性描述,并对其中的重要功能加以说明,同时给出了实现这些功能的具体方法。第4章给出了一个具有具体的CAN应用层协议的设计和实现过程,给出了通讯节点软硬件设计方案,包括标识符分配、报文类型定义、报文传送机制和网络管理机制的具体实现。

哈尔演工业人学工学硕1擘位论义

第2章CAN物理层与数据链路层

2.1CAN物理层

CAN物理层【30】(PhysicalLayer)定义信号是如何实际传输的,主要涉及到位定时/同步、位编码/解码的解释。

2.1.1位编码/解码

CAN中的总线数值为两种互补逻辑数值之一:“显性”(Dominant)或“隐性”(Recessive)。“显性”数值表示逻辑“0”,“隐性”表示逻辑“l”。“显性”位和“隐性”位同时发送时,最后总线数值将为“显性”。在总线空闲或“隐性”位期间,发送“隐性”状态。并且,CAN系统内两个任意节点删的位速率与其最大传输距离有关,在最大总线长度为40m时,位速率可达到1Mbps。报文的位流根据“不归零”(NRZ)方法编码。这就是说,在整个位时间里,位的电平要么为显性,要么为隐性。

位编码即位流编码(BitStreamCoding),它的规则是,帧的如下部分:帧起始、仲裁域、控制域、数据域以及CRC序列,均通过位填充的方法编码。无论何时,发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入一补充位。数据帧或远程帧的其余位域(CRC界定符、应答域和帧结尾)格式固定,没有填充。错误帧和过载帧的格式也固定,它们不用位填充的方法编码。

2.1.2位定时,同步

CAN给定的最大振荡器容差为125kbps的应用里可使用陶瓷谐振器,线速度范围,需要使用石英晶振。

量。1.58%,因此,一般在传输速率低于但是如果要满足CAN协议的整个总

1.标称位速率(NominalBitRate)

标称位速率为一理想的发送器在没有重新同步的情况下每秒发送的位数2.标称位时间(NominalBitTime)

哈尔滨工业大学工学硕士学位论文

标称位时间=1/标称位速率

可以把标称位时间划分成为几个不重叠时间的片断,它们是同步段、传播段、相位缓冲段1和相位缓冲段2,如图2—1所示。

』采样点

图2-1CAN标称位时间

Figure2—1CANNominalBitTime

同步段(SYNC—SEG):位时间的同步段用于同步总线上不同的节点。这一段内要有一个跳变沿。

传播段(PROPSEG):传播段用来补偿网络内的物理延时时间。它是信号在总线传播的时间、输入比较器延时和输出驱动器延时总和的2倍。

相位缓冲段1、相位缓冲段2(PHASESEGl,PHASESEG2):相位缓冲段用于补偿边沿阶段的误差。这两个段可以通过重新同步来加长或缩短。

采样点(SamplePoint):采样点是读取总线电平并转换为对应位值的一个时间点。采样点位于相位缓冲段1的结尾。

3.信息处理时间

信息处理时间是以~个采样点作为起始的时间段,它被保留用于计算后续的位的位电平。

4,时间量程(TimeQuantum)

时间量程是从振荡器周期的固定时间单元派生而来的。这里存在一个可编程的预比例因子,其数值范围为1—32之恻的整数。以最小时浏量程为起点,时间量程的长度为:

时间量程=mx最小时间量程

式中:m为预比例因子。

5.时间段的长度

同步段为一个时间量程;

哈尔演_【业入学T学碗rL学位论文

传播段的长度可设置为1,2….,8个时问量程;

相位缓冲段l的长度可设为l,2….,8个时间量程;

相位缓冲段2的长度为相位缓冲段l和信息处理时间的最大值;

信息处理时间小于或等于2个时间量程;

~个位时间总的时间量程值可以编程为8—25的范围。

6.硬同步(HardSynchronization)

一个硬同步后,内部的位时间以同步段重新开始。因此,硬同步迫使引起硬同步的跳变沿位于重新开始的位时间同步段之内。

7.重新同步跳转宽度(ResynchronizationJumpWith)

重新同步的结果是相位缓冲段1增长,或使相位缓冲段2缩短。相位缓冲段加长或缩短的数量有一个上限,此上限由重新同步跳转宽度给定。重新同步跳转宽度设置为在1和最小值之间(最小值为1,PHAsESEGl)。

可以从一位值到另~位值的转变中提取时钟信息。由于具有同一值的连续位的最大数目是固定的,这个属性在帧期间使总线单元重新同步于位流成为可能。可用于重新同步的两个跳变之间的最大长度为29个时间单位。

8,边沿的相位误差(PhaseErrorofanEdge)

~个边沿的相位误差由相对于同步段边沿的位置给出,以时间量程度量。相位误差的符号定义如下:

e=0如果边沿处于同步段里(SYNCSEG)。

e>0如果边沿位于采样点(SamplePoint)之前。

e<0如果边沿处于前一个位的采样点之后。

9.重新同步(Resynchronization)

当引起重新同步的边沿相位误差的值小于或等于重新跳转宽度的编程值时,重新同步和硬件同步的作用相同。当相位误差的值大于重新同步跳转宽度时,则如果相位误差为正,则相位缓冲段l就增长一个重新同步跳转宽度的值。如果相位误差为负,则相位缓冲段2就缩短一个重新同步跳转宽度的值。

10.同步的规则(SynchronizationRules)

硬同步和重新同步时同步的两种形式,遵循以下同步的规则:

(1)在一个位时间里只允许一个同步;

(2)仅当采样点之前探测到的值与紧跟边沿之后的总线值不相符合时,才把边沿用于同步;

(3)在总线空阑期间,无论何时,只要有一个隐性转变为显性的边

:::::===:::窒垒堡三些奎耋三兰堡耋兰堡篁查=:::::::沿,就会执行硬同步;

(4)符合规则(1)和规则(2)的所有其他从隐形转为显性的边沿都可用于重新同步。例外的情况是,如果只有隐形到显性的边沿用于重新同步,~个发送显性位的节点,将不会执行如同具有正相位误差的由隐性转变为显性的边沿所引起的那种重新同步。

2.1.3传输介质

CAN物理层并没有明确规定传输介质的种类与标称,目前大多数应用采用的通讯介质为双绞线、同轴电缆和光纤等。采用双绞线通信时,速率为1Mbps/40m,50kbps/10kra,节点数可达110个。但是,还有一些特殊的应用可能采用无线传输机制Ⅲ1。

2.2CAN数据链路层

数据链路层包含以下两个子层:逻辑链路控制子层LLC(LogicLinkContr01)和介质访问控制子层MAC(MediumAccessContr01)。LLC涉及报文滤波、过载通知以及恢复管理:而MAC是CAN数据链路层协议的核-Ii,,它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文分帧、仲裁、应答、错误检测和标定。MAC子层也受一个名为“故障界定”(FaultConfinement)的管理实体监管。此故障界定为自检机制,以便把永久故障和短时扰动区别开来。

2.2.1CAN帧

CAN总线采用短帧结构,其具体内容如图2-2所示。其中1l位标识符,i位RTR,4位DLC,0~8字节数据为模块的微擦制器写入CAN总线控制器中相应寄存器的数据。其它数据[妇CAN总线控制器自动添加。上图为CAN帧的标准形式,采用11位标识符;CAN帧还有一种扩展形式,采用29位标识符。

CAN帧中没有寻址信息,而采用11/29位标识符来标志每帧的信息类型。也就是说,CAN帧是按信息的类型进行选择接收的。同时,标识符还在总线使用仲裁时来确定优先级。当一个CAN节点获得总线使用权并丌始发送信息时,其它节点均为接收器,将信息接受完毕之后,再将其标识符用

哈尔滨T业大学工学硕上学位论文

本节点的接收掩码寄存器和接收码寄存器中的数据进行验证,判定此信息帧是否为本节点所要接收的信息类型。是则存.A。CAN总线控制器中的FIFO接收缓存,否则丢弃。由此可见,CAN总线不仅支持点对点方式的通信,同时也支持广播式的通信,从而最大限度的减少了总线的负荷。

图2—2CAN帧的组成结构

Figure2-2StructureofCANFrame

SOF为帧起始位。RTR为远程发送请求位(RTR=l表示此帧无数据,主要用来触发其它节点发送信息),IDE为帧扩展标志位(标志该帧是否为扩展形式),1"0为保留位DLC为数据长度(字节为单位,≤8)。CRC为循环校验码,由CAN总线控制器自动根据发送数据形成并发送。接收端电对CRC进行自动校验,对于校验错误的CAN帧予以丢弃,不进行标识符验证。ACK为应答位,由接收端将该位由隐性位改为显性位,通知发送端该帧已正确接收。EOF为帧结束位,帧间空间是总线传输下一个CAN帧所必须等待的空闲时间。如果没有等待发送的CAN帧,则总线进入空闲状态。

2.2.2总线仲裁

CAN总线采用类似于CSMA/CD[32】机制来进行总线使用仲裁。由标识符和RTR构成仲裁场,确定CAN帧的优先级。CAN总线定义“0”电平为显性位,“1”为隐性位。当“0”和“1”同时在总线上传输时,总线的电位为“0”。如图2—3所示。

CAN节点只有侦测到总线为空闲状态时,才开始发送数据。当超过1个节点同时向CAN总线发送数据时,每个节点都一边发送数据一边侦听,当

发现发送的隐性位被显性位改写时自动放弃发送,在总线空闲时重新发送直至成功。由此可见,CAN总线这种无损冲突仲裁不消耗带宽,总线带宽的使用效率几乎可达100%。从这个角度上来说,此仲裁机制要优于CSMA/CD。后者要发送信息通知各节点总线冲突,每个节点在等待一个随即时间后重新发送,从而降低了总线的使用效率。但不难看出,此仲裁机制保证了优先级较高的CAN帧发送的优先性,这就容易造成“总占”现象。当然,这是与CAN帧按信息类型接收发送相对应的。

图2—4CAN帧仲裁示铡

Figure2-4ExampleofCANFrameArbitration

2.2.3应答和错误检测机制

CAN总线的应答机制同样不占用总线带宽。如前所述,发送端是通过侦听ACK位来确认至少有一个CAN节点正确接收了此帧。CAN节点对总线上传输的全部CAN帧都进行错误检测,这使得CAN总线网络具有全局安全性。CAN总线的错误检查机制包括以下内容:

1.位错误

CAN节点侦测到的数据位于正在发送的数据位不一致时,认为发生

喻尔滨T=业大学1.学坝士学位论文

位错误。

2.位填充错误

CAN节点在连续发送了5个相同电位时会自动填加一位(电平与之相反),称之为“位填充”。接收端会根据同样的位填充规则在CAN帧被存入接收缓存之前进行位删除。位填充的目的有两个:一是保证总线数据的频率以便接收端可以进行位同步。二是提供检测手段,如有违反位填充规则的帧,这认为该帧为错误帧。

3.CRC校验

CAN节点会自动计算,传输,校验15位的CRC校验码。当发生CRC校验错误时,判定此CAN帧发生传输错误。

4.帧格式错误

接收器对接收到的CAN帧都要按照CAN帧的帧格式进行格式检测。

5.应答错误

当发送端在CAN帧发送完毕之后,没有侦测到AcK为显性位则认为发生应答错误,即接收端认为CAN帧有错拒绝接收,应答位丢失,或者总线上没有其它CAN节点。

当任意CAN节点检测到以上这些错误之一,便立刻发送连续6为显性位(主动错误帧)以防止其它CAN节点继续接收有错误的CAN帧。其它节点由于收到这连续6位显性位违反了位填充规则而判定为错误帧,进而也分别发送一次主动错误帧。当这些主动错误帧发送完毕之后,原来发送数据的节点重新发送。

对于暂时错误和永久性故障节点的判别,CAN是通过错误计数器来实现的。总线上的每个单元中都设置有两种计数器:发送出错计数器和接受出错计数器。每侦测到一次帧错误,计数器;ha8;每正确收到一次数据帧,计数器减l,减No为止。注意,总线冲突不发生位错误。网络中的任何一个节点。根据其错误计数器数值,可能处于下列三种状态之一。

1.“错误一激活”

错误次数为O~127。一个“错误一激活”节点可以正常参与总线通信,并在检测到错误时,发送一个主动错误帧。当错误次数达到96次时,CAN总线控制器向微控制器发送中断请求。

2.“错误一认可”

错误次数为128~255。一个“错误一认可”节点不应发送主动错误标志。它正常参与总线通信,但在检测到错误时,发送一个被动错误帧,被动

哈尔滨T业人学工学倾_+学位论文

错误标志有6个连续的隐性位组成(违反帧填充规则)。被动错误帧使得该节点放弃发送任务。

3.“总线脱离”

错误次数大于255。在“总线脱离”状态下,节点既不发送,也不接受任何帧。只有应用户命令或侦测到128个连续11位隐性位,节点才能离丌“总线脱离”状态,进入“错误一激活”状态(计数器为0)。“脱离总线”状态不允许对总线有任何影响。

可以看出,CAN数据链路层本身提供了很强的错误检测和界定能力,均通过硬件实现【33,3钔,本身功能已经十分强大,但是仍然不能够覆盖所有错误,有些则必须由应用层软件来完成。

2.3本章小结

本章首先给出了CAN网络协议层对应于ISO/OSI模型的一般描述。给出了物理层、数据链路层以及应用层的概念以及各自完成的功能。并给出了CAN物理层与数据链路层的详细介绍,主要包括位编码/解码、位定时/同步、CAN通讯帧、总线仲裁机制以及应答与错误检测。

哈尔滨1_业人学工学硕【.学位论文

第3章CAN应用层协议的研究

3.1CAN应用层功能与实现方法

1.CAN应用层功能

第二章给出的标准化的CAN协议,只包括ISO第一层(物理层)和第二层(数据链路层),对于大多数应用,即使是一些非常简单的基于CAN的分布式系统,其功能是远远不够的,需要引入应用层协议加以扩充。

CAN应用层为网络中的每一个有效设备提供一组有用的服务与协议。由于CAN应用领域的特殊性,CAN应用层传输必须保证以下几点;传输信息的安全:总线的功能寻址和点到点寻址能力:节点在尽量小的时间内成功访问总线;最优化的传输速率(波特率);节点的故障诊断能力;总线具有一定的可扩充性等等。

在工业自动化应用中,也越来越需要一个开放、标准化的较高层协议,这个协议支持不同生产厂家设备的互用性和可交换性。因此,要求有标准设备模型的规范,即,基本功能性的“标准设备”和“标准应用”的规范,作为对标准化应用层的补充。

2.实现方法

CAN应用层功能的具体实现,需要研究与实现以下内容:

信息标识符分配:

过程数据交换的方法;

点对点数据通讯;

网络管理;

网络错误检测;

设备建模和设备子协议的原则;

3.2信息标识符分配

由于CAN协议没有规定信息标识符的分配,对应用层来说,则可以根据不同需求使用不同的方法。由于CAN信息的标识符决定了信息相关的优先权和信息的等待时间,因此信息标识符分配的方法被认为是基于CAN的

相关文档
最新文档