CAN总线GPRS数据通信.docx
《CAN总线GPRS数据通信.docx》由会员分享,可在线阅读,更多相关《CAN总线GPRS数据通信.docx(16页珍藏版)》请在冰豆网上搜索。
![CAN总线GPRS数据通信.docx](https://file1.bdocx.com/fileroot1/2022-11/26/7c2a0d82-f782-40da-b623-e24b2b83da39/7c2a0d82-f782-40da-b623-e24b2b83da391.gif)
CAN总线GPRS数据通信
基于CAN总线和GPRS的数据通信论文
孙艳科曾焰龙剑刘召勤唐文杰
指导老师:
张新安
(湖南科技学院电子工程系)
摘要:
在当今的工业现场总线技术中,CAN总线技术凭借其实现数据通信的高可靠性、实时性和灵活性等优点,广泛运用于各个领域;无线数据通信网络的发展,使数据传输更加方便。
本文提出了一种基于CAN总线与GPRS的数据通信系统,给出了系统的设计方案。
系统采用STC89C52单片机作为主控制芯片,在CAN总线通信接口模块中,CAN总线控制器选用Philips公司的SJA1000,总线驱动器采用了PCA82C250接口芯片,CAN总线通信数据采用双绞线传输。
无线数据收发系统选用GPRS。
介绍了CAN总线及GPRS数据收发的性能及特点,提出了一种基于CAN总线和GPRS的数据通信的系统,给出了其软硬件设计方案,并对CAN接口中断处理、GPRS数据传输以及CAN通用应用层协议的开发等关键技术问题进行了重点研究,同时对设计中的难点及实现过程中应注意的问题进行了比较详细的介绍。
经系统测试,该系统使用方便、工作可靠性较高,达到了设计要求,具有一定的参考和应用价值。
【关键词】CAN总线智能节点GPRS无线数据传输STC89C52
一引言
本工程提出了基于CAN总线和GPRS的数据通信系统,研究其软硬件设计方案,对CAN接口中断处理、GPRS无线数据传输以及CAN通用应用层协议的开发等关键技术问题进行研究。
将CAN总线与GPRS通信相结合,使CAN结点获得的信号能通过总线实时地、可靠地、高速而准确地进行传输,使得各由计算机控制单元能够通过CAN总线共享所有信息和资源,达到简化布线、减少传感器数量、避免控制功能重复、提高系统可靠性、降低成本、更好地匹配和协调各个控制系统的目的。
CAN总线具有很好的抗干扰能力,能很好满足GPRS数据通信,是未来智能化传感器和智能化控制网络的发展趋势。
基于CAN总线和GPRS的数据通信具有很高的网络安全性、通信可靠性和实时性,网络成本低,多个用户可高效率地共享同一无线信道,可以在异地实时监控工业现场的各种状况下发挥巨大作用。
本系统设计拟解决的关键问题:
1、CAN接口中断处理。
2、GPRS线数据传输协议。
3、CAN通用应用层协议的开发等关键技术问题。
1.1通信系统总体功能概述
1.1.1系统总体框图
系统原理描述:
系统由一个主控机和若干个CAN节点执行器组成,它们都挂接在双绞线上,组成一个CAN总线通信局部通信网络,CAN总线通信网络中的主控机安装GPRS数据传输装置,与另一个控制中心组成无线通信网络,整个系统的关键任务是实现CAN总线内部局域网通信以及GPRS通信网络的通信。
其系统总体结构框图如图1.1.1所示。
图1.1.1
1.1.2CAN总线主控机节点设计
CAN总线主控机系统由单片机最小系统、CAN总线通信接口、实时显示、人机接口模块和串口通信下载模块及无线通信模块组成。
CAN总线通信接口通过双绞线收发数据,实现和执行器的连通。
结构框图如图1.1.2所示:
本主控机负责与无线通信网络进行数据传输,同时也是CAN总线网络中的一个节点,在整个系统中起着主导作用,而CAN总线通信模块,采用SJA1000和PCA82C250,通过单片机控制,实现与其他节点通信。
图1.1.2CAN总线主控机节点框图
1.1.3CAN通信模块设计
CAN通信模块是本次设计中的核心技术,它负责系统中主控机和执行器之间的数据通信。
单个CAN总线节点由单片机、CAN总线控制器和高速光电耦合器及总线驱动器组成,可编程控制,所以称之为智能节点,结构如图3所示,设计中CAN通信模块采用了独立式的CAN控制器,数据通过对控制器编程写入控制器芯片的发送缓冲区里发送出去,目的节点则负责把数据接收到数据接收缓冲区里,再通过CAN总线接口和单片机之间的数据总线,传递给单片机进行处理。
设计方案如图1.1.3所示。
图1.1.3CAN通信模块(单节点)结构与CAN总线系统结构图
二硬件系统设计
2.1电源电路
电源是整个系统的能量来源,它直接关系到系统能否运行。
在本系统中需要用到5V和3.3V的电源,因此电路中需选用稳压芯片LM7805和AMS11173.3V稳压芯片;其LM7805最大输出电流为1.5A,能够满足系统的要求,电路如图2.1所示。
图2.1电源电路
2.2RS-232下载接口电路
RS-232通信接口电路原理图如图2.2所示:
由于PC机的通信口为RS-232电平标准,而单片机则是TTL电平,所以要实现单片机与PC机串行通信,就需采用MAX232将TTL电平转换为RS-232电平。
RS-232标准的传输速率只能达到20kb/s,最大传输距离15m。
但这里基本能满足本次设计要求。
该接口电路,方便设计中的程序调试,电路简单实用。
图2.2RS-232下载接口电路
2.3微处理器基本系统
微处理控制系统采用了STC公司生产的89C52单片机,CAN控制器的片选为P2.7,CAN控制器的中断输出接在单片机的外部中断INT1。
复位电路和晶振电路是89C52工作所需的最简单外围电路。
同时该基本系统还包含了显示模块和独立按键模块,通过按键模块能向CAN网络中任一节点发送或读取数据,电路设计简单,其中显示电路选用LCD1602,显示直观、外圈电路简单。
微处理器基本系统电路原理图如图2.3所示:
图2.3微处理器基本系统
2.4CAN通信接口电路
2.4.1CAN通信接口电路方案论证
方案一:
集成芯片解决方案
集成CAN总线接口的单片机很多,有TI公司出品的DSP芯片TMS320C2000系列,Motorola公司生产的68HC05X4等,常用的是Philips公司生产的P8xC591集成芯片。
P8xC591不但集成了CAN控制器,还集成了其它相关功能,如A/D转换、脉宽调制输出PMW0、看门狗等。
这无疑大大简化了应用系统的硬件设计,系统可靠性也有很大提高,但同时也存在应用灵活性不够等问题,而且它需要专用的开发工具,也给系统开发带来不便。
方案二:
独立式控制器解决方案
本方案中,采用89C52微处理器作为系统的控制核心,再扩展CAN通信接口,其中CAN通信控制器采用Philips公司生产SJA1000,它与单片机直接接口,电路简单;CAN总线驱动器采用PCA82C250,本方案具有编程灵活,通信协议可扩展等特点。
经比较,考虑到方案二在设计时更灵活方便,可以采用通用的开发工具,性价比很高,而且89C52扩展其它接口也更加自由,技术也很成熟,所以采用第二种方案
2.4.2SJA1000CAN控制器的介绍
SJA1000是一种独立的CAN总线控制器。
PHILIPS半导体公司将它作为PCA82C200CAN控制器(BasicCAN)的替代产品。
SJA1000在原来的BasicCAN工作模式上又增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN2.0B协议[7]。
可以通过时分频器中的CAN方式位来选择工作模式,本设计采用的是PeliCAN模式。
1、BasicCAN和PeliCAN方式的区别
在PeliCAN方式下,SJA1000有一个重新设计的含很多新功能的寄存器组,SJA1000包含PCA82C200中的所有位,同时增加了一些新的功能位。
2、SJA1000的基本特性
*具有64字节长度的接收队列;
*符合CAN2.0A和CAN2.0B协议;
*16个收发信息缓冲器,支持11位或29位标识符,支持多级信息缓冲器结构;
*读/写访问错误计数器,可编程的错误限制报警,最近一次的误码寄存器;
*每一个CAN总线错误的错误中断;
*由功能位定义的仲裁丢失中断;
*一次性发送(当错误或仲裁丢失时不重发);
*只听模式(CAN总线监听,无应答,无错误标志);
*支持热插拔(无干扰软件驱动位速检测);
*硬件禁止CLKOUT输出;
*支持数据帧和远程帧的发送和接收;
*支持满位比较、满位屏蔽和位屏蔽验收三种验收标识选择方式;
*两个验收标识寄存器支持标准帧或扩展帧格式;
*波特率从10Kbps~1Mbps可编程。
3、SJA1000引脚介绍
图2.4.1是SJA1000引脚图,各引脚功能如下:
11脚(MODE):
模式选择输入(1:
Intel模式;0:
=Motorola模式)。
13、14脚(TX0、TX1):
为输出驱动器0、输出驱动器1到物理总线的输出端。
19、20脚(RX0、RX1):
从物理CAN总线输入到SJA1000的输入比较器的输入端。
图2.4.1SJA1000引脚图
16脚(INT):
中断输出,用于中断微控制器。
INT在内部中断寄存器各位都置位时,
低电平有效。
INT是开漏输出。
7脚(CLKOUT):
时钟信号输出端,SJA1000产生的时钟输出信号提供给微控制器,时钟信号来源于内部振荡器且通过编程驱动,时钟控制寄存器的时钟关闭位可禁止该引脚。
2、1,28-23脚(AD7~AD0):
数据/地址复用总线;
3脚(ALE/AS):
Intel模式/Motorola模式的地址锁存信号端;
5脚((RD)/E)、6脚(WR):
读写控制信号端;
4脚(CS):
片选信号输入端,低电平有效;
9、10脚(XTAL1、XTAL2):
振荡器输入、输出端。
外部信号从XTAL2输入到振荡器放大电路,XTAL2是振荡器放大电路的输出,使用外部振荡信号时左开路输出;
22、18、12脚(VDD1、VDD2、VDD3):
5V电压端;
8、2、15脚(VSS1、VSS2、VSS3):
与上述电压端相对的接地端。
2.4.3PCA82C250CAN总线驱动器介绍
PCA82C250是CAN协议控制器和物理总线的接口,它可以提供总线的差动发送能力和接收能力,具有高速性(最高可达1Mbps),具有抗瞬间干扰保护总线的能力,具有降低射频干扰的斜率控制,最多可挂110个节点[8]。
1、82C250的基本特性如下:
•与ISO11898标准完全兼容;
•高速率(最高可达1Mbps);
•采用斜率控制,降低射频干扰;
•过热保护;
•总线与电源及地之间的短路保护;
•低电流待机模式;
•具有抗汽车环境下的瞬间干扰,保护总线能力;
•未上电节点不会干扰总线;
2、芯片管脚说明:
芯片引脚如图2.4.2所示:
1、4脚(TXD、RXD)发送、接收数据输入端;
5脚(Vref)参考电压输出端;
6脚(CANL)低电平CAN电压输入/输出;图2.4.2PCA82C250引脚图
7脚(CANH)高电平CAN电压输入/输出;
8脚(Rs)斜率电阻输入端;
通过在地和PCA82C250的8脚(Rs)之间接不同阻值的电阻,PCA82C250可选择三种不同的工作方式:
高速、斜率控制和待机,如表2.4.3所列。
表2.4.3RS选择的三种工作方式
在高速工作方式下,发送器输出晶体管简单地以尽可能快的速度启闭。
在这种方式下,不采取任何措施限制上升和下降斜率。
建议使用屏蔽电缆以避免射频干扰问题。
通过将引脚8接地,可选择高速方式。
对于较低速度或较短总线长度,可用非屏蔽双绞线或平行线作总线。
为降低射频干扰,应限制上升和下降斜率。
上升和下降斜率可通过由引脚8至地连接的电阻进行控制。
斜率正比于引脚8上的电流输出。
电阻大小可根据总线通信速度适当调整,一般在16~140KΩ之间,本电路电阻值为47KΩ。
若引脚8加有高电平,则电路进入低电流待机方式。
在这种方式下,发送器被关掉,而接收器转至低电流。
由于在待机方式下,接收器是慢速的,因此,第一个报文将被丢失。
2.4.4CAN通信接口硬件电路
硬件电路设计图如图2.4.4所示
图2.4.4CAN通信接口硬件电路
接线方式:
STC89C52SJA1000内部已经有地址锁存功能,所以它的地址/数据端可以和单片机的P0口直接相连。
控制信号线WR、RD、ALE直接和89C52的对应口线连接。
因为AT89C52是高电平复位,而SJA1000是低电平复位,所以采用单片机的一个引脚直接产生复位信号提供给SJA1000,保证了CAN控制器复位的可靠性,同时可随时复位。
SJA1000的CS信号由89C52的P2.7提供,在访问SJA1000时,只要P2.7脚输出低电平,高位地址为7FH。
同时,INT接89C52的INT1,接收数据即采用中断方式。
为提高可靠性,89C52和SJA1000都各自拥有自己独立的晶振电路。
SJA1000的TX0和RX0与PCA82C250的TXD和RXD连,82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,起到一定的限流作用,保护82C250免受过流的冲击。
CANH和CANL与地之间并联了两个30pF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。
另外,在两根CAN总线输入端和地之间分别接一个防雷击二极管,当两输入端与地之间出现瞬间干扰时,通过防雷击管的放电可以起到一定的保护作用。
SJA1000的20引脚RX1在不使用时可接地,配合时钟分频寄存器中的CDR.6(CBP)的置位可使总线长度大大增加[9]。
需要注意的是在CAN总线两端接有一个120Ω的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。
但实际上只需保证CAN网络中“CAN_H”和“CAN_L”之间的跨接电阻为60Ω即可。
2.5GPRS无线传输模块
2.5.1GPRS无线通信系统基本原理
GPRS(通用无线分组业务)是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。
GPRS网络是在原有的GSM网络上,增加SGSN(GPRS服务支持节点)以及GGSN(网关GPRS支持节点)两种数据交换结点设备,使得用户在端到端分组方式下发送和接收数据,同时兼容电路型数据和分组交换数据,从而GPRS网络能够和因特网互相连接。
其系统结构如图2.5.1所示。
图2.5.1 GPRS无线分组网络系统结构图
GPRS提供了两种类型的服务:
点到点服务(PTP)和点到多点服务(PTM)。
相对原来的GSM的拨号方式的电路交换数据传送方式,GPRS的分组交换技术具有实时在线、按量计费、高速传输等优点。
2.5.2GPRS无线通信模块
GPRS模块采用HUWEI公司提供的GTM900C模块,该模块接口简单、使用方便且功能强大。
模块只需要单一的电源(3.4V~4.7V)即可工作,电流最大峰值可达2A。
主要硬件如图2.5.2、图2.5.3所示。
图2.5.2RS2232接口
图2.5.3GTM900C模块
GPRS模块与数据采集模块间通过串行口进行通信,通信的最大速率可以达到15200bps。
GTM900集成了TCP/IP协议,采用内部的扩展AT指令,数据采集模块可以与GPRS模块通信,使其通过GPRS网络把数据发送给PC上位机,具体步骤如下:
a)定义PDP上下文:
AT+CGDCONT。
使用设置命令,可为PDP上下文定义参数,该PDP上下文是由本地上下文标识参数标识的。
b)初始化命令:
AT%ETCPIP。
该命令实现PDP激活和TCPIP的初始化,是使用TCPIP功能前必须完成的一步操作。
c)打开一条TCP或者UDP链接命令:
AT%IPOPEN。
该命令用于打开一条TCP或者UDP链接命令。
d)设置数据模式命令:
AT%IOMODE。
该命令主要用来选择发送的数据是否进行编码,也就是(HEX2ASCII)的转换。
e)透传功能:
AT%TPS。
实现TCPIP上的直接数据传输,简化了发送数据阶段的操作步骤,并且提供了多种操作模式,以适应于不同的传输场景。
f)关闭链接命令:
AT%IPCLOSE。
2.5.3GPRS模块与CAN总线的硬件构成
系统主要由现场数据采集部分(CAN)和远程传输(GPRS)两部分组成,基本结构如图2.5.4。
本系统主要实现功能为:
1)将现场的状态(温度、压力等)通过相应的传感器经CAN智能节点采集到现场数据处理的但单片机上,经过运算得出相应的数据;2)将处理过的数据重新打包分组,经GPRS模块发送到本地数据服务器上[9]。
GPRS模块与CAN总线总体结构如图2.5.5。
图2.5.5GPRS模块与CAN总线总体结构
三软件系统设计
3.1系统软件总体结构
根据设计要求,系统实现功能及软件总体设计如图3.1所示;
图3.1系统软件总体设计框图
系统包含两大部分,无线服务终端和CAN总线通信系统,无线服务终端由GPRS和STC89C52组成,可以向CAN总线通信网络中的任一节点发送和读取数据,CAN总线通信系统,由3个节点组成,一个节点上接GPRS负责与无线终端系统通信,另外2个节点由图所示的单片机CAN总线收发系统构成。
其中无线服务终端和CAN通信系统的总体软件设计流程图分别如图3.2、图3.3所示。
图3.2无线服务终端软件设计流程
图3.3CAN总线主机软件设计流程
3.2CAN通信程序模块
3.2.1CAN网络通信规则及自定协议
CAN总线为多主工作方式,网络上任一节点均可在任意时刻主动向网络上其他节点发送信息而不分主从,通信方式灵活[10]。
为禁止总线冲突,CAN总线采用非破坏性总线仲裁技术,根据需要将各个节点设定为不同的优先级,并以标识符ID标定,其值越小,优先级越高。
总线的节点之间可以进行实时相互通信,当1个节点需要接收另1个节点的数据时,只需把其代码寄存器的内容设置成和另1节点的标识符一致即可。
如果对于标识符和其代码寄存器的内容设置不一致,则节点所发的数据不予理会。
发送报文和接收报文部分实现CAN总线节点之间通信,在总线基本规范的基础上,需要根据应用制订本系统的通信协议。
报文格式采用的是扩展帧格式,数据区最多为8字节,所以程序中定义了13个发送缓冲变量单元TX_buffer[13]和13个接收缓冲变量单元RX_buffer[13],对应着控制器SJA1000里的发送和接收缓冲区。
结合各个缓冲区的规定:
制订了自己的通信协议。
主控机与执行器的通信数据(即报文设置)格式如下:
TX_buffer[0]:
帧信息决定采用帧格式和数据长度定义;
TX_buffer[1]—[4]:
分别为标识码1、2、3、4,作为节点的标识地址;
TX_buffer[5]:
本节点地址;
TX_buffer[6]:
1代表请求对方发送数据,0表示向对方发送数据;
TX_buffer[7]、TX_buffer[8]:
发送数据低位、高位;
TX_buffer[9]:
0:
反馈数据,1:
本节点数据;
TX_buffer[10]:
无线中断数据请求标志位=1表示有,还有两位数据没用。
3.2.2CAN节点的初始化
CAN总线系统的初始化主要是设置CAN的通信参数,需要初始化的CAN控制寄存器有:
模式寄存器、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。
值得注意的是:
这些寄存器只能在CAN控制器处于复位状态下才可写访问。
SJA1000初始化流程图如图3.4所示。
如图3.4SJA1000初始化流程图
3.2.3发送报文与接收报文
发送报文的过程是:
发送报文程序把数据存储区中待发送的数据取出,加上标识符等信息,组成信息帧,等发送缓冲区清空后,则将信息帧发送到CAN控制器的发送缓冲区。
在接收到主机的发送请求后,发送程序启动发送命令,数据信息则发送出去。
信息从CAN控制器发送到总线是由CAN控制器自动完成的。
报文发送程序流程图见图3.5。
相反,接收报文的过程是:
信息从CAN总线传到CAN控制器的接收缓冲区,其过程也是由CAN控制器自动完成的。
接收程序只需从接收缓冲区读取信息,并将其存储在数据存储区RX_buffer[i]中。
需要提到的是,接收方式采用了中断接收。
报文接收程序流程图见图3.6。
图3.5报文发送程序流程图图3.6报文接收程序流程图
参考文献
[1]刘光、梁涛、牛春刚.CAN总线智能节点的设计和实现.微计算机信息.2006年第22卷第6-2期
[2]饶运涛、邹继军、郑勇芸.现场总线CAN原理与应用技术.北京:
北京航空航天大学出版社.2003
[3]邬宽明.CAN总线原理和应用系统设计.北京航空航天大学出版社.1996
[4]刘国锦,刘新霞.GPRS无线数据传输技术的应用.南京师范大学分析测试中心.2010年2月
[5]李金刚、刘永鸿.基于AT89C51型单片机的CAN总线智能节点设计[J].国外电子元器件.2006.8
[6]PhilipsSemiconductors.CANSepcificationVersion2.0,PartsAandB.1992
[7]贺国栋、张瑞华.基于SJA1000的CAN总线控制系统的设计与实现[J].电子元器件应用.2009.5
[8]吴永凤、王红蕾、王俊波.CAN总线接口芯片PCA82C250及其应用.贵州工业大学学报(自然科学版).2005年03期
[9]郭文海、杨军.CAN总线与GPRS在远程监控系统中的应用.科教信息期刊.2008.3