基于CAN总线的老化测试系统的设计方案

发布者:快乐家庭最新更新时间:2016-05-09 来源: eefocus关键字:C8051F040  CAN总线  老化测试系统 手机看文章 扫描二维码
随时随地手机看文章
  1 引言

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

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

  

 

  2 通信模块设计

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

  

 

  2.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。

  2.2 软件设计

 

  2.2.1 串行通信程序设计

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

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

  unsigned char s_queue[QUEUE_LEN][CMD_PACK_LEN];

  unsigned char s_front;

  unsigned char s_rear;}

  通信模块向上位机发送检测数据时,按照约定的串行通信协议把一组完整的检测数据组装成一个信息帧发送。为简化设计,该信息帧的发送不采用中断方式,而是采用查询方式完成。为减少 C8051F040的等待时间,结合 C8051F040的时钟频率,串行通信采用了的波特率为 57600bps。经过在现场测试,在此波特率下进行串口通信,没有引起通信的错误。

  2.2.2 CAN通信程序设计

  通信模块与 10个检测模块及 1个温控模块通过 CAN总线连接。理论上,在 CAN总线上,任意一个检测模块都可以向通信模块发送检测到的数据,通信控制板模块可以同时向 10个检测模块发送命令。 CAN总线上的发送的数据帧带有 ID字段,ID字段的值决定每个数据帧的优先级,数据帧的 ID值越小,该数据帧的优先级越高。同一时间,在 CAN总线上,不同的节点,不能发送相同 ID值的数据帧。否则会造成通信错误。在本设计中,分配每个检测模块 1个固定的 ID值,可以看作该设备的地址编号。这样不同的设备发出的数据帧具有不同的优先级。这样导致一个问题:如果任由每个检测模块主动向通信模块发送数据帧,会造成 ID值较大的数据帧因优先级低,而不能发出。另外,每个检测模块的设计也采用了 C8051F040的作为控制核心,一方面完成信号检测,另一方面完成与通信模块的 CAN通信。

  在 C8051F040的 CAN控制器内部有 32个缓冲区,每个缓冲区为 8字节,每个缓冲区需要指定一个固定的 ID值。每个缓冲区可以被设置为发送缓冲区或接收缓冲区。当某个缓冲区被设置为发送缓冲区时,该数据帧在底层带有 ID值。当该缓冲区被设置为接收缓冲区时,则仅接收 CAN总线上具有相同 ID值的数据帧。

  在设计中,通信模块的 CAN控制器的 32个缓冲区与 ID值分配如下:第 1至第 10缓冲区为发送缓冲区,对应的 ID值 21至 30。第 1缓冲区用于向第 1个检测模块发送数据帧,依次类推,第 10缓冲区用于向第 10个检测模块发送数据帧。第 11缓冲区为发送缓冲区,对应 ID值为 31,用于向温控模块发送数据帧。第 20缓冲区至第 30缓冲区为接收缓冲区,对应 ID值 50至 60。与此对应,则 10个检测模块的 CAN控制器的 32个缓冲区内的第 1缓冲区均为接收缓冲区,分别对应的 ID值是 21至 30。第 2缓冲区至第 11缓冲区均为发送缓冲区,对应的 ID值 50至 60。即 10个检测模块发送的 CAN数据帧具有相同的 ID值。采用上述分配的原因在于:每个检测模块同时检测 10个被测电路板,每次有 10个数据帧要同时向通信模块发送。前提条件,10个检测模块不能同时向通信模块发送数据。

  通信控制板和检测模块之间通信采用主从应答通信方式。在工作过程中,通信模块从串口命令缓冲队列的队首取出一条命令,进行协议转换,组装成 8字节的 CAN信息帧。其中最后 1个字节值设为前 7个字节的 CRC8校验值,虽然 CAN总线本身具有 CRC校验,在应用层再次进行校验,可以提高通信的可靠性。

  通信模块将该 CAN信息帧通过 CAN内部第 1缓冲区发送,这样 CAN总线上的第 1个检测模块收到该信息帧,该检测模块校验信息帧,如果通过校验,进一步解析该信息帧。如果是参数设置命令,则检测设备提取其中的参数,然后向通信模块发送 1个信息帧作为响应。如果是读数据命令,则将 10个被测电路板的参数组装成 10个 CAN数据帧,分别通过检测设备的 CAN缓冲区的第 2至第 11缓冲区向外发送,该 10个数据帧,仅被总线上的通信模块接收,分别放在第 20至第 30缓冲区。通信模块将这些信息通过串口向上位机发送。按照同样的方式,通信模块与其它 9个检测模块及 1个温控模块完成 CAN通信,实现了命令的设置与测试信息的获取。

  3 检测模块的设计

  老化系统的 10个检测模块完全一样,完成同样的功能。根据分析被测电路板的特性,设计了检测模块实现检测的方法与流程。检测模块首先检测被测电路板是否存在短路故障与断路故障,如果发现被测电路板存在断路故障或断路故障,则不再进一步检测,在与通信模块通信过程发送该故障信息。如果被测电路没有短路故障或断路故障,则检测模块向被测电路板加上额定工作电压与有效的激励信号,使被测电路板正常工作,然后检测被测电路板的输出信号的波形类型及频率,按照设定的检测算法判断被测电路板是否存在其它故障。在 100多个小时的测试过程中,测试环境的温度可以根据用户的设置不断变化或自动变化,检测模块提供的输入激励信号采用多种组合。

  4 温控模块设计

 

  在老化过程,被老化的电路板被放置在密闭的柜体中。该柜体内的温度保持在一定的范围,以模拟中电路板的实际工作环境的温度。温控模块通过 CAN总线接收通信模块发来的信息帧,解析信息帧,得到用户要设置的温度值。温控模块检测柜体温度,控制加热装置加热与否,使柜体的温度达到用户设置的温度。

  温度检测采用 DS18B20完成,在温控模块中设置 4个 DS18B20。将测得的 4个温度值进行算术平均,作为老化柜体内的温度值。温控模块的继电器输出接加热棒及排风风扇。采用了 PID控制算法,使柜体内温度达到用户设置温度。4 上位机软件的设计上位机软件采用 VC++ 6.0设计完成,串口通信部分使用 Windows API函数完成,使用 API函数处理串口灵活高效。上位机软件实时显示每个被测电路板是否正常工作及当前老化柜的温度及老化时间等信息,还提供历史数据查询及参数设置等功能。

  5 结束语

  本老化测试系统,采用 CAN总线作为系统的主要通信方式,采用模块化结构,方便系统的设计与调试,同时,各模块挂在 CAN总线,易于系统实现与扩展。本系统已经应用于生产中,达到了设计要求,运行效果稳定良好。本系统已产生经济效益近 30万元。

  本文作者创新点:本老化系统的检测模块与通信模块采用 CAN总线进行通信,通信稳定,高速;整个系统采用检测模块-通信模块-上位机的三层结构,实现了对大批量被测电路板的检测。

  帧命令后的若干时间没有收到通信模块的应答信息,就再次发送该命令信息,连续 3次没收到应答信息,就可以认为存在通信故障,从而产生报警信息,提示用户处理。

