一种铁路信号数据流存储管理系统的制作方法

文档序号:14267854阅读:257来源:国知局

本发明涉及轨道交通技术领域,尤其涉及一种铁路信号数据流存储管理系统。



背景技术:

目前软件系统中,一般均使用日志功能(log)来记录软件运行内部状态、软件记录日志等,主要包括:软件的运行调试信息debug、软件的数据处理日志info、软件的告警信息warn、软件的错误信息error等日志。在普通的软件工程中,日志存储功能大多以unix/linux下的syslog标准日志接口进行封装,实现上述信息的日志记录及日志分类。在铁路信号系统尤其tdcs/ctc系统使用中发现既有的日志存储管理功能不满足实际现场需求,主要包括:

1)在铁路信号系统中尤其tdcs/ctc系统,操作平台越来越多的使用了windows操作系统,而windows平台缺少类似的syslog接口,目前windows下一般以代码编程时记录普通log文本为主要日志方式。

2)日志在存储时,若硬盘等出现坏道写入磁盘失败,后续故障分析查询日志时,无法获知是否存在日志丢失现象,更不知道丢失了多少条日志。

3)铁路信号系统的各个终端可能采用了低功耗版本的工控机,基于现场的硬件限制,无法记录太多的日志;windows系统不支持日志服务器模式,unix/linux的syslog方式虽然支持本地存储和日志服务器方式,但不能动态的切换。铁路tdcs/ctc系统部署时,日志服务器一般放置在中心。当车站与中心网络通信出现故障时,期望能够将一部分信息记录在车站的本地终端,不丢失故障时的日志数据,以备故障原因分析;当网络通信恢复时,系统能够重新将日志存储的目的地定向到中心日志服务器,即实现日志数据存储的动态切换;但是,目前无法实现。

4)目前既有的日志存储过于简单,只能是软件编码时人工输出文本格式的日志记录。



技术实现要素:

本发明的目的是提供一种铁路信号数据流存储管理系统,能够记录协议底层的原始数据,即raw数据,从而在信号事故分析时,能够对故障发生前后时刻信息数据流的完全镜像复现,实现整个数据流的正反向存储管理。

本发明的目的是通过以下技术方案实现的:

一种铁路信号数据流存储管理系统,包括:

正向数据流处理引擎模块,用于将接收到的底层协议数据包进行逐级分层封装:先按照封装格式将底层协议数据包封装成应用层协议数据,再按照封装格式封装成已鉴定协议数据包;

数据流存储管理引擎模块,用于缓存新接收到的已鉴定协议数据包,按照预设方式将若干已鉴定协议数据包封装成铁路信号通用数据包,并分配唯一的序号,再按照特定方式进行压缩;

数据流存储动态选择模块,用于按照设定,将压缩后的铁路信号通用数据包静态的向本地硬盘存储,或者存储至远程日志服务器,存储设置支持动态切换;

反向数据流处理引擎模块,用于从本地硬盘中反向读取压缩后的铁路信号通用数据包,并进行解压缩处理,然后对解压缩后的铁路信号通用数据包进行逐级分层拆分,获得的底层协议数据包发送给正向数据流处理引擎模块。

由上述本发明提供的技术方案主要具有如下有益效果:

1)不但能保持原有的文本log功能,更能够全面的记录铁路信号系统尤其tdcs/ctc系统的数据流。

2)在记录数据时,能够利用缓存存储、压缩存储方式,大幅的减少数据量,进而大幅减少系统硬盘资源及网络资源的使用。

3)在记录时,能够自动动态切换,实现本地存储、远程存储两种方式下的数据存储。

4)在记录时,对每一包数据设置递增的序号,实现数据存储唯一序号管理,防止记录数据时异常丢失。

5)在分析现场故障时能够快速定位,并根据生产环境的历史数据,为自动化测试提供基础。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的一种铁路信号数据流存储管理系统的示意图;

图2为本发明实施例提供的数据封装格式示意图;

图3为本发明实施例提供的逐级分层封装过程图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

