LabVIEW下文件读写的数据处理程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组 是 LabVIEW 常用 的 数 据类 型 之 一 , 由 数 据 类 型 、数 据 索引和数据组 成 , 常 用的 数 组 函数 有:Array Size 返 回输 入 数 组 的 元 素 个数 , Index Array 函 数 返回 输 入 数组 中 由 输 入 索 引 指 定 的一个元素。
3 字 符 串 、数 组 和 簇 操 作 函 数
LabVIEW 提供了功能强大且简 单 易 用的 字 符 串操 作 函 数, 供 开 发 人员 完 成 字符 串 的 合成 、分 解 和转 换 。其 中常 用 的 字 符 串 常 量 包 括:String Constant (字 符 串 常 数)、Carriage Return Con- stant(回 车 符)、Line Feed Constant(换 行 符 )、End of Line Constant (回车换行符) 及 Tab Constant (制表符)。常用的字符串函 数 有: Concatenate Strings 将字符串和一维字符串型数组按前后顺序合 成一个新字符串, Spreadsheet String To Array 将表单格式的字符


图 1 实测数据文件格式 实测数据经计算得到的功率谱密度, 也以文本文件的形式 存储在硬盘上, 第一行为频率值, 每一个通道的功率谱密度是 按频率递增的顺序, 以行的形式存储, 如图 2 所示。
图 2 功率谱密度文件格式 编写功率谱 密 度 计算 程 序 , 需要 考 虑 如下 关 键 问题:Lab- VIEW 提供了计算功率谱密度的函数, 该函数 的 输 入端 要 求 的 数据类型是哪种, 输出端的数据又是哪种类型? 从文件中直接 读取的数据类型能否满足输入端的要求, 如不能满足, 又需要 进行怎样的操作? 经计算从输出端输出的功率谱密度数据能否 直接存储在文本文件中, 如果不能, 又需要进行怎样的变换? 参 照 LabVIEW 提 供 的帮 助 文 档和 示 例 , 并 经 反 复 推 敲 , 编 写 出 了 计算功率谱密度的程序, 包括如下功能模块:(1) 数据读取及转 换, (2)计算自谱密度函数, (3)结果显示及存储。 数据读取及转换模块编写思路为:如图 3 所示, 首先打开数 据文件, 读取数据, Read from Text File 函数输出 的 是字 符 串 , 而 FFT Power Spectral Density 函 数 输 入 端 要 求 的 是 时 域 信 号 , 因 此需要 进 行 数据 转 换 , 具体 过 程 为字 符 串 经 Spreadsheet String To Array 函 数 转 换为 二 维 字符 串 数 组 , 利 用 Index Array 函 数 对 数 组 按 列 进 行 索 引 , 输 出 一 维 字 符 串 数 组 , 然 后 经 Fract/Exp String To Number 函 数 将 一 维 字 符 串 数 组 转 换 为 一 维 浮 点 型 数 组, 最 后 经 Build Waveform 函 数 将 文 本 文 件 中 的 数 据 还 原 成 时 域信号。由于每个文件中存储了 16 个通道的实测数据, 所以要 将以上函数放在 While Loop 结构中, 从 0 到 15, 共循环 16 次。
簇(cluster)类 似 于 C 语 言 中 的 struct, 可 以 包 含 不 同 的 数 据 类型。在众多的簇函数中 , 最重 要 的 两个 函 数 是 Bundle 和 Un- bundle 函数。Bundle 函数用于将若干独立元素组合在一个新簇 中, 或者替换 现 有 簇中 的 元 素。Unbundle 函 数 用 于从 簇 中 提取 单个元素, 输出端按簇中元素的编号顺序从上到下排列。
图 3 数据读取及转换 计 算 功 率 谱 密 度 相 对 较 简 单 , 关 键 是 要 对 FFT Power Spectral Density(PSD)函 数 有 一 个 全 面 了 解 , 该 函 数 输 出 的 功 率 谱密度是一个包含三个元素的簇, 这三个元素分别是频率初始 值 f0(双 精 度 数 ), 频 率 间 隔 df(双 精 度 数 ), 及 功 率 谱 密 度 幅 值 magnitude(一维双精度数数组)。利用 Unbundle By Name 函数将 幅值 magnitude 提取出来, 经 Sample Compression 函数 进 行 平滑 处理, 之后再经 Bundle 函数将三个元素合并为簇供结果显示和 存储模块使用。
穆立茂: 硕士 讲师 基金项目:军队科研计划项目(编号不公Biblioteka Baidu)
的数 据 , 而且 很 容 易随 机 访 问 数 据 , 但 是 只 有 LabVIEW 可 以 读 取 或 处 理 这 种 格 式 的 文 件 。LabVIEW 测 试 数 据 文 件 有 两 种 格 式 , 一 是 扩 展 名 为.lvm 的 基 于 文 本 的 测 试 数 据 文 件 , 它 是 一 种 以 制 表位 Tab 分 隔 的文 本 文 件, 也 可 以 用字 处 理 软 件 或 电 了 表 格 程 序打 开 , 除 了数 据 以 外, 还 包 括 生成 数 据 的日 期 、时 间等 信 息 ; 另 一 种 是 扩 展 名 为.tdm 的 二 进 制 测 试 数 据 文 件 , 它 可 以 在 不 同 的 虚 拟 仪 器 软 件 间 共 享 , 如 LabVIEW 和 DIAdem, 与 基 于 文本的测试数据文件相比, 具有占用磁盘空间少, 存取速度快, 及提高浮点数精度等优点。
处理函数和现代的高级信号分析工具, 而且还提供了一套方便
灵 活的 文 件 操作 工 具 , 虽然 在 LabVIEW 的 帮 助 中 有 不 少 关 于
文件操作的示例, 但仅是对文件操作基本功能的介绍, 而工程
实践中遇到的不单单是简单的文件操作, 还涉及直接从文件中
读出的数据往往不能用于数据处理, 如何操作才能满足相应的
2 文件格式的选择
LabVIEW 提 供 的 文 件 I/O 功 能 函 数 可 以 读 写 以 下 三 种 格 式 的文 件:文 本 文 件 , 二 进 制 文 件 、数 据 记 录 文 件 和 测 试 数 据 文 件。其中文本文件的优点是容易使用和共享, 可以用字处理软 件或电子表格程序来读取或处理文本文件中的数据, 文本文件 的缺点是占用的磁盘空间较大, 存取速度慢, 不能随机地访问 其 中 的 某 个 数 据 而 且 对 于 数 值 可 能 会 损 失 一 些 精 度 。二 进 制 文 件的优点是存取速度快, 格式紧凑, 它使用固定的字节长度存 储数据, 因此节省了存储空间, 还可以随机的访问文件中任何 一个数据。数据记录(Datalog)文件也是二进制格式文件, 它以记 录序列的形式存放数据, 一个记录中可以存储几种不同类型的 数据, 但是各个记录的数据类型必须一致, 适合存储复杂结构
- 84 - 360元 / 年 邮局订阅号: 82-946
《现场总线技术应用 200 例》
您的论文得到两院院士关注
数采与监测
串 转 换 成 预 先 设 置 好 数 据 格 式 的 数 组 , Array To Spreadsheet String 将 n 维数组转换成字符串格式的表单, Fract/Exp String To Number 将输入的字符串中的数字字符转换成浮点数。
数采与监测 文章编号:1008- 0570(2008)06- 1- 0084- 02
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 测 控 自 动 化 )2008 年 第 24 卷 第 6-1 期
La b VIEW下文件读写的数据处理程序设计
De s ig n a tio n o f Da ta Pro ce s s in g Pro g ra m Ba s e d o n Da ta File Re a d - w rite Un d e r La b VIEW
无论是哪种格式的文件, 文件读写的基本操作流程都是一 样的, 包括三个步骤: 打开一个己存在的文件或创建一个新文 件; 对文件读或写; 关闭文 件。除 此 之 外, LabVIEW 的 文 件 操作 还 包 括文 件 或 路径 的 改 名与 移 动 , 改变 文 件 属性 , 创 建 、修改 与 读取系统设置文件, 记录前面板对象数据等方面的内容。
处理要求, 以及数据处理完毕后如何操作才能存储为满足格式
要 求 的 文 件 等 问 题 。所 以 文 件 操 作 实 际 上 并 不 仅 限 于 简 单 地 文
件读写, 为此, 下面以随机振动环境数据的功率谱密度计算程
序设计为例, 说明数据读写操作功能的具体实现, 希望通过该
例能丰富大家的编程经验。
(军械工程学院) 穆 立 茂 黄 海 英 张 靖
MU Li-mao HUANG Hai-ying ZHANG J ing
摘要: 针 对 基 于 LabVIEW 平 台 的 数 据 处 理 程 序 设 计 中 , 常 遇 到 的 数 据 文 件 的 读 写 及 数 据 格 式 的 转 换 等 问 题 , 以 实 测 随 机 振
4 随机振动环境数据的功率谱密度 计算程序设计
先 对 待 处 理 实 测 数 据 进 行 简 要 的 说 明 。实 测 数 据 以 文 本 文 件的 形 式存 储 在 硬盘 上 , 文 件中 包 含 16 个通 道 的 数据 , 每 个 通 道 的 数 据 是 按 时 间 顺 序 , 以 列 的 形 式 存 储 的 , 所 以 共 有 16 列 , 如图 1 所示。
实际应用中到底采用哪种格式, 应遵循如下原则:如果希望 让其他的软 件(譬 如字 处 理 程序 或 者 电子 表 格 程序)也 可 以访 问 数据, 就需要将数据存储为 ASCII 格式; 如果需要完成随机读写 数据或者速度和磁盘空间要求严格的话, 选用二进制文件格式 比较合适, 因为二进制文件比文本文件更节省磁盘空间且读写 速 度 更高 ; 如 果 仅在 LabVIEW 范 围 内 读 写 数 据 , 而 且 需 要 存 储 不同类型的数据时, 宜采用数据记录格式文件, 因为它可以把不 同的数据类型存储到同一个文件记录中, 类似于数据库文件。