关键字:C8051F040  CAN总线  老化测试系统 引用地址:基于CAN总线的老化测试系统的设计方案

上一篇:基于CAN总线GaAs光电阴极制备测控系统的研究
下一篇:C51中的NOP指令使用

推荐阅读最新更新时间:2024-03-16 14:53

CAN总线在汽车车身控制中的应用
    一、引言     20世纪80年代以来,随着集成电路和单片机在汽车上的广泛应用,汽车上的电子控制单元越来越多,例如电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电控门窗装置和主动悬架等等。在这种情况下,如果仍采用常规的布线方式,即电线一端与开关相接,另一端与用电设备相通,将导致车上电线数目的急剧增加,使得电线的质量占整车质量的4%左右。另外,电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。为此,改革汽车电气技术的呼声日益高涨。因此,一种新的概念——车用控制器局域网络CAN应运而生。     CAN是控制器局域网络(Controller A
[嵌入式]
汽车CAN总线基础-CAN总线简介
1. CAN的介绍 1.1 CAN是什么 CAN是Controller Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。   1.2 CAN的起源 汽车CAN总线是20世纪80年代初德国Bosch公司为解决现代汽车中众多控制单元、测试仪器之间的实时数据交换而开发的一种串行通信协议。   传统汽车线束连接如图1.21。   在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”,“通过
[嵌入式]
CAN总线优点
CAN总线优点及特点 ① 组网自由,扩展性强;② 自动错误界定,简化了电控单元对通信的操作;③ 可根据数据内容确定优先权,解决通信的实时性问题。 CAN(Controller Area Network)总线,也称控制器局部网,属于现场总线的范畴,它是一种有效支持分布控制或实时控制的串行通信网络。由于采用了许多新技术及独特的设计,CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。 其特点如下: CAN为多主工作方式,网络上任何一个节点均可在任意时刻主动地向 网络上其它节点发送信息,而不分主从。 在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134us
[嵌入式]
基于CAN的电源控制系统设计
CAN总线是一种能有效支持分布式控制系统的串行通信网络,一方面,其通信方式灵活,可实现多主方式工作,还可实现点对点、点对多点等多种数据收发方式;另一方面,他能在相对较大的距离间进行较高位速率的数据通信,例如在3.3 km的距离内其传输速率可达20 kb/s。我们的系统是由上位机对多台并列的单电源控制系统进行控制管理,单电源的间距在100 m左右,且其必须置于较高的位置,系统之间要进行快速的数据传输,CAN总线能很好的满足该系统的要求。  1 系统总体结构  图1是该集散电源控制系统的结构示意图。 本系统用的是C51单片机,外接CAN控制器SJA1000,他对下面多台下位机传送控制定值,并且在收集下位机送来数据后对其进行分
[嵌入式]
基于CAN总线的信息采集系统设计
CAN(Controller Area Network)即控制器局域网,主要用于各种设备检测及控制的一种现场总线。20世纪80年代初,德国BOSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换,开发了一种串行数据通信协议,即CAN总线。 CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属 于工业现场总线的范畴,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,通信速率可达1 Mb/s。目前,CAN总线不仅应用于汽车领域,而且应用于自动控制、航空航天、机械工业、农用机械、机器人、数控机床、医疗器械
[测试测量]
基于<font color='red'>CAN总线</font>的信息采集系统设计
基于CAN总线老化测试系统的设计方案
  1 引言   汽车上用的电子设备的可靠工作与优良性能关系者驾驶者的生命安全。车用电子设备出厂前要求对设备内部电路板进行长时间老化测试,以检测电路板在高温环境和各种输入信号条件下,是否仍正常工作。只有经过老化测试的电路板才能出厂。由于需要老化测试的电路板数量巨大,要求该系统能同时老化测试许多块被检测电路板,因此设计了本老化测试系统。整个老化测试由 1个通信模块、 10个测试模块、1个温控模块及上微机软件构成。本老化检测系统的系统结构图如图 1所示。   图 1 系统结构图在本系统中,每个检测模块最多可同时检测 10块电路板,共有 10个检测模块,因此,整个系统在一次老化检测过程可以同时检测100块电路板。检测模块将检测的数据通过
[单片机]
基于<font color='red'>CAN总线</font>的<font color='red'>老化</font><font color='red'>测试系统</font>的设计方案
c8051F040单片机驱动74HC595程序
#include C8051F040.h #define uchar unsigned char #define uint unsigned int uchar xdata virt_port; bit SPI_BUSY; unsigned char xdata tab1 ={0x20,0x20,0x42,0x54,0x20,0x46,0x30,0x34,0x30,0x20,0x56,0x31,0x2e,0x30 ,0x20,0x20}; unsigned char xdata Netdata ={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,
[单片机]
基于CAN总线的配电网户外柱上型重合控制器的设计与实现
    摘要: 介绍了一种基于CAN总线的中压配电网户外柱上型智能重合控制器,以16位工业级微控制器Intel 87C196KC为核心,应用现场总线和智能化技术将保护、测量、检测、计量、远动和故障诊断等综合自动化功能就地分散到户外开关设备本体上,采用CAN总线作为系统的通信网络,实现了配电设备的户外全分布式方案。     关键词: 配电网 现场总线 智能重合器 Intel 87C196KC 我国供电部分近几年来在城乡电网建设与改造中进行了大量的技术改造和更新,选用了新形的配电设备、综合自动化和调度自动化设备、自动控制测量装置等,但这些设备目前大多数仅限于在变电站和调度室中采用。而大量的统计资料表明,配电
[传感技术]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved