数控系统可靠性数据压缩算法
2018-8-6 来源:转载 作者:林新然,王力杰,刘 峰,张兆中
摘要: 数控系统可靠性数据是产品早期故障定位和排除的基础. 数控系统包含配置数据,诊断数据,运行状态数据等可靠性数据,这些数据大部分是实时数据,随着监测时间的推移会大量增长,所以数据的有效存储是不得不解决的问题. 数据压缩是节省存储空间、提高存储效率的一种有效方法. 根据不同类型可靠性数据的特点和变化规律,设计合适的压缩算法. 改进 LZW 算法实现静态文本数据的压缩,改进旋转门算法压缩过程数据,对网络传输数据采用二级压缩方式进行压缩. 实验表明,使用该压缩方案能够在保证实时性的情况下对数控系统不同类型的可靠性数据进行有效的压缩,节约存储空间和网络传输带宽.
关键词: 数控系统; 可靠性数据; 有损压缩; 无损压缩; 不同类型数据
1、引 言
数控系统作为各类数控机床的控制中枢,被称为机床的灵魂和大脑,它的可靠性是制约高档数控机床发展的重要因素. 数控系统可靠性数据是提高产品可靠性的基础,对早期故障的定位和排除、以及新产品的研发起到了关键的指导作用.
数控系统可靠性数据结合可靠性仿真技术、分布式控制技术、网络化监测技术、维修策略优化技术等是提高数控系统可靠性的有效途径.数控系统采集的可靠性数据主要包括: 设备信息数据、配置数据、运行状态数据、诊断数据等,根据数据特点和作用大致可以分为静态数据、触发类数据、时间值、过程数据和网络传输数据.
静态数据包括设备信息、配置数据、诊断数据等; 其中设备信息包括数控系统型号、编号、软件版本、硬件各部件版本等; 伺服和电机型号、编号、软件版本、硬件版本等; 机床型号、编号等数据. 配置数据包括数控系统和伺服的参数、用户加工程序等. 诊断数据包括硬件诊断信息、软件诊断信息、伺服运行诊断信息等.
触发类数据包括开关量,工作方式,工作状态等.
过程数据主要包括轴坐标、进给速度、进给倍率、电流、温度、湿度等数据.
网络传输数据是需要传输到远程第三方的实时数据.
数控系统运行状态数据的采集周期为 10ms,一台机器每天的数据量大概是 600MB,一个月的数据量就是 18GB,长期保存这些数据需要相当大的存储空间. 为了确保可靠性数据能够实时存储,并且尽可能的节约存储空间和成本,减少网络传输中占用的带宽,需要对不同类型的可靠性数据进行压缩处理.不同类型的可靠性数据具有不同的特点,静态数据主要是描述性的文本数据,上下文有一定的联系; 触发类数据是在一定时间内保持相同状态的数据; 而过程数据是具有一定变化规律的浮点型数据.一种压缩算法对不同类型数据的压缩效果是不同的,数控系统可靠性数据不是单一类型,所以本文针对这五类可靠性数据的特点和变化规律,实现了一种有效的压缩方案: 改进LZW 算法压缩静态数据,采用 RLE 算法压缩触发类数据和时间值,改进旋转门算法压缩过程数据,采用二级压缩方式压缩网络传输数据.
2 、数据压缩算法
数据压缩算法按其压缩精度,可以分为有损压缩和无损压缩. 有损压缩是通过一定的筛选条件来判断是否保存数据,在压缩过程中会舍弃一部分数据,但这些数据对原始数据的恢复影响不大,具有较高的压缩率. 无损压缩利用数据的统计冗余来进行压缩,能够完全恢复原始数据而不引起任何失真,但是压缩率受到数据统计冗余度的理论限制.常用的无损数据压缩算法有 Huffman 编码算法、游程编码算法,LZ 系列编码算法等. 针对工业过程数据的有损压缩方法可以分为 3 类,即分段线性方法、矢量量化方法以及信号变换法. 分段线性方法又包括矩形波串法、后向斜率法、旋转门算法及 PLOT 法.
2. 1 Huffman 编码算法
Huffman 编码是一种基于统计模型的可变字长编码,根据原始数据中不同字符出现的不同概率进行编码,对于出现概率较大的字符采用较短的编码,出现概率较小的字符采用较长的编码,使整体数据的平均编码达到最短. Huffman编码算法的缺点是,由于需要统计原始数据中字符出现的概率后,根据字符出现的概率构建出 Huffman 树才能对数据进行编码,所以需要扫描两次原始数据,这会消耗较多的时间.
2. 2 游程编码算法
游程编码也是一种基于统计模型的编码方法,是对连续出现多次的字符进行编码,用串长和字符值代替连续的字符. 游程编码不像 Huffman 编码需要扫描两遍原始数据,只需对原始数据一次扫描就可以完成编码,并且实现起来比较简单. 游程编码的缺点是只对具有大量连续字符的数据有较好的压缩效果,对普通的文本数据压缩效果比较差.
2. 3 LZ 系列编码
LZ 系列编码是基于字典模型的编码方法,这种模型的编码方法可分为两类. 第一类的思想是查找正在压缩的字符串是否在前面压缩过的数据流中出现过,如果是,则用指向出现过字符串的“指针”代替重复的字符串,以 LZ77 算法和 LZSS算法为代表. 这类算法在窗口中查找最长匹配字符串是一个比较复杂的过程,会消耗较多的时间,并且由于窗口的大小是有限的,对具有较长匹配的数据的压缩效果不是最佳.第二类的思想是从输入的数据中创建一个“字典”. 当数据压缩过程中遇到已经在词典中出现的字符串时,就以字符串在字典中的 “指针”代替重复的字符串,以 LZ78 算法和LZW 算法为代表. 这类算法需要在压缩过程中逐步构建“字典”,这就需要一定的存储空间,而且难以快速适应原始数据的特点.
2. 4 旋转门算法
旋转门压缩算法的原理是通过查看当前值和最后保存的值所构成的压缩偏移覆盖区,决定是否保存待压缩值. 如果该覆盖区可以覆盖两者之间的所有点,则不保留两者之间的所有点,如果两者之间有数据点落在该覆盖区之外,则保留前一个时间点的值,并以该时间点的值作为最后一个被保存值. 该算法是一种压缩能力强、压缩效果好的实时数据有损压缩算法.
3 、数控系统可靠性数据的压缩算法
数控系统可靠性数据归纳为静态数据,触发类数据,时间值,过程数据以及网络传输数据. 不同的压缩算法对数据的压缩效率是不同的,如果不考虑数据的特点,对所有的数据都采用同一种压缩算法,会大大降低数据的压缩效率. 所以本文分析数控系统不同类型数据的特点以及变化规律,针对不同类型数据分别设计有效的压缩算法以实现数据的高效存储.
3. 1 静态数据
从数控系统采集的静态数据包括数控系统型号、编号、软件 版本、硬件各部件版本,数控系统和伺服的参数,硬件诊断信息、软件诊断信息等数据. 分析发现这些数据中包含一些出现频率很高的词条,比如: 系统型号,故障类型,故障位置等.算 法 基 本 流 程( 见图 1) .
图 1 静态文本数据压缩流程图
LZW 算 法 是 一种高效的无损压缩算法,并且在压缩过程中不需要查找匹配字符串,这点在算法实现上比 LZSS 简单许多,但 是 LZW 算 法是在压缩过程中逐步建立的字典,其对原始数据特点的自适应过程较为缓慢,所以结合 LZW 算法针对数据特点做了简单改进,在对原始数据编码之前首先利用名词字符串对字典初始化,这些名词字符串由出现频率较高的名词条组成,然后利用LZW 算法进行压缩,相当于组合使用了静态字典和动态字典,这就解决了 LZW 算法字典自适应过程较慢的问题.
3. 2 触发类数据和时间值
在数控系统数据中存在像开关量型的触发类数据,以及具有周期性的时间值. 在对时间值差值处理后,这些数据都具有大量的连续字符,上文提到游程编码对具有大量连续字符的数据有相当好的压缩效果,所以针对这类数据采用游程编码算法会得到较高的压缩率.游程编码在处理不连续重复的字符时,会存储两个字节( 串长,字符) ,而原字符只有一个字节,也就是说使用游程编码处理这些不连续重复数据反而加大了存储空间,所以本文采用 PCX 文件中改进的 RLE 算法,将不重复的字符直接存入压缩文件,利用字节的高两位来区分是原数据还是压缩编码,高两位全为 1 代表串长,高两位不全为 1 代表原字符.算法基本流程( 见图 2) .
图 2 触发类数据压缩流程图
3. 3 过程数据
数控系统数据包含大量的运行状态数据,主要是轴坐标、进给速度、电流等过程数据. 由于旋转门算法实现简单,执行速度快,压缩效率高,所以在过程工业中较多利用该算法进行数据压缩. 但是数控系统可靠性测试的过程数据的压缩需要最大可能的保持原数据的特点,也就是说为了可靠性的评估和测试,对一些偏差数据也要保存下来,同时又不能影响到正常数据的解压恢复,所以不能直接应用旋转门算法对这些数据压缩.
旋转门算法根据当前值和最后保存的值所构成的压缩偏移覆盖区是否可以覆盖两者之间的所有点,来决定是否保留前一个时间点的值,它不能够对偏差数据进行处理,所以需要对其进行改进以满足可靠性测试的需求. 主要改进点: 设定一个判断偏差数据的阈值,若数据与预测数据之差超过阈值,则认定为偏差数据,需要保存. 并且为了确保解压时数据的准确性,对偏差数据的前后两个数据也需要存储,使解压数据不受偏差数据的影响. 如果为了判断数据是否是偏差数据,而对每一个数据都计算预测值,会耗费较多的时间,这就需要根据一定的方法来减少计算量. 分析发现: 偏差数据只可能在保存数据的后一个数据出现,也就是和最后保存的值所构成的覆盖区不可以覆盖两者之间所有点的那个数据,只需要对这些数据计算其预测值,分析是否是偏差数据. 预测值则利用前一个保存数据和偏差数据的前一个数据的线性外插法来计算. 为了进一步提高存储效率,可以提前对数据进行差值预处理后压缩.算法基本流程( 见图 3)
图 3 过程数据压缩流程图
3. 4 网络传输数据
从数控系统实时采集到的数据需要通过一定的格式及时的发送到远程进行处理,为了节约网络带宽,减少传输时间,有必要对网络传输数据进行压缩处理. 本文的数据传输格式采用 XML 格式,为了描述数据的意义,不同的数据需要不同的 XML 标签,在标签中包含不同类型的数据,显然该类数据的上下文关联性不强.一般采用无损压缩算法压缩文本数据,其中 LZ系列算法对于上下文关联性较强的数据能够取得较好的压缩效果,所以该类型数据利用 LZ 系列算法不能够获得较好 的 压 缩率. Huffman 编码对字节进行统计编码,需要扫描两次原始数据,会消耗较多的时间,不适合直接用于压缩数据. 通过分析利用 XML 格式传输的网络数据,发现 XML 标签内字符串的出现频率较高且比较固定,所以可以通过静态字典的方式首先对这些字符串压缩以及字符统计,再通过Huffman编码进行压缩,通过这种静态字典和 Huffman 编码结合的方式对数据二级压缩可以解决压缩率较低的问题,并且相比 Huffman 编码减少了压缩时间.算法基本流程( 见图4)
图 4 网络传输数据压缩流程图
4、 算法效率测试
原数据都存储在文件中,所以压缩过程中会不断地从文件中读写数据,这会对压缩和解压时间有一定的影响. 压缩算法的优劣主要从三个方面来判断: 压缩率、绝对误差、和时间,所以对无损压缩算法的测试主要包括压缩时间、解压时间、压缩率,对有损压缩算法的测试主要包括压缩时间、解压时间、压缩率、绝对误差.
CR 是压缩率,M 是压缩后文件大小,N 是原文件大小.AE 是绝对误差,yn是原文件数据,yn是压缩文件恢复数据,n是数据个数. 时间代表压缩时间和解压时间.
4.1 静态数据压缩效率
实验通过使用 LZW 算法、LZSS 算法、以及改进的 LZW算法分别对静态数据进行压缩测试,表 1 为测试结果.
表 1 静态数据在不同压缩算法下的压缩效率
由测试结果看出,结合静态字典的 LZW 算法减少了对出现频率较高的名词字符串逐步建立字典的过程,使这些字符串能够直接编码压缩,而不需要逐步加入字符的自适应过程. 相对于 LZSS 和 LZW 算法降低了压缩时间,提高了压缩率,具有较好的压缩效果.
4. 2 触发类数据压缩效率
根据触发类数据的特点,对其使用 PCX 文件的 RLE 算法和 RLE 算法进行压缩测试,结果如表 2 所示.
表 2 触发类数据的压缩结果
由测试结果看出,由于触发类数据具有大量连续的字符,所以使用 PCX 文件的 RLE 算法获得了较高的压缩率. 并且通过对不连续字符的压缩改进,相比原始 RLE 算法又进一步提高了压缩率. 对时间值进行差值预处理后获得的数据具有连续性特点,应用该 RLE 算法压缩也获得了很好的压缩效果.
4. 3 过程数据压缩效率
实验对从数控系统采集到的坐标位移数据使用旋转门算法和改进的旋转门算法进行压缩测试,其中在 t = 100 和 t =1000 处设置了偏差点,压缩结果如表 3 所示.
表 3 过程数据压缩结果
由表 3 测试结果看出,改进的旋转门算法和旋转门算法同样达到了很好的压缩结果,并且由图 5 和图 6 对比可以发现改进算法对第一个偏差点进行了特殊处理,对超过阈值的偏差点保存,并且对偏差点的前后相邻数据也保存处理,使其在解压时并没有影响到其他数据的恢复,使数据的绝对误差保持在一定范围,而第二个数据没有使用改进算法对偏差点处理,数据解压时会影响到前后数据的恢复.
图 5 过程数据压缩前曲线图
图 6 过程数据解压后曲线图
4. 4 网络传输数据压缩效率
实验通过对网络传输数据分别使用 Huffman 算法,LZW算法,LZSS 算法,以及静态字典结合 Huffman 算法的方式经行压缩,测试结果如表 4所示.
表 4 网络传输数据在不同压缩算法下的压缩结果
由测试结果看出,静态字典编码和 Huffman 编码结合的二级压缩方式比 Huffman 编码的压缩时间缩短了很多,虽然相比 LZW 算法和 LZSS 算法在压缩和解压时间上会有些不足,但是在压缩率上具有较大优势,对节约网络带宽很有帮助.
5、 结束语
数控系统的可靠性是制约数控系统发展的重要因素,数控系统的可靠性数据是可靠性测试的基础,可靠性数据的有效存储是必需的环节,数据压缩是实现数据有效存储的高效方法. 本文对数控系统不同类型可靠性数据设计了合适的压缩算法,改进 LZW 算法压缩静态文本数据,采用 PCX 文件中改进的 RLE 算法压缩触发类数据和时间值,改进旋转门算法压缩过程数据,并且对网络传输数据采用静态字典和 Huff-man 编码的二级压缩方式,实现了可靠性数据的高效存储.
来源: 中国科学院大学 中国中材股份有限公司 中国科学院 沈阳计算技术研究所, 沈阳高精数控智能技术股份有限公司
投稿箱:
如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com
如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com
更多相关信息