基于虚拟IP 的GPRS远程抄表系统的应用
2011-08-04张长志夏晶晶
张长志,赵 飞,夏晶晶
(南京理工大学 机械工程学院,江苏 南京 210094)
0 引言
目前针对远程抄表系统的通信方式一般有公网通信和专网通信两种[1]。公网通信一般是通过现有的网络(如电话线、电缆、光纤、无线网络等)进行数据远传,专网通信一般是通过建立专有网络(如建立无线电台、铺设 DDN专线等)传送数据信息。专网通信投资大,通信质量不高,应用局限性大,需要供能企业自主维护其通信网络,后期需要投资用于系统升级,而且需要人员来维护通信网络,增加了企业负担。而公网通信就不存在上述问题。这里提出了基于虚拟IP的GPRS无线网络通信,主站不受固定IP限制,投资少,只需在抄表终端上配置无线通信模块就可以构建覆盖全球的无线网络,系统成本低,没有维护费用,工作可靠性高。
1 GPRS远程抄表系统的构成
GPRS远程抄表系统由抄表终端、M-Bus通信总线、集中器、GPRS网络、网络服务器、主站管理系统组成。系统终端采用智能仪表,仪表存储的能耗数据经过M-Bus总线传递给集中器,集中器中包含了单片机和GPRS无线模块,单片机接收并存储数据,GPRS无线模块用于发送数据和接受上位机指令。网络服务器是一台具有固定IP的服务器,这里可以从电信公司托管一台服务器或者租赁一台服务器,服务器上开发了虚拟IP软件。服务器主要实现数据传输在GPRS网络和互联网之间的转换。主站计算机管理软件通过互联网接收数据,生成各种数据报表,管理和监控整个抄表系统等。基于篇幅所限,这里只对抄表终端、主站管理系统进行介绍。系统结构如图1所示。
(1)抄表终端。对于传统机械型的机械式仪表,需要进行改装,使其输出成为符合标准的电子信号,若采用智能仪表,其输出就是数字量,大大简化了系统的构成[2]。抄表终端主要完成数据的采集、显示、数据存储及用户断电处理等。抄表终端首先对各仪表产生的数字脉冲进行滤波、光电隔离,然后通过单片机进行数据采集,当计时到达设定的数据存储时间时将数据信息存储到外部存储器中。集中器通过M-Bus总线发送抄表指令读取该终端上的数据,抄表终端单片机接收指令,并执行指定的通讯程序将存储器中的数据通过M-Bus总线上传到集中器。以此循环往复。抄表终端由时钟电路、看门狗电路、M-Bus总线接口模块、单片机等部分组成,其电路组成如图2所示。
图1 远程抄表系统结构
图2 抄表终端电路结构
(2)主站管理系统。包含系统数据库和系统管理软件。系统数据库采用的是关系型数据库SQL SERVER,它支持C/S体系结构,图形化用户界面,使系统管理和数据库管理更加直观、简单。其可信任性使得人们可以以很高的安全性、可靠性和可扩展性来运行应用程序,高效性使得人们可以降低开发和管理的时间和成本。前台系统管理软件的开发工具选用VC++,开发的应用程序在Windows环境下运行。
系统管理软件采用模块化设计,由系统管理模块、远程抄表模块、数据管理模块、费用管理模块、报表管理模块和数据库管理模块组成。
①系统管理模块主要管理系统的操作人员及管理系统的设备。添加和删除用户、口令维护、权限设置,设置系统参数、配置主站虚拟IP、添加和删除从站虚拟IP、自检整个通信线路,对仪表进行统一编号、添加和删除仪表信息、对仪表类型定义[3]。
②远程抄表模块主要抄收仪表上的数据。设定时间系统自动向终端仪表抄收数据,并将数据保存在数据库中,还可以有针对性的抄收某些仪表。
③数据管理模块对用户信息和抄表数据管理。用户信息包括用户编号、姓名、集中器编号,仪表编号、仪表类型、用户联系方式、住址等。对以上信息进行添加、修改、查询和删除等。抄表数据管理是对抄表数据保存、管理,以及按用户、集中器、年月等检索、查询数据。
④费用管理模块主要是设置费率和费用生成。设置不同仪表类型的用能费率,根据耗能数据和费率生成费用报表。
⑤报表管理模块用于管理各种报表。可以查询某个用户、某月的耗能数据报表或费用报表,并打印各种报表。
⑥数据库管理模块负责数据库的维护、数据报表的恢复和备份。
2 虚拟IP传输协议在系统中的运用
2.1 虚拟IP传输协议
虚拟 IP协议是以 TCP/IP协议为基础,它具有 TCP/IP协议的一切特性。TCP/IP协议由4个层次组成:网络接口层、网络层、传输层、应用层。其中每一层都有相应的协议集合来实现不同的功能[4]。下面根据整个抄表系统的要求对每一层协议进行分析。
(1)网络接口层。网络接口层包含物理层和链路层,物理层是定义物理介质的各种特性,链路层为其上层协议发送和接收数据包。文中的宽带是以以太网的形式接入,所以必须采用Ethernet 802.3协议。
(2)网络层。网络层主要负责相邻计算机之间的通信、处理数据包在网络中的协议封装,这一层协议包括 IP协议、ICMPP协议、ARP地址转换协议、RARP反向地址转换协议以及IGMP协议等。由于抄表系统要求能够在Internet进行通信,因此系统要实现IP协议。
(3)传输层。提供应用程序间的通信,其通信协议有TCP协议和UDP,由于UDP协议不属于连接型协议,具有资源消耗小,处理速度快的特点,同时还可以保证数据传输的准确性,这里选用UDP协议。
(4)应用层。是面向用户的服务,向用户提供一组常用的应用程序,如电子邮件、文件传输访问、浏览网页、远程登录等,为了以后实现网上银行自动缴费功能,所以系统应该支持HTTP协议。
虚拟IP协议数据报由报头和数据两部组成,报头为16字节固定长度。数据报结构:目标地址、源地址、服务器密码、数据长度、数据。数据报结构详细说明如表1所示。
表1 虚拟IP数据报结构
虚拟IP数据报示例分析:
0A 01 47 01 0A 01 47 00 37 31 30 37 31 30 00 03 41 42 43 0A 01 47 01是目标地址,虚拟IP 10.1.71.1
0A 01 47 00 源地址,虚拟IP 10.1.71.0
37 31 30 37 31 30服务器密码 710710 00 03 数据长度为3个字符
41 42 43数据为ABC
以网络通信协议TCP/IP协议为基础,采用UDP数据报传输协议方式,制定的虚拟IP协议,在满足远程抄表系统通信的可靠性和准确性的要求上,大大简化了网络通信协议,只保留了 HTTP协议、TCP协议、IP协议、Ping协议、CSMA/CD协议、ARP协议等几个主要的子协议[5]。这样对实时性要求不太高、数据量比较小、没有特殊需求的远程抄表系统已经足够了。
2.2 VC++编写虚拟IP软件
现采用VC++语言编写ActiveX控件来实现虚拟IP协议的通信。
(1)创建一个Vip控件。
(2)利用GetProperty函数返回控件属性,利用SetProperty函数设置控件属性,主要程序如下:
还要获得和设置目标计算机虚拟IP、本地计算机虚拟IP、服务器端口和密码等属性值。其中,SetProperty和GetProperty的第一个参数是控件的属性序号,第二个参数是控件属性的数据类型,第三个变量是与控件相关联的数据变量[6-7]。
2.3 通信终端EM310模块软件设置与通信的实现
首先要正确设置Vip控件和终端EM310模块参数,有服务器IP、服务器端口号、目标虚拟IP、源虚拟IP和服务器密码等。集中器向主站通信:集中器中单片机通过串口向EM310模块写AT指令,模块通过AT指令连接GPRS网络,向服务器发送数据和目标虚拟 IP,服务器根据目标虚拟 IP连接到主站计算机,主站计算机接收数据,完成通信终端到主站的通信。主站向集中器通信:主站通过网络将目标虚拟IP和指令发送到服务器,服务器根据目标虚拟IP通过GPRS网络将指令发送给指定的通信终端,终端通过串口将指令发送给单片机,单片机识别指令,执行指令,依此循环完成抄表工作。例如将ABC三个字符从源虚拟IP为10.1.71.0,服务器IP为221.231.140.197,发送到目标虚拟IP为10.1.71.1的AT指令为:
初始化连接 GPRS 网络:AT+CGDCONT=1,"IP","CMNET";
激活IP地址:AT%ETCPIP;
服务器的协议类型、IP和端口号:AT%IPOPEN="UDP","221.231.140.197",7002;
发送数据:AT%IPSEND="0A0147010A01470037313037313000034 14243";
关闭链接:AT%IPCLOSE。
以上是用AT指令通过GPRS模块发送数据的操作,当然还有数据读取、删除数据缓冲区数据、设置延迟发送时间等AT指令,具体要参考模块用户手册,这里就不再赘述了。
3 结语
将GPRS网络和IP技术运用于远程抄表系统,形成了基于虚拟IP的GPRS远程抄表系统,该系统不受地域限制、成本低、主站不受固定IP地址制约,充分体现了远程无线抄表的优势。经实验验证,系统可行性强、可靠性高,不仅可以推进抄表工作的全自动化进程而且还能够为监管部门实现对客户端耗能量的实时动态管理、分析和控制,提高能量计量管理水平。随着智能控制家用四表的发展,该远程抄表系统将有更广阔的应用前景。
[1] 唐伟,张建波,范文宾.基于GPRS技术的远程抄表系统设计[J].电力系统通信,2004(11):37-40.
[2] 郑全礼.自动抄表系统的研究与开发[D].合肥:合肥工业大学,2003.
[3] 张红霞,王亚微,郭佳,等.基于 GPRS通信技术的远程抄表系统设计[J].通信技术,2008,41(08):207-209.
[4] 常琨,马天光,史琳.TCP/IP在GPRS/EGPRS网络中的应用及影响[J].通信技术, 2010,43(12):112-114.
[5] 陈治国,黎文安,牛玉新.基于 TCP/IP协议的远程抄表系统的研究[J].继电器,2004,32(22):62-65.
[6] 乐仁昌. ActiveX控件实现串行通信编程[J].华东地质学院学报,1999,22(04):370-373.
[7] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.