Ex stream to disk analog trigger

Dear NI engineering,
i'm using the example program called "Stream to disk" with a PCI 5112. I was wondering, can i use an analog trigger in place of the software one (like i have done in the vi i have attached here).
This is because i'm trying to synchronize a PCI 5412 and PCI 5112 (by using two different vi).
Moreover i saw also the example from your website called "3784.vi" (i have attached it here), but when i start it, it does not do anything. How come?
Thanks a lot for your help,
kind regards,
Gianna
Attachments:
niScope EX Stream to DiskTEST01_analog_trigger.vi ‏49 KB
3784_DOES NOT WORK.vi ‏27 KB

Hi ,
I think that this forum is the same as the  SR 7354392 in the mailbox of National Instrument. So I think that I can close this forum and you can follow me in that SR.
Regards,
Hossein

Similar Messages

  • Help! data manipulation for high speed streaming to disk from multiple boards and multiple channels

    I am using Labview 7.1 and have been trying to capture data from 12 channels simutaneously sampled at 2MS/s each and streaming to disk for up to a minute or more.  The hardware I am using is 2 x PXI 6133 S series boards with a MXI4 link to a Pentium D 2.8 Ghz machine with 2Gb ram.   I have 2 sata drives set up in a raid 0 configuration which should give me hard disk write speed faster or equal to the MXI-4 transfer speed. 
    I have first started off by using the example code "multi device sync - analog input- cont acquisition" which has enabled me to sync the two boards and sample at the required speed. 
    To stream the data to disk, I have first merged the data from each board  together to save it to one file.  I have tried using the storage vi's but I end up with a Daqmx read error (trying to read data that is no longer available).  I have played around with the read data size to the point that I either get a insufficient memory error, or I get the "trying to read data that is no longer available"  error.  I have also tried using the file IO blocks with some success and have found that I have been able to stream to disk only if I configure the daqmx read block to output the data in "raw 1D I16" format and plugging it into the file-write block.  In doing this, I have noticed that using  multiple channels on one daqmx read task, I will get all the channels in one 1D array rather than a 2D array organized by channels.  This makes it messy to read at the end of this, and I also don't want to write another vi to separate the channels, due to the high chance of getting the data mixed or messed up if I happen to change the number of channels on a board
    Is there a cleaner way of streaming this data to disk and keeping the channel data separated from each other?, and/or is there a better way to capture and handle the data I need? 
    I have attached the vi which I have got to consistantly work streaming to disk using the raw 1D I16 format.
    Thanks in advance to anyone who can help.
    Attachments:
    multidevicesync_analoginput_streamtodisk.vi ‏197 KB

    Hi,
    i can suggest following
    Refer to an example VI called as "High speed data logger.VI"  in conjunction with "High Speed data logger reader.vi" in Labview examples. Alhrough the logger might be in Tradiditional Daq format, it can be quite easily converted to Daq Mx format to store data in Binary (I32 format) . I have used this for many of my applications and i have found that the data retrieved does not have any "messups".
    Why not keep a seperate file for each card? This way, you do not have to load your application with extra process. You only have to acquire and save. After saving in Binbary format, you can retrive it offline, convert it to ascii format and merge the data files of various cards to get one consolidated ascii data file.
    hope this helps
    Regards
    Dev

  • How do I use PFIO as my analog trigger channel?

    I'm trying to use PFIO/TRIG1 as a analog trigger signal in a channel scan list. The analog input configuration doesn't seem to recognize this as a analog channel (just 1 to 15. I'm using Labview 6.1, PCI-MIO-16e-4, and the BNC-2090

    Voraciousniuser is correct. You set the triggering in the AI_Start VI. We also have some examples on our website:
    http://zone.ni.com/devzone/conceptd.nsf/webmain/C7691D8BFAA6881D86256802007B8A9C?opendocument
    http://zone.ni.com/devzone/conceptd.nsf/webmain/2AF60E522378449286256815005806D3?opendocument

  • How can I set up a delayed analog trigger on PCI 6115 DAQ

    I have an S-Series PCI 6115 DAQ which I’m running with Labview. I’m using it to measure signals from an acoustic emission sensor and two force transducers. I’d like to set up a delayed analog trigger which will start acquisition on all three channels a period of time after a selected channel’s voltage exceeds a threshold.
    Currently I’m using the AI Config VI in line with the AI Start VI and AI Read VI to capture data after a analog hardware trigger occurs. A software trigger probably wouldn't work because I have to sample my data at 10MS/sec. My setup works fine for triggering without any delay or skip counts. However, if I set the delay or skip count in the additional trigger parameter field of the AI start VI, there is no effect, and the device still starts capturing data immediately after the trigger is received. What is the cause of this, and how can I get around it?
    Also, is it possible to sample the channels of a PCI-6115 DAQ at different rates? Right now, I’m sampling all my channels at 10MS/sec and throwing away data on all channels except one. However, this seems relatively slow and eventually I would like to attempt pseudo-real time control using my data.

    rpursley8 is right about needing to get the counters involved if you want a hardware timed delay in your application.
    Concerning whether or not you can sample at different rate, check this document out.
    Sampling Different Channels at Different Rates with NI-DAQmx
    Otis
    Training and Certification
    Product Support Engineer
    National Instruments

  • Thoughts on Stream-to-Disk Application and Memory Fragmentation

    I've been working on a LabVIEW 8.2 app on Windows NT that performs high-speed streaming to disk of data acquired by PXI modules.  I'm running with the PXI-8186 controller with 1GB of RAM, and a Seagate 5400.2 120GB HD.  My current implementation creates a separate DAQmx task for each DAQ module in the 8-slot chassis.  I was initially trying to provide semaphore-protected Write to Binary File access to a single log file to record the data from each module, but I had problems with this once I reached the upper sampling rates of my 6120's, which is 1MS/sec, 16-bit, 4-channels per board.  With the higher sampling rates, I was not able to 'start off' the file streaming without causing the DaqMX input buffers to reach their limit.  I think this might have to do with the larger initial memory allocations that are required.  I have the distinct impression that making an initial request for a bunch of large memory blocks causes a large initial delay, which doesn't work well with a real-time streaming app.
    In an effort to see if I could improve performance, I tried replacing my reentrant file writing VI with a reentrant VI that flattened each module's data record to string and added it to a named queue.  In a parallel loop on the main VI, I am extracting the elements from that queue and writing the flattened strings to the binary file.  This approach seems to give me better throughput than doing the semaphore-controlled write from each module's data acq task, which makes sense, because each task is able to get back to acquiring the data more quickly.
    I am able to achieve a streaming rate of about 25MB/sec, running 3 6120s at 1MS/sec and two 4472s at 1KS/sec.  I have the program set up where I can run multiple data collections in sequence, i.e. acquire for 5 minutes, stop, restart, acquire for 5 minutes, etc.  This keeps the file sizes to a reasonable limit.  When I run in this mode, I can perform a couple of runs, but at some point the memory in Task Manager starts running away.  I have monitored the memory use of the VIs in the profiler, and do not see any of my VIs increasing their memory requirements.  What I am seeing is that the number of elements in the queue starts creeping up, which is probably what eventually causes failure.
    Because this works for multiple iterations before the memory starts to increase, I am left with only theories as to why it happens, and am looking for suggestions for improvement.
    Here are my theories:
    1) As the streaming process continues, the disk writes are occurring on the inner portion of the disk, resulting in less throughput. If this is what is happening, there is no solution other than a HW upgrade.  But how to tell if this is the reason?
    2) As the program continues to run, lots of memory is being allocated/reallocated/deallocated.  The streaming queue, for instance, is shrinking and growing.  Perhaps memory is being fragmented too much, and it's taking longer to handle the large block sizes.  My block size is 1 second of data, which can be up to a 1Mx4x16-bit array from each 6120's DAQmx task.  I tried added a Request Deallocation VI when each DAQmx VI finishes, and this seemed to help between successive collections.  Before I added the VI, task manager would show about 7MB more memory usage than after the previous data collection.  Now it is running about the same each time (until it starts blowing up).  To complicate matters, each flattened string can be a different size, because I am able to acquire data from each DAQ board at a different rate, so I'm not sure preallocating the queue would even matter.
    3) There is a memory leak in part of the system that I cannot monitor (such as DAQmx).  I would think this would manifest itself from the very first collection, though.
    4) There is some threading/threadlocking relationship that changes over time.
    Does anyone have any other theories, or comments about one of the above theories?  If memory fragmentation appears to be the culprit, how can I collect the garbage in a predictable way?

    It sounds like the write is not keeping up with the read, as you suspect.  Your queues can grow in an unbounded fashion, which will eventually fail.  The root cause is that your disk is not keeping up.  At 24MBytes/sec, you may be pushing the hardware performance line.  However, you are not far off, so there are some things you can do to help.
    Fastest disk performance is achieved if the size of the chunks you write to disk is 65,000 bytes.  This may require you to add some double buffering code.  Note that fastest performance may also mean a 300kbyte chunk size from your data acquisition devices.  You will need to optimize and double buffer as necessary.
    Defragment your disk free space before running.  Unfortunately, the native Windows disk defragmentor only defragments the files, leaving them scattered all over the disk.  Norton's disk utilities do a good job of defragmenting the free space, as well.  There are probably other utilities which also do a good job for this.
    Put a monitor on your queues to check the size and alarm if they get too big.  Use the queue status primitive to get this information.  This can tell you how the queues are growing with time.
    Do you really need to flatten to string?  Unless your data acquisition types are different, use the native data array as the queue element.  You can also use multiple queues for multiple data types.  A flatten to string causes an extra memory copy and costs processing time.
    You can use a single-element queue as a semaphore.  The semaphore VIs are implemented with an old technology which causes a switch to the UI thread every time they are invoked.  This makes them somewhat slow.  A single-element queue does not have this problem.  Only use this if you need to go back to a semaphore model.
    Good luck.  Let us know if we can help more.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • Negative analog trigger voltage

    Hello,
    I am currently working on a program in Labview 6.1 with two E-series devices acquiring data simultaneously.  I am currently using a analog channel to trigger the acquisition.  My application uses a signal that has both positive and negative voltage sources.  Right now, when I set a voltage, the devices wait until the voltage level is reached before acquiring data.  Well, if I am relying on a voltage that is always going to be negative, that value will never be reached.  I guess I need to take the absolute value of the voltage coming from the trigger channel and then trigger if the absolute value reaches a preset value.  Can anyone help me with this?
    Thanks a lot,
    Taylor

    Taylor,
    Since you are using an analog trigger, you should be able to set the analog level in the AI Start vi.  I have attached a vi with just the AI Start.vi and the needed settings for what you are trying to accomplish.  Let me know if this helps.  Thanks and have great day!
    Regards,
    Lon
    Attachments:
    Trigger Config.vi ‏19 KB

  • Monitor multiple channels for analog trigger with DAQmx drivers

    Hello! I would like to start a data acquisition of multiple analog channels (16) from an analog trigger. I would like trigger to monitor four of the (same) channels, and trigger when any one of them reaches a certain voltage. I found an example that would work with the Traditional DAQ drivers (using occurances), but can't figure out how to do something similar in DAQmx.
    Time is also an issue, as I would like to collect the first 80 milliseconds of data after the trigger (at a rate of 500,000 Hz).
    I'm using LabView 7.0 and collecting data off of two PXI-6133 cards.
    Thanks for your help!

    Hi Denise-
    After some research, I have found that it is not possible to use the functionality of DAQ Occurrences in DAQmx. Ironically, the reason that this functionality is available in Traditional and not DAQmx is due to the exploitation of an inherent limitation of Traditional that was upgraded in DAQmx. The multi-thread capability of DAQmx is a major advantage for most applications, but in this case it prevents the use of occurrences as they existed in Traditional DAQ.
    In short, this means that you can't directly use this functionality in DAQmx. You can however emulate this functionality with minimal software analysis of the incoming signal. I have attached a modified example VI that logs data to a chart only when the analog level of one of the channels being measured has exceeded a user-defined reference value. Basically, the task is running continuously in the background but the data is not actually logged until the signal is above a predetermined "trigger" level.
    Please let me know if the attached example is helpful for your application. You will see the input channels listed in the format "DevX/ai0:y" where X is the device number and y is the highest channel number of interest.
    Regards,
    Tom W
    National Instruments
    Attachments:
    Cont Acq&Graph Voltage-Int Clk Analog SW Trigger.vi ‏83 KB

  • Start Counter Output on a Analog Trigger in the PCI 6259 Mseries board

    Hi,
    My question is regarding how to use Analog Triggering to start a counter in the PCI 6259 M-series board.
    I have attatched a program here
    'Mult_Device_Digital_Analog_Out_on_Analog_Trigger.​vi'
    and I'll explain my problem regarding this program.
    I've tried to include all the details about the program in the documentation for the VI, but what the program
    does is essentially output a set of digital and analog patterns as specified by an end user, and at times
    specified in the front panel.
    Problem 1.
    I wish to start the whole operation on a analog trigger signal, in the program its the boolean "Line Trigger",
    but I get an error saying that trigger type is not supported, when the M Series board manual clearly says it can be done.
    Is there something wrong with my program ?
    Thanks.
    Shomu
    Attachments:
    Programs.zip ‏101 KB

    Shomu
    Admittedly, it might take a little time to find the documentation, but it is there. Also, the error you are getting indicates the proper trigger signals to use. In the help look at the analog Triggering Considerations for E Series, M Series, and S Series.
    With that being said the easiest thing to do is to setup an Analog Input task configured to start on an Analog Trigger. Then, setup a digital edge trigger for the Counter task. The signal you are going to want to look for is the Analog Comparison Event. This signal won't show up by default in the list. What you need to do is right click on the trigger source constant or control and select I/O Name Filtering. Then check Include Advanced Terminals. Once you have done this you can select the Analog Comparison Event
    StuartG

  • Is it possible to start a PCI4472 and a PCI-MIO-16E-1 simultaneously using an analog trigger (with pre-trigger)?

    I would like to start several PCI 4472 and a PCI-MIO-16E-1 simultaneously. All boards are connected via a RTSI cable.
    My program works fine if I use software trigger, or an analog trigger from a PCI4472 channel. However, the analog trigger works only when I set pre-trigger (or pre-scan) to 0.
    Is it possible to start a PCI4472 and a PCI-MIO-16E-1 simultaneously using an analog trigger (with pre-trigger)?
    Thanks.
    Ian Ren

    Hi, Bill
    I think it is possible to set more than 38 pre-trigger scans on a single 4472 card. I've done this before. You can verify this by running the Labview example "Acquire N - Multi-Analog Hardware Trig.vi" which comes with LabView.
    What I try to do but without success/luck so far is to start data acquisitions of several 4472 cards and a PCI-MIO-16E-1 card using an anlog trigger (with pre-trigger).
    Thanks for your help.
    Ian

  • Acquiring 4 channels at 10kHz using PCI-6070E card and Labview 7.0. I need to average a signal that is time-locked to an analog trigger. Is their an available vi to accomplish this?

    I am acquiring 4 channels of data, sampling at 10 kHz. I am using a PCI-6070E board. I need to average a biological signal time-locked to an analog trigger that occurs at about 3/second. Is there a vi that will accomplish this?

    If you are looking for a way to do a "retriggerable" acquisition, there is a shipping example called Acquire N - Multi-Analog Hardware Trig.vi that accomplishes this. However, please note that this example achieves this effect by reconfiguring the task for each trigger in software. This means there is a delay between reconfigurations. If a trigger signal comes during this reconfiguration, it will be missed. This delay is system dependent on how fast your computer can execute the reconfiguration code. The 6070E does not support hardware retriggerable acquisitions.
    However, if you are wanting to acquire continuously and then do some post-acquisition analysis, I couldn't find any examples that accomplish this, but it wouldn't be too hard to build one yourself. Y
    ou would probably want to include your trigger signal as an additional input channel. Then once you've acquired all of your data, in software you can scan through the data acquired for the 5th channel and then segment your data according to that signal. I hope this information helps.

  • Can PCI-6023E support hardware Analog trigger

    I try to use the PCI-6023E to do the hardware analog triggering, but it gives me the Error-10403 while I test with the vi example, Aiacquires N Scans Analog Hardware Trig.vi. Is there any way for this board to do the hardware triggering?

    Jack,
    The PCI-6023E DAQ board only supports digital triggering. You can check all the features of this board in the Data Sheet and Specifications on the Catalog page (see link below)
    2002 Catalog - PCI-6023E
    http://sine.ni.com/apps/we/nioc.vp?cid=1063〈=US
    If you need to perform analog triggering, you have three options:
    1) You can simulate it by acquiring continuosly all the signals that you want to monitor including the one that acts as the analog trigger. Compare the value read from this last one with the boundary that is supposed to trigger the acquisition, and when the value read reaches this boundary, you can save or display the data from all your channels.
    2) You could implement an external circuit that will compare the analog trigger signa
    l with the boundary value, and when they coincide, will generate a digital pulse that you can use as a digital trigger. This option optimizes your CPU usage.
    You can find detail information on how to set up the digital trigger in Chapter 4>>Timing Connections of the User Manual linked below.
    6023E/6024E/6025E User Manual
    http://digital.ni.com/manuals.nsf/websearch/0C88F40FFE7F28CD862569AE00574AC1?OpenDocument&node=132100_US
    3) Finally, you could get one of our boards that supports analog triggering. The PCI-MIO-16E-4 board has similar specifications that the PCI-6023E, and it has some additional features as well. See link below for more information.
    2002 Catalog - PCI-MIO-16E-4
    http://sine.ni.com/apps/we/nioc.vp?lang=US&cid=10795
    Good luck with your application,
    Claudia Lorente
    Applications Engineer
    National Instruments

  • Why is it that I can't do a continuous streaming to disk with a 5102 scope card (PCI) when I can do it with a DAQ Card of much lower specs (my requirement is for small sampling rates only)?

    I am told that the 5102 Card (PCI) does not support continuous streaming of data to the hard disk. My application requires only very low sampling rates. If I can do it with a low spec DAQ Card using LabView why can't I do it with this card?

    Hello,
    The PCI-5102 is a high-speed digitizer card that has a slightly different architecture than the DAQ cards and was not built with the ability to stream data to the PC. However if you are sampling at low rates you can still acquire up to 16 million samples, which is done by using dma to tranfer data from the onboard memory on the 5102 to the PC memory. However, you will not be able to save the data to disk until the acquisition is complete.
    Another option would be to purchase either a DAQ card or a PCI-5112. Both boards can continuously stream data to the host PC and you should not run into any PCI bus limitations if you are stream to disk at relativiely slower rates.

  • What are the performance of stream to disk on a PCI-5112? Has someone benchmarked it once?

    I need to stream 30MS/s for 2minutes on a hard drive. Anyone did that? What was the platform and the results?
    Thanks, fred

    Fred,
    The fastest we have been able to stream to disk with the PCI 5112 is 25MS/s on a machine that can stream raw data to disk at 130+MS/s. One thing to keep in mind is that you can't actually get 30MS/s for you sample rate with the 5112. The valid sample rates are 100/n MS/s where n is an integer value. Therefore, if you enter 30MS/s for your sampling rate, you will get 33MS/s for the actual sample rate.

  • I use a PCI MIO 16E board with an analog trigger. So I wire chann

    el 0 to the PFIO line, and I enter "PFI0"as the triggering channel on the front panel , I put a level,and I declare channel0 and 1. When I do a DAQ it seems that PFI0 detects the signal as I haven't a timeout, but it doesn't trigger off at the good level.

    el 0 to the PFIO line, and I enter "PFI0"as the triggering channel on the front panel , I put a level,and I declare channel0 and 1. When I do a DAQ it seems that PFI0 detects the signal as I haven't a timeout, but it doesn't trigger off at the good level.I noticed you posted an earlier question that generated several responses about the valid sources of an analog trigger. Was there a reason you decided to use the PFI0 option over just telling LabVIEW to use Analog channel 0 as the trigger source? At what voltage level are you wanting to trigger?
    Also, if you use the Analog Trigger examples in LabVIEW or the DAQ examples for your compiler, do you get better results?

  • Stop trigger, how to specify the analogy trigger channel?

    Dear All,
    In fact, I am using DAQ2204 cards from ADLINK, which is more or less equivalent to NI E-series muttifuntion board. However, I have some problems with regard to my data acquisition program. Basically, it is about a middle/stop trigger application, which means data acquisition will be starting once the specified analogy channel (for example, channel 0) exceeds a prescribed value.And, data both before and after trigger will be acquired. However, I do not quite understand how to physically make the I/O connection and specify the analog trigger channel and level.
    According to the board User's Guide, 'SRC1 can be used for all trigger modes while SRC2 can only be used for post and delay trigger modes'. I have come across similar description with NI examples before. It would therefore be very appreciated if anybody can help. Thanks in advance.

    Hi dragondriver,
    I'm providing below links to 2 documents that discuss wiring considerations that are applicable to your device.  Hopefully this information is helpful!
    E Series User Manual
    http://www.ni.com/pdf/manuals/370503k.pdf
    Field Wiring and Noise Considerations for Analog Signals
    http://www.ni.com/white-paper/3344/en#toc5
    Josh B
    Applications Engineer
    National Instruments

