LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI

简介: LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI

LabVIEWCompactRIO 开发指南27


创建模块化、可重复使用的子VI


编写模块化代码几乎总是一个好主意,无论是为Windows、实时还是FPGA设备设计应用程序。子VI使代码更易于调试和故障排除,更易于记录和跟踪更改,并且通常更清晰,更易于理解,更可重用。LabVIEW FPGA子VI示例如图5.11所示。该子VI计算满足触发条件后采集的样本数量。

423688cc011fc889ca8de5006773f784.png



图5.11.子VI用于计算满足触发条件后采集的样本数量。


避免放入子VI中的项目


创建子VI时,应考虑将某些项目保留在子VI之外,特别是I/O节点和循环定时器或等待功能。


将I/O节点放置在子VI之外,使其更加模块化和可移植,并使顶层图更具可读性。这也减少了无关的I/O节点实例,否则这些实例可能会多次包含在子VI中,从而导致不必要的门使用。在LabVIEW FPGA中访问共享资源时,编译器会添加处理多个调用方所需的额外仲裁逻辑。


另一个最佳实践是避免在模块化子VI中使用循环定时器或等待功能。如果子VI有无延迟,它会尽可能快地执行,并避免减慢调用方的速度。此外,如果需要将子VI移动到单周期定时循环(SCTL)中以进行优化,则必须删除任何延迟函数,因为它们不受支持。


a27d46b692d1d559e9bfa600055f18a5.png


图5.12.避免在模块化子VI中使用循环定时器或等待功能


图5.13的左侧显示了如何调整PWM代码以使用时钟周期计数函数,而不是循环计时器函数。使用反馈节点保存经过的时间计数值,可以在适当的时间打开和关闭输出,并在PWM周期结束时重置经过的时间计数器。代码可能看起来有点复杂,但可以将其放入顶级循环中,而不会影响循环的整体计时-它更具可移植性。


cafce87526a9eb6886ff7a1a3cbf0260.png



图5.13.调整PWM代码以使用tickCount而不是循环计时器函数


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
4月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
133 0
|
7月前
|
存储 API 异构计算
LabVIEWCompactRIO 开发指南30 目标间通信
LabVIEWCompactRIO 开发指南30 目标间通信
48 3
LabVIEWCompactRIO 开发指南30 目标间通信
|
7月前
|
异构计算
LabVIEWCompactRIO 开发指南第六章44 同步模块
LabVIEWCompactRIO 开发指南第六章44 同步模块
40 1
|
7月前
|
异构计算
LabVIEWCompactRIO 开发指南第六章41 同步模块
LabVIEWCompactRIO 开发指南第六章41 同步模块
53 1
|
7月前
|
数据采集 前端开发 芯片
LabVIEWCompactRIO 开发指南第六章40 模块分类
LabVIEWCompactRIO 开发指南第六章40 模块分类
44 2
|
7月前
|
测试技术 异构计算
LabVIEWCompactRIO 开发指南26 同步循环
LabVIEWCompactRIO 开发指南26 同步循环
41 2
|
7月前
|
存储 编译器 异构计算
LabVIEWCompactRIO 开发指南28 可重入和非重入子VI之间的权衡
LabVIEWCompactRIO 开发指南28 可重入和非重入子VI之间的权衡
66 2
|
7月前
|
测试技术 C++ 异构计算
LabVIEWCompactRIO 开发指南34 在模拟模式下调试
LabVIEWCompactRIO 开发指南34 在模拟模式下调试
54 1
|
7月前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
372 3
|
7月前
|
编译器 API PHP
深入PHP扩展开发:打造高效自定义模块
【4月更文挑战第30天】 在追求性能优化和特定功能实现的道路上,PHP提供了一种强大机制——扩展。本文将引导读者通过编写一个简单的PHP扩展来探索扩展开发的世界。我们将涉及从环境搭建到代码实现,再到扩展的编译与加载的完整流程,确保读者能够理解并实践如何创建高效的自定义PHP模块。