LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

HSDIO 6547 signal generation from multiple devices and specific channels

I am trying to generate a set of 13 signals from the niHSDIO 6547 device. I have five such devices (in slots8~12 of the PXIe 1075 chassis). Each of these have 32 channels as you may know. I want the signals to be generated from specific channels so that I route them to the DUT input pins. I used the U32 binary format in the HWS file to create waveforms and assigned the channel maps (device 0 channel 1 etc.) accordingly. How do I make my resource name talk to the HWS file in a such a way that it knows device0 = slot8, device1=slot9 etc? 

 

I have also attached my VI. I started with creating the 5 HSDIO resource names and selected their respective channels. I was using DWDT digital signal subset.vi function previously to select only specific channels, but that did not help me as I could not choose my device name along with the channel. I'm not sure if the correct data is generated from the correct channel (though I am getting an output with the 13 signals)! Also, I was getting an error about the dynamic channels not matching the channels in the file.

 

Is there a simpler way to do this?

 

0 Kudos
Message 1 of 2
(2,038 Views)

Hi Nivetha,

 

I believe I'm working with you on the same service request via phone. I looked over your code again and would like to suggest some changes for code efficiency. One of the first things that I noticed was that all of your resource names are set to read from the same card. If you keep it like this, you'll get an error because only one session can be open per device at a time.

Front Panel.PNG

Right now your generation is only going to occur on the card that's in slot 2 of PXI1. You should be able to use that drop down arrow to navigate to the correct slots. I believe you mentioned that you'd be using slot 8, 9, 10, and 11, but make sure to check that the correct slots are lining up for this.

 

We had talked on the phone about this community example. I strongly suggest you look at it. I would suggest actually using one HWS file with 160 signals (I believe this is what you originally had). You can then use the DWDT Digtital Signal Subset VI. You can use this VI to separate them out into five sets of 32 signals. The example I linked shows you how this VI takes signals 0-19 and puts it on card 1 and signals 20-39 and puts it on card 2. In this case the example is written for two HSDIO cards with 40 total signals. To be more specific about how HSDIO knows what HWS signal routes to what channel, the first signal in the list will route to the first channel specified. Looking at the example, the first three channels in the HWS file will route to channels 0, 1, and 2. In your case, you'd probably set up an HWS so that the first signal will route to channel 0 of the 1st card.

 

You can alter the example by making the case statement have five cases (right click » add case...) had then making the conditional terminal on the case statement correlate to the value i (the number of times the loop has interated). This way the waveform is written. 

 

The original worry with this example was the synchronization between the cards. If you look below is a picture of how this is compensated for. 

synch.PNG

Each card is set up and ready to write it's subset of data. Once all the cards are ready to go, NI-TCLK configures the signals to synchonize up and starts all of the sessions at once. This way, all of the channels are writing at the same time. The program then goes into another loop where it makes sure that all of the sessions are closed.

 

More information on HWS files can be found by going to Start»Programs»National Instruments»NI-HWS»NI Hierarchical Waveform storage help. 

 

Hope this helps!

Lea D.
Applications Engineering
National Instruments
0 Kudos
Message 2 of 2
(2,022 Views)