微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线的数据采集与处理系统的设计

CAN总线的数据采集与处理系统的设计

时间:12-13 来源:互联网 点击:
  1 引言

现场总线及其应用技术日益成为国际自动控制领域关注的一个焦点。CAN总线是目前公认的几种最有前途的现场总线之一。通信介质可以是双绞线、同轴电缆和光纤,其通信速率可达1mbps。can国际标准的制定更加推动了它的发展和应用,基于can总线的工业应用系统业大量涌现。其主要应用领域包括大型仪器设备、传感器技术数据采集系统和工业现场监控系统等[1][2]。本文结合can总线的特点,介绍了基于can总线的数据采集与处理的一种设计方法。

2 系统设计

2.1 can系统概要

图1 结构简图

本系统由两个cpu通过双口 ram相互连接组成,一片cpu(p87c591)负责can信号的发送与接收,另一片cpu(p89c58ba)负责 rs-485 信号的发送与接收。设计中通讯控制器选用了集成有can控制器的p87c591单片机。它自带的can控制器完全具有sja1000的功能,可完成can协议中规定的所有数据链路层和物理层的功能。且p87c591自带了15个中断源和看门狗定时器(wdt),应用十分方便。系统结构简图如图1所示。图中各部分所完成的主要功能如下:

(1) cpu-1:该芯片带有can接口,故可与下位机进行can通讯。通过can总线发送上位机的设定信息给下位机,同时接收下位机提供的数据信息,将其存入双口ram中,以供cpu-2来查询。

(2) cpu-2:该芯片连接有max491和max485 芯片,故可与外部进行422或485通讯,上位机的信息通过485通讯读入cpu-2之中,cpu-2再将其存入双口ram之中,以供cpu-1来查询,cpu-1再通过can总线将此设定信息传送给上位机。反之,下位机的所有已存入双口ram的检测值信息,也是通过该单片机的读取,并通过485通讯,将所有显示信息在人机界面上显示。

(3) 双口ram:双口ram用于存储系统的设置信息和状态信息,完成各种信息存储与交换。选用存储容量为16k的idt7006系列,并采用后备电池支持,保证掉电时存储的信息不丢失。双口ram按存储内容不同,分为设置区、状态区和预留区。设置区用来存储上位机的信息;状态区用来存储从下位机收集的系统状态信息;预留区则作为预留备用。

2.2 p87c591单片机概要

在系统中采用philips公司生产的p87c591单片机,该单片机是一个8 位高性能微控制器具有片内can控制器[3],大大简化了硬件电路的设计,提高了can接口的稳定性。p87c591 采用了强大的80c51指令集,并集成了sja1000 can控制器的pelican功能。主要有以下功能特点:can2.0b控制器,支持11位标准标识符和29位扩展标识符,4个可独立配置的验收滤波器,都可“在运行中改变”。can控制器的发送缓冲区能够保存一个完整的can信息帧(标准或扩展帧格式),只要通过cpu启动发送,信息字节就从发送缓冲区传输到can内核模块完成发送。can接口包含5个实现cpu与can控制器连接的特殊功能寄存器,对重要can寄存器的访问通过快速自动增加的寻址和对特殊功能寄存器的位寻址实现。接收一个信息时,can内核模块将串行位流转换成并行数据输入到验收滤波器,通过该可编程滤波器,p87c591可以确定实际接收到的信息。

p87c591连接的can节点电路设计比较简单,所需的外部元件只是一个晶振加两个电容驱动片内震荡器、一个连接到复位脚的电阻、电容。使用片内上电复位电路以及一个收发器将p87c591连接到can总线上。如图2所示。

图2 can 节点电路

2.3 can总线p87c591单片机侧的主要任务

在整个系统中591起到数据传输和处理的作用,通过can总线接收数据采集节点接收来的信息,整理后按协议存储到双口ram中。其主要任务有以下两点:其一采集下位机的数据信息;其二将采集来的信息按照协议的约定存储到双口ram中的固定的位置,便于58查询显示。

3 can总线软件设计

can总线软件设计主要包括两大部分:通信网络的应用层协议和功能实现的流程和编码。can通信软件主要由初始化、接收处理、发送处理及中断处理等组成。本文重点介绍发送、接收处理子程序。

3.1 发送程序

发送子程序负责节点报文的发送。信息从can控制器发送到can总线是由can控制器自动完成的。其流程图如图3所示。

图3 查询发送流程图

3.2 接收程序

接收子程序负责接收节点报文的接收。信息从can总线到can缓冲区是由can控制器自动完成的,接收程序只需从接收缓冲区读取要接收的信息。其流程图如图4所示。

图4 中断接收流程图

4 问题讨论

本设计的硬件电路中, 采用双cpu系统,即用一个cpu完成测控功能,另一个cpu完成系统联网和接口通信功能。cpu间的通信可以采用串口、并口等方式,但它们共同的缺点是操作复杂、速度慢。因此,采用双口ram方式在两个cpu系统间交换数据是一个不错的选择

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top