首页> 中国专利> 一种同时兼容多种电力负控系统通信协议的方法及其系统

一种同时兼容多种电力负控系统通信协议的方法及其系统

摘要

本发明提供一种同时兼容多种电力负控系统通信协议的方法,包括提供一电力系统;电力系统将通信协议进行抽象建模;电力系统启动时数据库初始化;和电力系统读取数据库内容并实例化相关的通信服务程序的Java对象。本发明还提供一种同时兼容多种电力负控系统通信协议的系统。

著录项

  • 公开/公告号CN101777791A

    专利类型发明专利

  • 公开/公告日2010-07-14

    原文格式PDF

  • 申请/专利权人 深圳市科陆电子科技股份有限公司;

    申请/专利号CN200910189090.2

  • 发明设计人 邓志峰;

    申请日2009-12-18

  • 分类号H02J13/00(20060101);

  • 代理机构深圳市科吉华烽知识产权事务所;

  • 代理人胡吉科

  • 地址 518057 广东省深圳市南山区科技园南区T2栋五楼

  • 入库时间 2023-12-18 00:05:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-05-23

    授权

    授权

  • 2010-09-15

    实质审查的生效 IPC(主分类):H02J13/00 申请日:20091218

    实质审查的生效

  • 2010-07-14

    公开

    公开

说明书

技术领域

本发明涉及电力负控系统领域,提供了一种同时兼容多种电力负控系统通信协议的方法及其系统。

背景技术

随着电力企业对负控系统的持续投入,现在的电力负控系统不仅规模越来越庞大,而且接入的终端种类也越来越多,新的、不同于以往通信协议的电力负控终端陆续接入。另一方面,现在的电力负控系统与传统意义的负控系统也有很大区别,其业务功能不断增加,与营销系统的结合也越来越紧密,这导致负控系统抄收数据的种类也频繁变化。

中国电力市场的特点导致电力负控系统需要面对通信协议繁多,抄收数据频繁变化的现状。由于各个网省公司,甚至地市级电业局都有单独招标建设电力负控系统的权利和资源,局方在招标时往往根据本地实际情况对通信协议做出部分修改,因此也导致各地协议总体一致,但细节不尽相同的现象出现。

目前常用负控系统虽然能够保证接入电力负控终端并与其正常通信,完成采集、控制、对时等业务,但无法同时兼容多种负控通信协议,协议内容或者抄收数据种类发生任何变化都要重新编写代码,无法通过配置数据库动态响应协议带来的变化。

发明内容

为了解决现有技术的上述技术问题,有必要提供一种能够同时兼容多种电力负控系统通信协议的方法。

还有必要提供一种能够同时兼容多种电力负控系统通信协议的系统。

一种同时兼容多种电力负控系统通信协议的方法,包括提供一电力系统;电力系统将通信协议进行抽象建模;电力系统启动时数据库初始化;和电力系统读取数据库内容并实例化相关的通信服务程序的Java对象。本发明还提供一种同时兼容多种电力负控系统通信协议的系统。

一种同时兼容多种电力负控系统通信协议的系统,其特征在于:包括通信服务器和与其连接的电力负控终端,所述通信服务器具备公网通信能力,可根据连接上的电力负控终端的通信协议自动建立多协议通道,将不同协议的电力负控终端数据转发至不同的通信通道,供后台其他应用服务程序使用。

相较于现有技术,本发明一种同时兼容多种电力负控系统通信协议的方法及其系统通过数据库、Java对象、初始化语句的方式完整描述电力负控通信协议,达到通信服务程序能够动态相应协议变化、避免硬编码的目的,使电力负控管理系统具有很强的兼容能力,且能够部署方便、移植灵活、开发快速高效、易于现场实施、降低建设和维护成本、提高运行效率。

附图说明

图1是本发明一种同时兼容多种电力负控系统通信协议的方法解析报文的流程示意图。

具体实施方式

下面结合说明书附图对本发明实施方式作进一步说明。

本发明一种同时兼容多种电力负控系统通信协议的方法包括:

通信协议抽象模型建立;

通信协议报文数据动态解析;

其中,本发明在建模过程中会建立一个数据编码,对每个数据单元在全系统建立唯一的数据编码,以及建立不同通信协议的标识编码和数据编码关系对应表,以达到兼容所有通信协议的目的。

