Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

Switching Dynamic Channels after HSDIO settings have been committed

Hello.  I'm trying to find a way to switch between two dynamic channels in a waveform after the HSDIO waveform is initated. 

 

Would someone point me to an example or reference where I could learn how this is done?

 

For example: 

I have a PXI-6561 in a 1062Q chasssis.  I am assigning channels 0-3 as dynamic and using HSDIO write to populate the 4 channels from a waveform.  

 

I need channels 0 and 1 to be un-disrupted and repeating (all channels are the same lenght).  Channel 2 is data sent to an IC and channel 3 is used for queing updated data.   I'd like to HSDIO write to channel 3 and then, when the write process has completed, I would like to swap channels 3 and 2 before the waveform begins another cycle.  

 

I have tried this by re-calling the Assign Dynamic Channels node.  This did not work because Assign Dynamic Channels does not work after the waveform has been initiated.  

 

A very similar question was addressed on this forum at the below link.  This did not work for me because the waveform is already commited when I want to make the switch. 

http://forums.ni.com/t5/Digital-I-O/HSDIO-Dynamic-Generation-of-Digital-Signals-on-Separate-Non/td-p...

 

Also, I'm open to suggestions about a better way to accomplish this.

 

Thank You,

Sean

0 Kudos
Message 1 of 4
(5,178 Views)

Hi Sean,

 

I have been looking in to your question and I have not been able to find a way to do this without a brief stop to reload the waveform. 

The way data is encoded for HSDIO makes switching channels after the data has been committed  not possible unfortunately. You could try to use scripting and trigger the waveform to swap the location of the data, but this would have to be done in Windows and the waveform must be reloaded into onboard memory. The script would be small so reloading that is not a huge time sink. The worst of it is having to reload the entire waveform, but this cannot be worked around.

 

Recommendations to improve performance would be to have a large onboard memory and load as much as you can into it initially to prevent reloading several times. If the first pattern takes 1Mbit of data per channel on one channel, you can load around 60 patterns with the data on different channels, for instance. Then you can create the script to address each pattern by its waveform name.

 

It is unfortunately the way we have to work with the board at this time. However, this actually would be a great application for an FPGA on one of our FlexRIO modules. You could use this in order to do this task specifically. 

 

Please let me know if you have any questions!

Stephanie S.
Application Engineer
National Instruments
0 Kudos
Message 2 of 4
(5,148 Views)

Thanks Stephanie.  I think I've decide to run a separate clock line and sync the two clocks on the 6561 cards.  That way I can change data content on one without interrupting the clock on the other. 

 

-Sean

0 Kudos
Message 3 of 4
(5,107 Views)

Hi Sean,

 

Thanks for the response! I am glad that you found a solution that works for your system. Best of luck with your application!

Stephanie S.
Application Engineer
National Instruments
0 Kudos
Message 4 of 4
(5,088 Views)