具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
实施例一
在一个或多个实施例中,公开了一种智能变电站网络报文记录与分析方法,包括:
构建SCD文件模型;
对接收到的报文进行优化存储;
同时,对接收到的报文进行解析,得到报文文件数据;
根据得到的报文文件数据,进行在线结果分析。
其中,进行在线结果分析包括:
根据得到的报文文件数据,进行在线结果分析,包括调取相应的报文文件,根据报文文件中当前帧时间戳和上一帧时间戳的时间差,进行报文完整性分析的过程;
以及,对于SV报文的图形化显示的过程。
示例性的,数据优化存储的过程具体包括以下过程:
(1)参照图1(a),将设定的存储分区划分为多个代码块;每个存储分区结尾可能会存在不够一个块大小的空间被浪费掉,参照图1(a)和图1(b)中的黑色区域;
(2)将采集到的报文缓存到一定大小后开始压缩,形成相应的压缩包;
(3)参照图1(b),压缩包顺序存储在代码块内,每一个代码块的最后写入索引信息;
(4)若当前代码块存储已满,则存入下一个代码块中,如果所述存储分区内所有的代码块均已存满;则返回覆盖第一个代码块内存储的内容。
目前,出于经济效益考虑,网分装置内基本配置的机械硬盘,而其存储原理依托于硬件组成。所有的盘片都固定在一个旋转轴上,这些盘片一般是以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘的每一面上,以转动轴为轴心、以一定地磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。在每一面上都相应地有一个读写磁头(head),所以不同磁头的所有相同位置的磁道就构成了所谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式。硬盘在上电后保持高速旋转(5400转/min以上),位于磁头臂上的磁头悬浮在磁盘表面,通过磁头控制器在不同柱面之间移动,对不同的柱面进行读写。
在之前的存储方式中,为了保证大量的报文数据能写入存储和删除,每次操作的物理地址是不可知的。对于需要磁头寻道的存储介质来说,随机寻道会消耗大量时间,效率低下。
如果在现场发生意外,文件系统的索引在中断时发生损坏,则可能整个扇区的数据都会丢失,对网分装置的稳定性影响是极大的。
硬盘空间有限,在长时间不间断的报文采集存储后,内存空间需要频繁的覆盖擦写,极易出现磁盘表面被划伤,磁头损害的情况,这对盘上存储的数据带来的不可修复的后果。
本实施例方式在对报文文件进行存储时,模拟文件系统,对报文进行流式存储,将报文进行处理后存储,提高存储能力,改善读取方式,减少磁头移动对磁盘的损伤,提高使用寿命,节约成本。
本实施例方式中,将采集到的报文缓存到一定大小后开始压缩为zip(1.2.….n),此过程区别于原本的边采集边存储的模式,一方面有利于最大化合理利用磁盘存储空间,另一方面为建立索引区间实现便利查询提供基础。
将zip信息顺序排列在代码块block(1.2.….n)内,每个block内包含多个zip压缩包。压缩后的报文并不会全部存满block,在block的尾部留有一小部分空间用于建立索引信息区间,该区间写入相应block的索引信息,索引信息包含报文长度、起始时间和结束时间。由于索引区间的存在,在报文查询时可减少寻道时间,减少磁头的移动次数,提高性能。
对于磁盘,访问时间包括两个主要部分:
寻道时间:是磁臂移动磁头到包含目标扇区的柱面的时间;
旋转延迟:是磁盘旋转目标扇区到磁头下的额外时间;
磁盘带宽是传输字节的总数除以从服务请求开始到最后传递结束时的总时间。通过管理磁盘I/O请求的处理次序,可以改善访问时间和带宽。
每当进程需要进行磁盘I/O操作时,它就向操作系统发出一个系统调用。这个请求需要一些信息:
这个操作时输入还是输出;
传输的磁盘地址是什么;
传输的内存地址是什么;
传输的扇区数是多少;
例如:考虑一个磁盘队列,其I/O请求块的柱面顺序如下:
78,123,24,122,13,154,63,66。
如果磁头开始位于柱面52,那么它首先从52移动到78,接着再到123,24,122,13,154,63,最后到66,磁头的移动柱面总数为514。从24到122再到13的这种较大范围移动可以说明磁头的移动频繁及不合理性。当经过压缩后,调取索引信息查询,可直接精确到查询柱面,或是减少移动的柱面范围,总的磁头移动会大大减少,性能及磁盘寿命也会因此达到改善。
示例性的,参照图2,报文数据分析的过程主要包括以下步骤:
(1)获取报文文件,读取报文文件中的帧总数M;
(2)定义帧结构体,为所述的帧结构体定义一个指针;
(3)判断报文文件第一帧结构体的指针是否为空,如果不是,进入步骤(4);否则,进入步骤(8);
(4)判断当前帧指针和上一帧指针是否为空,如果不是,计算当前帧时间戳和上一帧时间戳的时间差,并判断所述时间差与设定值之间的差值ΔT;进入步骤(5);否则,进入步骤(8);
(5)如果ΔT>A,则数组N中最右端的数值加1;如果ΔT小于B,则数组N中最左端的数值加1;如果A<ΔT<B,则数组N中间的数值加1;其中A、B为设定值,A<B;所述数组N表示一个包含三个数量的数组,数组N={i,j,k},其中,i表示使得所述差值ΔT属于ΔT>A范围内的时间差的数量,j表示使得所述差值ΔT属于A<ΔT<B范围内的时间差的数量,k表示使得所述差值ΔT属于ΔT<B范围内的时间差的数量;
(6)重复步骤(4)-(5),直到当前帧遍历完报文文件中所有的帧结构体;
(7)建立直角坐标系,根据数组N,绘制柱形图纵坐标,横坐标为A~B,得到能够显示报文离散分析度的图形;
(8)结束。
在变电站的通信中,61850报文是应用比较广泛的报文文件,下面基于61850报文文件,对本实施方式的方法展开具体说明。当然,下述过程对于其他通信报文的完整性分析同样适用。
步骤1,开始该程序流程;
步骤2,读取报文文件或者由下位机上送的61850报文;
步骤3,读取报文中的帧总数,并记录该总数M;
步骤4,定义帧结构体,该结构体包括帧类型、帧长度,帧时间戳,保留位,帧数据内容等;为所述的帧结构体定义一个指针;首先定位到报文起始位置,若第一帧报文结构体指针不为空,进入步骤5;反之,说明该报文不存在;进入步骤11;
需要说明的是,帧结构体的指针为空说明该帧结构体的帧数据内容为空,也就是当前报文没有对应的内容或报文不完整。
步骤5,备份前一帧内容,获取当前帧报文时间戳中的秒和纳秒,计算前一帧报文时间戳和当前帧报文时间戳的秒和纳秒的时间差,然后分别将秒和纳秒的时间差求和,得到当前帧时间戳和上一帧时间戳的时间差;
步骤6,遍历所有帧中当前帧和前一帧报文的时间差,判断当前帧指针和上一帧指针是否为空,若不为空,将所有的时间差值与250微秒的进行比较:
若差值大于10,则数组N中最右端的数值加1;若差值小于-10,则数组N中最左端的数值加1;若差值处于-10-10之间,则数组N中中间位置的数值加1。
若为空,进入步骤11;
本实施例中,如果上述的差值处于-10-10之间,说明该报文属于正常报文,无丢帧,反之出现丢帧。
步骤7,缓存报文文件中遍历所有当前帧得到的所有差值ΔT,差值ΔT的计算公式为:(当前时间戳T2-上一帧时间戳T1)/1000-250,确定所有差值中的最大值和最小值;
步骤8,将帧总数、差值的最大值和最小值,以及数组N缓存在一个结构中;
步骤9,利用Qt绘图工具,建立纵坐标(%)和横坐标(时间均匀度-10~10);
步骤10,根据差值数组N,绘制柱形图形纵坐标,横坐标为-10~10,纵坐标为数组N中的数值;柱形图可以显示报文的离散分析度,若最中央位置为98%以上,则报文完整性良好,反之,有丢帧情况。同时,显示差值的最大值和最小值。
步骤11,结束该流程。
本发明实施方式的设计方法思路简单,代码可读性强,能准确判断报文的误码率,重用率高,能大大减少维护工作,降低了维护成本和节省了资源。
SV是采样测量值(英文全称:Sampled Measured Value),是电力规约61850中一种用于实时传输数字采样信息的通信服务,解析SV链路的报文,将不同通道对应的采样值以正弦波的方式展现出来,这样便于工作人员查看这段时间SV数值的变化情况,对于异常的波形一目了然,便于工作人员检查并排查故障点。
示例性的,参照图3,SV报文图形化显示的过程具体包括如下步骤:
步骤1,开始程序流程;
步骤2,读取61850报文文件;
步骤3,定义SV每帧报文结构体;该结构体包括:目标MAC、源MAC、应用标识、APDU(应用协议数据单元)、保留字、品质位等;
步骤4,定义绘制SV波形信息的结构体,该结构体包括:应用标识,帧序号,通道个数,时间标识,通道描述,指向数据的指针等信息,定义与通信链路的应用标识相关联的结构体指针数组对应的map变量WaveInfoMap;
步骤5,解析SV链路报文信息,获取绘制SV波形结构体的信息;
步骤6,判断SV链路当前应用标识对应的map指针数组是否为空,若为空,表示还没有建立通信链路的应用标识与结构体指针数组的对应关系,进入步骤7;若不为空,进入步骤8;
步骤7,创建通信链路的应用标识与结构体指针数组的对应关系,进入步骤8;
步骤8,将提取的绘制SV波形的信息保存到对应的指针数组中;
步骤9,绘制每帧SV报文中各通信链路的波形,具体方法为:以时间为横轴,以SV通信链路各帧中对应的数值(采样值)为纵轴,绘制相应SV通信链路的波形图;
步骤10,结束该流程。
其中,SV报文可以理解为采样值,为了方便提取SV报文,定义SV报文帧结构体包括如下信息:
定义绘制SV波形所需信息的结构体,该结构体包含:应用标识(每一个通信链路中每一帧对应一个应用标识),帧序号,通信链路个数,时间标识,通信链路描述,指向数据的指针等信息;其中,指向数据的指针代表每一帧报文对应的采样值。
本发明实施方式能够直观的展示SV报文中对应的各通道信息,改善了用户交互性,提高了工作效率。
实施例二
在一个或多个实施方式中,公开了一种智能变电站网络报文记录与分析系统,包括:
用于将设定的存储分区划分为多个代码块的装置;
用于将采集到的报文缓存到一定大小后开始压缩,形成相应的压缩包的装置;
用于所述压缩包顺序存储在代码块内,每一个代码块的最后写入索引信息的装置;
用于调取相应的报文文件,根据报文文件中当前帧时间戳和上一帧时间戳的时间差,进行报文完整性分析的装置;
以及,用于对SV报文进行图形化显示的装置。
上述各装置的工作过程或者实现方式与实施例一中的实现方法是相同的,不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。