使用HSDIO来设定多个Script Trigger。 主要软件: Driver Software>>NI-HSDIO主要软件版本: N/A 主要软件修正版本: N/A 次要软件: N/A 硬件: Digital I/O (DIO)>>High-Speed
问题: 我想在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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
