关键词:单片机;智能仪表;CAN
1 前言
在计算机数据传输领域内,长期以来使用RS-232通信标准,尽管它们被广泛的使用,但却是一种低数据速率和点对点的数据传输标准,无能力支持更高层次的计算机之间的功能操作。同时,在复杂或大规模应用中(如工业现场控制或生产自动化领域),需要使用大量的传感器、执行器和控制器等,它们通常分布在非常广的范围内,所以,在最底层上的确需要设计出一种造价低廉而又能经受工业现场环境的通信系统,现场总线(Field Bus)在这种背景下产生了。
现场总线是连接智能现场设备和自动化系统的数字式、双向传输、多分支结构的通信网络。其拓扑结构如图一。现场总线技术自70年代诞生至今,由于它在减少系统线缆,简化系统安装、维护和管理,降低系统的投资和运行成本,增强系统性能等方面的优越性,引起人们的广泛注意,得到大范围的推。
CAN是一种有效支持分布式控制或实时控制的串行通信网络,最初是由德国BOSCH公司为汽车监测、控制系统而设计的。由于CAN总线本身的特点,其应用范围目前己不再局限于汽车行业,而向过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、传感器及智能仪表等领域发展。
智能仪表是自动化学科的重要组成部分。随着科学技术的迅速发展,尤其是微电子、计算机和通信技术日新月异的变化,智能仪表向着数字化、网络化和智能化方向发展,智能仪表一方面可以进行人机对话及与外部仪器设备对话,通过现场总线接连入自动测试系统。另一方面,使用者借助面板上的键盘和显示屏,可用对话方式选择测量功能、设置参数。当然,通过总线中的工业计算机也可获得测量节点的数据。
2 CAN的接口设计
CAN总线是一种串行数据通信协议,在CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可以完成对通信数据成帧处理。CAN总线接口的具体的电路设计如图1所示。
笔者用SJA1000作为流量计的CAN控制器,与CPU(单片机)的I/O口直接相连,再通过PCA82C250组成CAN总线。这种结构很容易实现CAN网络节点中的信息收发,从而实现对现场的控制。
SJA1000的AD0~AD7连接到MSP420F149的P0口,INT接到P1.0,/CS接到P1.1,/RD连接到P1.2,/WR连到P1.3,ALE连到P1.4,SJA1000的RX0与TX0分别通过两个高速光耦CNW137与PCA82C250相连后,连到CAN总线上。
PCA82C250为CAN总线收发器,是CAN控制器与CAN总线的接口器件,对CAN总线差分方式发送,其RS引脚用于选择PCA82C250的工作方式:高速方式、斜率方式。RS接地为高速,RS引脚串接一个电阻后再接地,用于控制上升和下降斜率,从而减小射频干扰。RS引脚接高电平,PCA82C250处于等待状态。此时,发送器关闭,接收器处于低电流工作,可以对CAN总线上的显性位做出反应,通知CPU。实验数据表明15~200K为较理想的取值范围,在这种情况下,可以使用平行线或双绞线作总线,本文中PCA82C250的斜率电阻为取30K。
CNW137为高速光耦,最高速度为10Mbps,用于保护CAN总控制器SJA1000。CAN总线的终端匹配电阻起相当重要的作用,不合适的电阻会使数据通信的抗干扰性及可靠性大大降低,甚至无法通信,范围为108~132Ω,本文使用的电阻为124Ω。
2.1 SJA1000的功能
CAN通信协议主要由CAN控制器完成。SJA1000是适用于汽车和一般工业环境控制器局域网(CAN)的高集成度独立控制器,具有完成高性能通信协议所要求的全部必要特性,具有简单总线连接的SJA1000可完成物理层和数据链路层的所有功能,应用层功能可由微控制器完成,SJA1000为其提供了一个多用途的接口。
SJA1000是一个独立的CAN控制器,它是Philips公司另一个CAN控制器PCA82C200的后继产品,在软件和引脚上均与PCA82C200兼容。但它不仅仅是PCA82C200的一个简单替代产品,它增加了许多新的功能,使得其性能更佳,尤其适用于对系统优化、诊断和维护要求比较高的场合。
SJA1000的功能框图如图2所示,由以下几部分构成:接口管理逻辑;发送缓冲器,能够存储1个完整的报文(扩展的或标准的);验收滤波器;接收FIFO;CAN核心模块。
2.2 82C250
SJA1000的一端与单片机相连,另一端与CAN总线相连。但是,为了提高单片机对CAN总线的驱动能力,可以把82C250作为CAN控制器和物理总线间的接口,以提供对总线的差动发送能力和对CAN控制器的差动接收能力。82C250的主要特性如下:
·与ISO/DIS11898标准兼容;
·高速(最高可达1 Mb/s );
·具有抗汽车环境下的瞬间干扰和保护总线能力;
·降低射频干扰的斜率控制 ;
·热保护;
·防护电池与地之间发生短路 ;
·低电流待机方式;
·某个节点掉电不会影响总线 ;
·可有110个节点相连接。
3 CAN通信程序框图
SJA1000操作期间,在上电之前必须配置控制线路(中断、复位、片选等)用于建立与CAN控制器之间进行通信的硬件连接。初始化、CAN通信采用中断方式数据发送和接收子程序,其流程如图3、图4和图5所示。
如果在上电后独立CAN控制器在引脚17得到1个复位脉冲(低电平),它能够进入复位模式。在对SJA1000寄存器设置前,CAN控制器通过读复位模式/请求标志来检查是否已达到复位模式,因为要配置信息的寄存器仅在复位模式才能写入,涉及对控制寄存器(CR),验收码寄存器(ACR ),验收屏蔽寄存器(AMR ),总线定时寄存器(BTRO和BTR1)和输出控制寄存器(OCR)的初始化编程。
时钟分频寄存器,可以选择BasicCAN或PeliCAN工作模式,设置CLKOUT管脚使能用来选择频率,设置是否使用旁路CAN输入比较器和是否使用TX 1输出被用作专门的接收中断输出。
验收代码和验收屏蔽寄存器的设置可以过滤信息,为收到的信息定义验收代码为和验收代码相关位比较定义验收屏蔽代码。
总线定时寄存器,定义总线上的位速率。输出控制寄存器定义CAN总线输出管脚TX0和TX1的输出模式,定义TX0和TX1输出管脚配置是悬空、下拉、上拉或推挽以及极性。中断寄存器设置允许识别的中断源。
4 结论
多个智能仪表与通过CAN接口与PC联系成总线网,系统运行良好。这种基于现场总线的智能仪表系统抗干扰性强、性能可靠,无论是测量速度、精确度、自动化程序还是性价比都是传统仪表不能比拟的,是今后仪器仪表发展的方向。