首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于CAN总线的老化测试系统的设计
来源:本站整理  作者:佚名  2009-10-29 10:23:45



0 引言
汽车上用的电子设备的可靠工作与优良性能关系者驾驶者的生命安全。车用电子设备出厂前要求对设备内部电路板进行长时间老化测试,以检测电路板在高温环境和各种输入信号条件下,是否仍正常工作。只有经过老化测试的电路板才能出厂。由于需要老化测试的电路板数量巨大,要求该系统能同时老化测试许多块被检测电路板,因此设计了本老化测试系统。整个老化测试由 1个通信模块、 10个测试模块、1个温控模块及上微机软件构成。本老化检测系统的系统结构图如图 1所示。


 
图 1 系统结构图在本系统中,每个检测模块最多可同时检测 10块电路板,共有 10个检测模块,因此,整个系统在一次老化检测过程可以同时检测100块电路板。检测模块将检测的数据通过 CAN通信送给通信模块,由通信模块通过串行通信发送给上位机,由上位机软件对检测数据进行解析,判断被测电路板的工作状态,显示每一块被测电路板的工作状态,存储每块被测电路板的检测数据,生成历史报表。上位机软件还向操作员提供良好而方便的人机交互界面,操作员通过该界面,可以设置系统老化的时间、温度与测试模式。

1 通信模块设计


通信模块在老化系统中处于核心地位,它完成两方面的任务:一方面,通过串行异步通信与上位机通信,接收用户通过上位机发来的控制命令,向上位机发送检测的数据。另一方面,通过 CAN通信方式与 10个检测模块及 1个温控模块通信,向检测设备发送命令和采集数据。通信模块的硬件系统框图如图 2所示。
 


1.1 硬件设计

通信模块采用 C8051F040作为核心。C8051F040具有许多优点。1.采用高速 8051微控制器内核,流水线结构,大部分指令的执行时间为一或两个系统时钟周期。

2.有 4352字节的内部 RAM和 64K字节的 FLASH,满足大多数应用设计对存储空间的需要,无需外接存储器,因而了简化系统设计。

3.配置多种端口,如 SPI、SMBus和 UART。

4.C8051F040内置标准 CAN控制器,只要外接 CAN通信接口芯片就可以进行通信,方便实现 CAN总线通信,提高通信的可靠性。

由于 C8051F040集成的是 CAN控制器,要使实现 CAN总线通信,还需要外接 CAN总线收发器,常用的 CAN总线收发器有 Philips公司的 PCA82C250收发器、高速 TJA1050收发器等。本设计采用了 TJA1050高速 CAN收发器,TJA1050具有电磁辐射低、防短路、不上电时对总线无影响等特点。为了进一步提高系统的抗干扰能力,C8051F040的 CAN控制器引脚CANTX、CANRX和收发器 TJA1050之间并不直接相连,而是通过由高速光耦 6N137构成的隔离电路后再与 TJA1050相连,这样就可以很好的实现了 CAN总线上各节点的电气隔离。增加隔离电路虽然增加了节点的复杂性,但它却提高了节点的稳定性和安全性。此外,为避免信号反射,导致通信的可靠性与抗干扰能力下降,甚至无法通信,因此,在 CAN总线的两端需要加有 2个 120欧姆的总线阻抗匹配电阻。由于 C8051F040的端口电压为 3.3V,串行通信电路采用的电平转换芯片为 MAX3232。


1.2 软件设计


1.2.1 串行通信程序设计

通信模块一方面通过串行通信接收上位机的命令,主要命令有启动、停止和参数设置命令。用户通过参数设置命令为系统设置不同参数,可以保证老化的正确进行。另一方面通过串行通信向上位机发送检测到的数据。为简化设计,通信模块和上位机的串行通信采用固定长度的信息帧格式,一帧信息包括帧头、有效数据或命令、 CRC16校验位等。通信模块接收上位机信息通过中断方式实现。在中断服务程序中,每接收到一个帧头后,开始接收后面若干字节的信息,经 CRC16校验有效后,就认为是一个有效的信息帧,按照约定的串行通信协议解析该信息帧,取出其中的有效命令。通信模块每收到一个有效命令帧,向上位机发送一帧应答信息。为保证通信正确,上位机软件对通信采用超时机制。如果上位机在发出一

 
由于通信模块接收命令和处理命令速度的不同步,为保证上位机发来的每条命令得到执行,需要将有效命令放入到命令缓存队列的队尾。该命令缓存队列采用环形结构,接收的有效命令被放到队尾,而主程序从命令缓存队列的头部取出一条命令,进行后期处理。为方便从命令缓存队列存放或存取一条命令,在实现命令缓存队列时,采用了二维数组结构,即数组的每一个元素为一条固定长度的有效命令。通过选取适当的队列长度,可以保证在正常工作中,保证命令缓存队列不会产生溢出。本设计中,命令缓存队列的数据结构如下:

unsigned char  s_queue[QUEUE_LEN][CMD_PACK_LEN];
unsigned char  s_front;
unsigned char  s_rear;}

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:114,578.10000 毫秒