当前位置:网站首页>LabVIEW代码生成错误 61056
LabVIEW代码生成错误 61056
2022-08-03 22:03:00 【LabVIEW开发】
LabVIEW代码生成错误 61056
在代码生成过程中,出现如下错误提示信息“Error 61056: Sub VI is non-reentrant, is in a Single-cycle TimedLoop, and has more than one caller”。我在该循环中并没有多次调用不可重入的子VI,为什么会出现这个错误呢?
解答: 这个问题并不仅仅取决于在单周期定时循环是否多次调用一个子VI。如果一个子VI在一个程序的多个地方被调用,那么它就成了“共享资源”。共享资源是指任何被多个地方使用的东西。从实现的角度来看,共享资源需要额外的电路逻辑——仲裁。仲裁电路的执行时间通常多于一个时钟周期,所以它不能出现在单周期定时循环(SCTL)中。要解决这个问题,需要在VIProperties>>Execution>>Reentrant Execution中使能VI的可重入属性。这样会为该VI生成多个实例——在每个调用处放置一个该VI的拷贝,具有可重入属性的VI虽然被多处调用,但是却不是共享资源了。需要记住的是,不能在一个由此具有可重入属性的VI中使用功能性全局变量,因为在每个调用点上会为它们生成新的存储空间
参考下面的屏幕截图:

编辑
添加图片注释,不超过 140 字(可选)
应该在何时使用可重入VI、模板VI和动态调用VI?这三种类型之间有什么区别?
解决方案
可重入VI
当想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空间。因此,一次只能有一个调用者运行VI,因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项,但可以将VI设置为可重入。其中有两种类型的重入:共享 和 预分配。
共享的可重入VI
如果选择了共享克隆可重入执行选项,则VI会具有一个数据空间池(与克隆池相同)。最初在调用VI开始时只创建两个克隆。调用者将使用其中一个数据空间,但它并不知道使用的时哪个数据空间,并且它可能是后续调用中的不同实例。当池中没有足够的数据空间(克隆)用于一定数量调用者同时调用时,将创建新的数据空间(克隆)并将其添加到池中。这里“实例之间共享克隆”中的“共享”一词意味着数据空间可以由多个调用者随时间使用。如果有20个针对SubVI的调用,但是这些调用发生的时间最多中只有两个调用同时进行,则池中只有两个数据空间,它们将在20个调用中“共享”。由于根据当前需要仅创建必要数量的克隆,因此优化了存储器使用。为了实现最快的执行速率和最佳的内存优化,建议使用此选项。
预先分配的可重入VI
如果选择了预分配克隆可重入执行选项,则每个调用者都有自己的私有数据空间(和克隆)。如果有20次调用VI,则在调用VI开始时将创建20个克隆并将其添加到池中。如果调用模式与上述调用模式类似,则可能只有两个同时忙碌。如果要对SubVI的给定实例的每次调用都使用相同的克隆(例如,如果SubVI需要将数据从这次调用保持到下次调用)的话,则使用这种类型的重入VI。共享克隆在这种情况下不起作用,因为永远不会知道SubVI的哪个实例上次使用了将要使用的克隆,并且存储的信息将在SubVI之间无法预测地“串扰”。 “预分配”意味着对于每次调用,都会创建该次调用的数据空间和克隆。预分配发生在VI运行之前。如果要打开同一VI的多个前面板,可重入的SubVI选项将不起作用。
如果要多次打开的VI是顶层VI,则可以将磁盘上的顶层VI复制到具有唯一名称的临时目录并打开新文件实例,没有必要复制任何SubVI。只需复制顶层VI,然后,可以使用VI Server打开并运行副本。
模板VI
可以将多实例面板制作成模板VI,然后每次从模板打开文件。 VI模板是具有 .vit 扩展名的VI。可以在 文件»新建»从模板开始 下从模板创建新VI。这将创建一个具有自己内存空间的VI的新实例。它们在创建时具有不同的存储位置,且仅用作制作另一个VI的起点。然后,需要配置新创建的VI是否可重入。
动态VI
可以使用VI Server打开VI和VI模板。 VI Server 用于动态加载和运行VI。使用SubVI时,加载顶层VI时会加载SubVI的代码和数据空间。当动态加载VI时,在VI服务器调用SubVI之前,不会加载其代码,而不是将其用作SubVI并在调用主程序时加载代码。这样可以在启动时节省内存。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系我们。
LabVIEW代码生成错误 61056 - 北京瀚文网星科技有限公司 (bjcyck.com)
边栏推荐
- 嵌入式系统:概述
- Shell编程的条件语句
- 2022年全国职业院校技能大赛网络安全 B模块 B-1任务一:主机发现与信息收集 国赛原题
- CAS:153162-70-0_N-BOC-6-Biotinamidohexylamine
- 嵌入式系统:时钟
- JPA Native Query(本地查询)及查询结果转换
- XSS测试
- E-commerce data warehouse ODS layer-----log data loading
- Data_web(八)mysql增量同步到mongodb
- How to deal with commas in the content of the CSV file of the system operation and maintenance series
猜你喜欢
随机推荐
超级实用网站+公众号合集
ValidationError: Progress Plugin Invalid Options
Go开发工具GoLand V2022.2 来了——Go 工作区重大升级
东西向和南北向通信的统一
互联网用户账号信息管理规定今起施行:必须严打账号买卖灰产
472. Concatenated Words
【进阶自动化测试】一文1000教你如何用Postman做接口自动化测试
决策树、GBDT、XGBOOST树的可视化
IO thread process -> thread synchronization mutual exclusion mechanism -> day6
[b01lers2020]Life on Mars
优化查询(工作中)
[3D检测系列-PV-RCNN] PV-RCNN论文详解、PV-RCNN代码复现、包含官网PV-RCNN预训练权重及报错问题
LyScript 实现应用层钩子扫描器
XSS testing
电商数仓ODS层-----日志数据装载
CAS:1192802-98-4_UV 裂解的生物素-PEG2-叠氮
466. Count The Repetitions
[kali-vulnerability scanning] (2.1) Nessus lifts IP restrictions, scans quickly without results, and plugins are deleted (middle)
B. Paranoid String
距LiveVideoStackCon 2022 上海站开幕还有3天!