本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 介绍了一种基于GPRS自动抄表系统的解决方案,详细阐述了系统组成的层次结构、模块设计和实现方法,并对系统实现的功能进行了阐述。该方案实现了实时抄表、定时抄表、电费管理和档案管理等功能,与传统的抄表技术相比,极大地提高了效率。
关键词: GPRS;网络;自动抄表;模块设计;电费管理
随着计算机技术、通信技术和网络技术的发展,电力部门的自动抄表技术也经历了从无线传感网、电力载波抄表、基于GSM网络的抄表技术[1],发展到现今的基于GPRS网络的远程抄表技术,使抄表技术越来越趋于智能化和自动化。
1 系统概述
GPRS是在GSM基础上发展起来的一种分组交换的数据承载和传输方式,与GSM自动抄表技术相比,GPRS在数据业务的承载和支持上更具有先进性和实用性[2]。
(1)资源利用率高。GPRS引入了分组交换的传输模式,使得采用电路交换模式的GSM传输数据方式发生了根本性的变化,GPRS可以更有效地利用无线网络信道资源,特别适合突发性、频繁的小流量数据传输。
(2)传输速率高。相对于GSM的9.6 kb/s的访问速度而言,GPRS拥有171.2 kb/s的访问速度,GSM需要10 s~30 s的连接时间,而GPRS只需要3 s~4 s就可以访问到相关请求。
(3)费用低。GSM按连接时间计费,而GPRS按照数据流量计费。
(4)全面支持IP协议和X.25协议。GPRS支持因特网上应用最广泛的IP协议和X.25协议。
1.1 GPRS远程自动抄表系统的组成
GPRS远程自动抄表系统由客服、GPRS模块、抄表终端、EDA9060模块和电表组成。采集终端实时采集用户的用电数据,通过GPRS将数据汇集到服务器[3]。
(1)客服:运行集中抄表系统,由无线Medom通过GPRS网络与抄表终端相连,客服要配置一个固定的IP地址与互联网出口。
(2)抄表终端:收集电表数据并传送到数据中心,连接客服与电表。
(3)电表:计量并显示用户的用电情况,将用电信息传输到GPRS采集器。
(4)EDA9060模块:能通过RS-485接口接收主计算机、主控制器等的数字量输入,转换成继电器触点输出信号,可控制交流接触器、开关等,并将开关状态等开关量输入信号返回到计算机。系统结构图如图1所示。
1.2 系统层次结构设计
系统的层次结构由数据采集控制层、网络传输层、数据处理层和用户数据层四部分组成。
(1)数据采集控制层:位于客户的设备现场,由远程测控模块负责完成对变电所内所有数据采集及各种开关的分、合监测与控制。
(2)网络传输层:负责采集控制层数据,无差错地传输到数据处理层。网络拓扑方式可根据现场选定,包括星型结构、总线型结构和混合型结构。
(3)数据处理层:负责数据的采集、处理、备份操作,同时将客户监控操作转化为设备控制命令。
(4)用户数据层:将数据处理层分析数据以友好的方式呈现给客户,接受客户对系统的控制操作。
2 系统功能模块设计
本系统运用模块化的编程思想,模块化编程易于程序功能的扩展。系统功能分为若干个模块,每个模块完成一个子功能,模块之间尽量做到高内聚、低耦合[4]。
2.1 数据采集流程图
本系统采用结构化程序设计方法,利用VB程序设计语言,提高了代码重复利用率,同时也便于调试排错。结构化程序设计是DIJIKSTRA E W在1965年提出的,它的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构来构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。VB是一种基于对象的程序设计语言,具有结构化程序设计的三种结构,即顺序结构、选择结构和循环结构。无线抄表系统数据采集流程图如图2所示。
2.2 系统主要过程设计
利用函数过程来组织程序实现模块化,函数由函数返回值、函数名或形参表以及函数定义组成[5]。主要函数如下:
Public Function ZhFDataDeal(Longer As Long, ArrZhF()
As Byte, Type_TF As String, CJZDAddr_TF As Integer,
DbAddr_TF As String, Parameter1 As Variant,
Parameter2 As Variant) As Boolean
Public Function ReadDataH(Addr As Integer,
SelectHour As Integer, IDnum As String) As Boolean
Public Sub SaveData(AddrTemp As Integer,
HourSave As Integer)
Public Sub SendDataGPRS(DtuId As String, ByeData()
As Byte, WaitTime As Single, GprsReturn As Integer)
Public Function Authority(QXusercode As String,
QXcode As String) As Boolean
Public Sub SaveDbRunTemp(dbAddrTemp As String,
DBPDName As String, SLName As String)
2.3 系统关键变量设计
VB应用程序由若干函数过程组成,变量在过程中是必不可少的,作为系统的核心组成,本系统在编程中定义了关键变量[6],主要程序代码如下:
"建立GPRS连接
Public ConnectState As Boolean "连接状态
Public Pos As Integer "端口索引个数
Public myLocalIP As String "暂存服务器的IP
Public GPRSLong As Long "GPRS返回的数据长度
Public Arr() As Byte "GPRS返回的数据存放的数组
Public PlngTCPLocalPort As Long "TCPServer监听的端口
Public strDeleTCPClient As String "要删除的客户端,
用myApartClient分隔
"初始化采集信息
Public Type CJZDconfig "采集终端结构
Addr As Integer "采集终端地址
Name As String "采集终端配电名称
Num As Integer "下挂电表个数
IPID As String "通信用IP或ID
CommunicateState As Boolean "通信成功标志
End Type
"进行数据库连接,获取本地或已连接的一个资源的网络名称
Declare Function WNetGetConnection Lib "mpr.dll" Alias "
WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal
lpszRemoteName As String, cbRemoteName As Long) As Long
Public ConWuCheng As Connection "连接数据库
Public UserCode As String "编号
Public PassWord As String "密码
Public DatabaseName As String "数据库名称
"数据处理部分,定义转发命令的返回数据的分配情况
Public Type DataCmdTransfer
Time_Read As String "读电表时间
Date_Read As String "读电表日期
DBState_Read As Byte "读电表运行状态
DWState_Read As Byte "读电网状态字
ZXYG_Read As Double "读正向有功总电能
ZXWG_Read As Double "读正向无功总电能
P_Read As Double "总有功功率
Q_Read As Double "总无功功率
Data9060_Control As Byte "读9060控制回读
Data9060_State As Byte "读9060输入量
Data9060_Write As Boolean "写9060成功
End Type
"操作权限
Public Auth As Boolean "是否有权限
3 系统功能的实现
GPRS自动抄表系统的核心部分是系统软件,它遵循DL/T645部标通信规约,并有扩展性[7]。抄表软件系统数据库为SQL Server2000,运行于Windows2000/XP、2003等操作系统,易于使用。系统能够实现整点数据自动采集(采集电能值)、自动定时数据采集(采集电表运行参数和电网状态)和手动抄表功能(手动采集电表的所有数据项),并能实现数据统计及历史数据查询功能。点击桌面上的“拨号连接”,待任务栏中的通知区域显示“拨号网络现已连接”时,再进入程序,启动程序后显示系统运行主界面如图3所示。
|