夏振华,阮宁君
(长江大学电子信息学院,湖北 荆州 434023)
基于GPRS的无线智能数据采集系统的设计
夏振华,阮宁君
(长江大学电子信息学院,湖北 荆州 434023)
提出了一种可以利用GPRS进行无线数据传输的数据采集系统,详细介绍了该系统的硬件设计和基于嵌入式Linux操作系统的驱动程序的设计及应用程序设计方法。该系统具有稳定性高、无线传输等优点,可以用于偏远、危险、人不易到达等场所的数据采集。
数据采集;无线传输;嵌入式系统;GPRS
传统的数据采集传输系统大都是采用单片机为核心,利用RS232、RS485等有线通信方式实现的,虽然实现简单、成本低,但采用有线的数据传输方式很大程度上限制了其应用场合,不能适用于一些分散的、无人值守的现场,需要对数据进行定时采集,以便及时了解现场的情况。在电力、铁路、石油探采等领域,要求对相距遥远的生产过程进行数据传输,如果采用有线的传输方式,则在技术上和经济上都是不可取的,需要采用无线的方式进行远距离的数据传输。并且,随着数据采集系统的应用条件越来越复杂,基于单片机的数据采集系统在功能、用户界面、运算速度和精度上逐渐不能满足需求。近年来,以ARM为中央处理器和Linux为操作系统的嵌入式系统由于其功能强、功耗低、处理速度快、用户界面友好等优点,得到越来越广泛的应用。笔者将介绍一种以S3c2410为核心,基于嵌入式Linux的数据采集传输系统,其中AD芯片采用TI公司的多通道高速模数转换器ADS8364,无线数据传输采用GPRS(General Packet Radio Service)模块实现。
图1 系统的结构图
系统由无线采集终端和监控中心2大部分组成。监控中心为运行着监控软件的计算机,监控软件具有显示各终端数据、处理分析数据、产生报警信号、控制监控终端的运行等功能;采集终端是基于ARM的嵌入式采集系统,主要由信号调理电路、数据采集模块、控制模块、无线传输模块4个部分组成。采集终端和监控中心组成一个典型的C/S(Client/Server)系统。监控中心作为服务器,可以同时接受分布在地理位置相距很远的多个采集终端发来的数据,并对所有的采集终端进行控制和管理;采集终端将采集的数据通过GPRS拨号的方式,利用TCP/IP协议,经由Internet传输到监控中心,同时接受来自监控中心发来的控制命令,来控制采集系统的启动、停止、参数设置等操作,系统的结构如图1所示。监控中心软件采用VC++实现。
2.1ADS8364与S3c2410的接口
ADS8364可以通过给DVCC提供3.3V或者5V电压而使器件的接口电压为3.3V或者5V,这样可以
很方便的将ADS8364和5V总线接口的51系列单片机等以及3.3V总线接口的DSP和ARM等接口。本系统所采用的处理器S3c2410与ADS8364接口不需要附加任何的接口电压转换芯片,只需把ADS8364的接口电压设置成3.3V就可以将两者的总线直接连接。S3c2410与ADS8364的接口如图2所示。
图2 S3c2410与ADS8364的接口图
从图2可以看出,S3c2410与ADS8364的接口非常简单,几乎不需要任何附加硬件逻辑电路,用S3c2410的GPF4与ADS8364的EOC信号相连,并将GPF4设置成中断模式,用来接收ADS8364转换结束中断,GPB5、6、7设置成输出模式,与ADS8364的HOLDA、B、C相连,用来选中3组AD(每组2个AD)启动转换,S3C2410的BANK2片选信号nGCS2与ADS8364的/CS相连,将AD作为外部物理地址映射到S3C2410相应的内核空间,位于外部I/O接口BANK2地址空间0x10000000~0x18000000。只要对BANK2进行写操作,并将GPB5、GPB6、GPB7分别设置成000~111中的某个值,就可以产生ADS8364的启动相应通道转换的信号。S3c2410的地址线A2、A3、A4分别连接ADS8364的A0、A1、A2,将ADS8364的6个读数通道映射到Linux操作系统的地址为0x10000000、0x10000004、0x10000008、0x1000000C、0x10000010、0x10000014。
2.2ADS8364的前端调理电路
图3 ADS8364的前端调理电路
ADS8364的模拟输入可以是双极或全差分的,有2种方法可驱动ADS8364 的输入,即单端和差分。单端输入时,-IN端输入的是共模电压(CV),而+IN 的输入则围绕共模电压摆动,输入范围为CV+VREF 和CV-VREF,VREF的大小决定了共模电压的变化。当输入是差分方式时,输入幅值在-IN和+IN之间变化。每个输入端的幅值分别是CV+1/2VREF 和CV-1/2VREF,差分输入电压范围为+VREF和-VREF,所以VREF也决定了输入电压的范围。图3中R1和R2的取值可以用来改变OPA227输入的电压范围。
2.3GPRS模块和采集系统的连接
GPRS模块选用市面上广泛采用的西门子的MC35i。MC35i是Siemens公司推出的新一代无线通信GPRS模块,可以快速安全可靠地实现系统方案中的数据、语音传输、短消息服务(Short Message Service)。该模块采用GPRS分时复用的CLASS 8标准,具有始终在线的功能且理论上传输速率最高可达171.2kb/s,通信传输时延较小。模块还具有RS232串行接口,方便与PC机或者嵌入式系统连接,该采集终端就是通过RS232将嵌入式采集终端和MC35i模块相连。在连接时需要注意的是,由于MC35i采用的是全功能串口,除了TXD、RXD、GND外,还包括CTS、DSR、DTR、RTS等握手信号,而采集终端采用的串口只连接了TXD、RXD、GND信号,因此在二者连接时需要将采集终端串口的DTR和DSR短接,RTS和CTS短接。
图4 中断方式的程序执行的流程图
图5 网络传输流程图
该系统采用S3c2410为控制芯片,采用Linux为嵌入式系统的操作系统,在设计软件时,需要分别设计应用程序和驱动程序[3]。驱动程序主要作用是提供操作硬件设备ADS8364的各种函数;应用程序使用驱动程序提供的函数完成数据采集,并利用Linux的Socket API将得到的数据通过Internet传送给监控中心。下面主要介绍ADS8364驱动程序的设计方法和应用程序的流程。
3.1驱动程设计
Linux设备驱动程序实现的功能包括驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作等。当用户需要通过设备文件同硬件打交道时,必须通过调用open、read、write、close、ioctl等系统函数,这些函数都由file_operations结构体的函数指针成员给出入口地址。设计驱动程序就是对这些函数按照需要进行编程。
该系统在设计驱动程序时采用中断方式读取转换后的数据。在驱动程序中将GPF4设置成中断方式,将中断触发方式设置为下降沿触发,此时ADS8364产生的EOC信号触发Linux系统的外中断EINT4,应用程序只需要打开ADS8364所对应的设备文件,并用write()函数启动相应的通道开始转换,接下来的工作就由驱动程序中的中断服务函数将数据存放到一个全局变量中,然后在应用程序中通过read()函数将数据读出。图4给出了中断方式的程序执行的流程图,图中给出了每个步骤所使用的关键函数。
3.2应用程序设计
应用程序的主要功能是实现数据采集和网络传输,数据采集的过程在前面已有介绍,下面主要介绍网络传输功能的设计。采集终端和监控中心采用C/S模式,监控中心作为服务器端,被动的等待采集终端的连接,并接收数据和发送控制命令,采集终端作为客户端,主动连接服务器,将数据通过UDP协议发送给监控中心,并接受来自中心的控制命令。该系统要求监控中心必须有一个全球IP地址,而采集终端可以利用中国移动CMWAP或者CMNET上网方式提供的私有IP地址。监控中心和采集终端间的网络传输流程图如图5所示。
表1 测试数据
测试采用ARM9板加上GPRS模块作为采集终端,采集中心装有采集控制软件,控制软件发出开始采集命令,采集终端就进行数据采集,并将采集的到得数据通过GPRS拨号上网的方式,通过无线联入Internet,传输到采集中心。表1给出一组采集中心收到的测试数据,从数据可以看出该系统的数据精度较高。
笔者提出的无线数据采集系统,不但能够实现高速、高精度的数据采集,并利用Linux操作系统提供的socket API,实现了基于TCP/IP协议的网络传输功能,利用GPRS拨号方式进行无线数据传输。该系统将GPRS与数据采集系统相结合,可以实现整个系统的无线监控,非常适用于一些特殊的、不能布线的场合,比如森林火灾监控、战场监控、气体泄露监控等等。该监测系统已在测试过程中取得良好效果,随着GPRS网络的不断完善和市场需求的扩大,该系统将有更广阔的前景。
[1]夏振华, 张正炳, 潘涛. 一种改进的嵌入式网络视频监控系[J]. 电视技术, 2007,(6):88~90.
[2]Texas Instruments. 250kSPS, 16-Bit, 6-Channel Simultaneous Sampling ANALOG-TO-DIGITALS CONVERTERS[DB/OL]. http://focus.ti.com/lit/ds/symlink/ads8364.pdf,2007-04.
[3]何永威,路林吉. 基于嵌入式Linux和ARM 9的家用智能监控系统[J]. 微型电脑应用, 2007, (10):16~17.
[4]王卫峰,于海勋. 基于AT91RM9200的嵌入式数据采集系统设计[J]. 微型电脑应用, 2007, (10):13~15,61.
[编辑] 易国华
TP277; TP368
B
1673-1409(2009)03-N077-04
2009-05-27
夏振华(1978-),男,2000年大学毕业,硕士,讲师,现主要从事自动化装置方面的研究工作。