数发生器程序图形代码
发布时间:2014/6/27 20:23:30 访问次数:684
图7-38是一个函数发生器的程序框图。它也同样可以在运行中按前面板上对信号类型、幅值、偏置、MB16W-1006P频率及相位等做的修改控制输出波形,但是这里提供了另外一种改变输出信号频率的方法。
前面的程序都是采用固定的模拟输出刷新率,通过改变输出波形数据中一个周期的数据点数来改变输出信号的频率。采用这种方法,当缓冲区大小不是信号一个周期点数的整倍数时,会造成信号的不连续。
而Function Generator程序采用了固定信号每周期数据点数waveform length,使它正好等于缓冲区大小,通过调用高级模输出VI-AO Clock Config改变模拟输出刷新率update rate来实现不同频率信号输出的方法。输出信号的模拟频率等于update rate除以
waveform length。实际输出刷新率ticks per channel used可能与配置的update rate有微小差别。
图7-38 函数发生器程序图形代码
程序中首先用AO Config VI配置输出通道和缓冲区大小。在第一次循环时计算出初始波形数据并由AO Write VI装入缓冲区,然后AO Start VI开始连续的波形输出,如图7-38(b)所示,在接下来的循环中,如果前面板上波形参数控件配置值有变化,就重新计算波形并装入缓冲区,如图7-38 (c)所示。为了波形平缓过渡,AO Write VI每次写缓冲区大小的二分之一。如果前面板配置的输出刷新率发生变化,就调用Analog Output Clock ConfigVI重新配置输出时钟,如图7-38 (d)所示。程序每250ms检查一次前面板控件,以便为其他并行运行的程序留出CPU时间。程序结束时的处理与前一例相同。
使用这个程序在以下情况下会发生号码为10843的underFlowErr错误,即写缓冲太慢:
·计算机硬件配置太低。
·同时运行其他程序。
·刷新率配置太高。
·缓冲区配置太小。
如果数据采集卡的模拟输出有FIFO缓冲,那么将AI Config VI的输入参数allocatemode配置为use FIFO memory可以解决这个问题。但是很多低价位数据采集卡都没有模拟输出FIFO缓冲,这时只有降低程序性能来保证它能够运行。
图7-38是一个函数发生器的程序框图。它也同样可以在运行中按前面板上对信号类型、幅值、偏置、MB16W-1006P频率及相位等做的修改控制输出波形,但是这里提供了另外一种改变输出信号频率的方法。
前面的程序都是采用固定的模拟输出刷新率,通过改变输出波形数据中一个周期的数据点数来改变输出信号的频率。采用这种方法,当缓冲区大小不是信号一个周期点数的整倍数时,会造成信号的不连续。
而Function Generator程序采用了固定信号每周期数据点数waveform length,使它正好等于缓冲区大小,通过调用高级模输出VI-AO Clock Config改变模拟输出刷新率update rate来实现不同频率信号输出的方法。输出信号的模拟频率等于update rate除以
waveform length。实际输出刷新率ticks per channel used可能与配置的update rate有微小差别。
图7-38 函数发生器程序图形代码
程序中首先用AO Config VI配置输出通道和缓冲区大小。在第一次循环时计算出初始波形数据并由AO Write VI装入缓冲区,然后AO Start VI开始连续的波形输出,如图7-38(b)所示,在接下来的循环中,如果前面板上波形参数控件配置值有变化,就重新计算波形并装入缓冲区,如图7-38 (c)所示。为了波形平缓过渡,AO Write VI每次写缓冲区大小的二分之一。如果前面板配置的输出刷新率发生变化,就调用Analog Output Clock ConfigVI重新配置输出时钟,如图7-38 (d)所示。程序每250ms检查一次前面板控件,以便为其他并行运行的程序留出CPU时间。程序结束时的处理与前一例相同。
使用这个程序在以下情况下会发生号码为10843的underFlowErr错误,即写缓冲太慢:
·计算机硬件配置太低。
·同时运行其他程序。
·刷新率配置太高。
·缓冲区配置太小。
如果数据采集卡的模拟输出有FIFO缓冲,那么将AI Config VI的输入参数allocatemode配置为use FIFO memory可以解决这个问题。但是很多低价位数据采集卡都没有模拟输出FIFO缓冲,这时只有降低程序性能来保证它能够运行。
上一篇:连续输出波形信号
上一篇:模拟输入/输出控制回路