LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

PDA Processing and Logging

Hi all,
 
I have been trying to implement what seems to me to be a simple task in Labview PDA, however I am not finding it to be so.  I need to sample 3 channels of analog input from the NI CF-6004 at 4kHz, pass the data through a digital filter (31tap) that also decimates the data to 1kHz, and then save data to an SD card.  I am using an iPaq hx2495 and Labview 8.2 with the PDA module and DAQmx Base 2.1.
 
I need this application to run this application continuously for 24hrs.  I'd say that about 50% of the time the application runs for the full 24hrs, but the other half of the time I get a buffer overflow condition at random times.  I suspect that something in Windows Modile 5.0 (Active Sync? or some communication bus, IR??) is stealing processor resources at random times and causing the Labview software to delay.  I have disabled wireless communications and disabled the auto-recieve IR messages, but this still hasn't helped.
 
I have tried to implement a producer/consumer loop to queue the data, but the consumer loop never runs unless the producer loop is stopped.  Has anyone run into any similar issues?   Does anyone know if there is a way to set the priority of the Labview PDA application higher than the priority of any of the PDA applications?  Is there a way to disable PDA interrupts?
 
Any help/ideas/tips are greatly appreciated.
 
Thanks,
Matt
0 Kudos
Message 1 of 4
(7,621 Views)

Matt

If I understand correctly, you are running an application and after 24 hours, you get a buffer condition. What error code are you getting?. Also, how much space is left on the SD card at that time?

Regarding your Producer/Consumer Loop question. I just created an application running on a PDA using that design pattern. I was able to verify that it is indeed possible to create such applications on PDA. Are you continuously feeding data into the consumer loop or only after the producer loop stops?

Please let me know.

Regards,

Rudi N.

0 Kudos
Message 2 of 4
(7,557 Views)

Hi  Rudi,

I get the buffer overfill condition not at 24hrs, but at random times during the 24hr period.  I have it setup so that it writes data to different files depending on what hour it is at relative to the initial start.  When it reaches the point that it is looking for hour 25, it asks me for the name/location of where to write, which I cancel and the program stops ok.  I have implemented a error checking routine where if the buffer overruns then the error is cleared, the task is stopped, and then the task is started again.  This is ok since it only happens rarely, if at all during the 24 hour period, however, I would like to eliminate it at all.

I think that I am pretty much at the max throughput for sampling 3 channels across the CF bus, processing through a digital filter, and then sending the data to a card across the SD bus.  When I try the producer/consumer the consumer doesn't run, I assume because the producer/consumer is slower than the single loop code.  I would have to continuously feed data into the queue for the consumer to process, since the acquisition (producer) must run continuously for 24hrs.

Any ideas?

Thanks,

Matt

0 Kudos
Message 3 of 4
(7,552 Views)
Matt:

I am not quite about why your Producer/Consumer loop does not work properly because as long as you have elements in the queue, the consumer loop should be dequeuing them. At what rates are you sampling from the CF? How often do you write to the SD card and how big is it?
Thanks,

Rudi N.
0 Kudos
Message 4 of 4
(7,529 Views)