一种数控系统可靠性数据压缩方法与流程

文档序号:14409152阅读:193来源:国知局
一种数控系统可靠性数据压缩方法与流程

本发明涉及数控技术领域的数据压缩技术,具体的说是一种数控系统可靠性数据压缩方法。



背景技术:

数控系统可靠性数据是提高产品可靠性的基础,对早期故障的定位和排除、以及新产品的研发起到了关键的指导作用。为了数控系统的可靠性测试工作,需要长期采集和保存可靠性数据,这就需要相当大的存储空间。为了确保可靠性数据能够实时存储,并且尽可能的节约存储空间和成本,减少网络传输中占用的带宽,需要对可靠性数据进行压缩处理。

数据压缩算法按其压缩精度,可以分为有损压缩和无损压缩。常用的无损数据压缩算法有huffman编码算法、游程编码算法,lz系列编码算法等。有损压缩方法可以分为3类,即分段线性方法、矢量量化方法以及信号变换法。分段线性方法又包括矩形波串法、后向斜率法、旋转门算法及plot法。

数控系统采集的可靠性数据主要包括:设备信息数据、配置数据、运行状态数据、诊断数据等,根据数据特点和作用分为静态数据、触发类数据、时间值、过程数据和网络传输数据。不同类型的可靠性数据具有不同的特点,静态数据主要是描述性的文本数据,上下文有一定的联系;触发类数据是在一定时间内保持相同状态的数据;而过程数据是具有一定变化规律的浮点型数据。

一种压缩算法对不同类型数据的压缩效果是不同的,数控系统可靠性数据不是单一类型,所以使用单一的压缩算法不能有效的压缩数控系统可靠性数据,需要设计针对不同类型可靠性数据的压缩算法。



技术实现要素:

为解决上述问题,本发明提供一种数控系统可靠性数据压缩方法,采用依据数控系统的可靠性数据类型,分别对可靠性数据进行数据压缩。

本发明为实现上述目的所采用的技术方案是:一种数控系统可靠性数据压缩方法,包括以下步骤:

步骤1:判断数控系统的可靠性数据类型;

步骤2:采用静态字典结合动态字典的改进lzw算法压缩静态数据;

采用pcx文件的rle算法压缩触发类数据或时间值;

采用保存偏差点的改进旋转门算法压缩过程数据;

采用静态字典结合huffman算法的二级压缩方式压缩网络传输数据。

所述可靠性数据类型包括:静态数据、触发类数据、时间值、过程数据、网络传输数据。

所述采用静态字典结合动态字典的改进lzw算法压缩静态数据,具体为:

s1:初始化字典,所述字典包括出现频率超过设定值的字符串;

s2:顺序读取静态数据的一个字符作为前缀;

s3:读取下一个字符作为后缀;

s4:检查字典中是否有“前缀”+“后缀”;

s5:如果有,则将“前缀”+“后缀”赋值给前缀;转至s7;

s6:如果没有,则输出前缀编码,将“前缀”+“后缀”加入字典,再将“后缀”赋值给“前缀”,转至s7;

s7:检查静态数据中是否还有未读字节;若有则回到s3;若没有,则输出前缀编码。

所述采用pcx文件的rle算法压缩触发类数据或时间值,具体为:

s1:顺序读取一个字符ch1,设置串长s=1;

s2:读取下一个字符ch2;

s3:比较ch1和ch2是否相同;

s4:若相同,则s加1,转至s10;

s5:若不同,则判断s>1或ch1>192是否至少一个为真;

s6:若s>1或ch1>192为真,则再判断s>63是否为真;

s7:若s>63为真,则输出(63,ch1),并将s-63赋值给s,转至s5;

s8:若s>63为假,则输出(s,ch1),再将ch2赋值给ch1,转至s10;

s9:若s>1为假且ch1>192为假,输出字符ch1,再将ch2赋值给ch1,转至s10;

s10:检查是否还有未读字符;若有则转至s2;若没有,输出ch1编码。

所述采用保存偏差点的改进旋转门算法压缩过程数据,具体为:

设置压缩精度e、阈值、上门初始值up、下门初始值down;