铁路tdcs/ctc等信号系统等在现场应用中,基于安全性、可维护性的考虑,运营者和维护者期望软件能够记录除上述运行日志信息外,对完整的底层信息数据流也进行存储,即现场需要一个基于信息数据流、软件运行日志、调试日志、告警错误等由底层至上层的统一存储管理。为此系统能够记录协议底层的原始数据,即raw数据,从而在信号事故分析时,能够对故障发生前后时刻信息数据流的完全镜像复现,实现整个数据流的正反向存储管理;为此本发明实施例提供一种铁路信号数据流存储管理系统,该系统可以解决如下技术问题:

1)对铁路信号系统尤其是tdcs/ctc系统,系统具有多平台下(windows/linux平台)、多种数据通信协议的数据流统一存储管理功能,不但包括软件的调试日志、运行记录、错误日志、报警日志等日志记录功能,更能实现对原始协议数据流的存储管理功能;

2)系统支持文本日志及信息数据流的本地存储、远程数据流管理服务器存储两种方式,并支持动态切换,当本地与远程服务器中断时可自动切换至本地存储记录;

3)系统提供多种铁路信号系统数据协议的正向管理引擎,能够识别各协议的原始信息数据流并以raw格式存储,并做到缓式存储,超过设定的缓存阈值后,才进行存储管理,在存储时基于deflate压缩算法进行压缩,压缩之后才存入硬盘或发往远程服务器,尽可能以大颗粒度、少频次的存储数据;

4)系统提供多种铁路信号系统数据协议的反向管理引擎,针对raw数据流,进行反向解析,解压缩、按对应协议格式处理数据流,提供回测接口,以供测试系统或故障分析系统进行回测,形成一个开发、测试、故障还原的闭环结构。

5)为了防止日志记录过程中异常丢失,系统在数据流存储时增加序号id管理检验功能,id递增,以此检测是否存在存储失败情况。

如图1所示,为本发明实施例提供的一种铁路信号数据流存储管理系统的示意图,其主要包括:

1、正向数据流处理引擎模块。

其主要将接收到的底层协议数据包进行逐级分层封装:先按照封装格式将底层协议数据包封装成应用层协议数据,再按照封装格式封装成已鉴定协议数据包。

底层协议数据包来自系统外部、应用软件数据处理层或者系统内反向数据流处理引擎模块。

1)如果底层协议数据包来自系统外部或者系统内反向数据流处理引擎模块(即下层数据流),则按照协议规定格式进行适配检查,只有满足协议规定格式的底层协议数据包才视作合法数据包;对于合法数据包,将输入至应用软件数据处理层按程序逻辑处理,同时,进行逐级分层封装;

2)如果来自应用软件数据处理层(即上层数据流),则直接进行逐级分层封装。

此处简单介绍一下逐级分层封装过程:

先将底层协议数据包封装成应用层协议数据包:对底层协议数据包内容不做改变,在在底层协议数据包之前增加发送方时间戳、接收方时间戳、发送实体与接收实体字段;

再将应用层协议数据包封装已鉴定协议数据包:在应用层协议数据之前增加版本、数据流协议类型、收发标志与校验和字段;

如果接收到的是文本记录,则先进行抽象,增加内部自定义的帧头帧尾,封装为一个底层协议数据包,再进行上述逐级分层封装过程。

2、数据流存储管理引擎模块。

其主要用于缓存新接收到的已鉴定协议数据包,按照预设方式将若干已鉴定协议数据包封装成铁路信号通用数据包,并分配唯一的序号,再按照特定方式进行压缩。

该模块为核心的数据流处理模块,依靠缓存存储、压缩存储两种技术手段,减少对硬盘i/o、网络i/o的吞吐,实现数据流的粗颗粒存储。

所述数据流存储管理引擎模块压缩存储数据时以铁路信号通用数据包作为基本单位,若干个已鉴定协议数据包将封装为一个铁路信号通用数据包;

1)当新接收到的已鉴定协议数据包时,进行如下判断处理:

若tcur–tcache_t>=tse_waitmax,则缓存数据不再续装新接收到的已鉴定协议数据包,而将之前缓存的已鉴定协议数据包封装成铁路信号通用数据包;其中tcur为系统当前时间,tcache_t为缓存中的铁路信号通用数据包最后更新时间,tsec_waitmax为最大等待时间阈值;