所述数据库字典表是指关系数据库中多个Table,这些字典表组合一起完成对电力负控通信协议的完整描述。字典表包括:数据库表编码表(TABLECODE)、数据库列编码表(TABLE_COLUMN_CODE)、数据编码表(DATACODE)、表与数据编码关系表(TABLEDATACODE)、标识编码表(DTICODE)、标识编码解析表(DTIPARSE)、分解组表(DECOMPGROUP)、标识编码组表(DTIGROUP)、标识编码组明细表(DTIGROUPITEM)。

所述Java对象是指通信服务程序内建立的一系列类,这些类组合在一起完成对电力负控通信协议的完整描述,并具备解析各类帧格式、数据单元的能力。这些类包括:Dai、Dti、Dui、DtiGroup。

所述初始化语句是指一系列数据库Insert Into脚本,这些脚本把负控通信协议内规定的所有内容插入数据库相关字典表,供通信服务程序读取。

(一)关于数据库字典表定义

下表列出了数据库编码表(TABLECODE)定义:

  字段名称  字段注释  数据类型关键字可空默认值备注  DATA_CODE  数据编码  varchar2(20)  PK  Not  DATA_NAME  数据名称  varchar2(50)  Not  UNIT  单位  varchar2(20)

数据库编码表定义了数据库中需要存储负控通信协议内规定数据的表的名称,包括瞬时量表、当前电量示度表、日电量示度表、月电量示度表、告警事件表等。

本发明实施例中,下表列出了数据库列编码表定义(TABLE_COLUMN_CODE):

  字段名称字段注释  数据类型关键字 可空默认值备注  TABLE_CODE  表编号  number(4)  PK  Not  COLUMN_CODE  列编号  number(5)  PK  Not  COLUMN_NAME  列名称  varchar2(30)  Not

数据库列编码表定义了数据库中需要存储负控通信协议内规定数据的表中每列的名称。

本发明实施例中,下表列出了数据编码表(DATACODE)定义:

  字段名称  字段注释  数据类型关键字可空默认值备注  DATA_CODE  数据编码  varchar2(20)  PK  Not  DATA_NAME  数据名称  varchar2(50)  Not  UNIT  单位  varchar2(20)

数据编码表在数据库层面定义了所有数据单元的编码,是全系统最终唯一使用的数据单元定义。

本发明实施例中,下表列出了表与数据编码关系表(TABLEDATACODE)定义:

  字段名称  字段注释  数据类型关键字 可空 默认值  备注  TABLE_CODE  表编号  number(4)  PK  Not  ASSEMBLE_NUM  组合方案编号  number(4)  PK  Not  ORIG_DATA_CODE  原始数据编码  varchar2(20)  PK  Not  DEST_DATA_CODE  目标数据编码  varchar2(20)  Not  保留  COLUMN_CODE  列编号  number(5)  Not

表与数据编码关系表定义了数据库中Table和数据编码的对应关系,在通信协议内对一个数据单元的定义可能有多种,比如电量示度可以是当前电量示度、日电量示度、月电量示度,通过此表可以把不同协议对同一数据单元的定义统一到数据库中具体某一个Table的字段。

本发明实施例中,下表列出了标识编码表(DTICODE)定义:

标识编码表定义了负控通信协议中对数据单元的规定,通信协议中不同类型、不同冻结种类、不同对象的数据单元全部输入这个表中进行定义。

本发明实施例中,下表列出了标识编码解析表(DTIPARSE)定义:

  字段名称  字段注释  数据类型关键字  可空默认值 备注  DTI_CODE  标识编码  varchar2(20)  PK  Not  PRTL_TYPE  协议类型  number(2)  PK  Not  CNT_TYPE  内容类型  number(3)  PK  Not  PARSE_ORDER  解析次序  number(3)  PK  Not  DATA_CODE  数据编码  varchar2(20)  Not  PARSE_TYPE  解析类型  number(3)  Not  字电  表:70  DATA_LENGTH  数据长度  number(3)  Not  ADD_LENGTH  增加长度  number(3)  Not  DEC_DIGIT  小数点位数  number(3)  Not  BIT_EXTR_FLAG  位抽取标志  number(1)  Not  字电  表:71  BEGIN_BIT  起始BIT位  number(2)  Not  END_BIT  结束BIT位  number(2)  Not  INDI_REPLAY_FLAG  标识循环层标志  number(1)  Not  字电  表:72  REPLAY_TYPE  循环层类型  number(2)  Not  字电  表:73  BLG_REPLAY_FLAG  所属循环层标志  number(1)  Not  BLG_REPLAY_POS_FLAG  所属循环层内位置  标志  number(1)  Not  字电  表:74  DECOMP_FLAG  分解标志  number(1)  Not  字电  表:75  OFFSET_VALUE  偏移量  number(10)  Not  EXT_DISP_FLAG  FF数据是否有效位  number(2)  Not  0--无  效,1--  有效