s1:对数据进行差值处理;

s2:顺序读取差值处理后数据cur_d及其时间cur_t;

s3:计算上门up’=(cur_d-stored_d-e)/(cur_t-stored_t),

下门down’=(cur_d-stored_d+e)/(cur_t-stored_t);

取up和up’中的大值作为up,取down和down’中的小值作为down;

s4:若up≥down,保存read_d,

计算预测值forecast_d=((read_d-stored_d)/(cur_t-stored_t-1))×cur_t;

如果|forecast_d-cur_d|>阈值,则判定cur_d为偏差值,保存cur_d;读取下一个数据赋值给stored_d,保存stored_d,再读取下一个数据赋值给cur_d;否则,stored_d=read_d;

然后更新up=cur_d-stored_d-e,down=cur_d-stored_d+e;转至s6;

s5:若up﹤down,则转至s6;

s6:read_d=cur_d,检查是否还有未读数据;若有则回到s2;若没有,保存stored_d;

其中,cur_d为当前读取数据,read_d当前的数据的前一个数据,stored_d为最后保存的数据,cur_t为当前数据对应的时间;stored_t为最后保存数据对应的时间。

所述采用静态字典结合huffman算法的二级压缩方式压缩网络传输数据,具体为:

s1:初始化字典,所述字典包括xml标签内出现频率超过设定值的字符串;

s2:读取字符c1,设置字符串s为空;

s3:判断c1是否为“<”;

s4:如果c1是“<”,读取下一个字符c2,判断c2是否为“>”;

s5:如果c2是“>”,查看字典中是否包含字符串s;如果包含,输出“<”和s对应的编码和“>”;如果不包含,输出<s>;转至s8;

s6:如果c2不是“>”,将s+c2赋值给s,转至s4;

s7:如果c1不是“<”,输出c1;转至s8;

s8:分别统计每个字符出现次数,并且检查是否还有未读字符,若有则转至s2;若没有则构建huffman树,进行huffman编码,输出每个字符的huffman编码。

本发明具有以下优点及有益效果:

1.静态字典和动态字典结合的改进lzw算法解决了lzw算法字典自适应过程较慢的问题。

2.pcx文件中改进的rle算法,将不重复的字符直接存入压缩文件,最大程度的压缩数据。

3.改进旋转门算法可以保存过程数据中的偏差点,又不影响到正常数据的解压恢复。

4.静态字典结合huffman算法的二级压缩方式压缩能够解决上下文关联性不强的网络传输数据压缩率比较低的问题。

附图说明

图1静态字典结合动态字典的改进lzw算法流程图;

图2采用pcx文件的rle算法流程图;

图3改进旋转门算法流程图;

图4静态字典和huffman算法结合的二级压缩流程图;

图5为过程数据压缩前数据曲线图;

图6为过程数据压缩后数据曲线图。

具体实施方式

下面结合附图及实施例对本发明做进一步的详细说明。

本发明方法为针对数控系统中不同类型的可靠性数据进行的压缩算法研究。数控系统采集的可靠性数据主要包括:设备信息数据、配置数据、运行状态数据、诊断数据等,根据数据特点和作用可分为静态数据、触发类数据、时间值、过程数据和网络传输数据。

静态数据包括设备信息、配置数据、诊断数据等;其中设备信息包括数控系统型号、编号、软件版本、硬件各部件版本等;伺服和电机型号、编号、软件版本、硬件版本等;机床型号、编号等数据。配置数据包括数控系统和伺服的参数、用户加工程序等。诊断数据包括硬件诊断信息、软件诊断信息、伺服运行诊断信息等。触发类数据包括开关量,工作方式,工作状态等。过程数据主要包括轴坐标、进给速度、进给倍率、电流、温度、湿度等数据。网络传输数据是需要传输到远程第三方的实时数据。

不同类型的可靠性数据具有不同的特点,静态数据主要是描述性的文本数据,上下文有一定的联系,触发类数据是在一定时间内保持相同状态的数据,时间值表示触发类数据对应的时间;而过程数据是具有一定变化规律的浮点型数据。

