CAN总线通讯基于51单片机应用第一章前言1.1概述控制器局域网(CAN-ControllerAreaNetwork)属于现场总线(Fieldbus)的范畴,是众多的属于现场总线标准之一,它适用于工业控制系统,具有通信速率高、可靠性强、连接方便、性能价格比高等诸多特点。它是一种有效支持分布式控制或实时控制的串行通信网络,以其短报文帧及CSMA/CD-AMP(带有信息优先权及冲突检测的载波监听多路访问)的MAC(媒介访问控制)方式而倍受工业自动化领域中设备互连的厚爱。CAN的应用范围遍及从高速网络到低成本的多线路网络,它可以应用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。随着计算机硬件、软件及集成电路技术的迅速发展,同时消费类电子产品、计算机外设、汽车和工业应用等的需求不断增加。高速、高可靠和低成本的通信介质的要求也随之提高。现场总线是当今自动化领域技术发展的热点之一,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。微处理器中常用的串行总线是通用异步接收器传输总线(UART)、串行通信接口(SCI)、同步外设接口(SPI)、内部集成电路(I2C)和通用串行总线(USB),以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)等。这些总线在速度、物理接口要求和通信方法学上都有所不同。在计算机数据传输领域内,长期以来使用的通信标准,尽管被广泛使用,但是无法在需要使用大量的传感器和控制器的复杂或大规模的环境中使用。控制器局部网CAN(CONTROLLERAERANETW0RK)就是为适应这种需要而发展起来的。随着汽车电子技术的发展,消费者对于汽车功能的要求越来越多,汽车上所用的电控单元不断增多,电控单元之间信息交换的需求,使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线,这就促进了车用总线技术的发展。CAN总线的出现,就是为了减少不断增加的信号线,所有的外围器件都可以被连接到总线上由于CAN总线具有可靠性高、实时性好、成本合理等优点,逐渐被应用于如船舶、航天、工业测控、自动化、电力系统、楼宇监控等其他领域中。1.2CAN总线的特点80年代末,在汽车工业中,由于众多的控制设备与测试仪器之间需要进行大量数据交换,传统的总线无法满足需求,德国BOSCH公司提出了CAN总线,这种新的串行数据通讯协议。CAN总线即控制器局域网总线,通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN(ControllerAreaNetwork)属于现场总线的一种,在传统的工业控制领域中,大部分的通信采用RS232、RS485或RS422总线。相比之下,RS232、RS485或RS422总线有着通信距离近,通讯速度慢,抗干扰性能差等缺点。通讯一般采用主从方式,通过主站查询方式进行通讯,实时性、可靠性较差。当系统有错误,多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点。基于CAN总线的分布式控制系统在很多方面具有明显的优越性。L而CAN的电路结构简单,要求的线数较少,只需要两根线与外部器件互联,使得各控制单元能够通过CAN总线共享所有的信息和资源。达到简化布线、减少传感器数量、避免控制功能重复的效果。CAN具有的完善的通信协议,并且可以通过CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期。CAN支持分布式控制或实时控制,工作于多主方式,网络上各个节点均可以在任一时刻主动发送信息,可以点对点,点对多点以及全局广播方式收发数据。网络中的各节点都可根据总线访问优先权,采用非破坏性总线总裁技术,通信速度快,可靠性高,可大大节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。CAN没有采用站地址编码,而是对通信数据进行编码,这可使不同的节点同时接收到数据,这使得CAN总线的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。它具有如下特点:1)CAN是到目前为止为数不多的有国际标准的现场总线,总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。2)CAN总线没有采取传统的站地址编码,不对节点进行地址规定,而是把通信数据块进行编码。这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由1l位或29位二进制数组成。这种按数据块编码的方式,使用报文的标识符来指定报文的优先级以及报文的内容,高优先级的节点享有传送报文的优先权。还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短,从而保证了通信的实时性。3)CAN总线采用了多主竞争式总线结构,通信介质可以是双绞线、同轴电缆或光导纤维,可以多个主站运行并且分散仲裁。CAN总线上任意节点可以点对点,一对多及广播集中方式传送和接受数据,而且可以任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN通讯距离最大是1O公里(设速率为5Kbps),最大通信速率为1Mbit/s(设通信距离为4O米)。4)CAN采用非破坏性的总线仲裁技术,即载波侦听多路访问/冲突检测(CSMA/CD)的总线仲裁方式,当多个节点同时发送数据时,优先级低的节点会主动停止发送,高优先级的节点可继续传输,节省总线仲裁时间。避免多个节点同时开始发送消息而造成总线冲突,保证优先级高的报文能够优先发送。5)CAN总线协议采用了完善的错误检测与错误处理机制,包括了CRC校验、错误报文自动重发、错误状态判断、临时错误自动恢复等措施,从而很好的保证了数据通信的可靠性。节点在错误严重的情况下,具有自动关黔6)闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响。CAN总线采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。可根据报文的ID决定接收或屏蔽该报文。可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发,报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的通信,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。CAN总线通过CAN控制器接口芯片的输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。CAN总线的信号状态为2种,隐位与显位。当隐位与显位发送出现竞争时,最终结果是显位。在处理冲突时,由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点很容易地取得一致性的数据,并且保证了节点状态的同步,这种二值特性对CAN总线的可靠性有很大保障。而且CAN节点在出现严重错误的情况下,可以自动关闭输出,避免总线上其他节点的操作受影响,从而保证不会因个别节点出现问题,而使得总线处于”死锁”状态。CAN总线具有位填充、回读、错误约束、出错自动重发等优点,同时通信速率高、通信距离远、容易实现、且性价比高。1.3CAN总线的发展前景CAN最初是用于汽车行业的监测、控制,用来解决汽车内部的复杂硬件信号接线的低成本通信总线,现今CAN总线已经被公认为一种可靠的网络总线在汽车上得以应用。CAN总线共享信息和资源,总线的数据通信提高了系统可靠性、实时性、灵活性、可维护性,更好地匹配和协调各个控制系统。随着汽车电子技术的发展具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN总线,越来越受到人们的重视,它在汽车领域上得到了广泛的应用。世界上一些著名的汽车制造厂商,都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。近年来CAN总线已发展成为汽车电子系统的主流总线,已形成国际标准的现场总线,并由ISO正式颁布了IS011898CAN高速应用标准和ISO11519CAN低速应用标准,这为CAN总线的标准化、规范化铺平了道路。CAN总线以其高性能,高可靠性及独特的设计,在现代分布式测量与控制技术领域中的应用已愈来愈广泛。同时由于CAN总线自身的特点,其应用范围目前已不再局限于汽车行业,而是转向铁路、交通、自动控制、航空航天、航海、机械工业、机器人、医疗器械及安防等领域发展。CAN总线的发展已经颇具规模,它不仅在汽车领域的应用占据一定优势,在其他工业领域内也占有一席之地。这要归根于通信技术的不断进步,对通讯本身的要求不断提高,这种形势下CAN总线的优势在于其优越的抗干扰能力和性价比。尽管CAN总线有一定局限,甚至还有漏洞,但对CAN总线的改进还在继续,相信在未来的发展中,CAN总线通过不断的更新和改进,能够取得更大的进步。第2章系统方案总体设计2.1系统原理当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要CAN总线的报文发送和接收。当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。2.2系统总体设计方框图图2-1系统总体设计方框图2.2.151单片机系统的控制芯片采用AT89S52单片机来控制,因为AT89S52应用比较广泛,并且成本低,操作控制简单,功耗较低,运行可靠性强。系统本身对处理器处理速度的要求不是很高,所以选择该款单片机。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图2-2AT89S52引脚结构图2-3AT89S52内部结构图VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1