基于CAN总线的微型数据采集系统设计
2013-12-01吴志玲陈昌鑫
吴志玲 靳 鸿 陈昌鑫 王 栋
(中北大学电子测试技术重点实验室、仪器科学与动态测试教育部重点实验室,山西 太原 030051)
0 引言
传感器、主控制单元、CAN控制器和CAN收发器。
在测试行业快速发展的今天,数据采集已经发生了重要的变化,数据采集系统已被广泛应用于各类型局域网及分布式领域。数据采集系统之所以能被广泛应用的原因在于:首先,分布式控制应用场合中的智能数据采集系统在国内外已经取得了长足的发展;其次,总线兼容型数据采集插件的数量不断增大;再次,与个人计算机兼容的数据采集系统的数量也在增加。与此同时,国内外各种数据采集系统先后问世,将数据采集技术带入了一个全新的时代。
控制器局域网络 (controllers area network,CAN)是目前国际上影响最广泛的现场总线之一[1]。CAN总线上数据的传输速率高达1 Mbit/s,实时性强,具有较强的检错纠错[2]能力,可靠性高。因此,该数据采集系统采用CAN总线进行数据传输。
1 总体方案
数据采集系统结构如图1所示,主要由上位机、多个CAN节点和CAN总线组成。其中CAN节点[3]包括
图1 数据采集系统结构框图Fig.1 Structure of the data acquisition system
系统一次完整的数据采集过程说明如下。
系统上电复位后,节点开始进行系统初始化。初始化完成后,等待上位机发送开始采集数据的命令,数据采集节点响应该命令后开始采集信号,并将所采集的模拟信号通过单片机内部的A/D模块转换为数字信号。数据采集完毕后进入等待状态,若收到上位机传输数据的命令,则在CAN核的控制下将数字信号经由收发器发送到总线上,再传输给上位机;否则,将数字信号通过CAN的专用缓冲寄存器存储到消息RAM。继续等待上位机的命令,直至节点收到上位机发送的停止数据采集命令。
2 系统性能
本数据采集系统突出的性能优点主要有以下三方面:微型化、可靠性和灵活性。详细说明如下。
2.1 微型化
系统微型化主要通过两方面来实现。一方面,节点主控单元所选用的单片机是Silicon Lab公司的C8051F500。C8051F500是SoC型单片机,它不仅集成了常用的模块如定时器、A/D转换模块、串口等,还集成了CAN、LIN等模块,具备较高的集成度。该系统在省去独立CAN控制器所占体积的同时,降低了外围电路的复杂性,减小了数据采集节点的体积。另一方面,CAN收发器[4]选择 CTM1050T。CTM1050T是隔离型CAN收发器,自身具有电源隔离和电气隔离的作用,避免了外接隔离器件,使得系统体积进一步缩小。
2.2 可靠性
首先,单片机和CAN收发器的高集成度使系统外围电路得到简化,避免了部分系统内部噪声对性能的干扰,在一定程度上提高了系统的可靠性。其次,CAN总线采用差分信号对数据进行传输,由于CAN总线的双线受到的干扰是一致的,故其传送的差分信号能有效避免或减少各种电磁噪声带来的影响。再次,CAN总线本身具有很好的检错纠错能力,它可对错误来源进行正确的定位,将永久的硬件错误从软件错误中独立出来。此外,CAN数据帧中包含CRC域,总线协议采用CRC检验并提供相应的错误处理能力,保证了数据通信的可靠性。标准数据帧格式[5]如图2所示。
图2 标准数据帧格式Fig.2 Format of standard data frame
2.3 灵活性
基于CAN总线的特点,其上节点可以实现即插即用的功能且节点数最多可达110个[6],所以CAN总线上节点的扩展简单、方便。此外,系统中的CAN节点主要负责完成数据采集与传输,是一个通用性较强的模块,在测量不同物理参数时,只需将节点前端的传感器换成相应不同类型的传感器即可。因此,CAN节点的应用方便、灵活。
3 硬件与软件设计
3.1 硬件设计
系统的核心模块是CAN节点。单片机C8051F500与上端隔离收发器(CTM1050T)和下端传感器共同构成CAN节点模块。CAN节点与总线的接口电路原理图如图3所示。
图3 CAN接口电路原理图Fig.3 Principle of the CAN interface circuit
单片机内部的CAN模块即CAN控制器,它主要包括CAN核、消息存储器、消息处理器和控制寄存器四部分[7]。单片机的MCU不能直接访问内部的消息RAM,因此将位于控制寄存器的接口寄存器(CAN0Ifx)分为两组,其中一组用于存储CPU对消息RAM访问时传输的数据,另一组用于存储消息RAM与总线进行传输的数据。两个消息寄存器组的功能相同,且允许它们相互被中断,以解决消息RAM和总线之间数据收发与单片机和消息RAM之间数据传输的冲突问题[8]。
3.2 软件设计
系统软件主要包括系统初始化、A/D转换和CAN数据收发三部分。CAN总线数据采集流程图如图4所示。
图4 CAN节点数据采集流程图Fig.4 Flowchart of data acquisition in CAN node
将系统采集的模拟信号经A/D转换为数字信号后,以CAN通信协议所要求的特定格式(CAN标准数据帧)发送至消息缓存区[9]。数据采集系统所采集的模拟信号由其内部A/D转换为数字信号,该数字信号以标准数据帧的格式发送至消息缓存区[9]。在CAN模块中,单片机内部CAN处理器会控制消息缓存寄存器将数据写入CAN寄存器,待发送请求到来时CAN控制器将数据发送出去。当总线上有节点消息发送成功时,其他接收节点会产生接收中断并响应中断,进入中断接收子程序接收数据,并根据消息标志符判断该数据帧是否为自身节点所需的数据。若是所需数据,则存储该消息;否则丢弃。此为一次数据收发的过程。
3.2.1 系统初始化
系统初始化主要包括端口、晶振、时钟、A/D模块和CAN控制器的初始化。
3.2.2 A/D 转换模块
单片机的ADC0由35/28路模拟多路选择器(AMUX0)、可编程逻辑放大器(PGA)和1个采样速率为200 kS/s的12位逐次比较寄存器(successive approximation register,SAR)组成。ADC0中还集成了跟踪保持电路和可编程窗口检测器。
单片机控制寄存器中A/D转换使能位AD0EN被置为‘1’时,ADC0子系统(ADC0、跟踪保持器和PGA)才被允许工作;当 AD0EN位为‘0’时,AD0C子系统处于低功耗关断方式。当有数据要转换时,AD0EN位被置‘1’,A/D模块启动,将系统测到的模拟信号转换为数字信号。A/D转换后的结果保存在ADC0数据寄存器ADC0H、ADC0L中。当有数据传输命令到来时,则将数据发送给所需模块。
3.2.3 CAN 数据收发
A/D转换完成后,将其结果发送到CAN寄存器[10],由CAN模块完成与CAN总线上其他节点的通信。节点接收到上位机或其他节点发送的数据传输请求命令后,进入中断程序,执行接收中断子程序,由接收子程序分析、判断接收到的消息并响应该数据发送请求命令。接收子程序除了要完成数据接收外,在处理报文的过程中还要对总线关闭、错误报警、接收溢出等情况进行处理。因此,接收子程序要比发送子程序复杂。
发送子程序主要负责完成消息的发送过程。发送消息时,只需将待发送数据按数据帧格式组成一条消息,送入发送缓存区,然后启动消息发送即可[11]。消息发送过程与接收过程只是数据缓存寄存器与消息RAM之间的数据传输方向不同而已,其他的设置及对消息的处理过程基本相同。
4 测试结果
设计开发环境采用的是Silicon Lab IDE,并用其进行仿真,所用适配器为新华龙公司生产的U-EC6(免驱动)。数据采集系统的测试结果采用VB界面进行显示。发送节点测试结果显示界面截图如图5所示,总线上另一节点所接收到的数据显示界面截图如图6所示。
系统中CAN节点的通信速率为1 Mbit/s。CAN总线上每个节点都可以作为主节点来发送或接收命令。各节点是否为主节点取决于该节点所收发报文的标志符。测试结果表明,该数据采集系统有效地解决了系统数据冲突问题,数据传输准确、高效,系统的可靠性、实时性得到保证,满足本次设计的初衷。
5 结束语
数据采集系统的CAN节点是由传感器、隔离CAN收发器CTM1050T和内嵌CAN核的C8051F500单片机共同构成的数据采集模块。首先,因其采用CAN总线传输数据,数据采集节点的灵活性得到提高;其次,解决了CAN消息内部传输时可能发生的冲突问题,使系统的可靠性得到保证;最后,采用了内部集成CAN核的单片机,并且同以往的节点相比,减少了外部隔离光耦,使得外围电路得以简化,从而使数据采集系统的微型化得以实现。系统的灵活性、可靠性得到保证,微型化得以实现,从而使基于CAN总线的数据采集系统的应用更加广泛。
[1]宋小庆.军用车辆综合电子系统总线网络[M].北京:国防工业出版社,2010.
[2]罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:电子工业出版社,2010.
[3]田帅帅.基于CAN总线的测量系统通信网络设计[D].太原:中北大学,2011.
[4]郭铁桥,陈勇.基于CAN_LIN总线的智能照明系统[J].自动化仪表,2011,32(2):46-48.
[5]赵晓军,曹建坤,李可一,等.基于CAN总线的数据臂通信设计[J].自动化仪表,2010,31(5):13-15.
[6]Li Ran,Wu Junfeng,Wang Haiying,et al.Design method of CAN BUS network communication structure for electric vehicle[J].Strategic Technology(IFOST),2010(10):326-329.
[7]胡晓拓,张培仁,杨天宝,等.基于C8051F040的CAN控制器的应用与分析[J].微计算机信息,2007(23):8-10.
[8]张培仁,孙力.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007.
[9]陈在平.现场总线及工业控制网络技术[M].北京:电子工业出版社,2008.
[10]刘波,张会新,孟令军.基于C8051F040的CAN总线采集存储及实时监测系统设计[J].仪表技术与传感器,2010(10):57-59.
[11]于成毅.CAN总线数据记录仪的研究与设计[D].太原:中北大学,2011.