05-17-2016 08:57 AM
Hi,
I'm working on a system capturing data at various rates. At slow speed (e.g. 1Hz) I need to capture continuously, which is not a problem.
My high speed logging, via a couple of C series NI 9223 modules, is in the region of 500kHz to 1MHz per channel, for 8 channels. I want to be able to trigger this based on the signal rising above a pre-specified level. I only need to monitor one channel to trigger from. It's not a feature that can be implemented in the module, unlike PXi cards that I have worked with previously. By which I mean that the module can't be set up to log data continuously into it's ownbuffer, search for the trigger condition, and only send data back to the Pc when the trigger condition is met.
My thoughts are that there are two posibilities.
1. Continuously acquire data, check for trigger condition, discard data when trigger is not met, process/log data when it is met.
2. Build a comparator circuit to compare the incoming signal with a predetermined level and bring this in on a digital input or PFI input on the cDAQ 9188XT chassis the modules are plugged in to.
My chassis is filled with analogue input, digital input and digital output modules. I don't have an analogue output to feed to a comparator, so that solution would be less flexible, and I would rather use the software solution.
My questions are:
Q1. What is the most efficient way to code this?
Q2. Have I missed any hardware features that would simplify the problem?
Any observations would be greatfully recieved at this point,
Regards,
Bandit
05-17-2016 10:40 AM
This is the most efficient method I have come up with (in my benchmarking test code).
And on my PC (3GHz Xeon, 3.47GB RAM, Win XP SP3) when searching 1,000,000 samples on one channel (no early finish, not trigger condition detected) it takes around 25 ms.
Regards,
Bandit.