CAN总线智能采集卡的设计与实现
0.引言
控制器局域网CAN(Controller Area Network)作为一种多线路网络通信系统,以其时分多主、非破坏性总线仲裁和自动检错重发等灵活、可靠的通信技术,及低廉的价格,被广泛地应用于工业自动化生产线、汽车、传感器、医疗设备、智能化大厦、电梯控制、环境控制等分布式实时系统。本采集卡采用的是一款Atmel公司新近推出的带有CAN控制器的微控制器,是一款很有前途的新型芯片,其内部集成CAN控制器,用它来组建CAN总线实时监控系统,与传统的CAN总线组网方式相比,系统具有结构简单、设计容易、抗干扰性强等应用优势。
1.采集卡的功能描述
本采集卡完成的主要功能有:
1) 采集温箱里的温度数据,并对其进行滤波处理。
2) 监视温度信号的变化情况,实现报警功能。
3) 将采集到的数据通过CAN总线传给上位机及其它节点。
采集卡带有8279键盘/显示接口,可通过手工或上位机来设定各种采集用的参数。
2.总体组成
智能采集卡主要由单片机系统,8279键盘/显示控制芯片,译码驱动电路,LED,按键阵列,温度传感器DS18B20,光电隔离以及CAN总线物理接口等组成,其硬件组成原理图见图1。
采集卡的总体工作流程如下:
采集卡上电复位以后,首先根据默认的参数初始化CAN总线的各个寄存器及DS18B20,然后对8279及显示LED的状态进行初始化,接着给T0定时器装载初值及设置中断寄存器等。待初始化完成之后,就向主机发送控制帧,要求主机设定采样周期、发送时间间隔、当前时间、发送主机地址、本机标识符等参数。设定完之后,就根据不同的状态进入到不同的中断服务程序中。
数据类型根据传输方向可分为上行数据(采集卡→主机)和下行数据(主机→采集卡)。
上行数据主要是采集卡采集到的温度数据。它的处理主要经过以下几个步骤:T89C51CC01对温度传感器DS18B20执行一个其RAM存储器操作命令完成一次温度测量。测量结果放在DS18B20的暂存器里,然后CPU用一条读暂存器内容的存储器操作命令将暂存器中数据读出,存放在数据存储区中。到满足发送条件之后,短数据直接形成帧送到发送缓冲区,超过帧长的数据则要经过分解,打包后再送入CAN总线控制器发送缓冲区。CAN控制器通过CAN物理接口向CAN总线发送数据,总线的所有节点都侦听该数据,但并非所有节点都接收此数据,只有通过接收滤波的节点才接收此数据。采集卡的数据主要是发送给主机、监控节点和相关的控制节点。当采集卡采集到的温度数据超过报警上限、报警下限或变化速率过快的时候,采集卡还通过CAN控制器向主机发送报警信息。
下行数据主要是主机向采集卡发送的各种控制信息。虽然采集卡可以接收任何节点的信息,但它主要起的是智能传感器的作用,所以一般只接收主机来的各种控制信息。控制信息通过CAN物理接口进入到CAN控制器的接收缓冲器中,采集卡根据帧类型来区分不同的控制帧并设定相应的参数,并进行相应的接收、发送处理。
3.硬件具体组成描述
1)核心CPU —T89C51CC01
T89C51CC01主要具有以下特性:其片内具有8051内核,具有1个CAN控制器, 8路模拟量输入的10位ADC变换器,可在系统编程的32K字节Flash程序存储器,2K字节程序加载Flash程序存储器,256字节RAM,1K字节XRAM和2K字节E2PROM数据存储器,一个21位看门狗定时器。该微控制器基于高性能的静态结构设计,采用先进的CMOS制造工艺,包含5个端口34根双向I/O线,3个16位定时/计数器、14个中断源4级嵌套中断结构、1个全双工UART、其提供很宽的操作频率范围,支持12时钟和6时钟操作。另外,使用者可利用片上Boot加载程序,通过CAN或UART接口对该控制器进行在系统或在应用编程。
T89C51CC01的最显著的一个特点是内部集成强大功能的CAN控制器。该控制器支持CAN2.A和CAN 2.B协议,通过报文对象页寄存器管理15个独立的报文对象.每个报文对象可分别编程为发送、接收或缓冲接收的报文,并可通过标识符寄存器和标识符屏蔽寄存器来设置11位或29位标识符和标识符屏蔽码来确定报文对象的优先级,以及CAN控制器对该报文对象是否接收或拒绝。其通信的波特率可根据实际通信距离和需要对位定时寄存器进行设定,最大波特率可达1Mbps。T89C51CC01的结构图如图2所示。其P0口为8位并行I/O口,将P0.0与DS18B20连接, P4.0(TxDC)和P4.1(RxDC)与82C250连接。P3.4(T0)、P3.5(T1)和P1.0(T2)是T89C51CC01内部定时器的引脚,P3.2(INT0)和P3.3(INT1)是T89C51CC01的外部中断引脚、低电平有效。
2)温度传感器DS18B20
DS18B20是一个单线式温度采集数据传输并直接转换数字量的温度传感器。其特点为:独特的单线接口仅需一个端口引脚进行双向通信,多个并联可实现多点测温;可通过数据线
供电,电源电压为3~5.5V;零待机功耗;用户可自定义的非易失性温度报警设置;报警识别命令识别并标志超过程序限定温度(温度报警条件)的器件;测温范围为-55~+125○C。 精度为9~12位(与数据位数的设定有关),9位的温度分辨率为±0.5℃,12位的温度分辨率为±0.0625○C,缺省为12位;在93.75~750ms内将温度值转化为9~12位的数字量,典型转换时间为200ms。
DS18B20有3个主要数字部件:64位激光ROM、温度传感器以及非易失性(E2PROM)温度报警触发器TH和TL。操作的顺序为:初始化(复位)、ROM操作命令、暂存器操作命令。通过单总线的所有操作都从一个初始化序列开始。次初始化序列包括一个由总线控制器发出的复位脉冲和紧随其后由从机发出的存在脉冲。一旦总线控制器探测到一个存在脉冲,它就会发出5个ROM命令之一。通过RAM操作命令DS18B20完成一次温度测量。测量结果放在DS18B20的暂存器里,用一条读暂存器内容的存储器操作命令可以将暂存器中数据读出。温度报警触发器TH和TL各由一个E2PROM字节构成。用一条存储器操作命令对TH和TL进行写入,对这些寄存器的读出则需要通过暂存器。所有操作命令都是8位,所有数据均以低有效位在前的方式(LSB)进行读/写。连接DS18B20的总线电缆有长度限制,采用普通信号电缆长度为50米,总线电缆为双绞线带屏蔽电缆时,正常通信距离为150米。另外,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。如果DS18B20接触不好或断线,则程序读该DS18B20时,将没有返回信号。
3)可编程键盘、显示器接口芯片---8279 及CAN总线物理接口---82C250
8279芯片是专用于键盘、显示器的接口芯片,能对显示器自动扫描,能识别键盘上闭合键的键号,提高CPU的工作效率。8279包括键盘输入和显示输出两个部分,键盘部分提供的扫描方式,可以和具有64个按键和传感器的阵列相连,能自动消除开关抖动以及对n键同时按下采取保护。显示部分按扫描方式工作,可以显示8或16位LED八段数码显示器。
82C250是PHILIPS公司生产的CAN控制器与物理总线之间的接口,提供对CAN总线的差动发送和接收能力,最初是为汽车高速通信的应用而设计的。它与ISO/DIS 11898标准全兼容,具有抗汽车环境下的瞬间干扰、保护总线能力。可以通过调整CAN总线上通信脉冲的斜率来降低射频干扰。可有110个节点相连接。
4.软件设计
在采集卡的软件设计中,主要采用模块化的设计思想,主要分为系统初始化程序、CAN中断服务程序、INT1中断服务程序(即8279中断服务程序)、ADC中断服务程序、T0中断服务程序和“看门狗”定时器服务程序等几个部分。
系统初始化程序主要是对CAN控制器、8279芯片、DS18B20、定时器、ADC控制寄存器、中断控制寄存器、中断优先级寄存器等进行初始化设置。然后根据发生事件的不同来进行不同的处理。
CAN中断服务程序主要包括CAN接收中断服务程序和CAN发送中断服务程序,主要处理CAN总线通信过程中的各种情况。
INT1外部中断是由8279引起的中断,当8279的FIFO寄存器不为空的时候,就向CPU发出中断申请,CPU进入中断后,首先读8279的状态寄存器,如果发生错误,就进入键盘出错处理程序。否则,进入键盘处理程序。在键盘处理程序中,从FIFO寄存器中读出键值,根据键值的不同,进行相应的处理。
T0中断程序主要处理跟定时有关的操作,可以起到时钟的作用,并且根据实现设定好的参数,实现定时采样,定时发送的功能。
T2定时器是专门防止单片机“死机”而设置的“看门狗”定时器。
本文作者创新点:采用当前流行器件来构成CAN智能采集卡以及相关软件设计。CAN总线数据采集系统由上位机、CAN总线适配卡及若干个CAN节点组成。可通过网卡或者嵌入式WEB网关连入局域网,再通过路由器接入Internet。通过WEB服务器,利用OPC技术,进一步实现B/S结构的实时监控。
评论
查看更多