Parallel data acquisition problem

Hi everyone!
I’m facing a problem with acquiring data from my NI 6259 BNC card.
What I basically want to do is to measure, let’s say, both RPM of the jet engine as well as temperature. I have thermocouple and of course the voltage of thermocouple is proportional to temp. I also have a phototransistor to measure RPM, but… the signal from phototransistor is non-TTL signal. For measuring RPM I’m using code from: “DAQmx: Counting Non-TTL Pulses with Multifunction Board and Labview”. It is using port redirecting and triggering.
Both measurements are ok when run separately. I mean I can measure continuously temperature and plot it to graph in real time. I can measure PRM with very good accuracy as well. But I can to this only separately, I don’t know how to write a program to measure them both together in one VI.I want to measure (and save to file) both RPM and temperature at the same time.
I think it has something with triggering option in RPM measurements, triggering stops all measurements. Is there any way to measure them both?
Thanks in advance,
Maciek

Hi Maciek,
You are saying it right, there is limitation due the trigger used. The examle you mentioned is elegant for measuring just RPM but adding any other measurement on AI side is nearly impossible since the analog input is triggered depending on RPM value and there is usually requirement on measuring the temperature with fixed sampling period (especially when you want to log it to the file).
I would propose 2 solutions:
The first one is easier and does not require any signal conditioning. It would be just measuring the temperature and RPM through analog inputs (each on one AI channel) and processing would be made using LabVIEW. The sampling rate thus must be made with respect on the RPM signal to be sure that you will acquire enough samples to extract the signal shape (mainly the edges) exactly enough to make the measurement precise and reliable. The temperature will be acquired the same sampling rate so you can select just one of e.g. 100th or average multiple samples into one which will be displayed and stored to a file. There is also one recommendation. Since the USB-6259 BNC card has aggregated AI, it is good to have all AI signals on similar range because switching the signals e.g. 10mV and 10V can cause some accuracy issues. Usually, signal condition before connecting is to the card solves the issue.
Second way how to measure both signals is to convert the signal from RPM to TTL logic, it should not be a problem using one or more transistors. Then it is very easy to measure RPM using only a counter. The temperature measurement will be second separated task, so all will be independently configurable. In my opinion, this is cleaner and more effective how to measure both quantities, but you have to to the converter from your "non-TTL" signal to TTL.
Please let me know if this is acceptable for you, if not, send here the code with deeper comments (mainly about the parameters of the RPM signal).
Best regards,
Martin

