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开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
1月前
【Qt 学习笔记】使用QtCreator创建及运行项目 | 项目初始代码解释
【Qt 学习笔记】使用QtCreator创建及运行项目 | 项目初始代码解释
160 1
|
8月前
Three入门 【加载外部模型,使用dat.gui创建动画控制器】
Three入门 【加载外部模型,使用dat.gui创建动画控制器】
46 0
|
1月前
|
存储 API 异构计算
LabVIEWCompactRIO 开发指南30 目标间通信
LabVIEWCompactRIO 开发指南30 目标间通信
26 3
LabVIEWCompactRIO 开发指南30 目标间通信
|
1月前
|
异构计算
LabVIEWCompactRIO 开发指南第六章41 同步模块
LabVIEWCompactRIO 开发指南第六章41 同步模块
26 1
|
1月前
|
异构计算
LabVIEWCompactRIO 开发指南第六章44 同步模块
LabVIEWCompactRIO 开发指南第六章44 同步模块
22 1
|
1月前
|
测试技术 异构计算 Windows
LabVIEWCompactRIO 开发指南35 使用桌面执行节点
LabVIEWCompactRIO 开发指南35 使用桌面执行节点
17 1
|
1月前
|
数据采集 前端开发 芯片
LabVIEWCompactRIO 开发指南第六章40 模块分类
LabVIEWCompactRIO 开发指南第六章40 模块分类
22 2
|
1月前
|
测试技术 异构计算
LabVIEWCompactRIO 开发指南26 同步循环
LabVIEWCompactRIO 开发指南26 同步循环
23 2
|
1月前
|
存储 编译器 异构计算
LabVIEWCompactRIO 开发指南28 可重入和非重入子VI之间的权衡
LabVIEWCompactRIO 开发指南28 可重入和非重入子VI之间的权衡
22 2
|
1月前
|
测试技术 C++ 异构计算
LabVIEWCompactRIO 开发指南34 在模拟模式下调试
LabVIEWCompactRIO 开发指南34 在模拟模式下调试
29 1