图 4 计算功率谱密度 结 果 显 示 的 思 路 是 实 现 16 个 通 道 的 功 率 谱 密 度 分 别 显 示 , 因 此 将 负 责 每 一 通 道 结 果 显 示 的 Waveform Graphs 置 于 Case 结 构 的 一 个 子 框 图 中 , 每 处 理 完 一 个 通 道 的 数 据 , 其 结 果 随即显示出来。结果存储的实现稍复杂些, 具体思路为:如果当 前要存储的是 0 通道的功率谱密度, 则构造如图 2 所示的前两 行数值, 第一行是频率值, 第二行是 0 通道的功率谱密度值; 如 果当前要存储的是其他通道的结果, 则只需构造一行数值, 也 就是该通道的功率谱密度值。如图 5 所示, 当通道数等于 0 时, 布尔值为 True, 则执行 Case 结构中 True 子框图中的子程序, 首 先经 Array Size 函数计算一维数 组(功 率谱 密 度 值)的 元 素 数量 , 也是第一行频率值的数量, 减去 1, 作为 For Loop 结构的循环次 数, 将 第 一 个 频 率 值 f0+df/2 设 置 为 该 循 环 的 初 始 值 , 增 量 为 df, 循环结束后, 即构造出第一行从第二个频率值开始到 最后 一 个频率值结束的频率值, 而字母 F 和第一个频率值单独构造, 然后 Concatenate Strings 函数将它们合并成第一行, 频率值最初 为双精度数, 合并前需经 Number To Fractional String 函数转换 为小数形式的字符串, 而 0 通道的功率谱密度的幅值 magnitude 为一维双精 度 数 组, 需 经 Array To Spreadsheet String 函 数转 换 为字符串格式的表单, 并与第一行以回车换行符作为间隔合并 在 一 起 存 储 到 文 件 中 。 如 图 6 所 示 , 当 通 道 号 为 其 他 值(1 ̄15) 时 , 布 尔 值 为 False, 则 执 行 Case 结 构 中 False 子 框 图 中 的 子 程 序, 只存储各通道的功率谱密度值即可。
技 Key wor ds: LabVIEW;Data r eading;wr iting and tr ansfor mation;Data pr ocessing
术 1 引言

实测数据的处理是完成现场测试工作后要进行的一项基
础性工作, 而实测数据一般是以文件的形式存储在存储设备上
新 的, 因此 依 托 LabVIEW 平台 进 行 数据 处 理 的 过 程 当 中, 经 常 会 涉及到数据文件的读写操作。LabVIEW 不仅提供了经典的信号
动环境数据的功率谱密度计算程序设计为例, 给出了实用的程序设计技巧。
关键词: Lab VIEW; 数据读写和转换; 数据处理
中图分类号: TP31
文献标识码: B
Abstr act: The problems, such as reading from data file, writing data to file and data format transformation, are often met in the soft- ware programming based on LabVIEW for data processing. And taking software programming of calculating power spectral density of random vibration data as an example, programming skills are given.
相关文档
最新文档