Similar Messages

  • Top level application structure with parallel data acquisition

    Hey all LabVIEW-forum members!
    I have some experience programing  LabVIEW, but mostly concerning smaller for the simplest form of data acquisition. Now I need to develop a larger application that might be continuously run for several weeksin a row and for that reason I woiuld like to make sure the application structure is stable! I turn to you in hope of some input regarding the most suitable approach to my problem or some pointing in a good direction.
    -The project involves making hardware communication with a few different hardware interfaces, such as GPIB and NI’s DAQ-card (analog and digital reads/writes on PCI-6221).
    -Save acquired data to disk.
    -The communication and data save are based on condition of elapsed time (for example there could be a need to make parallel analog measurements med DAQ-card every 5th minute but GPIB-measurements every 30th second).
    -At the mean time I would have to regularly the status of the test object and update the user interface. (However, while in test the user won’t be allowed to interact with the application other than to monitor the UI or pause the test).
    The project isn’t really time critical (in case I need to make one type of data-acquisition while another one is already initiated, they can be carried out in sequence).
    I’ve started with programmatically control the user interface by using the “Top Level Application Using Events”-template and produced code that will let the user set up a new test or load an existing test. All the data concerning the status and configuration of the test I’ve saved in two clusters that can be passed along to different events.
     I’ve reserved one subdiagram in the event structure for the actual execution of the test. It is the structure of this subdiagram I am a bit confused about…
    Could I use another while-loop/event-structure inside this subdiagram and use user-registered events for the different data acquisition? Or is there some type of state-machine that is better suited to monitor time elapsed and can make a transition to a suitable state when it’s time to make any of the hardware measurement required? It would be nice to avoid using polling loops but maybe that is best way to go?
    I’ve checked the “Continuously Generate Occurrences.vi”-example and that might be a way to go? What seems to be good with this approach is that I could let the different parallel hardware acquisitions actually be parallel, right?
    I am really confused right now, hope someone has some helpful inputs!
    Regards
    Oscar

    This post here can be proved as a great starting point for your application.
    I am not allergic to Kudos, in fact I love Kudos.
     Make your LabVIEW experience more CONVENIENT.

  • Data acquisition problem with NI-DAQmx 9205 and SignalExpress

    Hi everyone,
    I am using a NI-DAQmx 9205 connected via ethernet to my computer and Labview SignalExpress running to acquire data. I am working with EMG and I use an amplifier system from GrassTechnologies (http://www.grasstechnologies.com/products/ampsystems/ampsystems.html). The way it works is the electrodes are plugged on the amplifier system and the amplifier is plugged to the NI-DAQmx 9205.
    I don't know how to setup the system to be able to read properly the emg signal on SignalExpress.
    Does anyone know how to use it?
    Thank you for youe help
    John

    Hi John,
    If I were an Applications Engineer I'd probably be able to figure this out on my own but would you mind elaborating on your hardware setup a little? You mention plugging into a "NI-DAQmx 9205", however the NI-DAQmx is the data acquisition 'driver', the [NI]9205 is an Analog Input Voltage module. Do you mean to be plugging into a Compact DAQ or cRIO?
    Also, I'm not familiar with EMG readings or the amplifiers/electrodes you're working with.
    What is the signal type going into the amplifier from the electrodes, and what is the signal type and range (amplitude) of the signal coming out of the amplifier; AC, DC? I'm assume it's all voltage?
    Straight voltages are pretty easy to work with provided you can scale it to usable units.
    Lets get your hardware and signal types figured out then we'll be able to tell Signal Express how to handle those signals.  
    SCXI- 1000 Chassis w/ 1346 adapter
    PCI 6281 DAQ card
    SCXI- 1520 Bridge Board w/ 1314 Terminal Block (x2)
    SCXI- 1180 Feedthrough Panel w/ 1302 Block
    Signal Express 2014.
    Win7 Enterprise

  • Data Acquisition problem with multiple length of commands and data received.

    Hello,
    I need to write a program to communicate with a Data Acquisition board. There are about 10 commads and each has a different number of bytes associated with it. For example command-1 has 4 bytes which need to be send to the DAQ, command 2 has 6 bytes, Command 3 has 4 bytes etc...
    When the board responds back to the commands I send, it responds back with different number of bytes for each command. For example, When Command 1 is send to the board, it responds back with 3 bytes of data, whereas when command-2 is send it responds back with 5 bytes of data.
    Each data byte received by my labView program from the board, needs to be displayed after some processing has been done. This processing may or may not happen on all the bytes of data got back.
    I want the program to be scalable, so that if more commands are added later on, the display and the processing changes in accordance with that.
    What will be the best approach for such a system ? I want the system to be dynamic, and dont want to repeat or re-write the code for each case statement ( case statements will be decided by the commands).
    Any input is welcome.
    Thanks,
    birapxi

    Hello Dennis,
    That is certainly one way of doing it, but it is the brute force method. Is there any way to use clusters and add the data bytes coming in and going out to clusters. Also when the user sends a specific command out, can I use the unbundle by name function to send the bytes corresponding to that command.
    For displaying the data received, can I follow a similar approach and use unbundle by name function to just display the specific data bytes for the command i have received.
    Thanks for your input,
    birapxi

  • My data acquisition problem:noise and transducer rocking

    Thanks to Otis and Dan, I 've finally got DAQmx installed and run, But I still have some problems with my application:
    1>, before my transducer was connected, when I check my board with "traditional NI-DAQ devices test panels", the board acquired noise of-0.02to 0.03volts firts" and then the value dropped to "-0.004-0.005volts", but if I check it with" NI-DAQmx devices", the board sensed noise of" -0.02 to 0.03 volts", why inconsistent for the same board?
    2> when I check my board with my transducer turned-on( dispalcemnet transducer, need to push the handle to turn on), the reading is about"-0.3 to 0.2", this is the result without input signal. seems that "pushing down" the handle of the transducer rocking the tested surface and induced vibration of my tested surface.
    3> when i check my testing system with transducer turned on and with my signal input (by inducing vibration of the tested surface), my acquired data reading is only about"0.06 maximum",
    4> it seems my input signal is too little compared with the system noise or transducer induced vibration.
    5>the frequency domain analysis indicated that the noise frequency is wide with some three main peaks of frequencies higher than my expected signal frequency.
    Due to the previous reason or some other causes, my acquired data just did not show up any consistency.
    I want to know if there are any measures that I can take to get better testing results.
    thanks!

    Hi fenny,
    Are you using any signal conditioning on this device?  It looks
    like your signal is still pretty small.  If you have a small
    signal and a lot of noise then the data you are getting will be useless.
    It sounds like you are trying to do analog triggering.  Make sure
    that you are inserting the analog trigger line into APFI 0.  Try
    looking at this Example Program:  M Series: Analog Input Acquisition with an Analog Start Hardware Trigger
    Keep in mind that if you are trying to do analog triggering that you
    need a 625X or a 628X device.  If you don't have one of these
    devices. Then you will need to use a software analog trigger. 
    Essentially all that is would be to look at the values returned in a
    continuous acquisition, and once they go past a certain level, then you
    would begin displaying the data that you have acquired.
    Regards,
    Otis
    Training and Certification
    Product Support Engineer
    National Instruments

  • Data Acquisition Problems

    Hello,
    I have two external devices providing data to my program. One device provides 4 strings and the other one- bothe repeating themselves. I am only able to collect approx. 50 strings of data before their order is lost. Has anyone had such problems? I am using two Polhemus 3D tracking devices.
    Thanks,
    Ivanka

    Hi there,
    Looking at your VI, I�m wondering why you have a �7� wired to the For Loops � how do you know that you are receiving 7 numbers every time?
    What happens to the �Bytes at Port� around the time when the order changes? Try to use a Case Structure to make sure that you only read when the right amount of data is available.
    Do you have an example of the data, around the time when the order got messed up? That would help us to troubleshoot.
    Best regards,
    Philip C.
    Applications Engineer
    National Instruments
    - Philip Courtois, Thinkbot Solutions

  • A problem with data acquisitioning in LV 7.1 (transition from Traditional NI-DAQ to NI-DAQmx)

    Hi to everyone,
    I have a problem with data acquisitioning in LV 7.1.
    I made a transition from Tradiotional NI-DAQ to NI-DAQmx in my LabVIEW application.
    The problem I have is that when I acquire data in Traditional (without writing somewhere -
    just reading) then there is no scan backlog data. But when I acquire data in application that
    acquisition is based on DAQmx than a scan backlog indicator shows numbers from 20 to 50 for
    about 6 min and then that number quite quickly increases until I get an error (unable to
    acquire data. The data was overwritten).
    Acquisition settings are the same in both cases. When I acquire with DAQmx I use a global
    channels. Is a reason for that phenomenon in global channels data procesing? But it seems
    strange why does it flows quite smoothly for about 6 min and then it stucks?
    Best regards,
    Ero

    If you have an old Daq unit it may not be compatible with DAQMX. Which DAQ unit do you have? I think NI have a list showing which DAQ driver you can use with your card
    Besides which, my opinion is that Express VIs Carthage must be destroyed deleted
    (Sorry no Labview "brag list" so far)

  • MultiThread for data acquisition (basic problem)

    Hi there,
    I want to create a data acquisition VI that perform acquiring data in an independant thread, and when the data is ready, displaying it in a graph. In another word, one thread for acquisition and another one for UI events (button to start / stop acquisition, display cursor...). Data acquisition is higher priority than displaying data. Any VI concrete sample for multithread ?? Thanks in advance.

    > Hi there,
    > I want to create a data acquisition VI that perform acquiring data in
    > an independant thread, and when the data is ready, displaying it in a
    > graph. In another word, one thread for acquisition and another one for
    > UI events (button to start / stop acquisition, display cursor...).
    > Data acquisition is higher priority than displaying data. Any VI
    > concrete sample for multithread ?? Thanks in advance.
    By default, the UI runs in the UI thread. The execution of the VI runs
    in the Standard execution system, which has its own thread. By default,
    these threads are at the same priority. If you want your DAQ to run at
    a higher priority, you can place your DAQ code in a subVI. Then set the
    subVI to run in any execution system you like at a higher
    priority.
    Call the subVI in parallel with the rest of your UI loop, and determine
    how you want the DAQ data to get to the UI. You can use a global, a
    queue, etc. Don't overlook simply using the terminal or local for the
    graph. All of these other methods have their advantages, but they also
    add overhead. At some point, you will need to copy the data from the
    DAQ code to the UI code. This is all that writing to a terminal or
    local does as long as synchronous display is not turned on.
    Greg McKaskle

  • Problem with Real Time Data Acquisition

    Hello,
    I tried to built a RDA data flow according to the SAP-Help and this blog (/people/kamaljeet.kharbanda/blog/2006/11/13/real-time-data-acquisition-bi2004s), but I ran into a problem. Everything seems to be fine, but even though the daemon is running no new data is added to the DSO. I'll explain in detail what steps I took and hope someone can pinpoint my error(s).
    System is BW4 on SPS 17. My datasource as well as my DSObject are in the same system
    1.) Created a transparent table with a timestamp-field for generic delta as a local object.
    2.) Created a generic datasource from view/table (used the above table), marked it as realtime-enabled and used timestamp as delta-specific field.
    3.) Replicated the metadata for my datasource and activated it.
    4.) Created a Data Storage Object with infoobjects corresponding to the table fields
    5.) Created a transformation between DataSource and DSO
    6.) Created a DTP from Data Source to DSO. The type is realtime-DTP.
    7.) Created an InfoPackage for Delta-Initial Load. Update mode: Initialize Delta Process -> Initialization with Data Transfer.
    8.) Then I changed my DTP (step 6) to "normal DTP" and executed it. Then activated the data in the DSO. The datasets from the table (which i filled with an ABAP-program) were successfully loaded and activated. So now my DSO contains 5 datasets.
    9.) Changed the DTP back to "realtime DTP"
    10.) Created an InfoPackage for RDA. Adapter is set to "Realtime extraction from SAP System"
    11.) Created a daemon, assigned the IP for RDA and the DTP to the daemon and started it up.
    12.) Executed my ABAP program to added 3 datasets to the table which is used as a datasource.
    So now in my source table there are 8 datasets, but the daemon won't load them. In my RDA-Monitor (trx rsrda) it shows my daemon, the assigned IP and the assigned DTP (status green). Under the IP there's one yellow request (that should be right according to the help), but unlike the picture in the blog (link see above) there's no request under the DTP.
    Job overview (sm37) shows an active batch job and some jobs that are ready (every 10minutes a new batch starts and the old one is closed). the job log shows, that the daemon runs, but loads no data...
    i think it might be a problem with the delta extraction somewhere, because the intial load works fine and there are no errors anywhere.
    Edit: perhaps my settings in the data source unter tab: extraction are wrong?
    Delta process: AIE After Images By Extractor (can't change that)
    Direct Access: Allowd
    real Time: Real-Time DA Supported
    Adapter: realtime data extraction (also tried Access to SAP Data through Service API which seems senseless)
    Data Format: Fixed Lenght
    Anyone can explain what those fileds mean and which one i should use?
    Edited by: Christoph Jender on Apr 10, 2008 2:48 PM
    Edited by: Christoph Jender on Apr 10, 2008 3:33 PM

    Hi again, another thing i'd like to try is to just active a business content datasource which is realtime-enabled and has the ability to dynamically add some values so that i can test if it works. but i have no idea what business content would be applicable here, any ideas on that perhaps?

  • Problem in data acquisition

    Regarding to my project I have implemented a LabVIEW program which is doing data acquisition. We have LabVIEW 6i Installed in PXI-8170. The DAQ Card that we use is NI6030E DAQ Card Multifunction I/O.
    I have implemented a VI to acquire and plot and record multiple analog input channels. By using AI Acquire Waveforms VI to acquire waveforms from 4 channels in a single run and using Index Array function to extracts the data for each channel.
    For plotting waveforms, I use waveform chart for each channel. I put all this functions in a While Loop and use a stop push button to stop the acquisition. I also put another push button named Save to disk in the loop that by pressing it we can save data to a File by using Write to Spreadsheet File. VI, located in a case structure out of the while loop. I save data as a 2D array by connecting the waveforms output connector of AI Acquire Waveforms VI to the input connector of Write to Spreadsheet File VI.
    But I have some problem that I can not solve it yet which are listed below:
    1- I want to record all the data that I acquire for a specific time, but I can not. I only can save the specific part of the waveforms which I think it is specified by the number of samples/ch and Scan rate controls.
    For example I do the acquisition for about 1:30 minute and save it, but when I plot the data which is saved in the spreadsheet file; it is only the last 20 seconds. So I can not save all the data that I try to acquire.
    2- I want to record data for a specific time automatically. I mean when I run the VI after press the Save to disk push button the VI automatically start saving data for a specified period of time and then automatically stop. (How to define a timer to control the VI?)
    3- I want to start acquisition each time from zero base time. I mean when I do the acquisition for the first time and then I want to do it for second time, the pervious acquisition reset or clear and the time axes of each chart again start from zero not continue the pervious time. It means that I need to clear the chart.
    Regarding to this problem I try to use the AI Clear VI, but it didn�t work. May be I don�t know how to use it.
    Attachments:
    test4chPPG1.vi ‏49 KB

    I need your hints about these 3 problems.

  • Problem in data acquisition for cRIO-9076 wth c series drive interface module 9516

    I am using LabVIEW for my project i.e., the speed control (using PID) of a motor and want to create a vi for the same.
    The specifications of the products being used are as follows:
    1) Motor: AKM24F (dc motor)
    2) CompactRIO: cRIO-9076
    3) C Series Servo Drive Interface: NI-9516
    I am facing problem regarding the real time interface between the motor and PID block in labVIEW i.e. in the data acquisition part to be specific. Please suggest a way in which I can successfully acquire the analog data(speed) from the motor and vice versa in the vi.

    What is the priority of the VI you're running?  I'd be concerned that maybe you've starved out the ethernet transmit thread or something.
    -Danny

  • Problem with data acquisition and motion control

    I have PCI-6024E and PCI-7342 cards on a single PC. Servo motion control works fine when it goes alone or is accompanied by one point data acquisition in a while loop, but when I start data acquisition with specified sample rate, the motor moves with breaks.
    Does anybody know what is the problem? Is it possible to fix it?

    How are you performing your motion? Is it a position move or a velocity move? How are your triggering the data acquisition? Using breakpoints on the 7342? If so, are you using single breakpoints or modulo? How are you configuring the data acquisition rate? Are you triggering just the start to the acquisition and the unsing the daq scan clock or are you using the motion controller to send the scan clock itself?

  • Data acquisition loop with queue

    What I would like to do is have a data acquisition loop that samples a load cell at 500Hz and have another loop that runs much slower to run a state machine and display some data in real time.  The reason I want to sample the load cell so fast is to filter out some noise.  Making producer/consumer loops with a queue kind of makes sense but I don't really care about all of the samples, I just want to be able to read a real time filtered signal at certain times.  I looked at having just two parallel loops, one to acquire the data and the other to run a test and retrieve a real-time signal when I want but not sure how to pass data between the loops without using a queue.  You can do it with local variables but you are at risk of a race condition.  I hope this make sense.  I am sure this is a simple problem I just don't know what direction to go.  Thanks

    Good Evening secr1973,
    It sounds like you are on the right track.  You already know about the producer/consumer architecture; this is almost always the first step to the separation that I think you are after.
    The step that I think you are missing is a Case Structure around the enqueue element VI.  You likely have some event or specific pattern that you are looking for in the input signal.  You can have the output from this algorithm (likely a boolean) determine which case of the Case Structure to execute (Case 1: enqueue the element or Case 2: Do not enqueue the element).
    This, of course, leads to processing being done in the producer loop, which is quite the opposite of what you are trying to accomplish with the producer/consumer architecture.  You will have to decide if your processing is very simple or more complicated.
    If it is easy/fast, you can likely get away with doing this processing in the producer loop.  My guess is that your program falls under the category of do-it-all-in-the-producer loop because you are only acquiring at 500 Hz.
    If the application requires faster acquisition rates or if the logic is going to require some processing, you may want to implement a double layer producer/consumer architecture.  In this setup, you would pass all of the data from the DAQ producer to a second loop (using queue #1) that determines what to do with the data (to enqueue or not to enqueue...) and, if appropriate, write to a queue (queue #2) that the third loop can read.  The third loop would be where your state machine executes.
    If you have a quad core machine, each of these steps will execute on its own core.  If not, you will have a little more thread swapping; not a huge concern in most cases.  Here, we get into the art of programming more than the science.
    In any event, I think you will be OK with a little processing for the enqueue or not algorithm in the producer loop.
    Regards,
    Charlie Piazza
    Staff Product Support Engineer, RF
    National Instruments

  • Driver missing - PCIe Data Acquisition and Signal .....

    Hello, i recently used Boot Camp to install Windows XP on my 2010 15" Macbook Pro.
    All the drivers are working (so far) and i haven't encountered many problems.
    However, there is one thing bugging me:
    When i go into Device Manager in Windows, and look down the list of installed/uninstalled devices, there is a device called "PCIe Data Acquisition and Signal Processing Controller" which has no driver installed.
    I'm PC savvy, but i have never seen this before. My guess is that one of the motherboard drivers is missing, and Boot Camp installer doesn't include that driver?
    Has anyone seen/resolved this, and if so, how?
    Thanks.
    Kaj.

    Okay, will do.
    Thanks.
    Also i wonder if you could help with another problem?
    http://discussions.apple.com/thread.jspa?threadID=2758766&tstart=0

  • Data acquisition from SR 530 lockin

    Hello,
    I need to read the output of the sr530 vector lockin and store them in a file.
    I was wondering if there is any driver which will let me read frequency, output amplitudes & relative phase between the input & output signal!
    Any help will be much appreciated!
    Thanks a lot,
    Ashutosh.

    Thanks a lot for the help Matt.
    I can connect the device via GPIB. Let me tell you a bit more about the problem. As of now I was using a single channel lockin, EG & G 5209, to read the data(so I am kindda familiar wtih data acquisition... not much though). And the only thing I was reading was the output amplitude of the lockin.
    Now I have to use the vector lockin, SR 530, and I will need to read both the output amplitudes, the phase & the frequency (all four of them)at the same time. And I am looking for a driver which can do this, i.e. which can read all four data simultaneously & store the result in a *.txt or *.dat file.
    Do we have something like that?
    Thanks,
    Ashutosh.

Maybe you are looking for

  • Item Level Billing Blocks

    Is there a standard method to report Item level billing blocks?  Only options I can find are header level report. Thanks

  • Business area not defaulted for tax line via OKC9 or OBBH

    Hi SAP gurus,   I had created subsitution rule in both FI and CO, OBBH and OKC9, which did not to default business area into the tax line.   In OBBH, it was overwritten by SAP standard to blank during debug, OSS explains that due to integration with

  • Wired mouse pointer disappears?

    The pointer on my wired mouse regularly disappears from the screen, making it rather difficult to continue to use Word Any suggestions as to the cause?

  • Problems downloading from Japan

    Hi My customer is facing problems with downloads from a beehiveonline workspace. The customer is located in Japan and is trying to download files upto 820MB in size but finds that the download speeds are very slow and often the download does not comp

  • What is BPELProcess_eng_wf_bpel_qtab???

    In following link, I found BPEL Service (BPELProcess_eng_wf_bpel_qtab), that is asked to be deployed in order to test the integration with Oracle Apps Integration using business event system. http://download.oracle.com/docs/cd/B31017_01/integrate.101