若l_cache+l_aupdulen>rsgdu_maxlen,则缓存数据不再续装新接收到的已鉴定协议数据包,将之前缓存的已鉴定协议数据包封装成铁路信号通用数据包;清空缓存后,将新接收到的已鉴定协议数据包存储至缓存中,形成一个铁路信号通用数据包延时等待,并更新时间;其中l_cache是已缓存的数据长度,l_aupdulen为新接收到的已鉴定协议数据包的数据长度,rsgdu_maxlen为最大铁路信号通用数据包的长度阈值;

若l_cache+l_aupdulen<=rsgdu_maxlen,则将新接收到的已鉴定协议数据包与缓存数据进行接续封装,形成新的铁路信号通用数据包,并更新时间;

封装后的铁路信号通用数据包在已鉴定协议数据包的基础上增加帧头、版本号、压缩标志、存储标志、数据包序号、包含的已鉴定协议数据包包数、校验和与帧尾字段。

2)当数据流存储管理引擎模块需要对铁路信号通用数据包实时存储管理时,调用数据流序号管理模块,确定铁路信号通用数据包的序号唯一化,序号管理为了提高效率采用预分配与动态扩增的分配方式:

对每一条底层通道,预先分配一个序号范围[id_left,id_right],所有的铁路信号通用数据包选择序号时由数据流序号管理模块统一分配,确保序号唯一且递增;

对每一条底层通道,数据流序号管理模块根据其使用量周期性检查,当发现已使用的序号范围到达规定界限(例如,超过序号范围的70%),则实施动态扩增,新增序号范围,使用序号时先依据之前分配的序号范围使用,耗尽后则使用新增序号范围,如此循环。

3)所述数据流存储管理引擎模块对分配序号的铁路信号通用数据包采用数据流压缩算法,来实现数据无损压缩。

本发明实施例中,为了减少存储量,引入压缩策略,基于deflate压缩算法对数据进行压缩,将压缩后的数据存储至数据体内,同时更新该pdu的压缩标志及数据长度。通过deflate算法,可以实现无损数据压缩,大幅度的降低rsgdu的大小,从而在记录该数据单元时,以粗颗粒的数据流存储,减少数据存储时系统开销。

当然,也可以采用诸如gzip之类的数据流压缩算法。

3、数据流存储动态选择模块。

其主要用于按照设定,将压缩后的铁路信号通用数据包静态的向本地硬盘存储,或者存储至远程日志服务器,存储设置支持动态切换。

如果设置为本地存储,则直接存储在系统的本地硬盘中,成功存储后删除本地数据;

如果设置为远程存储,则调用远程数据存储管理模块,尝试将相关数据包发至远程日志服务器进行存储,本地暂时不删除数据,当远程日志服务器确认存储成功后删除本地数据;如果远程存储时失败或超时,本地自动更新相关数据的存储标记,并存入系统的本地硬盘中,最大限度的避免丢失数据。

同时,能够根据设定进行本地存储与远程存储的动态切换。

4、远程数据存储管理模块。

其主要负责维护系统与远程日志服务器之间的网络数据通信,将要存储的数据包发往远程日志服务器中,并将存储结果反馈至数据流存储动态选择模块,实现类似unix/linux下的syslog功能,并能够跨平台windows/linux使用。

5、反向数据流处理引擎模块。

其主要用于从本地硬盘中反向读取压缩后的铁路信号通用数据包,并进行解压缩处理,然后对解压缩后的铁路信号通用数据包进行逐级分层拆分,获得的底层协议数据包发送给正向数据流处理引擎模块;具体的:

所述反向数据流处理引擎模块采用相应的解压缩算法对压缩后的铁路信号通用数据进行解压缩,获得相应的铁路信号通用数据包,之后,将铁路信号通用数据包拆分为一个或多个已鉴定协议数据包;然后,对每一已鉴定协议数据包进行协议鉴定及适配,确认是否合法;对合法的已鉴定协议数据包继续拆封为应用层协议数据,进而拆封为底层协议数据包。

