Externally trigger binned counting

Hi,
I have a PCI-6221 and am trying to achieve the following.  I've tried searching and found similar questions, but nothing exactly the same, so apologies if I have overlooked a previous answer.
What I would like to do is count total pulses per 100 µs for some fixed period of time, say 100 ms.  The start of the 100 ms total measurement period should be triggered by an external signal which is much slower, e.g. 1Hz  This is as I need to sum multiple mesurement events as follows, where the time bins given are times after the trigger signal and each measurement is triggered by the external signal.
Measurement     0-100µs  100-200µs    200-300µs   etc.
       1                    2                1                0
       2                    1                2                1
       3                    2                1                1
       4                    0                1                0
    total                  5                5                2
If I could get the rolling total for each measurement that would also be fine, I can subtract each time bin from the previous in software.  The previous example using this method would therefore be:
Measurement     0-100µs  100-200µs    200-300µs   etc.
       1                    2                3                3
       2                    1                3                4
       3                    2                3                4
       4                    0                1                1
    total                  5                10              12
I have looked at previous answers such as http://forums.ni.com/ni/board/message?board.id=40&​message.id=2056&query.id=1096458#M2056 and whilst I converted that to a finite number of measurements OK, I couldn't work out how to set it to digitally trigger without errors.  I'm using LabView 7.1.
Thanks very much, I hope that this was clear.
Alex

I haven't fully fleshed out this idea, but here it is in a think-out-loud form.
I'm assuming you don't have clocked analog output in your app, and will lean on using an AO task solely for its clock.
Here's the idea:
1. One of your counters is set as a retriggerable single pulse generator.  Let's say it's CTR0.  Use the external ~1Hz signal as its trigger, and set it up to generate a single pulse with a 100 msec high time and a minimal low time.  You'll need a DAQmx property node to make it retriggerable.
2. Configure an AO task to generate at 10 kHz, corresponding to your 100 microsec bins.  Configure it to be pause triggered by the output of CTR0.  Thus, the AO generates samples at 10 kHz, but only while CTR0 output is high (for 100 msec).  You'll have to write a buffer of analog values to generate, but it can just be an array full of 0 voltage, and you don't have to wire that output to anything either.
3. Configure your other counter, CTR1, for period measurement.  This may be tricky to configure with DAQmx property nodes, but ultimately you'll need to treat your pulses of interest as the timebase for the measurement while using the AO sample clock as the signal to be measured.   That sounds backwards, but the effect will be to store the number of your pulses of interest that occur between AO clock edges.  You will need to research "duplicate count prevention" to make sure that 0 values get buffered properly.
I *think* that sort of arrangement could work.  About every second, you get an external trigger.  That trigger causes CTR0 to generate a single pulse with a 100 msec high time.  Your AO task generates a clock pulse every 100 microsec, but only during the 100 msec when CTR0 is high.  Each of those AO clock pulses buffers a value for your CTR1 period measurement.  This should produce a measurement buffer like the first one you listed.
4. (Simpler Alternative) Configure CTR1 for simple counting.  Use DAQmx Timing.vi to specify the use of the AO Sample clock, and specify your external pulses of interest as the signal to measure.  By default, LabVIEW will expect to see those pulses at CTR1's default SOURCE pin.  This arrangement should produce a measurement buffer like the second one you listed, though you may still need to research "duplicate count prevention" to make sure that gets set up right.
5. I can't help but think there's another way to do this without the AO stuff, but nothing's coming to me now.
-Kevin P
Message Edited by Kevin Price on 02-01-2010 02:19 PM