标识编码解析表是实现动态协议解析的关键,定义了完整解析负控通信协议报文的所有行为。标识编码表建立了光标的概念,把接收到的报文看作一个整体,光标根据标识编码表中的定义往前移动,抽取规定的长度进行解析,然后判断循环、分解、抽取、偏移标志,对数据做进一步处理。当光标遇到结束标志后则完成解析过程,程序返回等待下一报文。通信服务程序通过读取此表,达到具备兼容多种负控通信协议的目的。

本发明实施例中,下表列出了分解组表(DECOMPGROUP)定义:

字段名称  字段注释  数据类型关键字可空默认值备注  DTI_CODE  标识编码  varchar2(20)  PK  Not  DATA_CODE  数据编码  varchar2(20)  PK  Not  DECOMP_ORDER  分解次序  number(3)  PK  Not  ITEM_NAME  分解项名称  varchar2(30)  Not  BEGIN_BIT  起始BIT位  number(3)  Not  END_BIT  结束BIT位  number(3)  Not

分解组表定义了比特位的分解行为,通信服务程序接收的报文最小存储单位是字节,但很多时候一个字节里面存储了多个信息,比如每个比特位表示一个开关的分合状态。解析报文时通过读取分解组表的内容,把比特位的信息读取出来,供程序使用。

本发明实施例中,下表列出了标识编码组表(DTIGROUP)定义:

  字段名称  字段注释  数据类型  关键  字  可  空  默认值  备注  DTI_GRPID  标识编码组编号  varchar2(20)  PK  Not  DT1_GRP_NAME  标识编码组名称  varchar2(50)  Not  PRTL_TYPE  协议类型  number(2)  Not  字典表类  别:23  CNT_TYPE  内容类型  number(3)  Not  字典表类  别:68  OWNER_TYPE  对象类型  number(2)  Not  字典表类  别:1  FRZ_TYPE  数据冻结类型  number(2)  Not  字典表类  别:49  TABLE_CODE  表编号  number(4)  Not  ASSEMBLE_NUM  组合方案编号  number(4)  Not

  字段名称  字段注释  数据类型  关键  字  可  空  默认值  备注  INTEGRITY_DAIA_NUM  数据完整点数  number(3)  Not

标识编码组表把多个数据单元组合在一起,为通信服务程序采集电力负控终端内的数据时使用。通过此表,系统可以动态组合抄收数据种类,而不需重新编写代码。

本发明实施例中,下表列出了标识编码组明细表(DTIGROUPITEM)定义:

  字段名称  字段注释  数据类型关键字可空默认值 备注  DTI_GRP_ID  标识编码组编号  varchar2(20)  PK  Not  DTI_CODE  标识编码  varchar2(20)  PK  Not  ORDERS  所属次序  number(3)  Not

标识编码组明细表规定了组内各个数据单元的解析次序。

(二)关于JAVA对象的定义

DAI类,完成数据单元标识点定义:

public class Dai{

  public int daiCode=-1;//0--64

  public byte[]daiFrm=new byte[]{0,0};

  private Protocol m_prtlService=Protocol.getInstance();

   public Dai(){

   }

   /**

    *构造函数,根据Pn和终端协议类型来构造DA

    */

   public Dai(int daiCode,int prtl){

   }

   public Dai(int daiCode){

   }

   /**

    *用Da0和Da1构造DA(包含了698协议)

    */

