新闻中心

EEPW首页 > 测试测量 > 设计应用 > LabVIEW深入探索之绝对时间、通用时间和相对时间

LabVIEW深入探索之绝对时间、通用时间和相对时间

作者:时间:2017-02-27来源:网络收藏

  作为一种面向工程应用的编程语言,Labview提供了非常丰富的时间操作函数。8.X后又提出了新的有关时间的数据类型,时间标识(TIMESTAMP)。时间标识早期通常翻译成“时间戳”,实际上是一种改进型的数值控件,从时间标识控件所在的控件选板就可以初步判断出,时间标识就是特殊的数值控件。

  一、时间标识的内存映射

  要想真正了解一种数据类型,首要的问题是要搞清楚该数据类型在内存中或者文件中是如何存储的。我们知道数值型控件可以选择控件所包含的数据类型,比如双精度浮点数、整型数、32位整型数、16位整型数等等。

  时间标识控件是不允许选择它所包含的数据类型的,这说明时间标识所包含的数据类型是固定的。从帮助文件中,我们可以找到时间标识在内存中的存储方式--映射。

  LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64位二进制)表示自1904年1月1日周五凌晨[01-01-190400:00:00]以来无时区影响的所有秒数。后两个不带符号整数(64位二进制)表示小数秒部分。

 LabVIEW利用16个字节(128位)表示时间信息,其中前8个字节(64位)由两个I32构成,表示从0时刻开始经历过的秒数。后面8个字节为U64数据,表示秒的小数部分。

  二、时间标识与双精度数之间的相互转换

  在时间标识出现以前,经常用双精度数表示从0时刻经历过的秒数。我们知道双精度数所占的内存空间也是8个字节,与时间标识相同。但是时间标识实际上是定点数,它的小数点位置是确定的,因此实际上双精度数表示时间与时间标识相比,不如时间标识精确。

  采用数值转换函数就可以实现时间标识和双精度数之间的相互转换,如下图所示:

  三、强制转换时间标识至数值

  既然我们已经知道了时间标识在内存中的存储方式,我们自然就可以通过强制转换函数分解出时间标识的两个组成部分,秒和秒的小数部分。

  因为时间标识占有8个字节的内存空间,并分成前后各4个字节,因此可以创建一个簇或者数组来表示它,下面的例子创建一个簇,包含3个元素。前两个元素表示秒的整数部分,第3个元素表示秒的小数部分。

  从上图可以看出,秒的整数部分非常明显。小数部分就不容易分辨出来了,这要非常了解浮点数的二进制表示方式才可以。


上一页 1 2 下一页

评论


技术专区

关闭