聂平由
(湖南工业职业技术学院,湖南 长沙 410208)
基于CAN总线的GPS监控系统数据传输的实现
聂平由
(湖南工业职业技术学院,湖南 长沙 410208)
本文中的车载GPS监控系统以MCP2515为CAN总线控制器,MCP2551为CAN总线收发器,主要介绍了CAN总线上的智能节点和监控终端以及监控终端和监控中心数据传输的实现方法。
CAN总线;MCP2515;车载GPS;IP协议
在中国交通越来越发达的今天,一个单位如何有效的管理好自己所属的车辆成了一个热点问题。随着GPS由军用向民用的转变,车载GPS监控系统逐渐进入人们的视野,并且很好的解决了车辆管理的问题。人们把GPS监控系统采集来的定位信息、摄像头拍摄到的车内信息等通过GPRS模块发送到监控中心,使中心能够及时准确的了解每一部车的信息。在国内外的汽车制造业中,CAN总线是使用最普遍的汽车总线,并且有普及之势,比如奥迪 A6、奥迪 A4、宝来、帕萨特、Fiat Palio、Fiat Siena、BMW等,主要用在动力系统(发动机、变速箱及仪表)和安全系统(ABS、EBD、BAV、ASR、ESP等)。监控中心如果要及时知道这方面的信息,比如说各仪表的显示数据、车辆的速度、发动机的状态等等,就要把监控终端设计为一个智能节点挂接在汽车CAN总线上,这样就能够实现各节点间的通信。监控中心能够通过GPRS收集到汽车CAN总线上其他智能节点的信息,也能够发送控制命令去控制各智能节点。本系统中选用MCP2515为CAN总线控制器,MCP2551为CAN总线收发器,GPRS模块选用华为的GTM900。
本文提出的基于CAN总线的车载GPS监控系统的总体框图如下,此监控终端连接上CAN收发器和CAN控制器,使之成为一个能够挂接在汽车CAN总线上的智能节点,它可以和汽车CAN总线上的其他智能节点进行数据交换。监控终端不停的监听CAN总线上的数据,根据数据中的标识符进行过滤,如果符合终端接收的要求,则数据能够传输到终端,如果不符合要求的标识符,则被过滤。被终端接收到的数据通过GPRS模块发送到监控中心去,这样监控中心就能够了解CAN总线上其他节点的信息,并根据接收到的信息发送相应的控制字节到其他智能节点中去。系统总体框图如下:
图1 系统总体框图
MCP2515具有高速的SPI接口,只需要CS、SI、SO和SCK四条线与MCU的管脚连接就可以实现数据的发送与接收。MCP2515和MCP2551所需的电压不同,分别是3.3V和5V,它们的发送端和接收端不能够直接相连,需要用光耦进行隔离。光耦的选择需要注意总线上的波特率,总线上如果传输高波特率的数据,则光耦也应该用相应的高速光耦,否则数据不能够进行准确可靠的传输。PS8701的转换速率为1Mbps,能够符合总线上250K的波特率的需要。如图2:
图2 CAN通信电路连接图
MCP2515是CAN控制器,需要进行波特率的初始化才能够与CAN总线进行通信。如果要对总线上的数据进行滤波,使得MCP2515只能接收符合要求的数据,那么还需要对接收滤波和屏蔽寄存器进行设置。这样就可以把那些不需要接收的数据或者干扰数据进行过滤掉,保证了数据接收的质量。对MCP2515进行这些初始化后就能够与总线进行通信了。MCP2515把CAN收发器从总线上接收的数据存放到它的标识符寄存器、长度码寄存器和数据寄存器中,MCU通过SPI接口读取相应的寄存器的值便可以得到总线上的数据。我们把这些值放到一个全局变量receivebuffer[]数组中,在后面通过对这些值的一些处理(UDP,IP封包),就可以通过GPRS模块发送到监控中心了。当有数据要发送到CAN总线上,我们先定义一个全局变量transmissivebuff[],把要发送的数据先存放到这个数组中,然后把数组中的内容通过SPI传送到MCP2515的相应的寄存器中,启动发送就可以把数据发送到总线上去了,总线上的其他智能节点监测到总线上有数据,就可以接收总线上的数据。这样就实现了终端与总线上的数据的通信。
本系统的GPRS模块使用的是华为的GTM900,GPRS是一种以分组交换技术为基础,采用IP数据网络协议,传输高速、低速数据及信令的高效数据传输网络。GPRS网络接入速度快,提供了与现有数据网的无缝连接。由于GPRS网本身是一个分组型数据网,支持TCP/IP,X.25等协议,可以直接与分组数据网(IP网或X.25网)互通,接入速度快于电路型数据业务。
由上一节的介绍可以知道,要使数据能够在GPRS网络上传输,必须要对数据进行处理,把数据处理成符合IP网络协议的格式,这样数据才能够通过GPRS传送到监控中心去。基于上面的考虑,在应用层用UDP协议对数据进行打包,在网络层使用IP协议对数据进行打包,打包后的数据通过MCU发送到GTM900的RXD0管脚,由GPRS网络发送到监控中心去。我们假设从CAN总线接收到的数据transmissivebuff[]={0x19,0x40,0x08,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},通过下面的UDP打包和IP打包成符合发送要求的数据。
4.2.1 UDP协议的介绍及数据的封包
UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,它是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。它的信息包的标题很短,只有8个字节,我们在要发送的数据的前面加上8个字节的UDP的信息包,就完成了UDP协议的封包。
4.2.2 IP协议的简介及数据的封包
IP协议位于网络层,它提供了不可靠的、无连接的数据报传输机制。它把经过UDP协议封包的数据加上IP协议的信息头,使整个数据符合在GPRS上传输的格式,这样数据就能够通过GPRS传送到监控中心去,监控中心对接收过来的数据进行解析,得到最后transmissivebuff[]中的数据。图3就是经过UDP和IP封包后的数据应有的格式:
图3 IP信息包+UDP信息包+发送的数据
我们使用周立功的CAN232MB智能协议转换器做为CAN总线上的智能节点,它的CANH引脚和终端的B引脚相连,CANL引脚和终端的A引脚相连,并把CAN232MB的波特率设置为250K,使之和MCP2515中设置的波特率相同。CAN232MB有一个串口连接到计算机上,打开串口调试助手,用来接收中心发送到这个智能节点的数据和发送这个智能节点的数据到中心去。另外为了能够直观的看到中心能不能接收和发送数据,我们用网络调试助手来查看接收的数据和发送数据,但需要根据程序中设置的相应的端口号来进行设置。根据上面的要求设置后我们就可以进行调试了。
在串口调试助手中我们发送8个十六进制数据(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11)到 CAN总线上,终端从CAN总线上收到这11个数据,包括2个字节的标识符、1个字节的数据长度和8个字节的数据。这11个数据经过UDP协议、IP协议的封包发送到GTM900模块中去,通过GPRS发送的监控中心去。在网络调试助手上我们就可以收到这些数据。
图4 监控中心接收的数据
在图4中,我们看到监控中心接收到了一串数字,00 16 23 D6 B9 E8 1A 02 00 4F 82 19 40 08 11 11 11 11 11 11 11 11,其中00 16 23 D6 B9 E8 1A 02 00 4F 82是自己规定的协议的一些信息头,19 40两个字节是发送数据的智能节点的标识符,当总线上的智能节点有多个的话,这个用于区分是总线上的哪个智能节点发来的数据,08是发送数据的个数,后面的8个11就是智能节点发送过来的数据。可以看到,CAN总线上的智能节点发送的数据准确的传送到监控中心来了。
在网络调试助手中发送三个字节的数据AA,BB,CC到总线的智能节点上,在发送区域的AA,BB,CC数据前面的00 0E 23 D6 B9 E8 1A 02 00 00 17是自己封装的协议。把这些数据通过监控中心发送到CAN总线上被CAN总线上的其他智能节点所接收。
在图5中,接收到的11个数据,第一个数据是数据段的长度,第二、三个数据是标识符,后面8个中的第2,3,4是中心发来的数据,55和AA是终端发给CAN总线的心跳指令。最后4个数据保留不使用,默认为0。可以看到监控中心发送过来的数据准确的传到CAN总线上的智能节点中,并且被保存在MCU的EEPROM中,保证掉电数据不丢失。
图5 CAN总线上的智能节点接收的数据
从上面的介绍可以看到,监控中心和汽车CAN总线上的其他智能节点能够很好的进行通讯,这样监控中心就能够及时的知道汽车上各仪表的数字以及各个重要器件的信息了,并且能够发送相应的控制命令进行控制。这样监控中心通过车载GPS监控终端对车辆进行了很好的监控。
[1]石琦文、孙晓民.车用CAN总线网络快速原型的设计实现[J],微计算机信息,2006年第2-2期,223-225页。
[2]张专成,邹涛.一种基于CAN总线的集散型火灾报警控制系统[J],嵌入式网络技术,2005.7。
The Data Transmission Implementation of the GPSMonitoring System Based on CAN Bus
NIE Ping-you
(Hunan Industry Polytechnic,Changsha410208,Hunan)
Theautomotive GPSmonitor systemin thispaper ischosen MCP2515 as CANbuscontroller and MCP2551 as CANbustransceiver,it introduces theimplementation method of thedata transmission not only between the monitor terminal and the intelligent node in CANbus,but also between the monitor terminal and themonitor centre.
CANbus;MCP2515;automotive GPS;IPprotocal
TP277
B
1671-5004(2011) 04-0010-03
2011-5-13
聂平由(1974-),男,湖南双峰人,湖南工业职业技术学院电气工程系讲师,主要从事微机控制工程与应用研究。