LabVIEW中用于FRC的局部变量和全局变量

本示例介绍了局部变量和全局变量、如何在默认LabVIEW for FRC® Robot Project中使用它们以及如何在您的项目中使用它们。

局部变量和全局变量可用于在同一VI(局部变量)或不同VI(全局变量)内的位置之间传输数据,这打破了LabVIEW众所周知的传统的“数据流范例<https://www.ni.com/getting-started/labview-basics/dataflow>”。因此,当由于某种原因而无法将值直接连接到另一个节点时,它们可能很有用。

注意:一种可能的原因可能是您需要在连续的循环迭代之间传递数据。 Miro_T在这篇文章<https://forums.ni.com/t5/FIRST-Robotics-Competition/Use-of-Shift-Registers-to-Pass-Data-Between-Loop-Iterations/ta-p/3498415?profile.language=en>涵盖了它。还应该注意的是,LabVIEW中的“反馈节点<https://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/block_diagram_feedback/>” 可以等效于移位寄存器,尽管这可能是另一回事了!

局部和全局变量简介

局部变量可在同一VI中使用。通过右键单击前面板上的输入控件或显示控件来创建局部变量:

../../../../_images/11.png

您也可以从程序框图的“结构”选项板中创建局部变量。当一个VI中有多个局部变量时,可以单击鼠标左键选择它是哪个变量:

../../../../_images/22.png

全局变量的创建略有不同。从“结构”选项板中向框图添加一个,然后注意,双击它会打开一个单独的前面板。该前面板没有程序框图,但是您可以根据需要向该前面板添加尽可能多的控件,并将其另存为* .vi文件:

../../../../_images/32.png

备注

使用局部和全局变量时要非常小心,避免出现相互干扰的变量!本质上,请确保不要在不知道最后将变量写入哪个位置的情况下,在多个位置意外写入同一变量。有关更详尽的说明,请参阅`此帮助文档<https://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/using_local_and_global/>`

在默认的LabVIEW for FRC机器人项目中如何使用它们

在Robot Main VI的每次迭代期间,都会写入“Enable Vision”和“Image Size”两个全局变量。

../../../../_images/41.png

…然后在Vision Processing VI的每次迭代中进行读取:

../../../../_images/5.png

这使用户可以在将程序从LabVIEW开发环境部署到Robot Main VI时,从Robot Main的前面板启用/禁用视觉并更改图像大小。

您如何在项目中使用它们?

请查看Periodic Tasks VI的框图。可能存在一些值,例如布尔值,可以将其写入Teleop VI中的全局变量,然后从Periodical Tasks VI中读取。然后,可以根据布尔型全局变量决定在Periodic Tasks VI中使用哪些代码或值:

../../../../_images/6.png