labview之时间-转自陈老师博客_第1页
labview之时间-转自陈老师博客_第2页
labview之时间-转自陈老师博客_第3页
labview之时间-转自陈老师博客_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LabVIEW 深入探索之绝对时间、通用时间和相对时间 2011-04-29 LabVIEW深 入 探 索 07:47 加入收藏 作为一种面向工程应用的编程语言,LV 提供了非常丰富的时间操作函数。8.X 后又提出了 新的有关时间的数据类型,时间标识(TIMESTAMP)。时间标识早期通常翻译成 “时间戳”, 实际上是一种改进型的数值控件,从时间标识控件所在的控件选板就可以初步判断出,时 间标识就是特殊的数值控件。 一、时间标识的内存映射 要想真正了解一种数据类型,首要的问题是要搞清楚该数据类型在内存中或者文件中是如 何存储的。我们知道数值型控件可以选择控件所包含的数据类型,比如双精度浮点数、整 型数、32 位整型数、16 位整型数等等。 时间标识控件是不允许选择它所包含的数据类型的,这说明时间标识所包含的数据类型是 固定的。从帮助文件中,我们可以找到时间标识在内存中的存储方式-映射。 LabVIEW 将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64 位二进 制)表示自 1904 年 1 月 1 日周五凌晨01-01-1904 00:00:00以来无时区影响的 所有秒数。后两个不带符号整数(64 位二进制)表示小数秒部分。 LV 利用 16 个字节(128 位)表示时间信息,其中前 8 个字节(64 位)由两个 I32 构成, 表示从 0 时刻开始经历过的秒数。后面 8 个字节为 U64 数据,表示秒的小数部分。 二、时间标识与双精度数之间的相互转换 在时间标识出现以前,经常用双精度数表示从 0 时刻经历过的秒数。我们知道双精度数所 占的内存空间也是 8 个字节,与时间标识相同。但是时间标识实际上是定点数,它的小数 点位置是确定的,因此实际上双精度数表示时间与时间标识相比,不如时间标识精确。 采用数值转换函数就可以实现时间标识和双精度数之间的相互转换,如下图所示: 三、强制转换时间标识至数值 既然我们已经知道了时间标识在内存中的存储方式,我们自然就可以通过强制转换函数分 解出时间标识的两个组成部分,秒和秒的小数部分。 因为时间标识占有 8 个字节的内存空间,并分成前后各 4 个字节,因此可以创建一个簇或 者数组来表示它,下面的例子创建一个簇,包含 3 个元素。前两个元素表示秒的整数部分, 第 3 个元素表示秒的小数部分。 从上图可以看出,秒的整数部分非常明显。小数部分就不容易分辨出来了,这要非常了解 浮点数的二进制表示方式才可以。 小数部分虽然有 4 个字节(64 位)构成,但是实际上只有前 8 位(一个字节)会发生变 化,这也说明了“获取时间日期(秒)”函数所能达到的最高精度是 1/256 秒。 小数部分的 HEX 进制 0X60 是如何对应 0.375 秒的那? 0X60 用二进制表示为:0110 0000,所以它表示的小数为: 0*0.5+1*0.25+1*0.125+。=0.375 四、什么是 0 时刻 当我们从控件选板中建一个新的控件时,控件此时的值为默认值。数值型控件的默认值如 果没有重新设置,一般是 0。时间标识作为特殊的数值控件,当我们新创建时,时间标识 控件的默认值是什么? 从上图可以看出,新创建的时间标识的默认值实际上也是 0.从控件上看,数值 0 对应的时 间为 0,日期不显示。下面我们修改当前时间控件,把时间修改成 8 点零 1 秒。 从上图可以看出,LABVIEW 中的时间都是从 1904 年 1 月 1 日 8 点开始计算的,这个时 间就是 0 时刻。我们计算时间时实际上计算的是从此刻开始经历的秒数。经历过的秒数可 以是负数,表示此时计算的时间在 0 时刻之前。 回过头来再看看帮助文件是如何定义的: LabVIEW 将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64 位二进 制)表示自 1904 年 1 月 1 日周五凌晨01-01-1904 00:00:00以来无时区影响的 所有秒数。后两个不带符号整数(64 位二进制)表示小数秒部分。 帮助文件中定义的和我们图中演示的是不同的,原因在于我们使用的时间是包括时区的, 世界各地的所在的时区是不同的,因此定义的 0 时刻是无时区影响的。 无时区影响的时间日期,LABVIEW 中称作“通用时间”。由于我们所使用的计算机操作系 统中的时间日期是包括时区的,所以只有非常特别的场合才会涉及到“通用时间”,绝大多 数场合谈到的都是“绝对时间”和“相对时间” 五、绝对时间和相对时间 数值控件、时间标识、格式化字符串、波形图、波形图表等控件均可以设置为时间格式, 设置为时间时要求我们选择“绝对时间”或者“相对时间”。所以我们有必要搞清楚什么是“绝 对时间”和“相对时间”。 从 0 时刻开始计时的时间称作绝对时间,我们通常说的“系统时间和日期”指的就是绝对时 间。“相对时间”在其它编程语言中,称作“时间跨度”,相对时间并不关注开始计时的时刻, 相对时间关注的是两个绝对时间的差值,比如秒数百米赛跑用时几秒,用的就是相对时间。 绝对时间可以用年、月、星期、日、时、分、秒、小数秒来表示,但是相对时间是用日、 时、分、秒、小数秒来表示的,这与我们日常的习惯是有很大区别的。 在日常生活中,我们经常说两年过去,几个月过去了,这样的说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论