车载数据记录压缩算法的研究

发布者:EternalWhisper最新更新时间:2006-05-07 来源: 电子产品世界 手机看文章 扫描二维码
随时随地手机看文章

    摘要:提出了缓变系统信息和实时测控数据信息分区存储的方案,对系统信息采用了定长非压缩算法,同时对数据信息采用了非定长的行间压缩算法,并将此方案成功地运用在“机车随车质量状态故障诊断记录装置”中,满足了装置利用1024KBYTE的存储空间,以16位精度每隔5S记录一次32路实时参数变化以及大量系统信息,且连续记录时间大于50小时的要求。

    关键词:压缩算法 数据记录 车载

前言

    随着大容量存储技术的发展,数据记录和转储被广泛应用于机电测控系统、智能仪器仪表等单片机系统之中,通过数据记录可对系统进行状态监测、故障诊断、安全监控、事故分析等。在“机车随车质量状态故障诊断记录装置”的设计中,采用两片共计1024KBYTE的FLASHRAM 28SF040,对机车运行中的司机号、车号、车次号、起始站、终止站、牵引重量、出退勤时间等缓变信息的记录,以及机车质量状态故障监测诊断的32路实时数据信息以16位精度每5s的实时记录。为了满足连续记录50小时以上的实际需求,提出了缓变系统信息和实时数据信息分区存储的方案,对系统信息采用了定长非压缩算法,对实时数据信息采用了非定长的行间压缩算法。并对数据记录信息进行了长度校核,同时对数据进行了CRC校验。

车载数据记录内容及各参数记录频度分析

    机车随车质量状态诊断记录仪需要记录的运行信息内容包括:车号(0~9999)、司机代码号(0~99999)、车次号(0~99999)、起始站代码(0~999)、终止站代码(0~999)、牵引重量(0~9999),共计14BYTE。

    实时状态参数包括:年、月、日、时、分、秒,6BYTE,以及柴油机转速、主电流、六个分电流、电压、轴温、油水温度、总管温度、增压压力、进回油(油耗)、马达转速、火情报警等32路实时参数,各2BYTE。共计:6BYTE+2×32BYTE=70BYTE。

    机车运行信息,其记录的频度是非常低的,大约每10小时记录一次,记录的条件为:系统上电、司机参数输入,即输入新的车号、司机代码等。

    机车实时状态参数,其记录的频度为每5s全部记录一次。但32路实时参数中,每次最多只有四分之一,即8个左右的量满足记录变化条件,且进回油参数必须每5S记录一次。

几种常用数据记录算法分析

   
非分区非压缩算法

    通过以上的分析,如果我们将全部参数不采用任何压缩记录算法,则每5s记录的数据长度将达:6BYTE+14BYTE+64BYTE=84BYTE。这样全部1024KBYTE的记录容量只能记录:

    1024 KBYTE ÷84 BYTE=1024×1024÷84 =12483 次

    记录时间为:

    12483×5s=62415s=1040 min = 17 h

    分区非压缩算法

    将系统1024KBYTE的存储空间分成:0~63页,每页16KBYTE的分区存储格式。将机车运行信息14BYTE和上电时间或司机输入参数时间以及其他系统参数,如报警门限、标定系数、DS1820/B20传感器代码等记录在系统的0~63页的0页,共计16KBYTE的空间,因为系统信息只有在上电、复位和参数输入时才需要记录,所以16KBYTE的系统记录区无需任何压缩算法将足以满足系统的使用。

    系统分区的0页区为系统信息存储区,1~63页区为数据信息存储区,如果数据记录不采用压缩的算法,则每5s需要70BYTE的存储空间,这样存储次数为:

    63 × 16 KBYTE ÷ 70 BYTE =14745 次

    记录时间为:

    14745 × 5s = 73725 s = 20 小时

    分区压缩算法

    采用和分区非压缩算法一样的分区方法,即将系统1024KBYTE的空间分区为0~63页区,每页区16KBYTE,第0页区用于存储系统信息,第1~63页区存储数据信息。

    通过分区非压缩算法的分析,系统存储区的16KBYTE足以满足需要,关键在于数据信息的存储算法,对图2和图3的分析,可以分析出如下信息:

    ①、系统信息的记录和数据信息的记录均需要记录时间信息;

    ②、数据信息记录的时间信息在系统信息不变的情况下,记录时间间隔固定为5s;

    ③、数据信息记录参数在数据不变的情况下重复记录相同的数值;

    通过以上的分析,我们可以取消数据信息记录中的时间信息,取消之后,只需要在记录系统信息的同时,在系统记录中记录下数据信息的起始页区和起始地址,这样我们就可以通过系统信息定位数据信息的起始记录位置和时间,以后每条记录的时间间隔5s。

    通过一个32位的标记信息,标记每个数据信息的变化与否,如果某一数据没有发生变化,标记为0,变化则标记为1,同时记录下变化后的数值。

    如图5所示,如D0代表柴油机转速,当D0=0时,表示当前记录中的柴油机转速和上次的相同,此次无需记录柴油机转速值,D0=1时,表示柴油机转速发生了变化,则需要记录一次柴油机转速。

    例如:司机号为1234号的司机,2001年2月12日11时54分30秒上车,系统记录区中记录一条系统信息,其中记录下此时数据记录区中的起始页区号(1BYTE,第1~63个16KBYTE,假设为第30页)和起始地址(2BYTE,在当前页区16KBYTE的地址,假设起始地址为2E5FH)。他出乘时的第一条记录从第30页的2E5FH开始必须记录全部32路参数的初始值,其32路的标记单位全部为1。5s后,第1号参数和第5、7号参数发生了变化需要记录,则记录标记中只有的D1=1、D5=1、D7=1,其它各位为0,随后依次记录第1号参数和第5、7号参数各2BYTE的数值。记录格式如图6所示。

