Capturing data acquisition frames reliably at 100 hz using serial, how?

Hi All,
I am completing development of a 14 channel, 10 bit resolution, pic based data acquisition circuit. It transmits frames of 41 bytes (currently) at 100hz using serial. The embedded code functions satisfactorily. I can see data ok using hyperterminal. I am unsure how to optimise labview to get complete frames without hogging lots of cpu/system resource etc. eg. do I simply set the frame size (num of bytes) to retrieve and set this looping as fast as possible , and/or set the rate to fetch frames at the rate frames are transmitted by the pic? This may allow drift in available buffered bytes to finally overflow the buffer.
I tend to lose 1 byte in 100 typically doing nothing but this increase
s to chunks of bytes if I interact with windows.
I have the feeling a number of decisions need making when setting up a serial link like this but I am unsure which settings best suit my application.
Thanks in advance,
Regards
Chris

Hi Lynn, Tristan,
Please find the current llb attached. This has my last serial run and shows how the data gets glitchy after a number of seconds (toward end of the text box).
I have spent time building the suggestions into code. I am not yet trying to strip out individual channels. At the moment I just want to get frames in reliably before moving on.
It certainly looks a lot more reliable now but a few more questions have been raised. I think the idea of getting data in using 1 loop then immediately passing it for processing by another parrallel loop seems important for reliability.
You will notice I grab a frame and it then goes into a que where it will be processed but this needs doing quickly as frames will be used in realti
me.
I have set up the code to trim the delay for both the get data from serial port loop and get 1 entry from the que loop.
I am using 2 identical circuits in my product, 1 captures data from a leg harness, the other controls movements of a biped robot (servos) this occurs in "real time". I need to remove as much latency due to processing as possible.
click on "video 3" on the right of the page for a prototype demo:
http://www.robotic-systems.co.uk/products/full_system.htm
I noticed that some of text embedded within text boxes used in subvi's can tend to float thro to the top level vi. I proved this by adding a bit of text and noticed it kept cropping up occasionally on the top level text box. I found this peculiar but cured it by deleting all chars in the subvi text box. Now I am concerned, could this be somthing to do with why I get glitches in text occasionally?
Is there some labview feature to say flush all text, numbers and bools prior to running from the top leve
l?
I'd be gratefull if you have a look thro my llb and sanity check the flow of code and let me know what you think.
Best Regards
Chris
Attachments:
Monitor.llb ‏722 KB

