0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种DCS模拟量在计算机中存储中的特点及分部压缩方法

电子设计 作者:电子设计 2018-11-07 08:54 次阅读

导读:传统压缩方法对DCS 模拟量进行压缩效果不佳。要得到较好的压缩效果就要从模拟量在计算机中表示的方法入手。本文分析了DCS 模拟量在计算机中存储和表示方法及其特点,对原始数据进行预处理,使数据表现出较明显的冗余信息,然后对数据的不同部分,采用不同的压缩方法,每种压缩算法压缩模拟量数据的一部分。

与DCS 接口中,串行通讯是常见的接口方式。为了提高通讯效率,需要对通讯的数据进行压缩处理。DCS 模拟量的压缩方法中,常用整数表示工程量,即将模拟量的按其量程线性化处理为两字节正整数(0~65535),应用时再转换为工程量。这种方法由于要维护模拟量的量程表,不便于通信;另一类常用的压缩方法是采用LZW 等基于字典模型的压缩算法。模拟量数据是以单精度浮点数存放的,数据的冗余度很小,传统的压缩处理方法的压缩效果都不理想。

本文从模拟量在计算机中的表示方法入手,首先将模拟量预处理,再针对数据的不同部分采用不同的方法进行压缩,最后将压缩后数据组合起来。这样既充分考虑到了数据的特点,又充分利用了压缩方法的适应性。

1 模拟量的表示方法及特点

1.1 模拟量的表示方法

DCS 模拟量用单精度浮点数表示,占用4 个字节,可以精确到7 位有效数字。按文献[3] 标准(以下简称标准)表示。设一个浮点数R,可使用三元组{S,E,M}来表示:S 为符号位,用1 位表示。

S = 0 表示R 为正数,S = 1 表示R 为负数;E 为指数,用8bits表示。实际指数要经E - 127 计算后得到;M 为尾数,用23bits 表示。浮点数R 为S×1.M E(1 为隐含的一位尾数,不在M 中表示)。

1.2 模拟量的特点

数据压缩需要信息有足够的冗余度。以标准表示的模拟量不利于压缩。即便差值很小的数据,在计算机中表示结果差别很大,如1234.5 在计算机中用四字节表示为:68 154 80 0 ,而1234.6表示为:68 154 83 51,仅有符号位和指数位表示相同,尾数完全不同,这样就造成了压缩的难度。

现以200 个模拟量数据为样本分析其特点。样本数据随机产生,其范围为[0.0,1000.0].按照标准存储的数据从字符概率分布较平均,若用通用数据压缩方法压缩这些数据,得不到很好的效果。

虽然浮点数的信息冗余度很小,但若用其表示DCS 模拟量,仍有以下特点:

(1)各工程量数值多数大于零,因此标准表示中,符号位S 大多为零;

(2)各工程量的量程相差约为0.0001~10000 倍,因此标准表示中,指数差值约为-4 ~ 4 ;

(3)从数据精度考虑,工程量一般保留5 位有效数字即可。因此标准表示中,尾数部分有可压缩的信息。

2 模拟量的预处理

模拟量预处理的目的是为了产生更多的冗余信息,获得更好的压缩效果。通信时一般将模拟量按测点表以自然顺序排列。根据1.2 节的分析可知,若将模拟量按其三元组顺序排列,即:N 个模拟量数据,其自然排列顺序为{S1,E1,M1}、{S2,E2,M2}、…、{SN,EN,MN},共占用4N 字节。压缩前将模拟量序列按字节重新排列为:

S1S2…SNE1E2…ENM1M2…MN.因符号位S 为1 位,重新排列后将8个模拟量的符号位合并为1 字节。故重新排列后N 个模拟量共占用字节数为4N+N/8(+1) 字节。(括号中+1 字节表示N 不是8 的整数倍时总字节数+1)。

图1(a) 为样本数据经重新排列后字节分布情况。可以看出数据已呈现明显的规律性:第一部分数据[1,25] 为数据的符号,是样本数据的符号。样本数据均为正,因此由符号位构成的这部分数据全为零;第二部分数据[26,225] 为N 个样本数据的指数,根据1.2 节分析可知,各数据的指数差值大约在-4~4 之间,故有较大的压缩空间;最后一部分数据[226,825] 为N 个样本的尾数,呈随机分布。

