| 人才招聘 | 联系我们 | 网站地图 语言:中文 | English

应用笔记
下载中心
技术指导
产品手册
软件
精彩视频

当前位置: Home / 技术支持 / 应用笔记 /

Feedback Node使用心得

作者:李诚 上海聚星仪器应用工程师    发布时间:2011年08月08日

Feedback Node作用

 

LabVIEW编程中,经常会用到Feedback Node,该节点有一个数据输入端和一个数据输出端,输出端输出上一次写入输入端的数据,因此它一般用于获取上一次的输入数据。常见下面的应用场合:

点击浏览下一页

  图一

点击浏览下一页

图二

点击浏览下一页

图三

 

 

图一中,上面两个Feedback Node用于加1运算,相当于是一个自定义的计数器,Feedback Node箭头方向可以通过右键设置,所以这两个计数器功能完全一样,用户可以根据自己的喜爱,设置箭头的方向。

图一中,最下面一个Feedback Node的数据输入端是一个计时器的输出,它实现了两个时刻的相减,从而可以得出两次循环的时间差,即该循环的周期。

图二中,两个Feedback Node的输入均为Bool量,然后做一些逻辑运算,用于实现逻辑状态跳变的检测。假设DI0DI1是采集卡的两路数字信号,那么第一个Feedback Node可用于检测数字信号的上升沿,第二个Feedback Node可用于检测数字信号的跳变。

图三中,模块 A 与模块 B的关系为:A模块的运行依赖于B模块的输出状态,B模块的运行依赖于A模块输出的数据。在这种情况下,就可以利于Feedback NodeB模块的输出反馈给A模块的输入,从而实现上述功能。这种应用多用于流水线编程中,各级之间数据与状态的交互。

Feedback NodeShift Register在功能上是可以相互替换的,Shift Register用起来更加直观,但Feedback Node有利于将某一功能封闭成一个模块或是子VI

 

 

Feedback Node注意点

通过上一节的讲解,大家应该对Feedback Node有了较清晰的认识,这里再提到两个使用时需要注意的地方。

1)初始化

Feedback Node输出的是上一次的输入值,那么它在第一次输出的值应该是什么值呢?这个值就是初始值,通过设置初始值(即Feedback Node节点正中间的输入端),就可以确定该节点第一次输出的值。当没有设置初始值时,系统使用输出数据类型的默认值作为初始值,如输出为Bool量时,初始值默认为False

在设置初始值时,有一个选项需要注意一下,如下图:

点击浏览下一页

图四

 

当选择“Initialize On Compile Or Load”时,初始化是在该节点加载至内存中或是FPGA程序编译时,完成的。当选择“Initialize On First Call”时,初始化是在该节点第一次调用时完成的。他们的区别,可以通过下面这个例子来体会一下,程序框图如下所示:

点击浏览下一页

图五

 

图五中,上面一个Feedback Node设置为“Initialize On Compile Or Load”,下面一个Feedback Node设置为“Initialize On First Call”,在不关闭程序前面板的情况下,运行三次程序,面板显示的结果为:

点击浏览下一页

图六

 

一般情况下,这两者区别不大,这里只是提一下。前面讲到,Feedback Node的初始化一般只能在第一次调用或加载至内存的时候,但在下面一种情况下,可以实现在程序运行中多次初始化,如下图所示。图七为具体操作,图八为程序框图,图九为运行效果。

点击浏览下一页

图七

 

点击浏览下一页

图八

 

点击浏览下一页

图九

 

Feedback Node的配置属性里面有一项,如图十所示。在FPGA中使用该节点时,如果选中了“Ignore FPGA reset method”,当对FPGA程序进行RESET操作时,Feedback Node并不进行初始化,而是保留上一次的值。如果没有选中该项,当对FPGA程序进行RESET操作时,Feedback Node进行初始化,输出初始值。

点击浏览下一页

图十

2)VI

由于Feedback Node当前的输出跟上次的输入有关,即当前状态与前一个状态有关,所以当子VI中包含有Feedback Node,而主VI中又在不同地方多次调用该子VI时,需要注意对该子VI的执行方式进行设置。如图十一所示,当我们希望主程序中各处调用的该子VI的执行结果相互独立时,需要选中“Reentrant Execution”,当我们希望主程序中各处调用的该子VI的结果相互影响时,需要取消“Reentrant Execution”。

点击浏览下一页

图十一

 

下面的例子可以说明这一点,假设Counter.vi就是前文图一中讲到的基于Feedback Node编写的计数器。当选中Reentrant Execution”时,两个Counter的输出值均为10,当取消“Reentrant Execution”时,Counter 1=10,Counter 2=10

点击浏览下一页

图十一