LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

PXIe-6535 Digital Output only P0_L0

I am turning to help here as I have exhausted every search and example I can find...

 

I have a chassis with 4 PXIe-6535 Digital IO cards.  I need to output a pulse of 100us @ 300Hz (3% Duty) on 24 of the 32 channels.

 

These pulses need to be staggered delayed across the 4 6535's, however this is getting way far ahead from where I am currently stuck.

 

I have created several VI's for configuring and outputting the pulse, and I can ALWAYS get a desired pulse output on port0 line0, of each card.  

 

I cannot get the function to produce and output on any of the other channels in the card, no matter what I do.  I change the target line and run, and the Active LED on the slot lights up, but I cannot see any pulse when I measure the cable with a scope unless I have selected Line0.

 

In MAX, I can create a DigitalOut task for any of the channels, set to continuous samples, and always get an output - so I know the hardware is functioning. 

 

I have uploaded an image of one of the VI's that I created based on a search and example for this problem, and again this works great if I am choosing Line0.

 

Hopefully someone can point out the silly and simple error that prevents this from working on all the lines of the card!  Thanks in advance

 

0 Kudos
Message 1 of 6
(2,936 Views)

Hi mblock,

 

Thanks for reaching out. It looks like you are trying to write a binary array to a DAQmx integer write function. Essentially, you are writing the number 1 in binary represented by 5 lines or bits for 3 data points. if you were to write the number 3, instead of one, you will see the same graph, but you'll see line 0 and line 1 go high for 3 data points, then low for the remaining of the array. For 4, you will see line 2 go high and line 0 and 1 go low. This is assuming you change your Control to be PXI1Slot2/port0/line0:5, and your write function to multiple channels.

 

What you want to do, I think is represent each line as a data point in your array. As in if you want to write line 1 high and the rest low, you would feed the array 01000 right? You will have to change your DAQmx write function accordingly, instead of a 1D Unassigned 8bit integer. (1D U8).

 

Does that make sense why you are seeing the behavior you are experiencing?

Keddy C.
Staff Software Engineer
National Instruments
0 Kudos
Message 2 of 6
(2,892 Views)

Thank you keddy for taking the time to respond and answer my question.  Changing the value to 3 worked exactly like you predicted!  I just sent 255 to apply the high to all 8 lines in the port and it looks great.  

 

Only issue I have now is I cannot get it to work past Port0.  When I try and send the same routine to the 8 lines in Port1 there is no output.  Do I need to send another digital waveform for each 8line port (0-3) in the card?  I need to have 24 of the 32 channels outputting the pattern...

 

Thanks,

Matt

 

0 Kudos
Message 3 of 6
(2,885 Views)

Matt,

 

No problem, it's what I'm here for.

 

I'm not sure right away! Let me ask you a couple questions: If you select port 1 or another port in your channel reference name, does anything output? If you select multiple ports in NI MAX does it output on all ports? What happens when you send a separate digital waveform to another port?

Keddy C.
Staff Software Engineer
National Instruments
0 Kudos
Message 4 of 6
(2,869 Views)

Hi Keddy,

 

So I went back and reread your original reply and found that it contained all the advice I needed.  I changed around the DAQmx write method and am now able to output pulses on each channel, across all 4 slots.  

 

Thanks again!  Next time I will be slower in my reading comprehension 🙂

0 Kudos
Message 5 of 6
(2,854 Views)

mblock,

 

Glad I could help. We all could slow down and read a little more. Best of luck to you.

Keddy C.
Staff Software Engineer
National Instruments
0 Kudos
Message 6 of 6
(2,849 Views)