建立主/从应用程序
主/从设计模式由多个并行循环组成。控制其他所有回路的是主回路,其余回路是从动回路。一个主回路始终驱动一个或多个从属回路。由于这些循环之间直接进行数据通信会中断数据流,因此必须通过写入和读取消息传递体系结构(即LabVIEW中的局部或全局变量,事件,通知程序或队列)来完成。图1显示了如何使用共享数据将不同的环路彼此连接。
图1:主/从概述
示例-同步循环
此应用程序具有以下要求:
我们的第一步将是确定哪个进程将成为主进程,哪个进程将成为从属进程。在此示例中,用户界面将放置在主循环中,并且两个闪烁的LED进程将是两个从属循环。用户界面将使用局部变量控制每个从属循环的操作。
现在,我们准备开始LabVIEW Master / Slave应用程序。要查看最终的主/从应用程序,请打开所附的VI(SynchLoops.vi)。
消息体系结构(共享数据)
问题:如果多个循环尝试同时将数据写入共享变量,则无法确定最终将写入哪个值。这被称为竞争条件。
解决方案:将“获取/释放信号量”对放在写入全局的任何代码段周围。这样可以确保多个循环不会尝试同时写入全局变量。 LabVIEW随附的示例中有一对演示了信号量的用法。信号量将在写入时锁定全局数据,以避免出现竞争状况。
同步化
问题:由于主/从设计模式不基于同步,所以从属循环可能在主循环之前开始执行。因此,在从属循环开始执行之前初始化主循环可能是一个问题。
解决方案:可以使用出现来解决这类同步问题。
要查找演示使用事件的示例,请参考LabVIEW附带的示例。图2给出了有关如何使用事件的示例。
图2:发生示例