第一次预处理是数据无损的。考虑到DCS 模拟量精度要求有5 位有效数字即可。根据信息理论,1 位十进制数可以精确表示log210 ≈ 3.32 位二进制数。单精度浮点数表示模拟量时,4 位二进制约可表示1 位十进制。因此,在精度满足DCS 系统要求的情况下,可以减少一个字节尾数。第二次预处理将尾数的最低字节置零,进一步提高数据的冗余信息。图1(b) 为第二次预处理后的字节分布情况。可以看出,相比第一次预处理,数据最后一部分[626,825] 全为零,可以更好地被压缩。

一种DCS模拟量在计算机中存储中的特点及分部压缩方法

3 压缩算法的选择

3.1 压缩算法选择原则

压缩算法要根据原始数据的特点以及对速度、性能的综合要求来选择。模拟量的压缩应用在数据通信中,对速度的要求较高。

因此压缩算法不能过于复杂,运算量要小。

从预处理后的样本数据可以看出,每一部分数据的特点不同,因此选择压缩算法时应针对不同特点的数据采用不同的压缩算法来处理。第一部分数据(由符号位组成)为零(或绝大部分为零),可以采用游程编码(Run Length Encoding);第二部分数据(由指数组成)数值间相差不大,可用差分编码(Differential Encoding);第三部分数据(由部分尾数组成)随机性较大,压缩效果不明显,因此不进行压缩;第四部分数据(由最低字节尾数组成)均为零,可采用游程编码。

3.2 差分编码

差分编码又称相关编码。当源数据之间差值不大时,用数据间的差值代替源数据序列。较小的差值可以用较少的位数表示。本文用4 位二进制表示一个差值。

源数据中序列E1E2…EN 为数据的指数,其差值约在-4 ~ 4之间,用4 位二进制表示此差值:最高位用来表示差值的符号,其余三位表示差值,-7 保留。可表示的差值范围为-6~+7 ;若差值大于此范围,则不压缩,用原码输出。为了区分是差值输出还是原码输出,用保留的-7 表示下一字节为原码输出。N 字节源序列,若每一字节都可以用相邻差值来表示,其理想压缩比为1:(N/2+1)/N=1:0.5+1/N.

一种DCS模拟量在计算机中存储中的特点及分部压缩方法

图2 为样本数据差分编码压缩后字节分布。可以看到,源数据中表示指数的部分已经被有效压缩。样本数据由825 字节压缩到726 字节,实际压缩率为88.0%.

3.3 游程编码

游程编码的思路是:若数据项d 在源数据中连续出现n 次(n称为重复因子),则在输出流中以nd 代替n 个重复项d.游程编码也可能出现压缩比大于1 的情况。为了区分输出项是重复因子还是被压缩数据,规定当重复因子n ≥ 3 时,输出ddd(n-3) ;n < 3时,输出n 个d,即不压缩输出。另外重复因子3 ≤ n ≤ 255,若数据项d 重复次数大于255,则要重新进行游程编码。设源数据长度为N,包含M 次重复,每次重复平均长度L,则游程编码压缩比为1:(N-M×(L-4))/N.

样本数据经预处理后第一部分(由符号位组成)和第四部分(由最低位尾数组成)可以用游程编码。这部分数据可以获得很高的压缩比。第一部分理想压缩比为1:4/25=1:0.16 ;第四部分理想压缩比为1:4/200=1:0.015.

一种DCS模拟量在计算机中存储中的特点及分部压缩方法

图3 为经游程编码压缩后的数据分布图。由上一级差分编码压缩后的726 字节压缩至510 字节,实际压缩比为1:0.70.

4 结论

200 个样本数据经预处理,对一部分数据进行差分编码、对另一部分数据进行游程编码,最终有510 个字节。因此综合压缩比为1:510/800 ≈ 1:0.64,节省约36% 的空间。由于样本数据的随机性,因此可以推广到一般情况。得到以下结论:

(1)分部压缩方法可以获得约1:0.64 的压缩比;

(2)分部压缩方法为二级压缩算法构成。分别针对模拟量中不同信息类型的数据进行分部压缩;

(3)差分编码和游程编码的算法的复杂度低,其时间复杂度和空间复杂度均为O(n),故算法效率很高。

(4)压缩过程未涉及到数据的工程特性,因此算法可推广至工业过程控制领域,具有一定的实用价值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    12

    文章

    3847

    浏览量

    84639
  • 计算机
    +关注

    关注

    19

    文章

    6631

    浏览量

    84364
  • DCS
    DCS
    +关注

    关注

    19

    文章

    562

    浏览量

    49454
