01-30-2019 04:34 PM
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
01-31-2019 12:26 PM
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?
01-31-2019 05:16 PM
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
02-01-2019 11:46 AM
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?
02-04-2019 10:05 AM
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 🙂
02-05-2019 09:37 AM
mblock,
Glad I could help. We all could slow down and read a little more. Best of luck to you.