第6.5节 更方便的架构——DAQ助手
在上一单元谈到了DAQmx在测量体系中程序架构的定式,完成这样的程序还是要编写代码的(尽管是图形化代码),NI DAQmx还提供了一种更简单、更方便、基于配置式的程序设计方式——DAQ助手快速vi。它也是基于任务的,可自动创建任务和销毁任务,并以配置式的方式快速实现测量任务的创建、编辑和运行,而无须编写任何代码。
这在测量的试验、论证、评估阶段使用是非常快速和有效的。
该快速vi在函数选板》测量I/O》DAQmx-数据采集》下可以看到DAQ助手快速vi。
该快速vi的基本使用方法大家可能都会使用,这里就不再介绍了。
下面主要谈谈我个人在使用中的一些体会。
适合于试验、验证及评估
前面谈到过,在测量的试验、论证、评估阶段使用是非常快速和有效的。这是由于它基于配置式的工作方式,无须编写程序代码,仅点击几下鼠标可以快速的形成测量解决方案(可以选择多种测量方式),从而大大的提高工作效率,更快的获得测量(生成)结论,这是它非常讨人喜欢的原因之一。
适用于设定数字I/O
在设置数字I/O时使用这个快速vi比较灵活、方便。比如在状态机的初始化中,我们根据程序的设计要求,要指定某些数字I/O的初始状态,使用这个快速vi来设定就非常方便,可以相对减少了很多代码的编写量。
在某应用程序初始运行时,要求数字I/O(0,3)的初始状态为:1010,就可以按例图快速的设计实现。
可以将DAQ助手转换成DAQmx代码
假如使用DAQ助手创建一个8通道电压测量任务,其设定如图例所示。
为实现连续测量,必须在DAQ助手外面加一个While循环,如例图。在例图的程序框图上,用鼠标右键点击这个创建完成的快速vi,会出现一个快捷菜单,选择菜单中的“生成NI-DAQmx代码“选项,DAQ助手就会被转换成下图中的程序代码。
从例图中可以看到:在外面的While循环内是DAQ助手的程序代码,该快速vi自动创建了一个“未命名8”的任务。外面的While循环是为了保证能够实现连续测量。
在测量循环中使用会降低系统性能
在连续测量时,通常会将DAQ助手也放到循环内,在上面的“简要帮助”中也给出了这种使用方法。实际上这种方法有很大的缺点,就是会降低系统的性能。问题就出现在DAQ助手内部包含了一个“未命名8”的任务,该任务在连续测量的每次循环迭代中都运行,从而降低了系统的性能。
对比上面的两个图,这一点可以看的很清楚。
我们在看看“未命名8”任务的程序框图,见下图。
由上图可见每次迭代都会执行一次这个任务,而这个任务中有多达8个“DAQmx创建通道.vi“,上图并没有将所有8个通道完全表现出来。这就是我不建议在测量循环中使用DAQ助手的主要原因。
解决这个问题的方法就是将DAQ助手“解码”,然后去掉外面的循环,这样程序框图就与我们前面介绍的DAQmx测量架构是一样的了。
在多说几句题外话,大概在DAQmx7.x.x的某个版本,对DAQ助手“解码”后,我曾看到这样的变化,就是将每个“DAQmx创建通道.vi“外面加了一个 case结构,case结构的选择端子连接到内置函数“First call"的输出,这样程序仅在循环的第一次迭代时执行“DAQmx创建通道.vi”,此后由于“First call"的作用以后就不会再执行了。
可是没过多常时间,后来的DAQmx版本又改回现在的样子了。