   public Dai(byte da0,byte da 1,int prtl){

   }

  }

  DTI类,完成信息点定义:

  public class Dti{

    public static finalint DTICODE_IMPEVENT=1;//请求重要事

    public static final int DTICODE_CMMEVENT=2;//请求一般

事件

    public static final int FRZTYPE_NONE=-1;//不冻结

    public static final int FRZTYPE_HOUR=1;//小时冻结

    public static final int FRZTYPE_DAY=2;//日冻结

    public static final int FRZTYPE_CBDAY=3;//抄表日冻结

    public static final int FRZTYPE_MONTH=4;//月冻结

    public static final int FRZTYPE_CURRVE=5;//曲线

    public String dtiCode=″″;

    public byte[]dtiFrm=new byte[]{0,0};

    public Vector<DtiDesc>dtiDescs=new Vector<DtiDesc>();

    public DtiDataNe dtiData=null;

    public byte[]m_td=null;

    public boolean integrity=false;//数据完整性标识

    private Vector<byte[]>setParas=new Vector<byte[]>();

    public int setSign=-1;

    private Protocol protocol=Protocol.getInstance();

     public Dti(){

     }

    }

    DUI类,完成数据单元完整定义:

    public class Dui{

      public Dai dai;

      public DtiNe dti;

      public byte[]duiFrm=new byte[]{0,0,0,0};

      private Protocol m_prtlService=Protocol.getInstance();

      public Dui(){

      }

      public Dui(Dai dai,DtiNe dti){

      }

    }

    DTIGROUP类,完成对数据单元的组合,定义:

      public class DtiGroup{

      public String dtigrpId=″″;

      public int tableNum=-1;//所属Table序号

      public int integrityDataNum=-1;//判断数据完整点数

      public int contentType=-1;//标识编码内容的类型

      public int objType=-1,frzType=-1;

      public int frzDensity=-1;//冻结密度

      private LinkedHashMap dtiMap=new LinkedHashMap();

      private    LinkedHashMap    origDestCodeMap    =  new

LinkedHashMap();

      private    LinkedHashMap    destOrigCodeMap    =  new

LinkedHashMap();

      public DtiGroup(){

      }

    }

(三)关于初始化定义

本发明实施例中,初始化语句负责完成对负控通信协议内所有数据单元的定义,并完成标识编码和数据编码的转换,下面是初始化语句的一个实例:

INSERT                                      INTO                             DTIPARSE

VALUES(′1′,4,1,0,′3000′,6,4,4,0,0,0,0,0,0,0,3,0,0,0);

INSERT                                      INTO                             DTIPARSE

VALUES(′1′,4,1,1,′3001′,6,8,8,0,0,0,0,0,0,0,3,0,0,0);

INSERT                                      INTO                             DTIPARSE

VALUES(′1′,4,1,2,′3002′,6,4,4,0,0,0,0,0,0,0,3,0,0,0);

INSERT                                      INTO                             DTIPARSE

VALUES(′1′,4,1,3,′3003′,70,3,3,0,0,0,0,0,0,0,3,0,0,0);

INSERT                                      INTO                             DTIPARSE

VALUES(′1′,4,1,4,′3004′,6,11,11,0,0,0,0,0,0,0,3,0,0,0);

请参阅图1,是本发明一种同时兼容多种电力负控系统通信协议的方法解析报文的流程示意图。开始,读取数据库字典表,建立JAVA对象;然后接收通信报文;建立光标,进入解析循环;分析报文数据区;进行循环、抽取、分解判断;解析报文;遇到结束标志,关闭光标,结束。

本发明一种同时兼容多种电力负控系统通信协议的系统包括通信服务器和与其连接的电力负控终端,所述通信服务器具备公网通信能力,可根据连接上的电力负控终端的通信协议自动建立多协议通道,将不同协议的电力负控终端数据转发至不同的通信通道,供后台其他应用服务程序使用。其中,多协议通道包括对目前主流通信协议的抽象建模。当电力系统需要新接入终端或者需要抄收的数据种类发生变化时,通过更改初始化语句,重新执行初始化程序,整个数据库和服务器就具备了对新协议或者新数据种类的支持,不需要更改代码。

本发明一种同时兼容多种电力负控系统通信协议的方法及其系统通过数据库、Java对象、初始化语句的方式完整描述电力负控通信协议,达到通信服务程序能够动态相应协议变化、避免硬编码的目的。使电力负控管理系统具有很强的兼容能力,且能够部署方便、移植灵活、开发快速高效、易于现场实施、降低建设和维护成本、提高运行效率。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号