反馈节点
- 更新时间2025-08-27
- 阅读时长6分钟
使用反馈节点可保存程序框图或循环上次执行的数据。反馈节点用于存储和获取上一次执行的状态信息。
反馈节点不在它所获取的数据上执行任何操作。而是从初始化接线端获取一个值并将这个值传递到下一个输入接线端。反馈节点接收到新值时,节点将保留该值直到节点将该值传递至下个输出接线端。反馈节点类似于反馈控制理论和数字信号处理中的z-1块。
创建反馈节点
如启用了选项对话框程序框图页上的在循环中自动插入反馈节点,则将一个或一组子VI或函数的输出端与其自身的输入端连接时,将自动出现一个反馈节点,如下图所示。LabVIEW默认为启用在循环中自动插入反馈节点。
也可在函数选板上手动选择反馈节点。
关于使用反馈节点的范例,请参考labview\examples\Structures\Feedback Node目录下的 Feedback Node - Building an Array VI。
初始化接线端
初始化接线端设置了反馈节点的初始值。初始化接线端的外观,根据用户对反馈节点的配置而有所区别,如下图所示。
将反馈节点添加至程序框图时,反馈节点上即包括初始化接线端。每次编译或加载VI时,将全局初始化反馈节点。首次执行时反馈节点的初始输入为其对应数据类型的默认值。但是,可设置反馈节点的初始值。如设置一个初始值,执行中首次调用VI时,反馈节点将初始化为该值。第一次运行后,VI的每次运行时上次运行所得的值即是下次运行的初始值。如在循环中使用反馈节点,将初始化接线端移动到循环的左侧可使节点在循环每次执行时都被初始化。
启用接线端
使用下图所示的启用接线端选项,启用或禁用反馈节点。
右键单击反馈节点,从快捷菜单中选择启用接线端,可在反馈节点上显示启用接线端。如设置启用接线端为TRUE,反馈节点按用户在属性对话框或节点快捷菜单中的配置运行。如启用接线端设置为FALSE,反馈节点输出上次执行或循环的值直到启用接线端重新被设为TRUE。
数据采样
默认状态下,反馈节点仅保存上一次执行或循环所得的数据。但是,可使用属性对话框的配置页,将反馈节点配置为存储后续若干次执行或循环的数据,延迟反馈节点的输出。如增加延迟值,使其大于一次执行或循环的执行时间,在延迟结束前,反馈节点仅输出初始化接线端的值。反馈节点按照顺序一次输出之前存储的值。
| 注:(FPGA模块)如在属性对话框的FPGA实现页面勾选了忽略FPGA重置方法复选框,LabVIEW FPGA将在底层寄存器实例中移除重置。编译器可选择通过移位寄存器查找表格(SRL)而非触发实现延迟。SRL可在单个查找表(LUT)中包含多个延迟,从而比触发方式节省更多的FPGA资源。 |
例如,指定延迟为3,反馈节点将输出三次循环的初始值。下次循环时,反馈节点将输出第一次循环的值,即循环0,然后输出第二次循环的值,依此类推。下列程序框图显示了初始值为0,延迟为3的反馈节点的输出情况。
| 循环计数 | 反馈节点输出值 | 结束值 | 反馈节点存储的数据 |
|---|---|---|---|
| 执行之前/循环0 | N/A | N/A | 0, 0, 0 |
| 0 | 0 | 0 | 0, 0, 0 |
| 1 | 0 | 1 | 0, 0, 1 |
| 2 | 0 | 2 | 0, 1, 2 |
| 3 | 0 | 3 | 1, 2, 3 |
| 4 | 1 | 5 | 2, 3, 5 |
| 5 | 2 | 7 | 3, 5, 7 |
| 6 | 3 | 9 | 5, 7, 9 |
| 7 | 5 | 12 | 7, 9, 12 |
在上面的程序框图中,反馈节点在输出其接收的第一个值0之前连续三次输出初始化值0。
| 注:将延迟设置为两个或更多个循环时,可连线数组至初始化接线端,使各个延迟元素初始化为任意值。 |
箭头方向
右键单击反馈节点并从快捷菜单中选择修改方向可改变反馈节点的箭头方向,从而指定数据在连线上流动的方向。改变箭头方向只改变反馈节点的外观,而不改变程序框图上与反馈节点连接的连线上数据流的方向。
Z变换视图
右键单击反馈节点从快捷菜单中选择Z变换视图,可将反馈节点在Z变换视图中显示。该视图改变了反馈节点的外观。反馈节点类似于反馈控制理论和信号处理中的z-1块。将节点改变为Z变换视图只是改变了反馈节点的外观,不改变节点的功能。
前面板显示控件和反馈节点
即使前面板显示控件连接到相同的连线循环,反馈节点也可能显示不同的值。这取决于显示控件与反馈节点二者在连线上的相对位置。在下列程序框图中,反馈节点将初始值传递到下一个输入节点。该输入节点根据初始值执行运算,再将运算所得的值传递到显示控件并返回给反馈节点。
在上一个程序框图中,加1函数根据4的初始值进行运算,再将结果传递到显示控件。这样前面板显示控件显示的是5。但在下列程序框图中,反馈节点将同样的数据传递到“加1”函数,但显示控件显示了另一个值。
在上一个程序框图中,反馈节点的初始值4被传递到“加1”函数前先到达显示控件。尽管“加1”函数传递给反馈节点的最终值是5,前面板显示控件显示的是初始值4。