一种道岔动作曲线的压缩方法与流程

文档序号:12489758阅读:694来源:国知局
一种道岔动作曲线的压缩方法与流程

本发明涉及铁路信号监测,尤其涉及一种道岔动作曲线的压缩方法。

[

背景技术:
]

在铁路信号设备中,道岔是不可或缺的关键部位,其动作曲线的数据分析对有着重要的意义。典型的道岔动作曲线如图1所示,是电机牵引道岔动作时电流或功率的幅度的有序集合,道岔动作曲线分析时需要将动作时产生的曲线从磁盘中调出,现阶段的动作曲线存储时使用非压缩存储,存储数据量大,存储空间占用大,间接导致数据读取较慢。如果使用通用的压缩算法,因无法准确识别冗余信息且由于存在数据字典对于长度较短的数据并不合适,如Z i p压缩算法对0长度的文件进行压缩,文件长度最小仍为78字节,无法有效的对应用中较短数据进行压缩,压缩效率低。

[

技术实现要素:
]

本发明要解决的技术问题是提供一种压缩效率高的道岔动作曲线的压缩方法。

为了解决上述技术问题,本发明采用的技术方案是,一种道岔动作曲线的压缩方法,包括以下步骤:

101、将模拟量浮点数组除以设定好的精度系数,将拟量浮点数组的全部数据取整为两个字节的整数;

102、将两个字节的整数的数组转换为数据流;数据流中包括正常数据标志和变化数据标志,正常数据标志后带一个两个字节的数据;变化数据标志后带至少一个单字节的数据差值。

以上所述的道岔动作曲线的压缩方法,步骤102包括以下步骤:

201、取第一个数据作为当前值,将正常数据标志位写入数据流,然后将两个字节的当前值写入数据流;

202、如果存在下一个数据,判断下一个数据与当前值的数据差值是否在-128到127之间;

203、如果数据差值在-128到127之间,将此单字节的数据差值存入数据流;在第一个数据差值的前面写入变化数据标志;

204、如果数据差值超出-128到127的范围,将正常数据标志和两个字节的数据写入数据流;

205、重复步骤201至204,直至全部数据转换完成。

以上所述的道岔动作曲线的压缩方法,变化数据标志包括后带单字节的数据差值的个数。

本发明道岔动作曲线的压缩方法压缩效率高,通过减少记录曲线的数据量,可以提高道岔记录曲线的读取速度,改善用户体验,提高磁盘寿命。

[附图说明]

下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1是本发明道岔动作曲线的示意图。

图2是本发明实施例道岔动作曲线的压缩方法的流程图。

[具体实施方式]

由于道岔动作曲线记录中的数值为浮点数,实际应用中道岔动作曲线并不要求太高的精度,如道岔电流曲线精度保留到0.001A即可达到用户要求,其量程在10A之内,因此可根据其精度系数将浮点数转化为两字节整数.这样可将浮点数的四个字节变到两个字节。

IEEE754浮点数格式如下:

其中符号(exponent)1位,指数(exponent)为8位尾数(fraction)为23位、

如一个数值为1.25其长度为4个字节除0.001后得到结果为1250丢弃其小数点后的精度,将其作为一个两字节数存储

由于曲线大部分时间变化较小,对应连续一段时间内得数据可使用一个字节表示其与上一个数据的的变化量,进而将变化数据数据压缩到原来的1/4。

例如:有连续的4个数1034,1035,1036,1034,除第一个数记录为两字节的完整数外,后方标记为3个小幅度变化+1,+1,-2,后方的三个小幅度变化均可用一个字节来表示,与原始的4字节比较,数据为原来的1/4。

下面是一段从现场截取的一段道岔功率曲线数据,其进度系数设定为0.001,单位为KW

0.00,0.01,0.02,0.03,0.02,0.88,0.52,0.44,0.44,0.43,0.42,0.42,0.41,0.41,0.41,0.41,0.40,0.40,0.40,0.40,0.40,0.40,0.39,0.39,0.39,0.38,0.38,0.26,0.26,0.25,0.25,0.25

一、准备工作:

设定变量:“当前值”、“缓存区长度”;

设定常量:正常数据标志,0x01后方跟两个字节幅度值;变化数据标志0x02后方跟两个字节的长度n后方是n个字节变化值,读取时首先读到的是标志位,通过标志位可得到其后方数据的长度;

建立一个变化缓冲区(单字节有符号整数);

建立一个输出数据流。

二、除精度系数,数值取整为两个字节:

将数据除以精度并进行取整,由于道岔动作功率不会大于10KW按进度转换为整数后均可用两个字节表示。

0,10,20,30,20,880,520,440,440,430,420,420,410,410,410,410,400,400,400,400,400,400,390,390,390,380,380,260,260,250,250,250

三、设定第一个值当前值,写正常数据标志,写入当前值:

设定当前值为第一个值0,向输出数据流写入正常数据标志,0x01,再写入当前值(两字节整数)0x00 0x00得到

输出数据流内容为:0x01 0x00 0x00

当前值,为0;

变化缓冲区为空。

四、判断下一个值与当前值的误差,变化较小时将数据存入变化缓冲区:

因为第二个数据值是10,与当前值得差值为10将差值写入变化缓冲区,将变化缓冲区长度加1,将第二个值设为当前值,得到缓冲

输出数据流内容如下(无变化):0x01 0x00 0x00

当前值,为10;变化缓冲区为:0x0A,

依次向后判断到第五个字节时,变化缓冲区为:

0x0A(10),0x0A(10),0x0A,0xF6(-10),

由于第五字节变化较大超出(-128至127)的范围,所以将变化标志,变化缓冲长度,及变化缓冲内容,写入输出数据流,得到数据如下,并将第五个数据作为正常值输出到数据流

输出数据流:0x01 0x00 0x00 0x02 0x04 0x00 0x0A 0x0A 0x0A 0xF5 0x01,0x70,0x03

第六个数据同第五个数据比较变化仍然较大,处理同第五个数据,从第七个数据开始数据进入平缓变化阶段,全部按变化数据存储,转换后最终数据如下

0x01 0x00 0x00 0x02 0x04 0x00 0x0A 0x0A 0x0A 0xF6 0x01 0x70 0x03 0x01 0x08 0x02 0x02 0x19 0x00 0xB0 0x00 0xF6 0xF6 0x00 0xf6 0x00 0x00 0x00 0xf6 0x00 0x00 0x00 0x00 0x00 0xF6 0x00 0x00 0xF6 0x00 0x88,0x00 0xf6 0x00,0x00

压缩后仅为44个字节的数据,是原132字节(34个数据×每个数据4个字节)的1/3左右。

本发明以上实施例通过数据压缩有效的降低了数量,进而提高了数据的的查询速度,改善了用户体验,延长了硬盘寿命。

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