现场发生故障时,通过该模块系统能够准确无误的复现故障时的数据流,最大程度的还原现场数据,从而实现问题的快速定位及解决。

同时利用该模块技术,生产环境能够记录铁路信号系统的各种场景数据流,为软件自动化测试提供了基础。通过反向注入,将生产环境中的历史数据,注入到测试系统进行回测,对比测试结果与原生产环境的结果,即可便捷的实现无人化测试。

另一方面,反向数据流处理引擎模块从数据流存储管理引擎模块读取铁路信号通用数据包时,还能实现数据流的多维转换功能,包括二进制、文本、协议解析等多形态多维度的数据展示接口,以便研发、测试、维护人员直观的分析底层数据。

6、文本日志管理引擎。

该模块主要负责兼容既有的文本记录与程序运行日志方式;对既有文本记录软件运行调试信息debug、软件的数据处理日志info、软件的告警信息warn以及软件的错误信息error信息,进行封装以适应数据流存储管理引擎模块的统一无差异化处理。

以上为组成本系统的主要模块的主要功能,下面将其中的数据包封装过程做进一步的介绍。

在铁路信号系统尤其tdcs/ctc系统中,系统内部、与外部系统(联锁、列控、监测等)的通信规程各不相同,但都是以一种协议规定的数据帧进行传输。数据帧的结构一般为帧头、信息体、帧尾等,不同协议的数据帧定义各不相同,在相应的数据通信规程中均有明确的规定。为了能统一管理各种协议的数据流,需要对数据流进行封装。如图2所示,封装时采用自上而下的方式进行分层,不同协议、不同格式的数据,逐级分层封装,添加新的帧头等信息,最终封装成一个标准的铁路信号通用数据包,主要如下:

1、底层协议数据包(protocoldataunit,简称pdu):信号系统应用层要处理的数据包,此数据包为符合通信协议标准的一包数据,比如符合规范的一包ctc协议数据或一包ctc与联锁接口协议数据等。为了兼容既有的文本记录,对文本log、软件运行状态log信息,同样进行抽象,增加内部自定义的帧头帧尾,封装为一个独立的pdu。

2、应用层协议数据包(applicationprotocoldataunit,简称apppdu):底层协议数据包为基础,对该数据包本身不做任何内容的改变,但为了标识出该底层协议数据包的应用层属性,增加发送方时间戳、接收方时间戳、发送实体、接收实体等字段。

3、已鉴定协议数据包(authenticatedprotocoldataunit,简称authpdu):是对应用层协议数据包的继续封装,增加版本、数据流协议类型、收发标志、校验和等字段;其中对铁路信号几大系统中常用的数据协议统一编码,从0开始,每一个数字代表一种数据协议通信格式,举例:0为既有文本log定义的数据单元,1为tdcs数据通信协议,2为ctc数据通信协议,3为ctc与联锁接口的通信协议,4为ctc与列控中心的数据通信协议等等。

4、铁路信号通用数据包(railwaysignalgeneraldataunit,简称rsgdu):对已鉴定协议数据包的继续封装,增加帧头、版本号、压缩标志、存储标志、数据包id、包含的authpdu包数、校验和、帧尾等字段。

如图3所示,为逐级分层封装过程;其中,应用层协议数据包,包含一底层协议数据包,而且一应用层协议数据包唯一对应一已鉴定协议数据包,多个已鉴定协议数据包可以组成一个铁路信号通用数据包。

本发明实施例上述方案主要具有如下有益效果:

1)不但能保持原有的文本log功能,更能够全面的记录铁路信号系统尤其tdcs/ctc系统的数据流。

2)在记录数据时,能够利用缓存存储、压缩存储方式,大幅的减少数据量,进而大幅减少系统硬盘资源及网络资源的使用。

3)在记录时,能够自动动态切换,实现本地存储、远程存储两种方式下的数据存储。

4)在记录时,对每一包数据设置递增的序号,实现数据存储唯一序号管理,防止记录数据时异常丢失。

5)在分析现场故障时能够快速定位,并根据生产环境的历史数据,为自动化测试提供基础。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1