You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LabVIEW开发:如何按阈值选择全量或抽点记录数据写入TDMS文件

思路合理性说明

你的方案完全可行,是工业场景下降低TDMS存储体积的通用方案,既可以保留超过阈值的关键段全量高分辨率数据,非关键段降采样也能大幅压缩文件体积,适配你的需求。

核心功能实现方法

1. 阈值判断功能实现

  • 一维波形数组:直接调用原生Threshold 1D Array函数,输入待判断波形、阈值参数即可输出触发布尔值,直接对接Case结构选择端。
  • 无符号长整型数据:直接用数值比较节点输出大于阈值的布尔值即可。
    如果需要避免信号波动导致的频繁触发切换,可以给布尔输出加1~2秒的延时保持逻辑。

2. 等间隔抽点实现

不同数据类型可直接用LabVIEW原生函数处理,无需自行编写逻辑:

  • 无符号长整型数组抽点:调用Decimate 1D Array函数,输入源数组、抽点间隔n,输出即为每n个点保留1个的降采样数组,该函数原生支持所有数值类型,无需额外类型转换。
  • 一维波形数组抽点:波形包含t0(起始时间)、dt(采样间隔)、y(采样值数组)三个属性,按以下步骤处理即可:
    1. 保留原波形的t0作为降采样波形的起始时间
    2. 降采样后的dt = 原dt * 抽点间隔n
    3. 对y数组调用Decimate 1D Array按间隔n抽点
      最后用Build Waveform函数拼接三个参数生成新的降采样波形,多通道一维波形数组套外层For循环逐个通道处理即可。

优化替代方案

如果希望进一步降低运行时内存开销,可以不用先修改源数组再写入,直接调用TDMS高级API的TDMS Advanced Set Next Write Position函数,全量写入时按正常步长写入,降采样写入时每次跳过n-1个点的位置写入单个值即可,写入效率更高。
如果担心阈值触发瞬间的前后数据被抽点丢失,可以额外加1~2秒的环形缓存,触发阈值前后的过渡段也做全量存储,避免关键事件数据不全。

你提供的现有日志记录流程框架无需调整,只需要在TDMS写入节点前加上述预处理的Case分支即可完成改造。

内容的提问来源于stack exchange,提问作者Mey11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:24:05