配合调频控件生成连续的数字脉冲序列



硬件: Counter/Timers (TIO)

问题: 我正运用一个计时器输出端口来发出一个脉冲序列,我想知道我如何在程序中设定他的频率自动可调可变?

我怎么利用一个控件来控制输出的脉冲序列的频率?

我如何才能设计出一个能被动态调整频率的脉冲序列?

解答: 基于DAQmx 和 Labview
下图的例子展示了如何用一个共享变量来实时改变和控制输出的脉冲序列的频率。 一个本地局部变量被用来实时刷新DAQmx任务中的频率值。因为频率在相关任务中被认为是一个合法的设置值,所以如果相同的频率值被在while循环中被重复的赋入,会出现错误信息。因此我们这里需要使用一个case结构来进行频率值的更新操作。在这个例子中,用户可以动态的改变脉冲输出序列的频率值。

 


O大多数情况下,正确的case判断结构不会使程序在刷新频率值是报错:-200301,在上面的例子中,DAQmx任务中的频率值只有在被改变时,才会被重新刷入其任务的相关参数中。

A除了之前提到的While循环中嵌套case结构的方法,其实也可以使用事件结构来达到相同的功能,事件结构只有在频率值被改变时,才会进入相应的事件分支,进行频率值的刷新操作。以下的例子就实现了相应的功能。


以上提到的例子,您都可以运用本页最下方的相关链接进行下载。

基于传统 DAQ
基于传统的DAQ也有两种方法来动态的改变脉冲序列的频率值
  1. 第一种方法是将您的计数器改为FSK的相应设置,这将允许您进行硬件层面上两种频率的触发操作。当您在一个计数器上设定A和B两种载入状态,而同时在另一个计数器上设定C和D两种载入状态。当改程序被正确配置烧入(编译)后,一个设置在门电路上的触发端将能够把第一个计数器载入状态从A跳转到B,而另一个计数器的载入状态从C跳转到D。因为载入状态的不同,它们也就有了不同属性的输出波形。
  2. T动态改变计数器输出频率的另一种方法是运用“开关循环”,开关循环通过改变对状态A和状态B(又或者是状态C和状态D)的赋值,并且传送一个信号给开关循环来实现软件层面上改变控制频率值的功能。当计数器在输出一个脉冲序列时,开关循环让通过相应赋值的刷新让计时器去读取现在没有被选用的载入状态信息,随后又让计数器根据载入状态的相应信息去发生脉冲,来实现脉冲序列的频率变化。因此如果您运用状态A和B来发出一个脉冲序列,开关循环已经将新值赋给了状态C和D。随后该计数器就会将相应的脉冲序列发生参数由状态A和B转到状态C和D上。
一下信息是指导您如何配合传统DAQ板卡具体完成相关操作:

LabVIEW:
W在连续发生脉冲序列的循环中,创建两个变量值去控制 Counter Set Attribute.vi 这个vi的 "pulse spec 1" (常量 14) 和 "pulse spec 2" (常量 15)这两个值。随后您创建一个控件"switch cycle" (常量 7)赋给 Counter Control.vi 这个vi,后面的LabVIEW具体说明了它的实现方式:

LabWindows/CVI (NI-DAQ function calls):
/* Send the new LOW period of squarewave to counter. */
iStatus = GPCTR_Change_Parameter(iDevice, ulGpctrNum, ND_COUNT_1, ulLOWcount);

/* Send the new HIGH period of squarewave to counter. */
iStatus = GPCTR_Change_Parameter(iDevice, ulGpctrNum, ND_COUNT_2, ulHIGHcount);

/* Instruct counter to switch to the new cycle. For NI-TIO based devices, this is the only way to switch frequencies. */
iStatus = GPCTR_Control(iDevice, ulGpctrNum, ND_SWITCH_CYCLE);

关于这个功能您可以参靠NI-DAQ驱动中的范例文件--"TIOgenSquareWave.c" (LabWindoes/CVI的相关支持文件要已经被安装在机器中)。

相关链接: Community Example: Generate a Continuous Digital Pulse Train With a Variable Frequency
Community Example: Generate a Continuous Digital Pulse Train With a Variable Frequency Using Event Structure
AE KB 380CH6WX: Pulse Train Generation with Variable Frequency that Includes a Steady Zero Hertz

附件:


Generate Retriggerable Pulse Switch Cycle.llb - Generate Retriggerable Pulse Switch Cycle.llb


报告日期: 03/19/2003
最近更新: 09/19/2010
文档编号: 2VIEAM6I