LabVIEWCompactRIO 开发指南27
创建模块化、可重复使用的子VI
编写模块化代码几乎总是一个好主意,无论是为Windows、实时还是FPGA设备设计应用程序。子VI使代码更易于调试和故障排除,更易于记录和跟踪更改,并且通常更清晰,更易于理解,更可重用。LabVIEW FPGA子VI示例如图5.11所示。该子VI计算满足触发条件后采集的样本数量。
图5.11.子VI用于计算满足触发条件后采集的样本数量。
避免放入子VI中的项目
创建子VI时,应考虑将某些项目保留在子VI之外,特别是I/O节点和循环定时器或等待功能。
将I/O节点放置在子VI之外,使其更加模块化和可移植,并使顶层图更具可读性。这也减少了无关的I/O节点实例,否则这些实例可能会多次包含在子VI中,从而导致不必要的门使用。在LabVIEW FPGA中访问共享资源时,编译器会添加处理多个调用方所需的额外仲裁逻辑。
另一个最佳实践是避免在模块化子VI中使用循环定时器或等待功能。如果子VI有无延迟,它会尽可能快地执行,并避免减慢调用方的速度。此外,如果需要将子VI移动到单周期定时循环(SCTL)中以进行优化,则必须删除任何延迟函数,因为它们不受支持。
图5.12.避免在模块化子VI中使用循环定时器或等待功能
图5.13的左侧显示了如何调整PWM代码以使用时钟周期计数函数,而不是循环计时器函数。使用反馈节点保存经过的时间计数值,可以在适当的时间打开和关闭输出,并在PWM周期结束时重置经过的时间计数器。代码可能看起来有点复杂,但可以将其放入顶级循环中,而不会影响循环的整体计时-它更具可移植性。
图5.13.调整PWM代码以使用tickCount而不是循环计时器函数
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。