LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

memory preloading in PCI 6534 using labview

hello everyone,

 

i am using the PCI 6534 card for my digital i/o application. I want to transfer the 16bit data from hardware to pc using this card..

 

i first want to store the coming data into card memory and after some defined samples i want to aquire the data but as i have seen in this post:

 

http://forums.ni.com/t5/Digital-I-O/I-want-to-check-all-functions-of-PCI-6534-I-have-read-the-user/m...

 

If you are doing digital input, you obviously can't preload the data. Once the digital input operation starts you will be transferring data as quick as possible from the onboard FIFO to the PC memory (buffer). But once again, you can't preload for an input operation.

 

 

is it right??? cant i store some samples data into memory and then after aquiring???

 

please answer me.. am not quick response from this site...

0 Kudos
Message 1 of 9
(3,462 Views)

Duplicate Post here.

0 Kudos
Message 2 of 9
(3,442 Views)

i want to ask that by jst putting the channel property node before start.vi and selecting input.onbrdbufsize, the data comming t the card will directly get stored into the onboard memory or it will not do that???

 

 

Please help me in understanding this property node function...

 

Bhoomi

0 Kudos
Message 3 of 9
(3,419 Views)

Hey Bhoomi,

 

You do not have to set up the property node "input.onbrdbufsize" in order for the data to go into the onboard memory of the device. The DAQmx driver and the card itself will put the data into the onboard memory without you having to set any properties. The input.onboardbufsize is a Read-Only property. You can not write a value into the onboard buffer size property, as the property will not allow you to change it to write (when you right click and try to "Change to Write". This property will just tell you how many samples per channel the size of the onboard input buffer there is on the device. If you use the Context Help in LabVIEW, you can read the description given for each property. You can also right click on a property and go to Help for... and it will take you to the detailed help doc that explains the property or VI in more detail. After the data is acquired by the front end circuitry on the device (which compares the data to see if it is a 0 or a 1), the resulting data gets put into onboard memory before it can be transfered across the PCI bus and into the PC memory.

 

Since the 6534 has a 32 MB onboard memory size, you will either get 8 M samples, 16 M samples, or 32 M samples of onboard memory for your acquisition, depending on how many ports you are acquiring data into. If you are only acquiring data on one port (8 bits = 1 byte/sample), you will be able to acquire up to 32 M samples into the onboard memory, without having to set any properties of the onboard buffer size. If you are acquiring on two ports (16 bits = 2 bytes/sample), then you will be able to acquire up to 16 M samples into the onboard memory. And finally if you are acquiring on four ports (32 bits = 4 bytes/sample), then you will be able to acquire up to 8 M samples into the onboard memory before you will need to start fetching the samples off of the onboard memory into the system memory. Again, the DAQmx driver allocates this memory size based on the number of ports you are acquiring from, so you don't have to worry about setting anything up for it to use the available memory on the onboard buffer. I hope this helps answer your questions regarding the onboard memory size and how to use it.

 

Regards,
DJ L.

0 Kudos
Message 4 of 9
(3,404 Views)

ok then if i want to check how much memory filled how can i do???

 

i also want an indication when memory gets full... so how can i do this????

0 Kudos
Message 5 of 9
(3,397 Views)

Hey Bhoomi,

 

Unfortunately there is not an exact property or function that will tell you how much onboard memory you have used at a certain time. There is a DAQmx Read property called "Total Samples Per Channel Acquired". Then based on the number of ports you use, see my last post above, you can calculate how many Samples are available by subtracting the total acquired by the total possible.

 

When the memory gets full, you should get an error, unless you set the DAQmx Read property called "Overwrite" to Overwrite Unread Samples. If you do not set this property, then you the driver will error out telling you that you overflowed your buffer. Now if you read samples off of the device onboard memory into the PC memory fast enough, then you should not run into this error and you can read continuously. Hope this helps.

 

Regards,

DJ L.

0 Kudos
Message 6 of 9
(3,391 Views)

Thanks DJL

 

this i can manage but i have some new problem in project.. I m giving the trigger signal of 1khz frequency and giving 12bit input to the card. it takes the 1st trigger and reads the samples i want to take but after that when it checks for next trigger the error comes.

 

May be its not detecting the trigger next tym..i want to make loop which executes when the trigger comes and in between if any trigger comes it should exit the loop so how can i detect the trigger signal for this???

 

bhoomi

0 Kudos
Message 7 of 9
(3,367 Views)

hello

 

i have another question regarding the same card.. i have done the vi for acquiring the data with the extenal trigger applied..

 

 now i want to modify this vi for time based system.. i want to make vi such that the data get acquire by the vi using the external clock for the time I have specified..

 

if i set the no of samples for the finite samples, the acquisition be the dependent on the external edges not time..and if i set this property for counitionus samples, it acquires the data even after the specified time over...

 

 

 

so how can i done this?? can anyone help me for this???

0 Kudos
Message 8 of 9
(3,248 Views)

Hey Bhoomi,

 

Sorry I haven't gotten back to your post in a while. Just wanted to check to see if you were able to figure out what you were wanting to do. From your last post, you mentioned you wanted to acquire for a set amount of time. I would recommend that if you are using an external clock that is used for sampling of your data, and that clock is continuous and running at a set frequency, then the Finite Acquisition based on that clock would be the best timing to get the system to run at the time you want, because it would be hardware timed, and not software or system (PC) dependant. With the external clock and triggers, the only thing that would throw the overall timing off would be if you want the overall time to start right away, but then the triggers don't come right away. In this instance, you might want to set up some timing mechanism in your program. You can poll the system time of your machine and use that for timing, but you might see some differences from run to run because of other processes going on in your system that might take priority, etc.

 

Hopefully you have found a solution by now, but if you still need help, please let me know and I will see what I can do to help you out. Thanks, and have a great day.

 

Regards,

DJ L.

0 Kudos
Message 9 of 9
(3,139 Views)