以扁平序列合并信号
Merge signal in flat sequance
我在不同的时间有三个合并信号的输入,合并信号的输出似乎是在等待所有信号并输出它们。我想要的是在输入后立即为每个信号(在当前输出上)输出一个信号。
比如:如果我把(1)写成初始值。所有三个数字中的 5,5,5。有 3 秒的时间延迟,我将在目标 1、目标 2 和目标 3 中有 6、7 和 16。并且在所有 16 个电流输出上。我不希望它立即出现在当前输出中。我想要它出现在具有相同时间布局的目标中。
请参阅所附照片。
谁能帮我解决这个问题。
谢谢。
LabVIEW 中的所有节点在所有输入到达时触发。这种语言使用同步数据流,而不是异步数据流(这是您描述的行为)。
Merge Signals 的输出是一个包含所有输入信号的单一数据结构——合并,顾名思义。 :-)
要获得所需的行为,您需要某种异步通信。在旧版本的 LabVIEW 中,我会告诉您创建一个队列引用句柄并查看 producer/consumer 模式的示例。
但在 LabVIEW 2016 及更高版本中,右键单击平面序列中的每个隧道,然后选择“创建>>通道编写器...”。在出现的对话框中,选择 Messenger 频道。将新节点的所有输出连接在一起。这会创建一条异步线,其绘制方式与您的常规线非常不同。在连线上,右键单击并选择“Create>>Channel Reader...”。将 reader 节点放在 For 循环中,并将 3 连接到 N 端子。现在你有了这样的行为,当每个块完成时,它会将它的数据发送到循环中。
如果要保证入队顺序,将Write节点移到Flat Sequence中。如果您等待并在外部执行 Writes,有时您会得到无序的数据(即当数据生成节点恰好 运行 很快)。
旁注:我(和大多数 LabVIEW 架构师)强烈建议您尽可能避免使用序列结构。他们是养成的坏习惯——网上有很多关于他们缺点的文章。
我在不同的时间有三个合并信号的输入,合并信号的输出似乎是在等待所有信号并输出它们。我想要的是在输入后立即为每个信号(在当前输出上)输出一个信号。
比如:如果我把(1)写成初始值。所有三个数字中的 5,5,5。有 3 秒的时间延迟,我将在目标 1、目标 2 和目标 3 中有 6、7 和 16。并且在所有 16 个电流输出上。我不希望它立即出现在当前输出中。我想要它出现在具有相同时间布局的目标中。 请参阅所附照片。
谁能帮我解决这个问题。 谢谢。
LabVIEW 中的所有节点在所有输入到达时触发。这种语言使用同步数据流,而不是异步数据流(这是您描述的行为)。
Merge Signals 的输出是一个包含所有输入信号的单一数据结构——合并,顾名思义。 :-)
要获得所需的行为,您需要某种异步通信。在旧版本的 LabVIEW 中,我会告诉您创建一个队列引用句柄并查看 producer/consumer 模式的示例。
但在 LabVIEW 2016 及更高版本中,右键单击平面序列中的每个隧道,然后选择“创建>>通道编写器...”。在出现的对话框中,选择 Messenger 频道。将新节点的所有输出连接在一起。这会创建一条异步线,其绘制方式与您的常规线非常不同。在连线上,右键单击并选择“Create>>Channel Reader...”。将 reader 节点放在 For 循环中,并将 3 连接到 N 端子。现在你有了这样的行为,当每个块完成时,它会将它的数据发送到循环中。
如果要保证入队顺序,将Write节点移到Flat Sequence中。如果您等待并在外部执行 Writes,有时您会得到无序的数据(即当数据生成节点恰好 运行 很快)。
旁注:我(和大多数 LabVIEW 架构师)强烈建议您尽可能避免使用序列结构。他们是养成的坏习惯——网上有很多关于他们缺点的文章。