分区压缩算法的解压缩算法

   
装置通过数据转储进入PC机数据分析处理系统后,根据分区压缩算法,分析系统首先在第0页中,依次以23BYTE为一条系统记录,分别读取各司机出乘时的起始时间,系统信息,以及对应数据记录区的起始页区和起始地址,然后到对应位置读取第一条数据信息,首先读取2BYTE的FFFFH记录块首,然后第1条信息中4BYTE的数据变化标记信息判定当前记录中对应参数的变化记录情况,并在标记之后依次读取对应变化参数的各2BYTE,接着读取第1记录的CRC校验码1BYTE。

    依照以上的方法,依次读取数据记录区的第2条数据记录,没有变化的参数值依然等于第1条记录对应的参数值。第1条记录的记录时间为系统记录中的时间,第2条记录的时间=第1记录时间+5s,依次类推分别读取以下数据记录,并计算出记录的时间。

    数据记录长度校验

    在数据记录中增加了固定的2BYTE的FFFFH,同时在参数记录中限定记录的参数值不大于0FFFFH,这样当读取4BYTE参数变化标记,假定有n个参数变化记录,则在4BYTE的参数变化标记之后应该正好有n个非0FFFFH的参数值,多于n或小于n都认为此记录有误,此记录的全部参数和上一条记录相同,时间+5s。

    数据记录CRC校验

    数据压缩记录时,从0FFFFH块首开始到最后一个变化参数的记录数据采用8BIT的CRC校验算法。如图7所示。

    CRC=X8+X5+X4+1

结语

   
基于分区压缩算法,在机车随车质量状态诊断记录装置中,数据记录区无需记录时间,记录参数也采用了压缩记录的算法,在32个参数中每5s平均最多只有8个参数发生变化需要记录则记录,则平均每条数据记录的长度为23BYTE,因此,1~63页的数据记录可以存储的记录条数为:

    63 × 16 KBYTE ÷ 23 BYTE =44877 次

    连续记录时间为:

    44877 × 5s = 224385 s = 62 小时

    连续记录62小时,满足了装置连续记录50小时的要求,且系统采用了记录长度校核算法以及较为严格的CRC校验算法,提高了装置记录数据的可靠性,该装置已通过郑州铁路局技术鉴定,该装置在一年半的装车实际运用中,记录可靠,由于机车每天实际运行时间小于15小时,且每条记录平均变化数小于假定的8个,因此,实际记录时间在6~7天左右。

引用地址:车载数据记录压缩算法的研究

上一篇:VB环境下实现PCI设备底层访问的两种方法
下一篇:利用DSP技术与软件的企业IP电话解决方案

小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved