我有一个(桌面) LabVIEW程序运行几个大的While循环。每个环路对应于myRIO数据采集系统中IO卡上的功能。每个卡都以不同的速度运行,因此我的代码中的每个循环和子my也以不同的速度运行。
然而,我现在发现我需要将数据从一个低速循环传递到一个高速循环,我不确定如何才是最好的。
低速环路实际上通过TCP连接到横河功率分析仪,环路速度为50ms (20 is )。高速环路以50 The的频率运行,使用高速ADC的输入执行数学运算以计算电机转矩,并且需要来自低速环路(功率分析仪)的信息才能继续。数据流差异为816:1。
在运行时,它看起来工作得很好,直到我启动马达,然后过度扭矩例程开始并关闭我。
因此,我接下来尝试对数据进行排队,这只会显著降低高速循环的速度。
话虽如此,我的想法是将传入的数据放在低速循环中,并用该数据填充一个数组(816深),然后将其排队到高速循环中,但我也不太确定如何做到这一点。
我应该如何以一种更有效、更恰当的方式完成我想要做的事情?
发布于 2018-03-25 17:37:32
查看Real-Time FIFO调色板。这里的函数创建并操作一个无锁FIFO系统,该系统明确地设计用于在循环之间以确定性的方式传递数据。如果使用得当,它们可以保证尝试写入数据的较慢循环不会锁定FFO,从而使较快的循环脱离其计划。
您可以找到RT FIFO代码here的一个简单示例。您可以在LabVIEW交付示例中找到更多内容。
发布于 2018-03-26 13:53:20
如果高速循环运行得更快,那么它实际上只需要最新的值,因此您需要一个变量/标记型通信。
根据您已经了解的情况,有几个选项:
get staus局部/全局Variable
我会选一个你觉得舒服的,试一试。
https://stackoverflow.com/questions/49459454
复制相似问题