基于动态IP的GPRS远程监控系统
2011-08-01聂明新
聂明新,邹 宇,莫 奎
(武汉理工大学信息工程学院,湖北 武汉 430070)
随着基于TCP/IP协议的IP网络技术的迅猛发展,网络已经逐渐走进了人们的生活,利用GPRS网络作为传输媒介的远程监控得到了日益普及。GPRS是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式[1-2]。GPRS网络能够充分利用网络资源,同时具有传输速率快,组网迅速灵活,通信质量高,安全保密性高,永远在线和按流量计费等优点,GPRS数据传输业务的应用范围非常广泛,特别适用于频发小数据量的实时传输,使其在获得实时监控信息方面有着不可比拟的优势[3-4]。
利用GPRS网络作为传输媒介的远程监控系统的发展相当迅速,第二代准数字化监控系统产品正逐步被基于网络服务器的第三代全数字化监控系统所取代,它使得人们的生活方式、工作方式和思维方式都发生了巨大的变化,同时也刺激人们对电脑以外的各种数据源和网络服务的需求日益增长[5-6]。然而任何一种业务的成功与否最终取决于市场,用户关心的并不是运营商会采取哪种技术,而是营运商能为他们提供怎样的服务,他们将为此付出怎样的价格。但是,由于Internet公网上静态IP资源的稀缺性和租用昂贵性,目前的网络用户基本上只能采取动态IP接入方式连接Internet公网,若研究的产品是基于静态的,那么其在现实生活中的应用会耗费大量的财力。
笔者采用AT89S52单片机与华为GTM900C的无线通信模块,设计并实现了基于动态IP的GPRS 远程监控系统[7]。
1 远程监控系统结构设计与分析
整个系统由下位机监测与上位机软件两部分构成[8]。其系统架构如图1所示。
图1 系统架构
下位机监测部分包括传感器、微控制器和GPRS无线通信模块。当系统开机启动后,完成对GPRS模块的正常开机检验和初始化操作,系统进入监控状态。传感器负责获取实时监控信息,监控信息通过串口连接传送给微处理器,微处理器对监控信息进行提取、筛选、编码和加密,并通过微处理机将处理后的监控信息传送给GPRS无线通信模块,利用GPRS模块将数据通过无线数据传输给上位机,并通过监控中心上位机的返回值确认发送的信息成功与否。当TCP连接受到外界因素的干扰意外断开时,GPRS终端会自动地向监控中心发起注册申请重新建立连接。
上位机部分包括数据的接收、数据的处理和控制信息的处理。数据接收部分包括与下位机链路连接和信息接收的差错处理,数据的处理部分可对接收到的信号进行解码并显示,控制信息的处理部分可以通过GPRS网络对下位机软件传送控制信息。下位机监测终端的硬件结构如图2所示。
图2 监测终端的硬件结构图
2 GPRS数据传输终端的分析和实现
2.1 GPRS数据传输协议实现过程
从系统原理可知,利用GPRS网络传输数据之前,要解决GPRS无线模块和上位机软件的网络连接。完成这一步必须首先完成GPRS的附着和分组数据协议(packet data protocol,PDP)上下文的激活过程,激活过程中采用的是IP协议,保证数据以IP报的形式进行传送。GTM900C模块终端具有内置的协议栈,支持TCP/IP方式发送数据,能方便用户进行软件的开发。模块与控制器间的通信协议是AT命令集。具体对模块的设置步骤如下:
(1)确定模块通信波特率,默认的通信速度为9 600 b/s。
(2)检查SIM工作是否正常。AT+CPIN?如果返回+CPIN:READY OK为正常工作。
(3)模块对输入输出数据进行转换。AT%IOMODE=1,1,0,如果返回OK为正常设置。
(4)注册移动CMNET网关。AT+CGDCONT=1,"IP","CMNET"。
(5)查询模块能否使用GPRS。AT+CGREG?当从模块返回+CGREG:1,1 OK就证明注册成功。
(6)模块网络注册提示。AT+CGREG=1当模块从GPRS网络中掉线,会自动上报+CGREG:1,0 OK 。
(7)注册用户名密码,GPRS初始化,并等分配IP。AT%ETCPIP?获得本地IP地址以及DNS服务器的地址。建议将AT命令等待时间设定为10 s,注册过程中做其他AT操作会注册不到IP。
(8)设置接收服务器的协议类型、IP和端口号。如 AT%IPOPEN="TCP","61.144.176.175",10000。
(9)打开GPRS模块与上位机的连接。AT%IPOPEN="TCP","61.144.177.202",10000,返回的结果为CONNECT就实现了模块与上位机的正常连接。
(10)关闭 GPRS模块与上位机的连接。AT%IPCLOSE,模块退出 TCP/IP功能,从 GPRS网络注销。OK的返回最长需要15 s。
在完成以上模块初始化的过程中,相邻AT命令(除特别指出的AT命令以外)间发送需要有一定的间隔时间,3 s是可以满足要求的。然后通过串口中断函数接收AT命令发送后的返回值。需要注意的是AT命令的结束符是回车键,需要以字符串的形式传送。
2.2 GPRS数据传输终端软件结构实现
数据传输终端软件实现的关键是单片机与GPRS模块的通信,两者之间需要有定义的通信协议,规定数据传输的帧格式,通过AT命令来实现GPRS的网络附着、PDP的激活、Internet的接入及数据传输。终端程序流程图如图3所示。
图3 终端程序流程图
2.2.1 AT指令的调试
用单片机向模块发送AT指令时,字符格式的AT命令只有将ASCII编码转化为二进制数,才能通过串口进行收发,AT命令的结束符是回车键,AT命令的返回值都是以不可打印字符“0A0D”开始和结束的。单片机以一定的协议向模块发送AT指令,GPRS模块根据收到的指令会有返回值,单片机通过返回值对模块的状态进行校验。单片机发送指令的实质是以位为单位进行收发的。
2.2.2 波特率的设置
由于GTM900C模块默认出厂的通信速度为9 600 b/s,因此设置单片机与模块进行通信的速率也应该为9 600 b/s。系统中的通信不畅通常是由于波特率配置不当。
2.2.3 驱动函数的结构
驱动函数的结构关键是串行口驱动层,它实现打开串口、关闭串口、读串口数据和写串口数据等操作。然后,在这些串口函数的基础上编写GPRS模块的驱动函数,如GPRS模块初始化函数、拨号连接函数与断开连接函数、数据接收和发送函数,以及重启模块函数等。
(1)GPRS模块初始化函数。模块开机启动之后,需要通过AT命令来设置模块波特率,打开回显,检查SIM工作是否正常,检查GSM网络注册情况等,这些都需要在模块的初始化函数中完成,以保证模块后续工作过程能够正常。
(2)拨号连接函数与断开连接函数。当模块完成初始化后需要与中心服务器终端建立网络连接,这个连接过程需要通过拨号连接函数来完成,模块在关机之前要注销GPRS网络,由断开连接函数来完成。
(3)数据接收和发送函数。单片机通过串口与模块相连,它将GPRS模块中发送或接收的数据以及相应的AT命令编写成相应的数据接收和发送函数,通过无线模块来实现模块与上位机的无线数据传输。
(4)重启模块函数。在模块的一系列设置过程中,可能由于噪声等外界因素的影响使得模块在某种状态下出现故障,不能正常工作,在这种情况下,需要重启模块,从模块的初始化等一系列的设置工作开始。
3 系统结构中的动态IP问题的实现
各监控前端通过监控器获取监控信息,并对监控信息进行提取做出准确的判断,根据具体的监控信息经过特定的数字化压缩编码,通过ADSL上传Internet公网;监控中心主机同样通过ADSL接入Internet公网,访问各监控前端IP地址并读取相关数据,经专用配套上位机软件解码后实时显示监控信息,根据具体监控信息做出相关的人为设置和处理。
从上述软件分析中可以看出,网络连接中关键的一个问题是IP的获取。下面就基于动态IP的GPRS远程监控系统实现相应调整和改进进行说明[9-11]。
上位机软件通过 ADSL拨号接入,其IP由DHCP服务器动态分配,只能通过网卡的MAC地址进行定位,目前通过专业的网站能够直接获取电脑连接服务器的IP。通过人为的输入中心服务器IP地址给上位机,上位机以短信发送的方式将监控中心的IP地址直接发送给GPRS模块,利用GPRS模块中设计的下位机软件IP译码,即可让GPRS模块获得中心服务器的IP,以实现GPRS模块和监控中心的连接并及时获取当前的监控信息。对于这样的方案必须配备专用的上位机软件,支持通过Internet网络直接给SIM卡发送短信,也可通过手机直接给监控终端以短信形式发送IP地址给模块,即可解决IP问题。当成功实现上位机与GPRS模块的连接后,就可以实现两者之间的数据传输,断开连接可以通过上位机给GPRS发送AT命令来解决。建立动态IP连接的流程图如图4所示。
图4 建立动态IP连接的流程图
在实验过程中路由器作为服务器,上位机与GPRS模块建立连接的过程如下:
(1)通过路由器作为服务器,将路由器后面配备的上位机软件打开,侦听端口工作。
(2)将查到的路由IP通过网络以短信形式发送给下位机终端。
(3)将该电脑的IP挂到路由器虚拟服务上,设置端口号。
(4)GPRS模块连接上位机软件设置的IP就是路由的IP和虚拟服务器上开放的端口号。
(5)通过 AT命令 AT%IPOPEN="TCP","61.144.177.202",300,返回的结果为 CONNECT就实现了模块与上位机的正常连接,设置的端口号应该与服务器开放的端口号一致。
4 实验测试结果
为了实现远程监控和无线数据的传输,必须使上位机软件与监控终端连接成功。上位机软件设计采用Visual Basic开发,该软件可提供一个可视化的、方便的、直观的监控界面,能够及时了解监控终端的数据情况,并快捷地处理异常和排除故障,可以实时地与GPRS模块通信,实现远程控制。中心服务器的软件设计本质上也是网络通信编程。
开机启动GTM900-C模块,装入移动的SIM卡后,经过一定的时延(大约3 s),模块开机正常启动,信号指示灯以1 s的间隔闪烁。当下位机终端监测到异常信息就发出报警信息,实现稳定实时的数据传输。
5 结论
基于动态IP的GPRS远程监控系统,继承了固定IP的GPRS远程监控的优点,能够为用户提供实时、高效的网络接入方式,保证监控前端和监控中心能够双向、实时、对等地传输数据,还能减少固定IP租用的昂贵成本,在实际应用中有较大的优势。考虑到移植的需要,在设计过程中应该将模块的驱动程序模块化,只需稍加改动就能使该系统广泛适用于环境监测、交通监控和移动办公等各个行业。
[1] 王磊,冯占军.基于GPRS网络的嵌入式无线数据采集系统设计[J].测控技术,2007,26(9):17-19.
[2] 郭爱煌,李广宇,陈志雄.基于GPRS的无线数据传输嵌入式系统设计[J].计算机工程,2009,35(18):260-262.
[3] 郝记生,张曦煌.基于GPRS的无线数据传输[J].计算机工程与设计,2008,29(20):5224-5226.
[4] 文艺,迟永斌,袁建忠.GPRS无线数据传输的控制器设计[J].煤矿机械,2009,30(11):222-224.
[5] 缪爱国.基于GPRS的无线终端的设计与实现[D].南京:东南大学图书馆,2005.
[6] 付扬,赵丽丽.基于GPRS的嵌入式远程数据采集系统设计[J].计算机技术与应用,2009(1):127-130.
[7] 李群芳,张世军,黄建.单片机微型计算机与接口技术[M].北京:电子工业出版社,2007:104-112.
[8] 王小伟,余先涛,戴延浩.基于CAN总线的接触网隔离开关监控系统设计[J].武汉理工大学学报:信息与管理工程版,2010,32(5):703-706.
[9] 谢希仁.计算机网络[M].北京:电子工业出版社,2008:117-126.
[10] 龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004:1-15.
[11] SHIVENDRA S P,MAO S W,RYOO J D,et al.TCP/IP基础教程:基于实验的方法[M].陈涓,译.北京:人民邮电出版社,2006:12-18.