反馈节点

反馈节点和移位寄存器相比,他们的功能与本质是完全相同的。反馈节点的优点在于它不需要从循环的边框上去连数据线,因此可以把程序写的更简洁美观,尤其是控制或电子行业的工程师,他们本身很熟悉反馈的概念,可以直观理解这一节点的用途。但是由于反馈节点实际依赖于循环结构,而他们之间又没有数据线相连,使用反馈节点可能一不小心就把逻辑写错。

下图是一个简单的使用了反馈节点的程序代码,它的运行结果是什么?

image

但从这个程序我们是无法判断运行结果的,因为我们既不知道反馈节点的初始状态,也不知道它运行了几次。给定了这两个条件我们才能推算程序的运行结果,比如下图中的程序,运行结果是5。

image

那么下面这个程序运行结果是几呢?

image

如果出现循环嵌套的情况,反馈节点是针对于包含它的每一层循环结构的。它相当于在每一层循环结构上都建立一对移位寄存器,然后把它们串联起来。因此,上图程序运行的结果是25。

特别值得注意的是,反馈节点与循环结构不一定要放在同一个VI里。比如上上图里那个简单程序,当它作为子VI的时候,运行整个程序,result输出的值可能不是5,初始化的值就是不起作用。这个很可能是因为这个子VI的某个上层VI中还有循环结构,而这个循环结构能够影响它里面非常深层的子VI中的反馈节点。

运用下面的技巧可以让反馈节点变得更难以捉摸,如果你诚心想让人看不懂你的程序,不妨试试。

反馈节点有个使能输入端,右键点击反馈节点,选“Show Enable Terminal”可以显示出这个输入。它的输入为真时,反馈节点正常工作;输入为假时,反馈节点并不拿新的数据,而是把上一次得数据返回回来。大家猜下面这个程序运行结果是啥?

image

反馈节点只有在i为偶数时才工作,因此程序是在统计0~4中有几个偶数,结果为3。

移位寄存器出了可以可以返回上一次迭代的数据,还可以返回上n次迭代数据。反馈节点也有类似功能。右键点击反馈节点,打开它的属性配置对话框,在Configuration中可以选择Delay的次数,比如咱们设置延迟3次,那么反馈节点每3次迭代才把数据反馈一次。比如下面这个程序,result控件在程序的5次迭代中分别返回值1、1、1、2、2……,其运行结果是2。

image

那么多层循环会对延迟有什么样的影响呢?

image

在上图的程序中,result总共经历25次迭代。在这个多层嵌套的循环中,带延迟的反馈节点依然是每隔3次迭代(最里层循环的迭代)返回一次反馈数据。每次迭代返回的数据分别是:1、1、1、2、2、2、3、3、3、4、4、4、5、5、5、6、6、6、7、7、7、8、8、8、9。也就是最终结果为9。

最后大家猜一下下面这个程序的运行结果是几?

image

Advertisements

11 thoughts on “反馈节点

  1. 本博文中第五个VI,延迟3次后我实验的结果为2,而不是3了,请阮大侠再验证一下了;但是第六个VI的结果是9了,跟我验证的相符了,如果这样那后面3*3=9的解释好像就不正确了,没法传图上来,谅解。端午佳节快乐!

  2. 请教一下和这个主题不大相关的问题。可以讲一下关于用labview编写半峰宽或者峰面积方面的知识吗? 半峰宽有两种计算方法:
    一种是半高宽法fwhm,即做峰底的切线L,在峰高一半的地方做L平行线。一种是积分法,做峰底的切线L,测量峰的面积,测量峰的高度,
    用“面积/高度”得到峰宽。我采用第二种方法,自己编写了一个VI,采用labview自带的积分模块,但是,上下限的动态确定有点问题,峰面积求取结果不对。您认为有什么方法解决吗?非常感谢

  3. Pingback引用通告: 《我和LabVIEW》补充内容和注释 « 凡人琐忆

  4. 删除数组需要重新排列数组元素位置,所以效率低。
    LabVIEW的最初的目标是针对非专业程序员得,所以并没有透露很多细节给用户。现在LabVIEW这么庞大,可能没人弄得清所有底层的东西了。对于一些特定的问题,可能主要还是得靠编程者自己摸索。或者去论坛询问一下,集众人之力。

  5. 阮大侠,您好,我使用labview也有1年多了,最近做一个很小的功能的时候,发现拆分一维数组和删除数组元素这两个函数都可以完成一个一维数组的循环拆分(使用移位寄存器),但是第一个函数要比第二个函数效率高几十倍。

    我想问一下,为什么拆分一维数组要比删除数组元素效率高这么多?我这里有测试vi,不过不知道怎么发给您;
    第二,个人有时候感觉labview封装的挺好,用起来非常方便,但是却不能让我们比较容易的了解到它的底层,它的某些函数如何实现的,也就不能很方便地选取更适合的函数来开发程序(有时候选用不好就会导致程序效率很低下),您认为有解决这个问题的好办法么,或者有相应的书籍材料么?

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s