如图1所示,是针对静态数据压缩的改进lzw算法流程图。根据分析发现静态数据中包含一些出现频率较高的词条,而lzw算法是一种高效的无损压缩算法,并且在压缩过程中不需要查找匹配字符串,这点在算法实现上比lzss简单许多,但是lzw算法是在压缩过程中逐步建立的字典,其对原始数据特点的自适应过程较为缓慢,所以结合lzw算法针对数据特点做了简单改进,在对原始数据编码之前首先利用名词字符串对字典初始化,这些名词字符串由出现频率较高的名词条组成,然后利用lzw算法进行压缩,相当于组合使用了静态字典和动态字典,解决了lzw算法字典自适应过程较慢的问题。具体实现流程:

(1)利用提取的常见词条初始化字典;

(2)读取一个字节作为前缀;

(3)读取一个字节作为后缀;

(4)检查字典中是否有“前缀”+“后缀”;

(5)如果有,则将其作为前缀,回到(3);

(6)如果没有,输出前缀编码,将“前缀”+“后缀”加入字典,“前缀”=“后缀”,回到(3);

如图2所示,是针对触发类数据和时间值的pcx文件中的rle算法流程图。数控系统数据中存在像开关量型的触发类数据,以及具有周期性的时间值。在对时间值差值处理后,这些数据都具有大量的连续字符,所以针对这类数据采用rle算法会得到较高的压缩率。

rle算法在处理不连续重复的字符时,会存储两个字节(串长,字符),而原字符只有一个字节,也就是说使用游程编码处理这些不连续重复数据反而加大了存储空间,所以本文采用pcx文件中改进的rle算法,将不重复的字符直接存入压缩文件,利用字节的高两位来区分是原数据还是压缩编码,高两位全为1代表串长,高两位不全为1代表原字符。一个字节当高两位全为1时,最小为192,当高两位全为0时,最大为63。具体实现流程:

(1)读取一个字符ch1,串长s=1;

(2)读取一个字符ch2;

(3)比较ch1和ch2是否相同;

(4)若相同,s加1,回到(2);

(5)若不同,判断s>1或ch1>192是否为真;

(6)若为假,输出字符ch1,ch1=ch2,回到(2);

(7)若为真,再判断s>63;

(8)若为真,输出(63,ch1),s=s-63,回到(5);

(9)若为假,输出(s,ch1),ch1=ch2,回到(2)。

如图3所示,是针对过程数据的改进旋转门算法流程图。针对数控系统可靠性测试的过程数据的压缩需要最大可能的保持原数据的特点,也就是说为了可靠性的评估和测试,对一些偏差数据也要保存下来,同时又不能影响到正常数据的解压恢复,所以不能直接应用旋转门算法对这些数据压缩。

旋转门算法根据当前值和最后保存的值所构成的压缩偏移覆盖区是否可以覆盖两者之间的所有点,来决定是否保留前一个时间点的值,它不能够对偏差数据进行处理,所以需要对其进行改进以满足可靠性测试的需求。主要改进点:设定一个判断偏差数据的阈值,若数据与预测数据之差超过阈值,则认定为偏差数据,需要保存。并且为了确保解压时数据的准确性,对偏差数据的前后两个数据也需要存储,使解压数据不受偏差数据的影响。如果为了判断数据是否是偏差数据,而对每一个数据都计算预测值,会耗费较多的时间,这就需要根据一定的方法来减少计算量。分析发现:偏差数据只可能在保存数据的后一个数据出现,也就是和最后保存的值所构成的覆盖区不可以覆盖两者之间所有点的那个数据,只需要对这些数据计算其预测值,分析是否是偏差数据。预测值则利用前一个保存数据和偏差数据的前一个数据的线性外插法来计算。为了进一步提高存储效率,可以提前对数据进行差值预处理后压缩。具体实现流程:

(1)对数据进行差值处理,设置压缩精度e、阈值、up、down,cur_d为当前读取数据,read_d当前的数据的前一个数据,stored_d为最后保存的数据;

(2)读取数据cur_d,时间cur_t;