Similar Messages

  • Capturing data instantane​ously after condition is met using 2 DAQ cards

    Hi all,
    I am wanting to sample a pulse and a sine wave at a low frequency of 1 kHz point by point sampling and upon a condition being met - the leading edge of the pulse being greater than a certain value - I the want to take a certain number (here 270) of samples of the sine wave at 50 kHz, multiple samples. I am doing this within a case structure and using a separate DAQ card. 
    The problem is that when the conditon is met is does not capture the data at the higher frequency straight away. It misses part of the sine wave before commencing capturing the 'window' of the 270 samples of the sine wave at 50 kHz. I want to know if there is any way of speeding this up? I am aware that using an FPGA could help but I don't have access to one. 
    The other solution would to advance the condition, i.e advance the pulse train by a certain amount so that I compensate for the delay in activating the high freq capture. I would need to set up this advance of the pulse train so that, after the delay in activation, it captures the data exactly where it is required to. What would be the best way to do this? I could delay the pulse train by a certain number of samples/ or delay the sine wave, or I have read that you can use the sample timer/counter within the DAQ card to change the 'trigger of the pulse train'. How would I implement this?
    Attached is my vi. I would be very appreciative if you could help. 
    Attachments:
    2 DAQ cards Low and High Freq Sampling.vi ‏29 KB

    I do not have DAQmx or any suitable DAQ devices so I have not tested this.
    This is a start on cleaning and speeding things up. Note that writing to the front panel indicators at 1 kHz will not work because the screen update rate is on the order of 50-100 Hz. Also charts take a considerable amount of computation beacuse they need to (1) store data in the internal buffer, (2) erase old data if the buffer is full, and (3) (slowest) recalculate all the pixels in the display for the updated data. The cart should be moved to the parallel loop. The condition True boolean will only be true for about 5 ms out of each 100.  Look at the 5 ms boolean.vi  attached. It runs close to 1 ms per iteration. The boolean is true about 5% of the time but I never see it change. Remove that boolean from your VI.
    With continuous sampling on the pulse channel and reading 1 sample every millisecond (assuming you get that fast) when the high speed sampling occurs it takes 5.4 ms to acquire the 270 high speed samples. So, ten times per second the loop takes >= 6.4 ms for an iteration. The next sample it reads from the pulse channel is the one which was measured (acquired) at 1 ms after the previous sample. Thus, this data point is read ~5.4 ms after it actually occurred. The next time you detect a pulse, it will be 5.4 ms late. The second one will be 10.8 ms late. Eventually you will get a buffer overflow, but your data will be useless long before the error occurs.
    The Dual Sampler Simulator.vi shows a possible approach to the issue. It simulates sampling both channels at high speed.  I generate both a sine wave and a square wave and sample both at 50 kHz. It simulates reading 4000 samples at a time (equivalent to reading 12.5 times per second or every 80 ms). The square samples are then processed for the transition using the boolean Implies function. I do not recall whether the Conditional terminal was available in LV2012. I did not get an error when saving for previous version so I think it will be OK. The same thing can be done with a while loop with some extra logic.  This does not handle the case where the transition occurs at the boundaries of the 4000 sample segment. To handle those cases use a shift register on the outer loop to pass the needed samples to the next iteration. The 800 ms Wait makes it run slower than "real" time but allows you to see what is happening.
    Lynn
    Attachments:
    2 DAQ cards Low and High Freq Sampling.2.vi ‏26 KB
    5 ms boolean.vi ‏10 KB
    Dual sampler simulator.vi ‏15 KB

  • Data Acquisition on a 20MHz Timebase with PCI-6110

    I would like to acquire a data point (viz a voltage value) every 50ns (20MHz timebase). Then I would like to write these voltage values and the corresponding time value to a text file and finally plot the voltage values over the time. The data acquisition should be started on a trigger. How can I program this application in LabVIEW 7.1.1? I use a PCI-6110 card for the data acquisition. Thanks for any help!

    I would suggest you look at the shipping examples. Open the Example Finder and from the browse tab, select Hardware Input and Output>DAQmx, Analog Measurements>Voltage. Start with one of the simpler examples such as Cont Acq&Graph Voltage-Int Clk. You can also try the DAQ Assistant. Also, saving data to a text file can be pretty slow and will be a problem trying to maintain high acquisition rates. If you acquire data for a finite amount of time, you'll probably want to save the data once it's all been acquired and not real-time. You can use any number of methods for this. The Write LabVIEW Measurements File can be used to save an array of waveforms that you've captured. There are other shipping examples for saving real-time in a binary format. There are other examples at the NI Developer Zone.

  • How to reorder photos in folders based on capture date

    I have scanned a bunch of photographs and imported them into lightroom. I then went and changed all the capture dates to represent when the photos were actually taken. Now I would like to put the photo's in a folder structure based on the capture date (as all my other photo's are). How is it best to do this?
    Thanks,

    Well, if you are going to re-import them, then you really don't need to export them first in original format.
    I mean, assuming you checked the box which allows Lr to write to the raws when you changed capture time, then you should be able to simply delete (remove) from existing catalog, then re-import in preferred structure. If you did NOT allow Lr to update the raws (and so capture time would be lost when re-importing), then we need to talk (and I don't think exporting in original format will preserve capture time in that case either).
    Backup everything first...
    Rob

  • Choice of design pattern for data acquisition system

    Hello all
    I have a trouble about selecting the suitable design pattern / architecture for a data acquisition system. 
    Here is the details of the desired system:
    There is data acquisition hardware and I need to use it by observing parameters on User interface. 
    the data acquisiton period, channel list to scan should be chosen on User interface. Besides, there are many user interface interactions. e.g. if user selects a channel to add scanlist, then I need to enable and make visible some other parts on user interface. 
    When user completes the channel selection, then he will press the button to start data acquisition. Then I also need to show the scanned values on a graph in real time and log them in txt file.
    I know that I cannot use producer consumer pattern here. because the data acquisition loop should wait for parameters to scan channels. and it works in a given period by user. so the user interface loop performs higher rate then consumer loop (data acquisition loop). it means queue will be bigger bigger. if I use notifier it will loss some data come from user interface. 
    is there any idea about that ? is there any suitable design pattern for this case ? 
    Thanks in advance
    best regards 
    Veli BAYAR
    Embedded Systems Software and Hardware Engineer 
    "You live in a graphical world. Why not program in one?"
    Solved!
    Go to Solution.

    johnsold wrote:
    Veli,
    I recommend the Producer/Consumer model with some modifications.
    You might need three loops.  I cannot tell for sure from your brief description.
    The User Interface loop responds to the user inputs for configuration and start/stop of acquisition.  The parameters and commands are passed to the Data Acquisition loop via a queue. In this loop is a state machine which has Idle, Configuration, Acquisition, and Shutdown states (and perhaps others). The data is sent to the Processing loop via a different queue. The Processing loop performs any data processing, displays the data to the user, and saves it to file. A notifier can be used to send the Stop or shutdown command from the User Interface loop to the other loops.  If the amount of processing is minimal and the file write times are not too long, the Processing loop functions might be able to occur in the Timeout case of the UI loop Event structure.  This simplifies things somewhat but is not as flexible when changes need to be made.
    I am not sure that a Design Pattern for this exact setup exists but it is basically a combination of the Producer/Consumer (Events) and Producer/Consumer (Data) Design Patterns.
    Lynn
    Check out this thread: http://forums.ni.com/t5/LabVIEW/Multiple-poll-case-structures-to-event-help/td-p/2551309
    There are discussions there about a 3-loop architecture that may help you.
    Jeff
    Jeffrey Zola

  • LABVIEW SE DATA ACQUISITION

    I need to do data acquisition from a keithley 2000 multimeter having serial port (RS 232 interface) and also IEEE 488. Does labview student edition have the necessary software ( i guess NI-VISA etc) to do so? If so, i would like to install it.

    I just purchased the NI-VISA Development Software  part #  777300-03     and NI-VISA Deployment License   part # 777300-00 . Is that all i need for data acquisition from serial device data acquisition  ?  I downloaded the driver for  Keithley 2000 meter from IDN website. So please confirm whether i am fine or anything else is needed. Your response indicates that NI-VISA alone will do the job of serial data acquisition and therefore i am not going for labview now.
    Thanks and Regards
    poli

  • 100 hz data acquisition on fieldpoint cfp2000/2200 on xp

    Hi , I want to read data from  AI on cfp2200/2000 series on win-xp . But my data is getting duplicate , Can any body give any sample application for reading data at 100 hz or higher. .

    I better explain my problem in the thread How to timestamp continuous analog data acquisition using USB-6009 and GPS timing board?
    We are considering to use the PCI-1588 or a GPS timing board (low-profile slot too), but I´m not sure that the USB-6009 can be used to solve the problem.
    How to syncronize the data acquisition and timestamps using USB-6009 and PCI-1588 with external GPS?
    In other thread I would appreciate any suggestions for GPS timing board and PCI-1588 too.
    Regards,
    Lilian

  • Data acquisition from switching 500lbs load cell to 100lbs load cell

    I am using 500lbs load cell, and acquiring data by inputing 2volts from 2345 signal conditioning board, and sensor output is connected to SCC-AI03 pin 3 and 4 , and configure this load cell to a channel using NI MAX, data neighborhood, traditional NI-DAQ virtual channel, the physical quantity is voltage set at range -10 to 10, and sensor also set at voltage with no scaling, but, I couldn't get any signal when 100lbs load cell is use, the difference of this 100 lbs load cell is the rated output is at 2.958mV/V, while the 500lbs rated at 1.8295mV/V , how should I do this?
    Thanks.

    Hi,
    At this point, it is difficult to determine exactly what is happening to your acquisition. Could you please provide some additional information by answering the following questions:
    What voltage are you reading with the 500 lb load cell?
    Would it be possible to connect your load cells to a DMM and see what voltage reading you receive? If so, what do you see?
    What is specifically happening when you connect the 100 lb load cell?
    I also noticed that you are using the Traditional NI-DAQ (Legacy) driver. I recommend upgrading to the NI-DAQmx driver.  Here are a couple of links with more information about DAQmx:
    Advantages of NI-DAQmx:
    Transition from Traditional NI-DAQ to NI-DAQmx:
    Learn 10 Functions in NI-DAQmx and Solve 80% of Data Acquisition Applications:
    Regards,
    Hal L.

  • Data acquisition driven by encoder

    Hi everyone,
       I need to sample a capacitive sensor that measures the radial run-out (radial small displacement) of a rotating spindle. LabView v. 7.1 is employed to acquire the data by means of PCI-6036E card commercialized by National Instruments (NI). The spindle rotates at 100 rpm and a rotary incremental encoder is fixed at rear of spindle. The encoder gives two types of digital pulses as follows: a) A-quad-B pulses (it will be used only “A” pulses in this experiment); b) index pulse (one pulse per revolution). This encoder provides 1024 pulses type “A” per revolution. The measurements made by the sensor are driven by “A” pulses which are used as “external clock”. Therefore, every “A“ pulse, the card acquires one sample from sensor. Thus, 1024 data/rev are acquired. I want to sample 5 consecutive revolutions of the spindle. To start the data acquisition, the index pulse of the encoder is used as “start digital trigger”. Also, the index pulse should be used to count the number of revolutions of the spindle. In this way, when the number of revolutions is equal to 5, the data acquisition finishes. By contrast, the programmer also can set the number of samples equal to 5x1024 in the VI. The data acquisition is finished when the number of samples reaches this value. Similarly, the sampling process is started by the index pulse which is the “start trigger”. Note: 1) the sampled data should be put in a buffer. After the sampling process is finished, this data should be saved in a file of LabView; 2) In fact, the data acquired by the sensor are voltage analog input. Questions:1) Could you make a VI for this problem, please? Note: You can use the DAQ ASSISTANT EXPRESS VI or DAQmx TASK NAME CONTROL method.2) How to program the LabView in order to sample data triggered by the rotary encoder (pulse “A”)?3) What should I do to stop the data acquisition at the end of 5 revolutions?4) Could you send examples (VIs) similar to my problem above?5) How can I know if the program (VI) looses an “A” pulse? Is there any kind of error in VI that indicates a miss pulse?  In anticipation, thank you very much for any help. My e-mail: [email protected]                                                                                      Bruce

    Hello Bruce,
    I have a complete solution for this but I cannot give you the VIs because my customer has paied for it and all rights are transfered to him.
    What you need are two tasks.  One task is the analog in task. You must use the DAQmx Timing.vi and the DAQmx Trigger.vi to set it up as needed. Or you create a task in MAX with this setup. The other task is a counter task just counting the pulses from the z-Index.
    Next you need a small state machine with the states:
    init, start, wait and stop.
    init will initialize and start the tasks
    start will read out the z pulse counter and wait for a change from 0 to 1
    wait will read out the z pulse counter or the available samples property, when the desired number of z pulses or samples are available read the buffer with DAQmx Read.vi
    stop will stop both tasks and clear them.
     You will need two additonal counters which you don't have to check for lost A pulses and a external flip-flop electronic. The flip-flop will change it's state with each z pulse and the output will be used for gated counting. With each change of the z pulse counter you need to read out one of the additional counters to check if he had seen the correct number of pulses.
    Waldemar
    Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
    Don't forget to give Kudos to good answers and/or questions

  • Data acquisition on the basis of time

           Hi everyone,
    I want to acquire the radial run-out (radial small displacement) of a rotating spindle using a capacitive sensor. To do so I will use the LabView v. 7.1. The PCI-6036E card from National Instruments (NI) will be utilized for data acquisition. The spindle turns at 100 rpm and a rotational incremental encoder is fixed at rear of spindle. This encoder provides an index digital pulse per revolution. This pulse should be used to start and finish the sampling process. I want to sample on the basis of time, by means of sampling rate of the card (Ksamples/s). So, let us suppose that I want to acquire 500 data/rev. The spindle takes 0.6 sec to complete one revolution. Thus, the required sampling rate is Fs = 500 samples/0.6 s = 833 samples/s. So, I should set the VI in LabView so that it samples only 833 data/s. Therefore, I will have to reduce the sampling rate of the analog-input channels in use. For example, let us suppose that the card provides 100 Ks/s when operating in multiple channels. Let us admit that there are 4 analog-input channels in use. So, the scan rate per channel is 25 Ks/s. This is too much for this application. I only need 833 samples/s. So, I should program the VI so that the card provides that required sample rate. As said earlier, I need to start and end the sampling process at the same point. Thus, to do that the index pulse of the encoder will be used. Also, I want to sample during 5 consecutive revolutions of the spindle. So, by means of a loop in VI, I should count the index pulse of encoder until the number of pulses be equal to 5 (= number of revolutions). At this instant, the sampling process should be stopped. Note: 1) the sampled data should be put in a buffer. After the sampling process is finished, this data should be saved in a file of LabView; 2) In fact, the data acquired by the sensor are voltage analog input. Questions:1) Could you make a VI for this problem, please? Note: you can use the DAQ ASSISTANT EXPRESS VI or DAQmx TASK NAME CONTROL method2) What should I do to stop the data acquisition at the end of 5 revolutions using the index pulse of encoder?3) Could you send examples (VIs) similar to my problem above? In anticipation, thank you very much for any help. My e-mail: [email protected]                                                                                      
     Bruce  

    duplicate post
    Continue in other thread
    Message Edited by smercurio_fc on 11-14-2008 09:10 AM

  • Data Acquisition - using local variables to write data to a file

    Hello,
    I am running a Data Acquisition vi (currently in LabVIEW 7.1 but soon to be updated to 8.2) that collects ~100 parameters of data from several sources contained in a while loop. The current configuration (which I did not write) uses very few subVIs and writes to ~100 local variables to store each parameter. It then reads all the local variables and builds an array of all the strings, converts then to a spreadsheet string, then uses the write characters to file function to append to a datafile. I am trying to clean things up and have came up with subVIs to collect the data from the following sources:
    8 serial port sources collecting btwn 8 and 20 parameters each
    ~15 thermocouple readings
    ~10 analog inputs
    ~20 parameters read off an ARINC 429 bus.
    I have come up with a subVI to read each of the sources and have placed the subVIs in the while loop. Each subVI outputs the data that it collects in array or cluster form. I was wondering how best to write each parameter to a CSV file at between 1 and 10 Hz. Should I write each subVI output to a LV and then read them off as was done before (the difference being that I have reduced the # of LVs to ~10 vs >100?
    I should add that precise timing is not that important, so if all the subVIs are not collecting simultaneously (which I understand that they won't be), it does not really matter.
    Thanks.

    Hi jilla,
    jilla wrote:
    What I think that you are saying is to turn the outputs of the 4 subVIs into inputs of a 5th subVI that writes to the data file. Correct?
    Yes.  It may sound like a fine-point, but I beileve it's better to create a VI specifically for formatting data - in your example, 4 arrays IN, a single string OUT.  Then write the string to file as a seperate operation.  GUI-displayed data can go through a similar transformation, the four arrays wired to a subVI which builds output-structures specifically for display.  It's a beginner's mistake to put lots of individual controls and indicators on the screen when groups of them are naturally related (in an object-oriented sense.)  Use clusters to group related controls - this will keep the diagram much cleaner.
    One more question: at what point (either # of data points or frequency of data collection) does it become necessary to use queues? Thanks.
    Well, there's not really a clearly definable "point".  I'd say if your update-rate climbs above 100Hz, or you witness poor program or system performance, then it's time.  The scenario you've described is a fairly simple acquire/display&log loop - and simple is good.   Then-again people can't see/react-to updates faster than about 10Hz - so it doesn't make sense to sacrifice performance - if performance becomes an issue.
    Re: queues:  Queues are sometimes used to buffer data that's "produced" in one place and "consumed" in another.
    Here, if/when logging data, you're logging with every DAQ.  I wouldn't recommend using a queue to transport data from a "DAQ loop" to a "Logging-loop" - those functions can be in the same loop.  Should/could a queue be used to get data from a "DAQ loop" to update the GUI at a lower frequency?  Sure, but a Notifier might be a better choice.   Further, in the (simple?) program you've described, you might use a case structure (True/False) to only update FP indicators every "X" iterations - a simple solution that doesn't require Queues or Notifiers.
    Cheers!
    "Inside every large program is a small program struggling to get out." (attributed to Tony Hoare)

  • Data acquisition with highly accurate GPS time stamping (hh:mm:ss:sss UT)

    A research group has developed a data acquisition system dedicated to daily observations of solar phenomena at radio waves using high time resolution (5-100 ms).
    First, the analog signal from the antenna (1000-2500 MHz) is sent to a spectrum analyzer (HP8559-A). After that, the analog signal is digitized during 5 minutes in a NI USB-6009 device connected to the PC, before to be stored in a file. By that time, other acquisition data cycle is restarted and so on up to the end of day.
    However, we need timestamp (UTC) the solar data at the beginning and end of each sample of 5 milliseconds, during all acquisition process, in order to have the UTC time information of recorded solar events. So, a time resolution of at least 1 ms is required.
    A software permit us to read recorded data and visualize corresponding spectra during last 5 minutes. However, we need UTC time information in the format hh:mm:ss.sss UT. Then, UTC millisecond is important for us, but not available yet.
    To solve this problem, we are searching for a high accuracy timing GPS receiver (on the order of microseconds or nanoseconds), with at least three significant digits of precision (UT time in milliseconds) and which give us the UTC signal at least each 5 milliseconds or even better (1 ms). However, most GPS receivers only outputs 1 PPS (Pulse Per Second = 1000 millisecond).
    Then, we are open to a better addressing on how to solve this problem !!
    We know that GPS time synchronization with PXI-6608 can be used to precisely timestamp data acquisition, but we have to solve this problem with a lower cost. Also, we require a PCI interfacing instead of PXI.
    Do we have to use a timer card? How do we use a timer, GPS and USB-6009 to timestamp data acquisition? Does the NI PCI-6602 solve the problem?
    Obs:
    The data acquisition software was developed in C++ Builder to run on a PC (Pentium III 2 GHz) under Windows XP environment. We used the NI-DAQmxBase driver to sample the signal from the NI USB-6009.
    We are sure your expertise can help us on this matter.
    Regards,

    I better explain my problem in the thread How to timestamp continuous analog data acquisition using USB-6009 and GPS timing board?
    We are considering to use the PCI-1588 or a GPS timing board (low-profile slot too), but I´m not sure that the USB-6009 can be used to solve the problem.
    How to syncronize the data acquisition and timestamps using USB-6009 and PCI-1588 with external GPS?
    In other thread I would appreciate any suggestions for GPS timing board and PCI-1588 too.
    Regards,
    Lilian

  • 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

  • While loop and data acquisition timing worries

    Hello everyone, 
    I apologize in advance if this is a silly question, but I could not find the answer around here. 
    I have made a VI to record continuously from 64 analog channels at a 5kHz sampling rate. I then stream this data to a tdms file. The data acquisition and write functions are in a while loop. 
    I the same loop, I have a bunch of other loops, that each run on their own wait timers to help limit the amount of memory they take up. I am now worried that this may somehow affect my data acquisition timing.
    If I put a bunch of timed loops within another loop, does the outer loop run at the same pace as the slowest of the inner loops? And could that mess up my sampling rate?
    I have attached my VI, in case what I just wrote makes no sense at all. 
    Thanks for any tips...
    Attachments:
    Record_M8viaDAQv3.vi ‏237 KB

    Well, looking at your code you will only write to your TDMS file one time. You have multiple infinite loops within the main/outer loop. That means that the main loop will only run a single iteration because it cannot complete an iteration until all code within it completes. With at least two infinite loops inside the loop it will never complete. Not too mention the only way to stop your code is to hit the stop/abort button. NOt a very good way to stop your code. As someone once said using the abort to stop your code is like using a tree to stop your car. It will work but not advised.
    As Ben mentioned try to understand data flow better. You have unnecessary sequence frames in your code where normal data flow will control the execution sequence.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • Capturing data from usb webcam

    I'm interested in the acquisition of footage from a usb webcam into labVIEW. I have the professional development system and downloaded NI-IMAQ which I believe i'll need from reading online material.
    I don't really know where to start to link the camera with labview so any material would be a great help...
    Final question, is it a big undertaking acquiring data from a video camera in labVIEW? it's just i've limited time to work on a project and want to know if it's worthwhile undertaking or if it will be very time heavy. I've a few months labVIEW development experience if that would give an indication to anyone...
    Strokes 

    Hi,
    First your USB Cam needs to be DirectShow Compliant.
    Then you will need NI-IMAQdx from the Vision Acquisition Software 2009 (supports LV 8.2 and higher) or higher to acquire images from USB cameras. The NI IMAQ driver is to capture images from framegrabbers, and the NI SmartCamera, not for USB. There is also a own IMAQ USB Library for the Vision Acquisition 8.6 but since you need to buy the Acquisition Software I would recommend to use 2009 or higher where we added the DirectShow Support to IMAQdx.
    The Vision Acquisition Software is just for image acquisition and processing. If you want to do image processing you will need the Vision Development Module.
    And when doing a search at ni.com you should find some articles, examples and tutorials too.
    I can't estimate how much time you will need get that running, but you could just try to run one of the examples for IMAQdx in LabVIEW and then see how it works.
    Christian

Maybe you are looking for

  • ITunes accounts and home sharing

    First thank you in advance for all your help. I will really need it.  My hubby and I both have itunes accounts. My hubby wants me to close my iTunes acct and use his, that way we can use home sharing on all our devices. I have no problem with closing

  • Clip Notes streaming export causes Reader media clip error

    MacPro HDV captured into PPCS4, export OK to Adobe Clip Notes streaming, uploads .mov file to my FTP site OK. The .mov clip plays fine locally in QT. When I open the clip notes pdf in Acrobat 9 Reader for Mac or Acrobat 8 Pro on Vista, both give the

  • I just updated my mac to Yosemite, after it's done I see that all my "notes" are gone. Is there a way to find them?

    I asked on another website and got this answer: – Quit all apps. – Press command shift G. – Type ~/Library/Containers/{not this}com.apple.Notes/Data/Library/Notes and then click "Go". – Drag "NotesV3.blahblah" to the desktop. – Rename "Notes V2.blahb

  • Customised layout in iphoto

    Hello everyone, I am currently working on a rather large photo book in photo essay theme. For some pages I have chosen the custom layout, with one picture in the middle and no others around. The one in the middle is grey and the others are blue. I th

  • How to auto-enable af:commandButton when all af:inputText have been typed

    1. the use case is: <af:commandButton text="Save"> <af:commandButton text="Cancel"> <af:inputText label="Name" required = "true"> <af:inputText label="Age" required="true"> both name and age have been inputted, how to enable the save button at that t