使用HSDIO来设定多个Script Trigger。
主要软件:
主要软件版本: 1.4
主要软件修正版本: N/A
次要软件: N/A
硬件: Digital I/O (DIO)>>High-Speed Digital I/O
问题: 我想在HSDIO中使用script和software trigger来发送多个波形。然而,我只有4个trigger可以使用,现在我想产生超过4段以上的波形,怎么办?
解答: 您可以使用软件触发的教本来切换不同的波形。不是使用script trigger来锁住一段不同的波形,我们可以组合这四个触发来构成表格。对于每个script trigger,都有两个状态(asserted, de-asserted),那么一定会有16个可能的状态组合。 下面是一个表格的例子。
ScriptTrigger0 ScriptTrigger1 ScriptTrigger2 ScriptTrigger 3
myWfm0 T T T T
myWfm1 F T T T
myWfm2 T F T T
myWfm3 F F T T
myWfm4 T T F T
myWfm5 F T F T
myWfm6 T F F T
myWfm7 F F F T
.
.
.
myWfm15 F F F F
在伪代码格式下,您可以生成下面的脚本:
Loop forever
generate myIdleWaveform
if ScriptTrigger0 AND ScriptTrigger1 AND ScriptTrigger2 AND ScriptTrigger3
generate myWfm0
if ScriptTrigger1 AND ScriptTrigger2 AND ScriptTrigger3
generate myWfm2
.
.
end loop
AND指令不能和If/Else指令一起使用,所以实际的脚本会略有不同。 您将需要使用嵌入的IF/ELSE语句。既然script trigger不能同时被使能判断,需要一个同步信号。下面是发送八段波形的例子,使用了3个script triggers,使用1个用于同步。
真正的表格会和上面的前8段波形很类似。要注意,我们只使用trigger 0, 1, 和2的值. ScriptTrigger 3用于同步信号.当ScriptTrigger 3确定后,scriptTriggers 0, 1, 和2也都已经确定状态了(没有在未知或变化的状态)。
script myScript
repeat forever
generate myIdleWaveform \\ this is the waveform you want to always have running
if scriptTrigger3 \\ if True, then we can read all of the triggers
if scriptTrigger2
if scriptTrigger1
if scriptTrigger0
generate myWfm0 \\ T, T, T case
else
generate myWfm1 \\ F, T, T case
end if
else
if scriptTrigger0
generate myWfm2 \\ T, F, T case
else
generate myWfm3 \\ F, F, T case
end if
else
if scriptTrigger1
if scriptTrigger0
generate myWfm4 \\ T, T, F case
else
generate myWfm5 \\ F, T, F case
end if
else
if scriptTrigger0
generate myWfm6 \\ T, F, F case
else
generate myWfm7 \\ F, F, F case
end if
end if
end if //end of start trigger event
end repeat
end script
注意:您需要在每个If/Else语句前面加入发送语句来避免HSDIO的错误。在上面我之所以没有加是因为使脚本有更好的可读性。所以在每个if 语句前要加入"generate myIdleWaveform".
现在在LabVIEW程序中,您需要先设定scriptTriggers 0, 1, 和(或) 2,然后设定scriptTriggers 3。 例如,如果您想要发myWfm2,那么先触发triggers 0 和 2,然后trigger 3。使用"niHSDIO send software trigger.vi" 来触发。
如果要发送超过8个以上的波形,您不能使用scriptTrigger3来同步(超过8个波形要使用全部的trigger)。 在这种情况下,您需要使用startTrigger来代替scriptTrigger3。
script myScript
repeat forever
generate myIdleWaveform
if startTrigger \\ this is asserted using the "send software edge trigger.vi"
.
.
.
相关链接: HSDIO Seamless Waveform Switching Using Multiple Triggers Example
附件:
报告日期: 08/31/2006
最近更新: 09/11/2006
文档编号: 3ZUBL2JQ