南昌网站建设哪家比较好,贵州网站建设公司推荐,网站开发 附加协议,做网站赚钱吗 谁教教我【LabVIEW】局部变量、全局变量、共享变量 一、变量定义二、内存分配三、竞争状态四、变量创建及简单使用示例4.1 局部变量4.1.1 局部变量的创建4.1.2 局部变量的编程实例 4.2 全局变量4.2.1 创建4.2.2 调用4.2.3 编程实例 4.3 共享变量 一、变量定义 LabVIEW#xff08;Labor… 【LabVIEW】局部变量、全局变量、共享变量 一、变量定义二、内存分配三、竞争状态四、变量创建及简单使用示例4.1 局部变量4.1.1 局部变量的创建4.1.2 局部变量的编程实例 4.2 全局变量4.2.1 创建4.2.2 调用4.2.3 编程实例 4.3 共享变量 一、变量定义 LabVIEWLaboratory Virtual Instrument Engineering Workbench是一种用于工程应用的图形化编程语言。在LabVIEW中变量是用于存储和传输数据的元素。下面是对局部变量、全局变量和共享变量的简要说明
局部变量Local Variables
局部变量只能在其所在的VI文件中使用用于存储和传输该VI或图形化函数内部的数据。同样它也具有可读和可写的属性在局部变量的右键菜单中可更改其读写属性。实际上使用局部变量可将前面板对象同时用作输入和输出。局部变量多用于程序复杂或者连线困难的场合在块图中局部变量可以通过其名称或标签进行访问。
全局变量Global Variables
全局变量用于在一个工程项目中的多个文件之间进行数据交互。全局变量保存在一个VI文件中但这种类型的VI文件和普通的VI文件不一样它只有前面板而无程序框图在前面板上可以放置多个控件对应着多个全局变量即在一个VI文件中可以存储多个全局变量。 全局变量具有可读和可写的属性在全局变量的右键菜单中可更改其读写属性。
共享变量Shared Variables
共享变量是LabVIEW提供的一种功能允许在多个VI或实时目标之间共享数据。共享变量是通过LabVIEW的“共享变量引擎”来管理的该引擎提供了对网络变量、实时变量和I/O变量的支持。共享变量可以在项目浏览器中进行定义和配置包括其数据类型、访问权限和更新策略等。在VI中可以通过“共享变量”选板来访问和操作共享变量。共享变量对于在分布式系统、实时系统或网络应用中实现数据共享和通信非常有用。
回到目录
二、内存分配
1. 局部变量
局部变量复制数据缓冲区的数据。从一个局部变量读取数据时便为相关控件的数据创建了一个新的缓冲区。局部变量的内存占用与其数据类型和大小直接相关。例如一个存储大量数据的数组局部变量将占用更多的内存。局部变量只在定义它们的VI或图形化函数的上下文中存在。当VI停止运行时这些局部变量的内存会被自动释放。
2. 全局变量
从一个全局变量读取数据时LabVIEW将创建一个数据的副本保存于该全局变量中。操作大型数组和字符串时将占用相当多的时间和内存来操作全局变量。操作数组时使用全局变量尤为低效原因在于即使只修改数组中的某个元素LabVIEW仍对整个数组进行保存和修改。如一个应用程序中的不同位置同时读取某个全局变量则将为该变量创建多个内存缓冲区从而导致执行效率和性能降低。
3. 共享变量
共享变量的内存占用取决于其数据类型、大小和配置。共享变量引擎会管理这些变量的内存使用并在需要时进行优化。由于共享变量是在多个VI之间共享的因此它们的内存占用可能会比局部变量更复杂。但是LabVIEW的共享变量引擎通常能够高效地管理这些变量的内存使用。 在优化LabVIEW程序的内存使用时以下几点是值得注意的
尽量减少不必要的局部变量和全局变量的使用以减少内存占用。对于大数据集考虑使用数据流编程方式或“生产者/消费者”模式来分块处理数据以降低内存占用。定期检查程序中的内存使用情况并找出潜在的内存泄露问题。使用适当的内存释放节点如“释放内存”和“清空图例”等来释放不再使用的内存。对于自定义的VI确保在VI结束时释放所有分配的内存。
回到目录
三、竞争状态 两段或更多代码并行执行并访问同一部分内存时会引发竞争状态。如果代码是相互独立的就无法判断LabVIEW按照何种顺序访问共享资源。竞争状态会引起不可预期的结果。例如两段独立的代码访问同一个队列但是用户未控制LabVIEW访问队列的顺序这种情况下会引发竞争状态。 竞争状态随着程序运行的时间因素而改变因此具有一定的危险性。操作系统、LabVIEW版本和系统中其他软件的改变均会引起竞争状态。 如改动了VI的时间要素例如更新操作系统或LabVIEW版本请检查访问同一部分数据的并行代码并使用定时条件来控制哪一部分代码首先执行。
回到目录
四、变量创建及简单使用示例
4.1 局部变量
4.1.1 局部变量的创建 局部变量是依托于前面板上的某个控件存在的在LabVIEW中可以通过下面两种方式为某个控件创建局部变量
在控件对象上面单击鼠标右键选择“创建”–“局部变量”在程序框图右键菜单的函数模板上创建在函数模板中选择“编程”–“结构”–“局部变量”将局部变量放到程序框图中后鼠标左键单击该图标选择该局部变量对应的前面板上的某个控件即可如下图所示 回到目录
4.1.2 局部变量的编程实例 下面是一个简单的例子该例计算两个数a和b的和将结果在显示控件c上进行显示要求程序开始运行时控件a和控件b的初始值分别设为1和2其前面板如下图所示
4.2 全局变量
4.2.1 创建 在LabVIEW中可以通过多种方式创建全局变量。
第一种在LabVIEW编程环境中选择菜单“文件”–“新建……”弹出新建文件对话框如下图所示 在上图中选择全局变量即可打开一个全局变量的VI程序当然这个VI程序只有前面板在前面板上放置你需要的变量控件每个变量控件即可代表一个全局变量如下图所示 2. 第二种如果已经打开了一个普通的VI程序可以在程序框图右键菜单的函数模板上创建在函数模板中选择“编程”–“结构”–“全局变量”如下图所示 将全局变量放到程序框图中后双击该图标通过这种方法同样可打开一个只包含前面板的VI全局变量程序后续操作同第一种方法相同。
回到目录
4.2.2 调用 如果要在一个VI程序中使用全局变量可通过下面三种方法将全局变量导入到当前VI的程序框图中
由函数模板中的“选择VI…”子模板打开选择用户程序对话框选择已经保存的全局变量VI程序此时将在框图程序中显示全局变量的数据端口。如果已经打开了全局变量的VI文件可拖动该VI文件前面板右上角的全局变量图标到当前程序框图中此时将在框图程序中显示全局变量的数据端口。若未打开全局变量的VI文件也可以在存储全局变量VI文件的目录中拖动该文件到当前程序框图中此时也会在框图程序中显示全局变量的数据端口。如果在全局变量VI文件中建立了多个控件可通过操作工具在全局变量的图标上单击在列出的所有变量对象中选择所需的对象进行操作即可。
回到目录
4.2.3 编程实例 使用上面已经创建的文件“MyGloableVar.vi”文件在该文件中包含了两个全局变量分别为“全局变量a”和“全局变量b”下面写两个简单的VI程序分别读取和写入这两个全局变量的值以这种方式验证通过全局变量可以实现不同程序之间的数据交互。
读取全局变量程序“ReadGloableVar.vi”的前面板和框图程序如下图所示 写入全局变量程序“WriteGloableVar.vi”的前面板和框图程序如下图所示 为演示方便这两个程序中未添加任何控制程序运行的结构所以可通过点击工具栏上的“连续运行”按钮同时运行两个程序修改“WriteGloableVar.vi”前面板上两个控件的值可以在“ReadGloableVar.vi”的前面板上实时观察到这两个全局变量的值。从运行结果上可以说明通过全局变量可以实现在不同程序之间实现数据的交互了。
回到目录
4.3 共享变量
参考链接使用共享变量 回到目录