前言
汽车工业是国民经济发展的支柱产业之一,现代汽车正从一种单纯的交通工具朝着满足人们需求、安全、节能和环保的方向发展。为了满足人们对汽车日益提高的要求,汽车研发及生产机构必然要将越来越多的电子产品引入到汽车上,智能控制系统也成为汽车革新的主要内容。
随着现代汽车的迅猛发展和电子技术的日新月异,汽车电子设备不断增多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车综合控制系统越来越复杂。目前.以微控制器为代表的汽车电子在整车电子系统中应用广泛,汽车控制正由机电控制系统转向以分布式网络为基础的智能化系统。CAN总线是一种支持分布式和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域广泛应用。本设计主要针对基于CAN总线的汽车电子系统的设计,包括汽车车灯和汽车车窗和汽车雨刮等控制系统的总体设计思想、方法和硬件设计,介绍如何实现用CAN总线完成汽车控制系统的控制。
1CAN总线
1.1CAN简介
CAN(ControllerAreaNewtork)即控制器局域网,是一种先进的串行通信协议,属于现场总线范围。CAN总线是最初由德国Bosch公司在80年代初期,为了解决现代汽车中众多的控制与测试一起之间的数据交换而开发的一种串行数据通信协议,目的是通过较少的信号线将汽车上的各种电子设备通过网络连接起来,并提高数据在网络中传输的可靠性,CAN总线具有较强纠错能力,支持差分收发,因而适合高噪声环境,并具有较远的传输距离,特别适合于中小型分布式测控系统,目前己在工业自动化、建筑物环境控制、机床、医疗设备等领域得到广泛应用。CAN总线具有以下几个重要特点:
1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。
2)通信方式灵活。可以多种方式工作,网络上任意一个节点均可在任意时刻主动的向网络上的其他节点发送信息,而不分主从。
3)可以点对点、点对多点及全局广播方式发送和接受数据。
4)网络上的节点信息可分成不同的优先级,可以满足不同的实时要求。
5)CAN通讯格式采用短帧格式,每帧字节数最多为8个,可满足通常工业领域中控制命令、工作状态和测试数据的一般要求。同时,8个字节也不会占用总线时间过长,
从而保证了通讯的实时性。
成都汽车6)采用非破坏性总线仲裁技术。当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可以不受影响继续传输数据,这大大地节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。
7)直接通讯距离最大可达1k0m(速率在5kb/S以下),最高通讯速率可达1Mb/s(此时距离最长为40m)。节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
8)CAN总线通讯接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
9)CAN总线采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
1.2CAN总线协议的报文帧结构形式
在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。
(1)数据帧由七种不同的位域(Bit Field)组成:帧起始(Start of)、仲裁域(Arbitration Field)、控制域(Control Field)、数据域(DataField)、CRC域(CRC Field)、应答域(ACK Field)和帧结尾(End of)。数据域的长度可以为0~8个字节。
1)帧起始(SOF):帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。
2)仲裁域:仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。标准格式里,仲裁域由1l位标识符和RTR位组成。标识符位有ID28~IDl8。扩展帧格式里,仲裁域包括29位标识符、SRR位、IDE(Identifier Extension,标志符扩展)位、RTR位。其标识符有ID28~IDO。为了区别标准帧格式和扩展帧格式,CANl.0~1.2版本协议的保留位r1现表示为IDE位。IDE位为显性,表示数据帧为标准格式;IDE位为隐性,表示数据帧为扩展帧格式。在扩展帧中,替代远程请求(Substitute Remote Request,SRR)位为隐性。仲裁域传输顺序为从最高位到最低位,其中最高7位不能全为零。RTR的全称为“远程发送请求(Remote TransmissionRequest)”。RTR位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。它是区别数据帧和远程帧的标志。
3)控制域:控制域由6位组成,包括2个保留位(r0、r1同于CAN总线协议扩展)
及4位数据长度码,允许的数据长度值为0~8字节。
4)数据域:发送缓冲区中的数据按照长度代码指示长度发送。对于接收的数据,同样如此。它可为0~8字节,每个字节包含8位,首先发送的是MSB(最高位)。
5)CRC校验码域:它由CRC域(15位)及CRC边界符(一个隐性位)组成。CRC计算中,被除的多项式包括帧的起始域、仲裁域、控制域、数据域及15位为0的解除填充的位流给定。此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。发送时,CRC序列的最高有效位被首先发送/接收。之所以选用这种帧校验方式,是由于这种CRC校验码对于少于127位的帧是最佳的。
6)应答域:应答域由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。应答界定符是应答域中第二个隐性位,由此可见,应答间隙两边有两个隐性位:CRC域和应答界定位。
7)帧结束域:每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。这样,接收节点可以正确检测到一个帧的传输结束。
2CAN总线在奥迪A6汽车车灯上的应用
简介:
灯光控制系统是保证汽车安全行驶的一个重要系统。传统的灯光控制系统多采用继电器和独立模式控
制,这使得车内线束过多且布线复杂,会引起严重的电磁干扰,使系统的可靠性下降。CAN(Controller Area Network)数据总线是一种适用汽车环境的汽车局域网。它能够很好的解决这个问题,它具有较高的传输速度,主要是针对汽车中对实时性要求很高的动力系统而设计的。利用CAN总线,不仅能简化线束,而且还能大大降低车辆的故障率。基于CAN总线的灯光控制系统,就很好用利用CAN总线的优势,发挥车灯的最大性能。
本设计利用CAN总线通信协议建立汽车灯光(前照灯)控制系统的局域网(对于汽车其他灯光可以按照同样道理设计而成,只需要多加几个通信的节点),控制的灯光有:远光灯、近光灯、示宽灯、雾灯、转向灯。通过CAN总线实现上述灯光的开和闭的控制。
2.1灯光控制系统的网络硬件设计
对于传统的灯光控制系统如图2.1-1所示。
图2.1-1传统的灯光控制系统图
从图一可以看出,传统供电系统是所谓的并行结构,一个用电器赔一跟电力线和一个开关,开关置于驾驶员旁,由驾驶员控制开关通断,控制灯(或其他用电器)工作。这种结构缺点是若用电设备越多,电力线就越多,这无疑是加大了汽车的负担而且容易收到干扰,导致器件不能正常运行。
对于CAN总线的灯光控制系统如图2.1-2所示。
它利用CAN总线,能够有效的减小电力线的数量,减少干扰,实现优化控制。
图2.1-2CAN总线的灯光控制系统如图
我们可以直接在(图2.1-2)中增加CAN总线收发器,及其MCU控制电路,这样就能实现更多的车灯控
制系统。
2.2MCU的选择
本设计选用AT89C51单片机作为灯光控制节点MCU。P89C51单片机是一个8位高性能微控制器。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位的单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.3CAN通讯控制器
本设计采用SAJ1000独立CAN控制器。PHILIPS公司的PCA82C200是符合CAN2.0A 协议的总线控制器,SJA1000是它的替代产品,它是应用于汽车和一般工业环境的独立CAN总线控制器。具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式(BesicCAN)兼容。同时,新增加的
增强CAN模式(PeliCAN)还可支持CAN2.0B协议。
2.4CAN总线收发器
本文世纪采用CAN总线收发器82C250。PCA82C250是CAN协议控制器和物理总线之间的接口,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。如在ISO11898标准中描述的,它们可以用高达1Mbit/s的位速率在两条有差动电压的总线电缆上传输数据。这是全世界使用最广泛的CAN收发器之一。
图2.4为车灯控制系统硬件电路图,它的工作原理为:CAN总线控制器与单片机连通,由单片机的程序给予初始化,并选通控制器,当单片机P1.0~P1.4其中一个管脚开关按下时,立刻把数据传送到CAN控制器SJA1000,利用CAN总线收发器82C250将信号发出,通过CANH,CANL两个管脚传输数据,当控制对象(车灯)系统中的收发器收到信号时,其系统中的CAN总线控制器发出中断,使车灯系统的MCU执行相关程序,控制车灯驱动电路,使其相应的车灯完成控制目的。(注意图中的发光二极管为车灯的驱动电路,驱动车灯的亮和灭)
图2.4车灯控制系统硬件电路图
微处理器AT89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接受和发送等通讯任务。SJ
A1000的AD0~AD7连接到单片机的P0.0~P0.7口,SJA1000的CS连接到89c51的P2.0,P2.0为0时片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读/写操作。SJA1000的RD,WR,ALE分别与89c51的引脚相连,INT 接INT0。
82c250与CAN总线的接口采用了一定的完全和抗干扰措施。一般情况下,若CAN 总线系统干扰很强烈,为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82c250相连,且光耦部分电路VCC和VDD完全隔离,这样就可以实现总线上各节点间的电气隔离。
2.5系统的软件设计
系统软件设计的关键是通讯程序的设计。本设计的通讯软件程序主要由3部分组成:初始化程序、中央处理器程序、车灯控制程序。编写主要运用KEIL的C语言对AT89C51进行软件程序设计。
2.6CAN控制初始化程序
初始化程序主要是通过对CAN控制器控制段中的寄存器写入控制字,从而确定CAN
发布评论