(3)计算上门up’=(cur_d-stored_d-e)/(cur_t-stored_t),下门down’=(cur_d-stored_d+e)/(cur_t-stored_t),up=max(up,up’),down=min(down,down’);

(4)判断up<down;

(5)如果为假,保存read_d,计算预测值forecast_d=((read_d-stored_d)/(cur_t-stored_t-1))*cur_t;判断|forecast_d-cur_d|>阈值;

(6)如果为真,则判定cur_d为偏差值,保存cur_d,读取数据赋值stored_d,保存stored_d,读取数据赋值cur_d;

(7)如果为假,stored_d=read_d;

(8)更新up=cur_d-stored_d-e,down=cur_d-stored_d+e;

(9)read_d=cur_d,回到(2)。

如图4所示,是针对网络传输数据的二级压缩流程图。网络传输数据的传输格式采用xml格式,为了描述数据的意义,不同的数据需要不同的xml标签,在标签中包含不同类型的数据,该类数据的上下文关联性不强。

lz系列算法对于上下文关联性较强的数据能够取得较好的压缩效果,所以该类型数据利用lz系列算法不能够获得较好的压缩率。huffman编码对字节进行统计编码,需要扫描两次原始数据,会消耗较多的时间,不适合直接用于压缩数据。通过分析利用xml格式传输的网络数据,发现xml标签内字符串的出现频率较高且比较固定,所以可以通过静态字典的方式首先对这些字符串压缩以及字符统计,再通过huffman编码进行压缩,通过这种静态字典和huffman编码结合的方式对数据二级压缩可以解决压缩率较低的问题,并且相比huffman编码减少了压缩时间。具体实现流程:

(1)获取已经构建的静态字典;

(2)读取字符c1,s=“”;

(3)判断c1=“<”;

(4)如果为假,输出c1;

(5)如果为真,读取字符c2,判断c2=“>”;

(6)如果为假,s=s+c2回到(5);

(7)如果为真,查看字典中是否包含s;

(8)如果包含,输出“<”+编码+“>”;

(9)如果不包含,输出“<”+s+“>”;

(10)统计字符出现次数,还有字符,回到(2);

构建huffman树,huffman编码,输出结果。

本发明方法的执行效果如下:

1.如表1所示为使用lzw算法、lzss算法、以及改进的lzw算法分别对静态数据进行压缩的测试结果。

表1静态数据在不同压缩算法下的压缩效率

由测试结果看出,结合静态字典的lzw算法减少了对出现频率较高的名词字符串逐步建立字典的过程,使这些字符串能够直接编码压缩,而不需要逐步加入字符的自适应过程。相对于lzss和lzw算法降低了压缩时间,提高了压缩率,具有较好的压缩效果。

2.如表2所示为触发类数据的压缩效果。

表2触发类数据的压缩结果

由测试结果看出,由于触发类数据具有大量连续的字符,所以使用rle算法获得了较高的压缩率。并且通过对不连续字符的压缩改进,又进一步提高了压缩率。对时间值进行差值预处理后获得的数据具有连续性特点,应用该rle算法压缩也获得了很好的压缩效果。

3.如表3所示为通过sin(t)*100来模拟过程数据,其中在t=140和t=680处设置了偏差点的压缩效果。

表3过程数据压缩结果

由测试结果看出,改进的旋转门算法达到了很好的压缩结果。如图5所示,为过程数据压缩前数据曲线图;如图6所示,为过程数据解压后数据曲线图。由图5和图6对比可以发现该算法对偏差点进行了特殊处理,对超过阈值的偏差点保存,并且对偏差点的前后相邻数据也保存处理,使其在解压时并没有影响到其他数据的恢复,使数据的绝对误差保持在一定范围。

4.如表4所示为使用huffman算法,lzw算法,lzss算法,以及静态字典结合huffman算法的方式分别对网络传输数据进行压缩的测试结果。

表4网络传输数据在不同压缩算法下的压缩结果

由测试结果看出,静态字典编码和huffman编码结合的二级压缩方式比huffman编码的压缩时间缩短了很多,虽然相比lzw算法和lzss算法在压缩和解压时间上会有些不足,但是在压缩率上具有较大优势,对节约网络带宽很有帮助。

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