EOL生产文件压缩机制研究――压缩算法

时间:2022-03-16 06:48:01

EOL生产文件压缩机制研究――压缩算法

摘要:汽车的电子化程度是衡量一个国家汽车工业发展水平的重要标志。随着汽车业的发展,电子控制设备急剧增加,汽车自动化程度也越来越高。ECU是一计算机设备,负责控制执行部件运行;诊断并记录执行部件故障,获取执行部件运行状态。ECU与被控制设备配套工作在生产线完成。现以发动机ECU为例说明ECU与发动机配套生产过程。

关键词:ECU;数据压缩

中图分类号:TP751文献标识码:A文章编号:1009-3044(2010)13-3447-01

The Research of Compression Mechanism in EOL Production Document: Compression Arithmetic

HE Jian-shu,WANG Ming-ming,LI li

(Computer Office, Aviation University of Air Force, Changchun 130022, China)

Abstract: Automobile Electronization is an impotent sign of the development of automobile in a country. With the development of automobile, automobile electronization increased year-by-year. ECU is a computational equipment which controls the running of execution unit; diagnoses and records the fault of execution unit, gets the running status of execution unit. There are many kinds of ECU, The associated work of ECU and the equipment which should been controlled has been finished at the product line. Now we introduce the ECU supported engine production process through the ECU engine.

Key words: ECU;ompression Arithmetic

1 概述

现以发动机ECU为例说明ECU与发动机配套生产过程的特点,ECU直译为“电子控制单元”,是一计算机设备,负责控制执行部件运行;诊断并记录执行部件故障,获取执行部件运行状态。以下是生产过程的简单描述:

1) 发动机装配线:负责组装发动机。

2) ECU灌装生产线:负责将ECU所需的程序,初始化数据,初始控制数据灌装到ECU内。为ECU运行做好必备条件。

3) ECU与发动机配套:将ECU与所配套的发动机电子接口连接,并且完成以下工作:

故障诊断;

发动机最佳运行性能调整;

匹配参数。

4) 配套工作结束。

灌装到ECU内程序和数据以文件的形式保存在生产数据库服务器内。ECU灌装时,首先经过网络将文件传送到车间,然后下载到ECU灌装设备,经过ECU灌装设备装入到ECU内。

2 编码和解码的原理

根据HEX文件的特点采取了几种方案的比较。HUFFMAN编码需输入整个文件,并为每个文件建立一个概率表,只要这些概率偏离了纯粹均匀分布,就可以对数据进行压缩了。但是,若符号使用频率不刚好为1/2的整数倍次方,其压缩效果并不好,另一个缺点则是每个符号至少得编成一个位。HUFFMAN编码还需要传输一份已压缩数据的概率表的拷贝,如果没有这个拷贝表,还原程序就无法正确地对数据解码。所以这种编码比较复杂,并且压缩时间较长,在时间域上不适合应用到ECU上。字典编码对于未能在字典中匹配到的字符,直接输出该字符。此外,无论匹配短语的长度为多少,都使用4bit位来表示匹配长度,所以在空间域上也不适合。所以根据以上的比较针对HEX文件特点设计了一个适合它的压缩算法。

HEX文件记录中的数字都是16进制格式来表示的,两个16进制数字代表一个字节这一特点设计了一个压缩数据的编码表格,在表格中我们设计出压缩前后所对应的数值,在压缩数据的时候只要按照上面的编码表把每个字符转化成一个4位的二进制数存储起来就可以了,这种压缩方法的压缩速度要比其它压缩算法快很多,并且能够保证压缩率接近50%。从而保证了生产数据压缩和传输的效率,也保证了压缩率。

压缩算法描述如下:

UPDATEF.HEX文件记录中的数字都是16进制格式来表示的,我们取出两个字节,把这两个字节分别存储在HIB和LOB中;

把HIB左移四位,作为高位与LOB中数据相加,得到新的一个字节;将这个字节保存在一个新的字符串里,形成一组新的十六进制数据。

压缩数据按钮的代码如下:

int CDataCompression::Encode(CString data, char *encodedata)

{ int len=(data GetLength()-1)/2;

BYTE HiB,LoB,EnCodeByte;

int index=0;

if(len>0)

{ encodedata[index]=(BYTE)data.GetAt(0); //第一个字母不编码

index++;

for(int i=0;i

{HiB=(EncodeTable[(char)data.GetAt(i*2+1)])

LoB=(EncodeTable[(char)data.GetAt(i*2+2)]);

EnCodeByte=HiB+LoB;

encodedata[index]=EnCodeByte;//第一个字母不编码

index++;

} } return index;

}

参考文献:

[1] 吴乐南.数据压缩[M].电子工业出版社,2005.

[2] 袁玫,袁文.数据压缩技术及其应用[M].电子工业出版社,2004.

上一篇:遗传算法的组卷策略研究 下一篇:虚拟平台技术的研究与应用