Similar Messages

  • Does the external trigger of the 5152 count as a second channel?

    Hi everyone,
    The PXI-5152 digitizer is listed as providing a 2GS/s sampling rate (TIS) for one channel only.  My question is whether or not the External Trigger channel counts as a "second channel" when used during data acquisition.  If so, does this cause the maximum acheivable sampling rate to drop to 1GS/s for my data channel (CH 0)?
    My experience has been that this is the case, but I lack a smoking gun which explicitly states this.  When I use the external trigger to control data acquisition on Channel 0, I'm only ever able to acheive 1GS/s.  Am I making a mistake?
    I was hoping that the trigger port would act as a simple comparator.  If not, does this imply that the external trigger channel is being sampled at 1GS/s? 
    Many thanks,
    Jimmy

    Hi Jimmy,
    The External Trigger is not digitized and therefore is not a second channel. It is appropriate to consider it like a comparator.  It can be used as an analog trigger source for the TIS acquisition on channel 0 to achieve 1 channel at 2 GS/s.  I am not sure why you are only achieving 1 GS/s.
    I recommend starting with an example program such as "Configured Acquisition".  You can navigate to this example through the Example Finder, or by using your Start Menu and navigating to All Programs>>National Instruments>>NI-SCOPE>>Examples.  Select your preferred programming environment such as LabVIEW and locate Configured Acquisition.
    Once you have the example open try the following settings to achieve 2GS/s on ch0 triggered from the external trigger input. Set the sampling rate to 2GS/s, the channel to 0, check "TIS Enabled", and ensure that Enforce Realtime is also checked.  Set the trigger type to Edge, and the trigger source to the External Trigger.
    - Jennifer O.
    Product Support Engineer - High Speed Digitizers

  • Data-acquisition with NI 6036E DAQ card & GPIB using an external trigger

    Hi all,
    I hope somebody could give me some help with the following and answer some questions:
    Simple system description:
    Labview 6.1
    PCI-GPIB card
    6036E DAQ card
    In my system, I am using an external analog trigger signal (A) for continuous data-acquisition. Characteristics of the analog trigger signal (A) are: ~40 Hz, signal height +1.48V, triggered by rising edge (the analog trigger signal (A) could be changed to a TTL signal). Each data-acquisition is done within ~1.0 ms after the rising edge of the trigger pulse. The timing of the data-acquisition and analyzing procedure is controlled by execution in a sequence structure placed in a loop.
    Now, I connected a power meter to the system, to measure the laser power during the data-acquisition. The power meter has two options to provide the laser power data:
    a) via analog signal output (voltage corresponds to laser power in watts)
    b) via GPIB (direct output reading of laser power in watts).
    Problem:
    During a certain point in my data-acquisition sequence structure (defined by a frame), I want to use the next occuring analog trigger signal (A) to acquire 1 value from the power meter.
    How do I do this in Labview programming for the following two situations?
    a) If I connect the analog output from the power meter to an analog input channel of the 6036E DAQ card. The analog trigger (A) would be connected to a second analog input channel (In case the analog trigger signal (A) is changed to a TTL signal it would be connected to the PFI0/Trig input pin on the DAQ card).
    b) If I use the GPIB connection of the power meter. The analog trigger (A) would be connected to a second analog input channel (In case the analog trigger signal (A) is changed to a TTL signal it would be connected to the PFI0/Trig input pin on the DAQ card).
    An other possibility would be to trigger the power meter directly, so it outputs constantly power meter values at ~40 Hz. How could I than acquire 1 power meter value (at a certain time im my sequence structure) via analog input at DAQ card or GPIB?
    Additional questions:
    How do I configure the PFI0/Trig pin on the 6036E DAQ board individually as an INPUT?
    How do I use an analog trigger signal (A) as counting signal for a loop, or as an activation signal for a sequence structure which includes GPIB commands?
    It would be very nice if somebody could give me some help.
    Kind regards,
    beam

    Hi beam,
    I just want to verify that I understand your situation correctly:
    An external trigger signal (A) is wired to one of your input channels (e.g. CH0) to trigger data acquisition of a second channel (e.g. CH1). Your power meter is connected to an analog input channel, which you would like to trigger with a certain rising edge at some of your sequence structure.
    Problem:
    During a certain point in my data-acquisition sequence structure (defined by a frame), I want to use the next occuring analog trigger signal (A) to acquire 1 value from the power meter.
    How do I do this in Labview programming for the following two situations?
    a) If I connect the analog output from the power meter to an analog input channel of the 6036E DAQ card. The analog trigger (A) would be connected to a second analog input channel (In case the analog trigger signal (A) is changed to a TTL signal it would be connected to the PFI0/Trig input pin on the DAQ card).
    If a task has been configured to acquire signal from one analog channel, it's not possible to run a second analog input task or to add a second channel on the fly. You had mentioned that it's possible to read from the instrument through GPIB. Is it possible to perform a software trigger such that at a certain frame of your structure, when the trigger signal A reaches voltage "x", a GPIB command is written to your power meter to query a measurement reading?
    Additional questions:
    How do I configure the PFI0/Trig pin on the 6036E DAQ board individually as an INPUT?
    You do not need to explicitly configure the PFI0 line as an input. If you want to use it as an input such that it acts as an analog trigger, simply wire the trigger signal to this pin. When configuring the trigger in your software, specify PFI0 as the trigger source.
    How do I use an analog trigger signal (A) as counting signal for a loop, or as an activation signal for a sequence structure which includes GPIB commands?
    You can try using the Limit VI to find out when the trigger signal reaches a certain level, and count how many times this level is reached. Similarly, you can use this as the condition to execute GPIB commands.
    Hope this helps,
    Lesley

  • How do I auire data at every third pulse of an external trigger?

    I need to aquire 2048 data points where each one is triggered by the third pulse of an external trigger (TTL). Currently I can aquire 2048 data points where each is triggered by every pulse of an external trigger but I need to be able to do this at every third trigger pulse. It seems that I can't do this simply by entering "2" into the "skip count" input of the "Additional Trig Parameters' input of the "AI Start" VI. My attempt is in the VI titled TriggerScanA.
    Further more I will need to know the actual trigger scan rate for data analysis. This is also prooving difficult since even when I am triggering off every external trigger pulse the actual scan rate only returns zeros. My attempt is i
    n the VI entitled TriggerScanB.
    Thankyou.
    Attachments:
    Trigger_Scan_VI's.llb ‏211 KB

    Greetings,
    This sounds like an interesting application. I would suggest that you use your external pulse train as a scan clock, not as a start trigger. Furthermore, since you want to acquire data every third pulse, you will need to use one of your device's counters to divide-down this signal. To accomplish this task, you will need to configure the counter for pulse train generation with an external source - your external pulse train. You will then need to choose the correct "raw counts" to generate a pulse train with a frequency that is 1/3 of that of your external signal. I would suggest that you examine the example Generate Pulse Train (DAQ-STC).vi for this purpose. Now, you can perform a finite analog input acquisition of 2048 data points u
    sing this pulse train as your scan clock. Finally, to determine the frequency of your scan clock, you will need to us your device's other counter to perform a frequency measurement of either pulse train.
    I believe that this will be your best approach to accomplishing this task. Good luck with your application.
    Spencer S.

  • [Question] PCI-6220: digital level at the pause of a continuous impuls train with external trigger

    Hallo,
    I'm trying to use a PCI-6220 card to generate a continuous impuls train which will be paused at an external trigger. I've used the example code in the example library to generate the impuls train. The idle state of the impuls train is set to be high. But I figure that die digital level at the pause is sometimes high and sometimes low. I suppose that the level stays at the exact time when the pause begins?
    Is my assumption correct? Is there any way to let the impuls always pause at the idle state, like it will then be paused after a full impuls is finished? Any tips or links will help. Thanks in advance.
    Wei

    Yes your assumption is right. The output is latched to the last set value.
    If you are generating the pulse through the counter,  setting the Idle state in Create Virtual Channel.vi   doesnt help?

  • How to trigger a counter with AI input

    Hi,I have a question on how to trigger a counter with AI input.We are using a DAQ board with two counters(counter 0 & 1),and we have an external synchronization signal input at a frequency of 50 Hz or so.The counter is set to event counting mode.Now we want to trigger one of the counters so that the counter starts a new counting process each time it detects a rising/falling edge from the sync signal.Can anybody kindly show me how to achieve this?Thanks a lot.
    Regards
    Verdi

    Verdi,
    I think that the behavior you are looking for can be achieved by configuring the counter for buffered period measurement. The counter starts counting from some initial value with each rising or falling edge on the gate. You could also use buffered event counting, but the count value will not reset with each edge on the gate. I don't know what you're using to program the board, but you could start by looking at the counter examples that are installed with NI-DAQ.
    Hope this helps,
    Erin

  • How to externally trigger the execution of TestStand with a start and abort button through a digital interface?

    Hello,
    I'm Currently evaluating TestStand as an alternative for an in-house developed Test Sequencer.
    To start our own Test Sequencer we use a small box, connected to a DIO board. The box has a start button and an abort button. The box also has a pass, a fail and a running led.
    The interface with this box is made via some digital lines of a PCI-DIO-96.
    In our own Test Sequencer we have groups named Init, Run, Abort, Exit.
    The Init group is executed at startup (only once). It is used to initialize all the HW and SW. -> I guess this is the Pre UUT Loop callback in TestStand.
    The Exit group is only executed once at the end of the day when the application is terminated. It is used to free all the used hardware and cleanup all the resources. This probably is the Post UUT Loop Callback in TS.
    When a product needs to be tested, the operator presses the "start" button which triggers our own Test Sequencer and the run and abort group are being executed (first the run group, afterwards the abort group).
    When the product is being tested the "running led" of the little box lights up to indicate to the operator that the application is running. (only when the run and abort group are running)
    The Run group has all the functional tests in it. (MainSequence)
    The abort group is used to put everything back in it's original state after the test on this single product is done. (Post UUT)
    When executing the tests and something goes wrong (operator gets stuck in a clamper, ...) the operator can still press the abort button and then the execution immediately jumps from the currently executing step in the run group to the first step of the abort group. So, when something goes wrong, immediately the abort group is called.
    At the end of the run and abort group, if no errors occured, the "pass led" lights up. If one or more steps went wrong the "fail" led lights up.
    This setup can also be used to test multiple product in parallel. At that time all the different parallel testers have such a small box which contains a "start" and "abort" button and a pass, fail and running led. (it is possible that they are all connected to the same PCI-DIO-96 board. )
    My question:
    Is it possible to do something similar like this in Teststand? If yes, is there an example available that shows me how to do this in TestStand? (externally trigger the execution of TestStand)
    Typically, in the Init group (Pre UUT Loop) the digital interface box gets initialised.
    In the Close group (Post UUT Loop) the digital interface box is taken out of scope.
    Note: The PCI-DIO-96 board to which the digital interface box is connected will also be used in the rest of the developed application (MainSequence, ...)
    What's really important for me is that I can create a process model that all the application developers in our organisation can use. I really don't want any of the application developers (limited software experience) to mess around in all the features of TestStand.
    For them it's important that they just add the function DigitalInterfaceBoxInit () in the Pre UUT Loop Callback and the DigitalInterfaceBoxClose () in the Post UUT Loop Callback, and then everything works!
    It is important that the appliation developers do not have to create any global variables, other functions, synchronisations, parallel sequences, ... in TestStand. All this needs to be done with a simple call to the DigitalInterfaceBoxInit function.
    Thanks in advance for all the help!
    Best Regards,
    Dennis Vanotterdijk
    [email protected]

    Dennis-
    Your application sounds very well suited to TestStand's abilities. I am also quite impressed with your knowledge of how TestStand's architecture is arranged when you are still just considering whether or not to use it.
    I think that TestStand would work really well for you in this application. Like you mentioned it will provide you with a form of standardization for your application developers to work from. It also provides the flexibility for you to add your custom routines in many different places. TestStand also makes parallel and batch testing much easier in TS 2.0 so that you could develop one test for your product and execute different instances of it in parallel to test multiple products at once.
    As for your specific question about how to c
    ontrol TestStand using a DIO board. I think this is very feasible and should not be too difficult. Since TestStand provides you the ability to create a custom operator interface your operator interface could monitor the status of your DIO board and launch/abort executions based on the read values. Usually the executions are launched/aborted when a button on the GUI is pressed however, I do not see any thing different about basing the action on a DI signal vs a mouse click. I am sure your application is more involved than this high level description but from the sounds of it I think it is very possible to do with TestStand.
    Based on my experience of building test systems with TestStand and your description of the application, I would feel very confident in using TestStand to achieve all the goals you mentioned. If you have further detailed questions on how one of your features might be implemented, feel free to contact one of our Application Engineers or email us at www.ni.com/ask
    and we would be glad to help you.
    Best regards,
    Richard McDonell
    National Instruments

  • Ai acquisition external trigger rate in windows 2000/xp

    I'm doing repetitive measurements of the type described in the nidaq example DAQsingleBufExtTrig.C:
    iStatus = DAQ_Rate(dSampRate, iUnits, &iSampTB, &uSampInt);
    iStatus = DAQ_Start(iDevice, iChan, iGain, piBuffer, ulCount, iSampTB, uSampInt);
    while ((iDAQstopped != 1) && (iStatus == 0))
    iStatus = DAQ_Check(iDevice, &iDAQstopped, &ulRetrieved);
    When using a 100 Hz external trigger, the above code can be repeated at nearly 100 Hz on our various ni hardware (PCI E-series and a DAQCard-1200) under windows 95/98/me, using appropriate parameters. Under Windows 2000 but otherwise identical conditions, the best rep rate I can do is in the low 40s. I wouldn't have been too surprised if the roles of (2000/xp)
    and (9x/me) were switched, but as it is I don't know why this is happening. Any ideas are welcome.

    Hello;
    As you are reconfigure the hardware at each end of the buffer, you will become system dependent. The maximum speed that you can go will vary from machine to machine even.
    The way to go about that, is to set up a retriggerable Analog Input operation, which is hardware controlled. By doing that, you will become completely system independent, and will be able to run your application in any sort of machine/OS.
    I'm attaching a ANSI C example that does the trick.
    Hope this helps.
    Filipe A.
    Applications Engineer
    National Instruments
    Attachments:
    SimulateRetriggerScan_Eseries.zip ‏5 KB

  • How to connect external trigger PCIe1427

    Hi,
    We are working with PCIe 1427 frame grabber and a IR camera with Cameralink Standard. Our camera has got asynchronous reset at CC3, so we have given external trigger 2 in NI MAX and successfully able to grab the video. But we need to implement the same using Labview application, so tried to use imaq configure trigger3, imaq trigger drive VI's and unsuccessful in resetting the camera and grabbing video.
    We are using IMAQ 4.9 driver and Vision development module with Labview development suite 2013 SP1.
    Kindly provide any solutions.
    with regards,
    Sri 

    Hi all,
    Any suggestion in this regard.

  • How to connect external trigger PCIe-1433?

    I am having an issue getting the external trigger to work using a cameralink camera, a PCIe-1433 card and a signal generator.  The signal generator is connected to the SMB connector on the 1433 card and is providing a 20 Hz signal with a 20ms pulse width at TTL voltages (0-4V).  From memory, we are using the MAX software and under the Acquisition tab I have CC1 set to external, however the camera is not receiving this external trigger.
    I've attached a rough diagram of our setup.
    What could my issues be?  My thoughts are:
    1) Are there other settings in MAX I need to ensure?  I know the SMB connector can be an input or an output.  How can I make sure this is set to input?
    2) My input signal is 0-4V which is TTL, but does the signal need to be 0-5V?
    Any thoughts would be greatly appreciated.  Thank you.
    Attachments:
    ExternalTrigger.jpg ‏29 KB

    Hello tuckturn
    Thank you very much for getting in touch with us. 
    1)  In Measurement and Automation Explorer, the default is an input.  You would need to use LabVIEW to change the SMB connector to be an output. Can you please show me a screenshot of your camera attributes in Measurement and Automation Explorer.
    2)  Where does this input signal come from?  Do you have a 5V TTL compliant output to test this?  Can you please provide me the specification for whatever device is outputting the voltage?
    Thanks again.
    Sincerely,
    Greg S.

  • How to connect external trigger PCI-1433

    Hi all:
    I met the same problem as this old post: https://forums.ni.com/t5/Machine-Vision/How-to-connect-external-trigger-PCIe-1433/m-p/1677560/highli...
    however the post did not give solution.
    I am having an issue getting the external trigger( from PCI 6259) to work with a cameralink camera, a PCIe-1433 card . The PCI 6259 is connected to BNC 2111, the output trigger signal from CTR0 is connected to the SMB connector on the 1433 card and is providing pulse train at TTL voltages (0-5V).  Using the MAX SOFTWARE and under the Acquisition tab I have CC1 set to external 0, however the camera is not receiving this external trigger. The camera is Basler 4096-140km.
    I measured the ouiput signal from CTL0, the sigal seems good.
    I tried RTSI trigger before, failded. I thought SMB should be more straight forward, seems I was wrong.
    Looking forward to reply!
    Attachments:
    camera configuration.jpg ‏168 KB
    External Camera Trigger(SMB).vi ‏57 KB

    Bobjojo,
    You will actually need to affect the properties of both the camera and the frame grabber to take advantage of this triggering mode. I found a document that contains a good run down of the process to acquire in this mode (linked below). As far as the programming for the acquisition is concerned, the frames will be built at the driver level for the specified frame height. This means that the IMAQ driver will composite the line scans for you, and any simple acquisition (the document shows using the Vision Acquisition Express VI) will be able to pull the image into LabVIEW.
    www.ni.com/white-paper/13786/en/pdf
    Karl G.
    Applications Engineer
    ni.com/support

  • How to use an external trigger on an electrometer (KEITHLEY 6517A)

    I'm really new using LABVIEW, so please, be patient with me...
    I'm using a KEITHLEY electrometer to acquire data from a dosimeter. We are going to do some measurements on a pulsed source and before the pulse there's a trigger signal. I don't know the size of the trigger, I'll just know that when I start my measurements (in another lab) So I would like to implement a case were the user can decide the value of the external trigger, so this information goes to the eqipment before starting the measurement.
    What I would like to know is... Someone can give me a hint on how to do that? I'm using GPIB and LABVIEW 7.1.  and I already took all the 6517A libraries for labview.
    Thank you all

    The external trigger on a 6517 is a TTL signal. Any pulse higher than 3.4V will trigger it. You cannot program the threshold level.
    You can set the delay programmatically with TRIG: DEL <n> command.
    ref: page 2-81 and following of User Manual
    Message Edited by normandinf on 10-21-2008 03:55 PM

  • External trigger of ni pxi 5122

    hello,
    i want use external trigger of ni pxi 5122 to select video line (video HD).
    how it is the form of the trigger in this case?

    Hello,
    Based on the Specifications Manual (pages 18 and 19) this module will accept a voltage signal from -5V to +5V.
    http://www.ni.com/pdf/manuals/371172m.pdf
    Please refer to the links below for more information about Video Triggering.
    http://www.ni.com/white-paper/3735/en/
    http://zone.ni.com/reference/en-XX/help/370592E-01/digitizers/5122_video_triggering/
    Regards,
    MCOTO.

  • External trigger ni pxi 5122

    hello,
    i want to generate an external  trigger signal for an ni pxi 5122  to launch a specific line video : HD(720p,1080i).
    what is a form of this external trigger ?

    Hello,
    Based on the Specifications Manual (pages 18 and 19) this module will accept a voltage signal from -5V to +5V.
    http://www.ni.com/pdf/manuals/371172m.pdf
    Please refer to the links below for more information about Video Triggering.
    http://www.ni.com/white-paper/3735/en/
    http://zone.ni.com/reference/en-XX/help/370592E-01/digitizers/5122_video_triggering/
    Regards,
    MCOTO.

  • How do I acquire 1 image every time an external trigger fires

    I am using an NI 1428 frame grabber card and a common apature camera to acquire real time images.
    Does anyone know how to listen for an external trigger (ext 0) and after it fires, grab the current image on the frame grabber card? I want to do this inside of a loop that grabs one RGB image everytime the trigger fires.

    Hello,
    Check out the following shipping example in the LabVIEW directory:
    examples\imaq\IMAQ Signal IO.llb\LL Triggered Snap.vi
    Let me know if you have further questions!
    Regards,
    Yusuf C.
    Applications Engineering
    National Instruments

Maybe you are looking for