can现场CAN总线.doc_第1页
can现场CAN总线.doc_第2页
can现场CAN总线.doc_第3页
can现场CAN总线.doc_第4页
can现场CAN总线.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现场can总线的认识 -论文 物联网工程1202班 杨红 2012234050223现场can总线的认识一 Can总线基本概念CAN 是Controller Area Network 的缩写,是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。二Can总线的特点(1)它是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。 (2)通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1Mb/s。 (3)CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级判别等项工作。 (4)CAN协议的一个最大特点是废除了传统的站地址编码,雨代之以对通信数据块进行编码。采用这种方法的优点是可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种数据块编码方式,还可使不同的节点同时接收到相同的数据,这一点在分步式控制中非常重要。 (5)数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而倮证了通信的实时性。 (6)CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN总线所具有的卓越性能、极高的可靠性和独特设计,特别适合工业设各测控单元互连。因此备受工业界的重视,并已公认为最有前途的现场总线之一。三、CAN的工作原理当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。CAN总线的报文发送和接收参见图1。当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时, 转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。四 Can总线所学SJA1000寄存器的基本设置1 SJA1000寄存器初始化配置顺序(1)进入复位模式,进行配置(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。(3)配置总线定时寄存器,确定波特率。(4)配置中断使能寄存器,决定使用那几个中断(5)配置输出控制寄存器(6)配置验收码和屏蔽码,决定接收哪一类节点的数据(7)退出复位模式,进入正常工作模式。2 发送数据顺序(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。(2)配置发送缓冲区。(3)配置命令寄存器,启动发送。3 接收数据顺序(1)采用中断接收,关CPU中断。(2)判断是不是接收中断。(3)判断是远程帧还是数据帧(4)读取数据(5)开中断五 Can总线技术规范1. 数据帧数据帧由7个不同的位场组成:帧起始(Start of Frame)、仲裁场(Arbitration Frame)、控制场(Control Frame)、数据场(Data Frame)、CRC场(CRC Frame)、应答场(ACK Frame)、帧结尾(End of Frame)。数据场的长度为0到8位。报文的数据帧一般结构如图1所示。图1 报文的数据帧结构在CAN2.0B中存在两种不同的帧格式,其主要区别在标识符的长度,在标准帧格式里,仲裁场由11位识别符和远程请求位(RTR)组成。如图2所示。在扩展帧格式里,仲裁场包括29位识别符、替代远程请求位(SRR)、识别符扩展位(IDE)和RTR位。如图3所示。图2 标准格式中的数据帧图3 扩展格式中的数据帧扩展格式是CAN协议的一个新特色。为了使控制器的设计相对地简单,不要求执行完全的扩展格式,但必须完全支持标准格式。新的控制器至少应具有以下属性,才被认为是符合CAN规范:l 每一新的控制器支持标准格式;l 每一新的控制器可以接收扩展格式的报文,不能因为格式差别而破坏扩展帧格式。 下面具体分析数据帧的每一个位场。(1)帧起始帧起始(SOF)标志数据帧或远程帧的开始,仅由一个“显性”位组成。只有在总线空闲时才允许节点开始发送(信号)。所有节点必须同步于首先开始发送报文的节点的帧起始前沿,如图1所示。(2)仲裁场仲裁场由标识符和远程发送请求位(RTR位)组成。RTR位在数据帧中为显性,在远程帧中为隐性。对于CAN2.0A标准,标识符长度为11位,这些位按ID.10到ID.0的顺序发送,最低位是ID0, 7个最高位(ID.10-ID.4)必须不能全是“隐性”,如图4所示。图4 CAN2.0A的仲裁场的组成对于CAN2.0B标准,标准格式帧与扩展格式帧的仲裁场标识符格式不同。标准格式里,仲裁场由11位识别符和RTR位组成。识别符位由ID.28ID.18组成。如图9.4所示。而在扩展格式里,仲裁场包括29位识别符、替代远程请求位SRR、标识位IDE、远程发送请求位RTR。其识别符由ID-28ID-0组成,其格式包含两个部分:11位(ID.28ID.18)基本ID、18位(ID.17ID.0)扩展ID。如图9.5所示,扩展格式里,基本ID首先发送,其次是SRR位和IDE位。扩展ID的发送位于SRR位和IDE位之后。SRR的全称是“替代远程请求位(Substitute Remote Request BIT)”,SRR是一隐性位。它在扩展格式的标准帧RTR位上被发送,并代替标准帧的RTR位。因此,如果扩展帧的基本ID和标准帧的识别符相同,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。IDE的全称是“识别符扩展位(Identifier Extension Bit)”,对于扩展格式,IDE位属于仲裁场;对于标准格式,IDE位属于控制场。标准格式的IDE位为“显性”,而扩展格式的IDE位为“隐性”。(3)控制场控制场由6个位组成,其结构如图5所示。标准格式和扩展格式的控制场格式不同。标准格式里的帧包括数据长度代码、IDE位(为显性位,见上文)及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的任何组合。数据长度代码(标准格式以及扩展格式)DLC,如表1所示。图5 控制场结构表1数据帧长度代码DLC数据字节的数目数据长度代码DLC3DLC2DLC1DLC0012345678ddddddddrddddrrrrdddrrddrrddrdrdrdrd数据长度代码指示了数据场里的字节数量。其中:d“显性”, r“隐性”,数据帧允许的数据字节数为0,1,7,8。其他的数值不允许使用。(4) 数据场数据场由数据帧里的发送数据组成。它可以为08个字节,每字节包含了8个位,首先发送最高有效位。(5) 循环冗余码CRC场CRC场包括CRC序列(CRC Sequence),其后是CRC界定符(CRC Delimiter),如图6所示。图6 循环冗余码CRC场 CRC序列(适合标准格式和扩展格式)CRC序列由循环冗余码求得的帧检查序列组成,最适用于位数低于127的帧。为进行CRC计算,被除的多项式系数由无填充位流给定。组成这些位流的成分是:帧起始、仲裁场、控制场、数据场(假如有的话),而15个最低位的系数是0。将此多项式被下列多项式发生器除(其系数以2为模):X15+X14+X10+X8+X7+X4+X3+1这个多项式除法的余数就是发送到总线上的CRC序列。为了实现这个功能,可以使用15位的位移寄存器CRC_RG(14:0)。如果NXTBIT指示位流的下一位,那么从帧的起始到数据场末尾都由没有填充的位顺序给定。CRC序列的计算如下:CRC_RG=0; /初始化移位寄存器REPEATCRCNXT=NXTBIT EXOR CRC_RG(14);CRC_RG(14:1)=CRC_RG(13:0); /寄存器左移一位CRC_RG(0)=0;IF CRCNXT THENCRC_RG(14:0)CRC_RG(14:0)EXOR(4599H);END IFUNTIL(CRC序列起始或有一错误条件) CRC界定符(标准格式以及扩展格式)CRC序列之后是CRC界定符,它包含一个单独的“隐性”位。(6)应答场(ACK Field)应答场长度为2个位,包含应答间隙(ACK Slot)和应答界定符(ACK Delimiter),如图7所示。在ACK场(应答场)里,发送节点发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK Slot)期间向发送器发送一“显性”位以示应答。 应答间隙所有接收到匹配CRC序列(CRC Sequence)的节点会在应答间隙(ACK Slot)期间用一“显性”的位写入发送器的“隐性”位来做出回答。 应答界定符应答界定符是应答场的第二个位,并且是一个必须为“隐性”的位。因此,应答间隙(ACK Slot)被两个“隐性”的位所包围,也就是CRC界定符(CRC Delimiter)和应答界定符(ACK Delimiter)。图7 应答场(7)帧结尾(标准格式以及扩展格式)每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。2. 远程帧作为接收器的节点,可以通过向相应的数据源节点发送远程帧激活该源节点,让该源节点把数据发送给接收器。远程帧也有标准格式和扩展格式,而且都由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码DLC的数值是不受制约的(可以标注为容许范围8里的任何数值),此数值是相应于数据帧的数据长度代码。远程帧结构如图8所示。图8远程帧结构3. 错误帧错误帧由两个不同的场组成,如图9所示。第一个场是不同节点提供的错误标志(Error Flag)的叠加,第二个场是错误界定符。为了能正确地终止错误帧,“错误认可”的节点要求总线至少有长度为3个位时间的总线空闲(如果“错误认可”的接收器有局部错误的话)。因此,总线的载荷不应为100%。图9 错误帧结构(图中统一起见出错帧改为错误帧)(1) 错误标志有两种形式的错误标志:激活错误标志和认可错误标志(有的文献译为:“主动”和“被动”错误标志或“活动”和“认可” 错误标志)。l “激活错误”标志由6个连续的“显性”位组成。l “认可错误”标志由6个连续的“隐性”的位组成,除非被其他节点的“显性”位重写。检测到错误条件的“错误激活”的节点通过发送“激活错误”标志指示错误。错误标志的格式破坏了从帧起始到CRC界定符的位填充规则(参见“编码”),或者破坏了ACK场或帧结尾场的固定格式。所有其他的节点由此检测到错误条件,并与此同时开始发送错误标志。所形成的“显性”位序列就是把各个节点发送的不同的错误标志叠加在一起的结果,这个序列的总长度最小为6个位,最大为12个位。检测到错误条件的“错误认可”的节点通过发送“认可错误”标志指示错误,“错误认可”的节点等待6个相同极性的连续位,当这6个相同的位被检测到时,“认可错误”标志的发送就完成。(2) 错误界定符错误界定符包括8个“隐性”的位。错误标志传送了以后,每一个节点就发送一个“隐性”的位,并一直监视总线直到检测出一个“隐性”的位为止,然后就开始发送其余7个“隐性”位。4. 过载帧过载帧(Overload Frame)包括两个位场:过载标志和过载界定符,其结构如图10所示。图10 过载帧结构有三种过载的情况会引发过载标志的传送:l 接收器的内部情况,需要延迟下一个数据帧和远程帧。l 在间歇(Intermission)的第一和第二字节检测到一个“显性”位。l 如果CAN节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点会发送一个过载帧。该帧不是错误帧,错误计数器不会增加。根据过载情况1而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而根据情况2和情况3引发的过载帧应起始于所检测到“显性”位之后的位。通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。(1)过载标志(Overload Flag)过载标志由6个“显性”的位组成。过载标志的所有形式和“激活错误”标志的一样。过载标志的格式破坏了间歇场的固定格式。因此,所有其他的节点都检测到过载条件并与此同时发出过载标志。如果有的节点在间歇的第3个位期间检测到“显性”位,则这个位将解释为帧的起始。(2)过载界定符(Overload Delimiter)过载界定符包括8个“隐性”的位。过载界定符的形式和错误界定符的形式一样。过载标志被传送后,节点就一直监视总线直到检测到一个从“显性”位到“隐性”位的跳变。此时,总线上的每一个节点完成了过载标志的发送,并开始同时发送其余7个“隐性”位。5. 帧间空间数据帧(或远程帧)与先行帧的隔离是通过帧间空间实现的,无论此先行帧类型如何(数据帧、远程帧、错误帧、过载帧)。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。帧间空间包括间歇、总线空闲的位场。如果“错误认可”的节点已作为前一报文的发送器,则其帧间空间除了间歇、总线空闲外,还包括称作“挂起传送”(暂停发送)(Suspend Transmission)的位场。对于不是“错误认可”的节点,或作为前一报文的接收器的节点,其帧间空间如图11所示:帧帧帧间空间总线空闲间歇场图11 非 “错误认可”帧间空间对于作为前一报文发送器的“错误认可”的节点,其帧间空间如图12所示:帧帧帧间空间暂停发送场间歇场总线空闲图12 “错误激活”帧间空间(1)间歇(Intermission)间歇包括3个“隐性”的位。间歇期间,所有的节点均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。如果CAN节点有一报文等待发送并且节点在间歇的第三位采集到一显性位,则此位被解释为帧的起始位,并从下一位开始发送报文的标识符首位,而不用首先发送帧的起始位或成为一接收器。(2)总线空闲(Bus Idle)总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的节点就会访问总线。在发送其他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。总线上检测到的“显性”的位可被解释为帧的起始。(3)挂起传送(Suspend Transmission)“错误认可”的节点发送报文后,节点就在下一报文开始传送之前或总线空闲之前发出8个“隐性”的位跟随在间歇的后面。如果与此同时另一节点开始发送报文(由另一节点引起),则此节点就作为这个报文的接收器。六Can总线协议(1)报文(Message)总线上的数据以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。(2)信息路由(Information Routing)在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。(3)标识符 (Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。(4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。(5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。(6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。(7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。(8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。(9)总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式。(10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。(11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。(12)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。(13)CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。(14)报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的校验机制,这些都保证了CAN通信的可靠性。七 Can总线应用实例1 CAN总线双绞线传输 CAN总线典型的网络拓扑是总线结构。1993年颁布的国际标准ISOll898对基于双绞线的CAN总线传输介质特性做出了建议:总线可具有两种逻辑状态,即隐性(逻辑“1”)或显性(逻辑“O”)。图1为基于CAN总线控制器SJAl000和总线驱动器PCA82C250的CAN双绞线传输网络结构图。 CAN总线双绞线传输接口的特点是技术上容易实现,造价低廉;理论上节点数无限制,对环境电磁辐射有一定抑制能力。但随着频率的增长,双绞线线对的衰减迅速增大;双绞线还有所谓近端串扰,即在“发送线对”和“接收线对”之间存在电磁耦合干扰。另外,双绞线的传输速率受距离限制比较大。这些缺陷使得CAN总线不宜在强干扰、高速率、远距离的场合下使用双绞线作为传输介质。2 CAN总线光纤传输 CAN协议支持光纤作为传输介质,但是由于CAN总线网络一般采用总线型结构,并且其总线仲裁采取的是具有优先级的非破坏性CSMA(载波侦听多路访问),而光纤信号的传输则是单向的,因此最简单实用的方法是在某些总线支路上采用光纤介质,整个CAN网络为双绞线和光纤两种传输介质混合使用的方式。结构如图2所示。 作为传输介质,光纤在抗干扰性、传输容量、速率等方面具有许多比双绞线优良的特性。因此,在某些环境恶劣、地理分布范围较广、速率要求较高的CAN总线系统中,可以在相应的支路上使用光纤传输,从而保证整个CAN网络的性能。八 初始化子程序CANINI:MOV DPTR,#MODE ;方式寄存器MOV A,#09H ;进放复位模式,对;SJA1000进行初始化MOVX DPTR,AMOV DPTR,#CDR ;时钟分频寄存器MOV A,#88H ;选择PeliCAN模式,;关准备时钟输出(CLKOUT)MOVX DPTR,AMOV DPTR,#IER ;中断允许寄存器MOV A,#0DH ;开发发送中断、超;载中断和错误警告中断MOVX DPTR,AMOV DPTR,#AMR ;接收屏蔽寄存器MOV R6,#4MOV R0,#DAM ;接收屏蔽寄存器内容;在片内RAM中的首址AMR:MOV A,R0MOVX DPTR,A ;接收屏蔽寄存器赋初值INC DPTRDJNZ R6,AMRMOV DPTR,#ACR ;接收代码寄存器MOV R6,#4MOV R0,#DACR ;收收代码寄存器内容;在片内RAM中的首址ACR:MOV A,R0MOVX DPTR,A 接收代码寄存器赋初值INC DPTRDJNZ R6,ACRMOV DPTR,#BTR0 ;总线定时寄存器0MOV A,#03HMOVX DPTR,AMOV DPTR,#BTR1 ;总线定时寄存器1MOV A,#0FFH ;16MHz晶振情况下,;设置波特率为80kbpsMOVX DPTR,AMOV DPTR,#OCR ;输出控制寄存器MOV A,#0AAHMOVX DPTR,AMOV DPTR,#RBSA ;接收缓存器起始;地址寄存器MOV A,#0 ;设置接收缓存器;FIFO起始地址为0MOVX DPTR, AMOV DPTR,#TXERR ;发送错误计数寄存器MOV A,#0 ;清除发送错误计数寄存器MOVX DPTR,AMOV DPTR,#ECC ;错误代码捕捉寄存器MOVX A,DPTR ;清除错误代码捕捉寄存器MOV DPTR,#MODE ;方式寄存器MOV A,#08H ;设置单滤波接收方式;并返回工作状态MOVX DPTR,ARET接受子程序SEARCH:MOV DPTR,#SR ;状态寄存器地址MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论