基于CAN总线的车身电器控制系统网络实验台设计
扫描二维码
随时随地手机看文章
汽车上的电子装置随着汽车电子的发展日益增多,仍采用传统的通信模式必然导致汽车电器布线复杂,维修检测困难等问题。而CAN总线的提出为解决此问题提出了可能。CAN(C0ntmller Area Network)总线是20世纪80年代德国Bosch公司为实现现代汽车上众多电子模块相互间的通信而提出的一种串行通信协议,是目前唯一具有国际统一标准的总线。但由于国内关于CAN总线的研究起步很晚,至今国产化的产品不多。因此文献基于科研教学及产品开发的多重目的,研制开发了基于CAN总线的车身电器控制系统实验台。该实验台以CAN总线为基础,以某汽车车身电器为对象简化了汽车车身电器的控制网络,减少了线束,实验也证明了所开发系统的正确性和CAN总线取代传统车身线束的可行性。该实验台的成功开发其现实意义很重要,但也存在以下不足之处应加以改进:1)试验台将车灯控制节点分为前灯、后灯 2个节点,这样在通信中不仅没有完全利用单片机的接口,还要考虑前后节点的优先权,把软件的设计复杂化。2)单片机引脚电流过小不足以驱动大功率的车灯和车门电机等功率器件,该试验台选用驱动芯片、继电器和保险丝来实现功能,这样设计接口电路使节点的总体体积偏大,不便车载。本文主要针对以上2个问题提出解决方案,先从总体上对节点重新分类设计,基于AT89S52微处理器和CAN控制器SJAl000重新构建硬件环境,然后以AT89S52为核心,结合所选器件的运行环境改进程序。
1 车身电器控制系统节点分类及其功能
该控制系统将车身电器分为上位机转换节点、开关控制节点、车灯控制节点、车门控制节点4类。各类节点所包含的电器设备及要传输的信号如下:1) 上位机转换节点:将CAN协议信号转换为RS232协议信号输出,由上位机的串口接收;2)开关控制节点:灯具开关节点需要的各开关输入,通过单片机将物理的开关信号转换为数据信号;3)车灯控制节点:接收总线上传来的可控数据,并将数据转换后控制车灯各灯具的状态,控制的车身电器主要是远光灯、近光灯、雾灯、转向灯、倒车灯、刹车灯等灯具;4)车门控制节点:控制车门的开关输入及玻璃升降电机的输出。节点的分类及功能如图1所示。
2 系统硬件电路设计
硬件通讯电路部分由单片机AT89S52、CAN控制器SJAl000、CAN收发器PCA82C250连接组成。任何类型的节点其硬件设计中都由该通讯电路和接口电路组成,CAN控制器及收发器与单片机连接电路如图2所示。为使总线上有信号时,系统能够快速响应,单片机与SJAl000采用独立的晶振。SJAl000的晶振频率为16 MHz,单片机的晶振频率为12 MHz,这样可使CAN控制器接收或发送数据速度快于单片机的处理速度,总线传来的数据或待发送到总线的数据可暂存于SJA1000的缓冲器中,等待单片机处理或自动向总线发送。
2.1 上位机转换节点接口电路
上位机转换节点中,接口电路的功能主要是将数据转换为符合RS232电平协议的数据,可供上位机串口接收。由于单片机输出的数据中逻辑电平 “1”和“0” 分别用5 V和O V表示,而]RS232电平的逻辑“0”电平范围为-5~15 V,逻辑“1”的电平范围是+5~+15 V,因此这里选用MAX232进行电平转换,完成上位机转换节点接口电路的功能,图3所示为上位机转换节点接口电路。
2.2 开关控制节点接口电路
开关控制节点中,接口电路的功能主要是将节点电器中的多路开关状态转换为数字信号,并且实现由车载电源12 V到单片机使用的5 V电源的转换。该接口电路选用的74HC244是一款CMOS型8位总线收发器,主要用在开关的输入时,开关和SJA1000共用单片机P0端口时的切换;电源转换主要通过稳压管LM7805实现。图4为开关控制节点接口电路。
2.3 车灯控制节点接口电路
车灯控制节点中,接口电路的功能主要是实现通过CAN总线的传输数据控制车灯功率电器。从单片机引脚流出的电流很小,无法直接驱动车灯,若采用驱动电路和继电器来完成车灯的驱动作用,必然会导致车灯控制节点偏大,不够实用和美观。该接口电路选用MC33888器件。该器件内部集成有4路高端驱动器和8路继电器或发光二极管驱动器,是一个可控制网络,具有在线诊断、与微控制器通信报错能力及故障软化等优点。图5所示为车灯控制节点接口电路。
2.4 车门控制节点接口电路
车门控制节点接口电路的功能和车灯控制节点接口电路的功能类似,也是将单片机输出的小电流信号转换成可驱动大功率电器的电信号,完成相应工作。该电路采用 MC33887器件。该器件功耗低,在等待模式下电流为25 mA,输出电流超过8 A自动短路关断。图6为车门控制节点接口电路。
3 系统软件设计
任何CAN总线系统的通信协议都由物理层协议、数据链路层协议和应用层协议组成。SJAl000和PCA82C250的硬件结构保证了协议的物理层和数据链路层。对于应用层,在不同的应用领域,人们制定了不同的协议,包括CANopen、DeviceNet及SAE J1939等。应用层协议决定了CAN总线系统的可扩展性。将CAN应用层合理分配后应用于软件结构中可提高软件的兼容性。[!--empirenews.page--]
本设计各类节点可将程序分为主程序和子程序。主程序的目的是监控本节点中各电器的状态,采用查询方式编程:子程序分为接收子程序和发送子程序,采用模块化编程,将节点的功能分成各种模块并形成文件,在编写各节点程序时直接调用各个模块程序函数即可。这里参考SAE J1939的编码规则对CAN系统的应用层进行分配,并介绍各节点的软件结构。
3.1节点主程序
上位机转换节点主程序的作用是:查询总线上的数据,并将依据CAN协议的数据转换为依据RS232电平标准的数据。图7为上位机转换节点流程:开关控制节点主程序用于查询开关的闭合或断开状态并将开关状态存储到单片机的寄存器中。图8所示为开关控制节点的程序流程,其车灯控制节点主程序用于查询 CAN总线上的数据以控制相应的电器。图9所示为车灯控制节点的程序流程,其车门控制节点既要查询开关的状态存人单片机,又要查询CAN总线的数据控制相应的电机,其主程序包含开关控制节点和车灯控制节点主程序的功能。
3.2 节点子程序
接收子程序的作用是将CAN总线上传来的数据存储到单片机中合适的位置,需要用时,CPU直接从该位置查询即可。在运行接收函数前,需先检查 CAN控制器 SJAl000的寄存器中是否有传来的数据,如果有则运行此程序;如果无,则放弃或继续查询。发送子程序的作用是将所要发送的数据包装并发送到CAN控制器。在主程序中,系统不断查询SJAl000的状态,一旦空闲,CPU将待发送的数据发送到CAN控制器。
4 结束语
通过对基于CAN总线的车身电器控制系统的整体优化设计,得出结论:对车身节点进行优化后,资源得到合理使用,并增强了节点的实用和美观性,使节点的接口电路设计更加灵活。本方案侧重于对实验台实用性的改进。通信过程中存在的干扰、基于时间触发的CAN(即TTCAN)的应用问题尚待进一步的研究。