Maybe you are looking for

  • Must-know BlackBerry Z10 and BlackBerry 10 tips and tricks

    Check out the following must-know BlackBerry Z10 and BlackBerry 10 tips and tricks to get the most out of your new BlackBerry 10 smartphone. 1) BlackBerry 10's Built-In Screen Shot Feature Capturing a screen shot on a BlackBerry 10 device is simple.

  • Live recording using LS9 help

    Hi there, I'm completely new to Logic and have come from using Cubase 4. I play in a band and we have been discussing recording a live track. All of my recording experience has been on my own, recording each instrument one by one so I have no experie

  • Update a primary key and Fk

    Hello I have to update a primary key (PK) which is referenced by many foreign keys (FK). The primary key columns cannot be updated as this would orphan the dependant tables, and the dependant tables cannot be updated prior to the parent table as this

  • Table SOFFPHF : usage of File_Name=FILE0001

    Hello experts, We have been asked to analyze the content of table SOFFPHF ( and also SOFFCONT1 & SOC3) In SOFFPHF for field 'FILE_NAME' we can find names like filename123456.xls filename1234.doc filename098765.jpg filename12345.pdf and other meaningf

  • Exchange hang in Iphone 6 plus

    Yesterday I got an email in exchange and I tried responding to this ( had 400 + email IDs in that email) and iphone 6 plus exchange is hanging ( blank screen when i click exchange). I did reset of network, deleted exchange, restarted, removed battery