labview波形的本质
在明白labview波形的本质后就可以很明确怎样在labview间传递一个波形,labview中波形的本质是一个结构体(簇),其中有两个字段,一个二维数组(分别保存时间和对应的波形数据大小)、一个时间变量(保存波形的开始时间)。二维数组时波形的关键,而开始时间通常设置为unix时间戳或当前时间。
传递方法
背景介绍
在开始前有如下方案:
- 全局变量
- 生成波形文件在读取(竞态)
- 子VI(在主VI运行时,子VI无法手动控制运行,只能被动的等待调用)
这里我选择使用全局变量的方法。案例是现在有一个信号发生器、一个噪声发生器各在一个VI,然后将两个产生的波形传入滤波器VI,并需要进行加法操作。注意以下两个参数和对应的要点:
- 采样率
- 波形合成是加入的时间
1.保证信号发生器采样率与噪声发生器采样率一致
2.保证使用函数合成波形时,间隔时间是采样率的倒数
过程分析
1.信号发生器生成波形
2. 此时通过探针可以看到传递过去的变量是一个一维数组(保存一个采样周期1s内的数值)包含波形的值,但是去掉了原二维数组的时间维度和起始时间。当然这里最好的方法是拆开簇,然后通过三个全局变量传递,我为了简化项目难度只传递值过去。
3. 在接收端使用build wave函数合成为波形,注意delta t要是采样率的倒数(采样是1s一采样,也就是采样周期为1s)
函数介绍
https://zone.ni.com/reference/en-XX/help/371361R-01/lvwave/build_waveform/
https://zone.ni.com/reference/zhs-XX/help/371361R-0118/lvwave/build_waveform/