收藏 人收藏

    评论

    相关推荐

    【量子计算机重构未来 | 阅读体验】 跟我起漫步量子计算

    首先感谢发烧友提供的试读机会。 略读周,感触颇深。首先量子计算机作为一种前沿技术,正逐步展现出其巨大的潜力,预示着未来社会和技术领域的深刻变革。下面,我将从几个方面探讨量子计算机
    发表于 03-13 19:28

    【量子计算机重构未来 | 阅读体验】+ 了解量子叠加原理

    )。通过逻辑门来执行操作二进制数据,逻辑门是一种基本电路,它可以将个或多个输入转换为输出。逻辑门包括与门、或门、非门等等,将许许多多逻辑门组合起来就可以构建复杂的电路来执行各种操作,电子计算机中
    发表于 03-13 17:19

    【量子计算机重构未来 | 阅读体验】+量子计算机的原理究竟是什么以及有哪些应用

    来的,看了本书第部分内容,有了点认识,但是感觉还是迷糊,还是没有弄清楚什么是量子计算机,尤其是其原理。以下是个人读完之后的些理解。 书中1.4章节,以解决交通拥堵问题为例进行了距离,对比了传统
    发表于 03-11 12:50

    量子计算机的作用有哪些

    的影响,被认为是未来计算机技术的重要发展方向。 一、量子计算机的基本概念 量子计算机的核心是量子比特,与经典计算机中的比特不同,量子比特可以同时处于0和1的状态,这种现象被称为“叠加态
    的头像 发表于 12-30 14:32 624次阅读

    NOR FLASH对计算机存储有何作用?

    NOR FLASH是一种非易失性存储技术,对计算机存储具有重大影响,闪存其独特的特性和功能影响着计算机
    的头像 发表于 12-05 10:32 390次阅读

    计算机中的ELF文件解析

    关于计算机的文件有很多种,今天分享一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。
    发表于 09-13 10:12 498次阅读
    <b class='flag-5'>计算机中</b>的ELF文件解析

    工业计算机的应用

    工业计算机半导体设备上的应用,具体在哪方面。比如说图像处理使用什么样的计算机,工业控制使用哪方面的
    发表于 09-12 14:19

    cmos技术在计算机中的应用

    cmos技术在计算机中的应用 CMOS技术(互补金属氧化物半导体技术)是现代电子设备制造过程中使用最广泛的技术之一。CMOS技术结合了MOSFET晶体管的特性,利用正负电荷的互补作用,使得芯片的功耗
    的头像 发表于 09-05 17:39 1046次阅读

    计算机设计8位字节为何最受欢迎?

    这个整数表示方法对我来说真的很奇怪 —— 为什么不用更有效率的二进制来存储整数呢?在早期的计算机中,效率非常重要!
    的头像 发表于 06-15 09:26 625次阅读
    <b class='flag-5'>计算机</b>设计8位字节为何最受欢迎?

    通俗点什么叫量子 量子计算机原理及用途

     量子计算机一种基于量子力学原理设计的计算机,它使用量子比特(qubit)而非传统计算机中的比特来存储和处理信息。
    发表于 06-14 17:34 2446次阅读

    有没有办法打开和读取存储Linux计算机上的些文件?

    有没有办法打开和读取存储 Linux 计算机上的些文件? ESP8266 使用 Arduino,Ubuntu 12.04.2 我想根据家庭自动化
    发表于 05-12 08:19

    量子计算机中的高频与高速

    在量子计算机中,同轴连接器和线缆是一种常见的传输和控制微波信号的技术。这些组件可以帮助将信号从外部控制器传输到量子比特,从而实现量子计算的操作和运行。
    的头像 发表于 05-11 16:30 784次阅读
    量子<b class='flag-5'>计算机中</b>的高频与高速

    计算机通信的基本特点

    计算机通信是一种以数据通信形式出现,在计算机计算机之间或计算机与终端设备之间进行信息传递的方式。它是现代
    发表于 05-09 17:07 764次阅读

    计算机通信的特点

    计算机网络通信的一个显著特点是“间歇性、突发性”;网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机计算机计算机
    发表于 05-09 16:58 698次阅读

    如果没有或不想使用面包板,有没有一种方法可以简单地连接到计算机USB以进行编程和供电?

    如果我没有或不想使用面包板,那么 esp8266 或 esp32 板是正确的?有没有一种方法可以简单地连接到我的计算机 USB 以进行编程和供电?
    发表于 04-27 08:07