预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于单片机和CAN总线的数据采集系统设计【摘要】系统介绍了以CAN总线为核心所构成的数据采集系统的设计方法,包括总体方案,硬件和软件设计。在硬件设计方面,使用热电阻传感器、Σ-Δ型AD7705转换器、单片机、LED数码管显示器、以及目前应用比较广泛的CAN总线构建传输总线,实现了系统的智能化、实时化和总线化.在软件设计方面,使用KeilC51语言,在KeiluVision2环境下对系统进行编程。【关键词】CAN总线;单片机;数据采集1.引言基于CAN总线的分布式数据采集系统是利用现场总线集散采集系统的特点,把信息采集在现场进行,而通过操作站集中管理。運用CAN总线技术,极大地提高了系统的可靠性、实时性,系统开发较价廉,性能价格比高,安装维护简洁方便,具有广阔的应用前景,也是工业控制领域的一个重要发展方向。CAN是控制器局域网络(ControllerAreaNet)的简称,它是一种有效支持分布式控制或实时控制的串行通信网络。其主要优点如下:采用全双工的通信方式,无主从机之分,可实现分布式系统;最大传输速率1Mbps/40m,最远传输距离10km/5kbps;采用非破坏性总线优先级仲裁技术,仲裁的依据是数据块的标识符;采用面向控制的短帧结构,数据段的长度为0-8字节,实时性较高;采用载波侦听和CRC校验技术,具有较强的错误控制功能。分布式数据采集系统(DistributedAcqui-sitionSystem)是相对于集中式数据采集系统而言的。它一般是由地面采集站、遥测数据传输电缆以及中央控制站三部分组成,其中地面采集站按测线的方向布置,负责采集一个或几个测点的地球物理数据,而中央控智站的主要任务是完成数据的记录和质量监控。分布式数据库的优点:具有灵活的体系结构;适应分布式的管理和控制机构;经济性能优越;系统的可靠性高、可用性好;局部应用的响应速度快;可扩展性好,易于集成现有系统。2.基于CAN总线的分布式数据采集系统的总体设计由于CAN总线为多主方式工作,最多可挂接110个节点,并根据现代控制系统既需集中管理,又需分散实时控制的特殊工艺要求,分布式数据采集系统采用现场总线式集散采集系统。系统主要包括操作站(上位机)和现场数据采集采集系统两大部分;其系统总体结构如图1所示。图1系统总体框图整个系统工作原理为:从控制现场传感器传送来的信息可能是模拟量或数字量,模拟量通过16位模数转换器转换成数字信息后,发送到CAN总线上,总线上的其它节点单元和操作站根据自己的需要和事先设计好的验收码和验收屏蔽码,来判断是否接收该信息。如果该信息需要进一步较为复杂的处理,则可通过操作站(上位机)来处理并对整个网络进行管理,经过处理后的信息进行保存,如有重要信息则可通过与操作站相连的打印机记录打印。3.基于CAN总线的分布式数据采集系统的硬件设计硬件的核心器件就是CAN控制器SJA1000,通过单片机初始化后,SJAl000就可独立工作,通过检测总线上的电压信号,及内部特殊的寄存器内容,控制器就完成数据的打包、解包、错误的鉴定等一系列功能,下面简要介绍CAN控制器SJA1000:SJA1000是由PHLIPS公司研制的,主要用于自动控制和通信工业用的8位高性能微控制器,它是PHILIPS上一代控制器PCA82C200的替代品。图2所示为SJA1000的内部结构图:图2SJA1000的内部结构图4.基于CAN总线的分布式数据采集系统的软件设计系统软件设计中,中央监控机程序采用C语言编写,实现对各节点的状态监测、参数设置和修改以及数据的收发等功能,从而进行动态的管理与控制。对子系统的各节点程序设计可分为两部分。一个是对CAN总线控制器SJA100。完成的通信功能进行程序设计;另一个是对各节点控制器89C52完成的测控功能进行程序设计。4.1主程序设计温度测量节点主程序流程图如图3所示。在系统初始化以后,调用事件检查和处理的子程序,根据对情况的判别来作出对应的动作,此外如果有按键输入按调用功能键子程序来设定温度或电压、电流值等,并通过LED来显示相应的值。采集到的数据可通过CAN总线利用数据传送了程序送到监控中心。4.2CAN总线的数据接收过程接收函数与发送函数有些不同,接收函数的事件则是当“报文接收”时触发。不过前提就是RIE(接收中断使能)必须为逻辑1,因为报文接受与引起接收中断而该效果关系性的直接影响SJA1000的使INT引脚产生电平变化会而触发单片机的外部中断。接收函数触发开始直接必须完成几个条件;一RIE必须使能,二硬件的链接。SJA1000的INT引脚与单片机的INT1引脚是直接相连,而我们编程的方法是由SJA1000RXFIFO饱和中断,引起SJA1000引脚的电平产生变化而触发单片机的外部中断服务,就是这个外部中断源通知单片机进行“从RXF