2 analog input and 1 digital

hi,
i attach the vi..
in the following vi i have a problem with the analogs..
when i'm running the vi.. At the results.. olly one of the analog will show me the measuerements..
at the one time maybe the clock analog will give me the results..
and the other analog nothing.. and opposites..
why they don't work together? and and the 2 analog give measurements at the same time..
andrikos
Attachments:
2_analog_and_digital_inputs.vi ‏190 KB

Hello Andrikoscy,
For most multi-function DAQ boards what you're trying to do is not possible.  If you want each analog input to run on a different sample clock then you'll need to look into a NI R Series Intelligent Data Acquisition Device.  These DAQ boards have a built in FPGA and allow for more customization than M Series boards, including independent sample clocks.
To address your questions:
1.  On a non-intelligent DAQ board all analog input channels must share the same sample clock--if you need two different rates I would suggest sampling both channels at the faster of the two frequencies and then just ignore some of the data points on the slower channel.
2.  In order to find out the exact time between samples from an external trigger (instead of the constant dt inserted by the waveform acquisition), you will need to take a period or frequency measurement of your signal using a counter on your card.  By taking a buffered period measurement you will get an array of the times between samples and with that you can graph your samples on a precise x-axis.  Normal analog input tasks that use an external clock do not associate any exact timing information with when a trigger was received.
I hope this helps, and if you'd like more information on the R Series Intelligent Data Acquisition Devices please feel free to contact National Instruments directly at www.ni.com/contact.
Have a great day!
Brooks

Similar Messages

  • Can we acquire the Analog input and Digital Input at

    Can we acquire the Analog input and Digital Input at
    the same time? My sensor data include Analog and
    digital signals.

    Hi Chenchen,
    It usually simplifies things greatly if you use analog inputs to monitor both the analog signals AND the digital signals.
    If you abosulutely HAVE to use digital lines, then the answer is, DEPENDS....
    With the correct hardware and depending on how fast you want to collect data and how closely the measurements have to be syncronized in time, it can be done.
    But first, concider using analog inputs to monitor all signals.
    If you need to move forward with both analog and digital acquisitions, then post a new quesion and give us details on the hardware you are using and the other details we will need to advise you.
    Trying to help,
    Ben
    Ben Rayner
    Certified LabVIEW Developer
    www.DSAutomation.com
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to get signal from analog input and send it to analog output (real-time​)

    Hi everyone,
    I am doing simple task in Visual C++ and I am using PCI-6221(37 pin).
    Basically, I want to send same signal from 'analog input' to 'analog output'
    at the same time (almost), to make it real-time application.
    Can someone please provide me sample program. 
    I would appreciate if you could provide me with the good tutorial which explains
    step by step everything about programing NI-DAQmx for C/C++.
    Best Regards,
    Khassan
    Solved!
    Go to Solution.

    This is my code in C++, you can optimize it if it looks too messy. This code reads signal from analog input and outputs it through analog output. 
    To make this code work additional  include directories and library directories must be added from NI.
    I hope it helps someone.
    #include <stdio.h>
    #include <conio.h>
    #include "NIDAQmx.h"
    #include <math.h>
    #define DAQmxErrChk(functionCall) { if( DAQmxFailed(error=(functionCall)) ) { goto Error; } }
    int main(int argc, char *argv[])
    int32 error=0;
    TaskHandle taskHandleRead=0,taskHandleWrite=0;
    int32 read=0;
    float64 dataRead[1000];
    char errBuffRead[2048]={'\0'};
    char errBuffWrite[2048]={'\0'};
    bool32 done=0;
    int32 written;
    DAQmxErrChk (DAQmxCreateTask("",&taskHandleRead));
    DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandleRead,"Dev1/ai0​","",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Vo​lts,NULL));
    DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandleRead,"",100.0,DAQ​mx_Val_Rising,DAQmx_Val_ContSamps,0));
    DAQmxErrChk (DAQmxCreateTask("",&taskHandleWrite));
    DAQmxErrChk (DAQmxCreateAOVoltageChan(taskHandleWrite,"Dev1/ao​0","",-10.0,10.0,DAQmx_Val_Volts,NULL));
    DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandleWrite,"ai/SampleC​lock",100.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1​000));
    DAQmxErrChk (DAQmxStartTask(taskHandleRead));
    DAQmxErrChk (DAQmxStartTask(taskHandleWrite));
    while( !done && !_kbhit() )
    DAQmxErrChk (DAQmxReadAnalogF64(taskHandleRead,1,10,DAQmx_Val_​GroupByScanNumber,dataRead,1000,&read,NULL));
    DAQmxErrChk (DAQmxWriteAnalogF64(taskHandleWrite,read,0,10.0,D​AQmx_Val_GroupByChannel,dataRead,&written,NULL));
    _getch();
    Error:
    if( DAQmxFailed(error) )
    DAQmxGetExtendedErrorInfo(errBuffRead,2048);
    DAQmxGetExtendedErrorInfo(errBuffWrite,2048);
    if( taskHandleRead!=0 )
    DAQmxStopTask(taskHandleRead);
    DAQmxClearTask(taskHandleRead);
    if( taskHandleWrite!=0 )
    DAQmxStopTask(taskHandleWrite);
    DAQmxClearTask(taskHandleWrite);
    if( DAQmxFailed(error) ){
    printf("DAQmx Error: %s\n",errBuffRead);
    printf("DAQmx Error: %s\n",errBuffWrite);
    printf("End of program, press Enter key to quit\n");
    getchar();
    return 0;

  • Analog Input and Output in One Single VI

    I need help in setting both analog input and output in one single VI. How do I assign channels to be either input or output? How do I simultaneously uses both in one single VI with a while loop structure?? Which AO am I suppose to use to obtain signal from the function generator I have built to feed into the DAQCard-1200?? Help!!
    Attachments:
    Test1.vi ‏48 KB

    One thing you'll need to be aware of is that you will need to DMA lines: one for AI and one for AO. If you don't, then you can configure the DAQCard to do without DMA using the Config VI. But you certainly can do this.
    As far as your function generator, you will want to do a buffered analog output. You will write your buffer of points to the buffer, and then tell NI-DAQ how fast to update your analog output channel with these values.
    So, you can be reading from AI and checking the AO process in the same while loop. Just make sure you handle the while loop execution (the wait it exits) correctly. This can get tricky when you're doing two types of measurements.
    J.R. Allen

  • How to synchronize analog input and output from two different USB daq boards

    Hi all,
    I have two very differnt USB boards the NI USB 6008, which I am using to acquire the data (Analog Input) and a NI USB 9263, it is an Analog Output only board that I am using to deliver a signal (in this case a square pulse). The reason why I am not using the 6008 Analog Ouputs is because I need to deliver negative voltages and need the full +/-10V range.
    Looking at similar posts I am pretty sure that I can't use an external trigger or a shared clock, I also tried to use the synchronization of timed structures but no cigar.
    I am including a quick vi that I whipped out showing how the signal jitters due to the lack of synchronization. The AO from the 9263 connects to the AI in the 6008 in this example.
    Solved!
    Go to Solution.
    Attachments:
    Test Pulse.vi ‏117 KB

    I talked to a specialist in the phone and tols me that it is not possible.

  • Synchronizing analog input and output

    I am in the middle of converting some Traditional NI-DAQ code to the
    DAQmx API (I am using C++).  Most of it is going quite well: my
    code complexity has been greatly reduced and (since upgrading to 7.4)
    my CPU usage has plummeted.  However, in one particular case I
    need my input and output buffers to be synchronized.  I.e. sample
    0 of my input buffer should be read at the same instant sample 0 of my
    output buffer went out on the line.  In Traditional NI-DAQ, I
    synchronized my input and output start triggers using the following
    method (which I believe I found in an example somewhere):
    error = Select_Signal(addr, ND_PFI_6, ND_OUT_START_TRIGGER, ND_LOW_TO_HIGH);
    error = Select_Signal(addr, ND_IN_START_TRIGGER, ND_PFI_6, ND_LOW_TO_HIGH);
    This then allowed me to setup my input thread, then initialize
    everything in my output thread and when my output got the start
    command, so did my input.  The result was that I could perfectly
    match buffers of output data to buffers of input data (after taking all
    the appropriate buffering into account).
    When I try the same method with the DAQmxConnectTerms function, my
    buffers don't line up.  They are off by 15-20 ms out of a 400ms
    buffer (sampling at 10kHz).  I tried cutting out the middle man of
    PFI6 with similar results.  So my current "synchronize" block
    looks like this:
    error = m_fnConnectTerms("/Dev1/ao/StartTrigger", "/Dev1/ai/StartTrigger", 0);
    I get no error.  This also seems to cause my output loop to hang
    after a few seconds, although that could be a side effect of something
    else that I haven't tracked down yet.  Is there a better way to do
    what I'm trying to do here?  Perhaps it is a misunderstanding of
    the way buffering works on the M series cards (I am currently using a
    6221).

    Don't use Connect Terminals. Use the technique shown in this example program
    C:\Program Files\National Instruments\NI-DAQ\Examples\DAQmx ANSI C\Synchronization\Multi-Function\ContAI-Read Dig Chan
    which is the sharing of sample clocks via the DAQmxCfqSampClkTiming function where the sample clock source of one task is set to the clock of the other task.  This example slaves a digital input task to an analog input task but the idea is the same for your application.

  • Supplying 26 Analog Outputs and 104 Digital Outputs

    I am a graduate student in CWRU and trying to control 26 brushless DC motors independently that requires 26 analog and 104 digital outputs. I couldn't find any card that is capable of this task. Can you please suggest some solution to my application?

    Hello. I would recommend 7 NI-7344s. Each 7344 has 4 analog outputs to drive servo motors and 32 configurable digital input/output (DIO) lines. However, if you don't need the trajectory control from the 7344 (ie, you're just running your motors with a constant voltage or your feedback loop is slow enough for software), then you could use a few NI 6704 Analog Output boards (each with 16 AO lines) and a few DIO boards (such as the 6503 which has 96 static DIO lines).
    If you can give me some more details about your application (what the DIO is used for, what kind of feedback you need, etc), then I should be able to recommend exact products for you.
    Cheers,
    Kyle V

  • Difference in analog input and analog output values

    i am using 6014 DAQ card for providing motor speed reference voltage to Driver and reading back speed
    feedback voltage using LabVIEW 6.0. For this i have used AO Single Update and AI Single scan. Both are in the same while
    loop.The loop has a Wait timer of 50ms. When i take a plot of Analog o/p and input, i get a shift
    between input and output. Why is the shift or the time not synchrnised..please help..When the while loop wait timer is 200ms instead of 50ms, the shift is not there.

    I believe the problem is 2 fold. First if you are using traditional DAQ, or DAQ 6.9.3 or before, the driver is single threaded. Therefore the 2 VIs will not run simultaneous. Try DAQmx and you may be more successful.
    The other is that you are using higher level 1 point VIs. In general they are not the best to use in a time sensitive loop. You are better off using hardware timing, rather than software timing. With hardware timing you have more control over the synchronization of the 2.

  • Newbie, Would like to use analog input and graph

    I was using the "Real Time Chart.vi" example in Labview 2011 and got it all set up using the random input it comes with. I have a USB-6008 that is set up and I can see the signal in MAX. The big question is how the heck do I get the vi to work with the analog input? If someone could modify the vi and add the AI0 as the input I would really appricate it!!
    Thanks
    Attachments:
    Soil Moisture.vi ‏15 KB

    trimixdiver1 wrote:
    Aside from me adding the gage and bar graph, its the same as the example. Ive added the AI (purple) channel but I guess I need to add some Daqmx stuff to allow it to connect to the strip chart.
    Wheres the analog in channel?  Is this something you haven't posted yet?  Make your changes, then post when you are ready.
    Reese, (former CLAD, future CLD)
    Some people call me the Space Cowboy!
    Some call me the gangster of love.
    Some people call me MoReese!
    ...I'm right here baby, right here, right here, right here at home

  • How to combine the analog input and analog output vi's

    Hi !
    I have a perfectly running triggered analog input acquisition vi. I have a seperate vi for analog output that's running perfectly too. Can someone tell me how to combine these two operations so that I could get a vi that does simulataneous AI and AO without missing triggers. I have tried all the different kinds of configurations suggested by NI support but nothing seems to work. Can someone help ?
    thanks,
    Shiva
    Attachments:
    dac_good.vi ‏77 KB
    adc_good_fw.vi ‏124 KB

    Shiva;
    I'm attaching a good Application Notes that shows how to synchronize multiple DAQ tasks, in Labview.
    Hope this helps.
    Filipe
    Attachments:
    Advanced_Sync_Techniques_for_DAQ.zip ‏166 KB

  • How to read data from analog input and export it to a file using Components Works

    I've made a simple application (Delphi 5 using the activeX) that read data from analog input channel 0. After I read the data, I want to export it to a file using the Components Works on a 6035E NIDAQ. (I'm not using labview and don't want to use it)
    How can I do that???
    Regards,
    Francis

    Here's a sample code to do this...
    P.S.: If you read only one channel this code won't work.
    function MyFunction: Integer;
    var
    Low, High, i, j, ChannelCount, RowCount: Integer;
    Po: P;
    begin
    //you are reading multiple channel
    ChannelCount := VarArrayHighBound(Buffer, 1);
    RowCount := VarArrayHighBound(Buffer, 2);
    for i := 0 to ChannelCount do begin
    for j := 0 to RowCount do begin
    WriteToDisk(Buffer[i, j]));
    end;
    end;
    end;

  • My question has to do with analog input and triggering? Does anyone have any suggestions on how i can improve the attached vi so it can trigger on a 50kHz ten cycles pulse after the pulse has been sent out on the output?

    Could you just look at this vi and tell me if i am doing anything wrong? I get errors that are different each time I change something. here are the inputs I am using
    Output Side:
    amplitude = 1
    freuency = 50kHz
    Sampling Frequency = 1MHz
    3 of Samples = 200
    Input Side:
    Input Buffer 4000
    trigger type = analog
    pretrigger = 5
    edge or slope = rising
    scan rate = 500kHz
    # of scans = 2000
    Conditional Retrieval
    mode = on
    slope = rising
    skip count = 0
    level = .1
    offset = 0
    hysteresis = 0
    So what we want to do is capture the ten
    cycles of the 50k output pulse on the input and need to store that so we can plot it later, do you have any suggestions. we are using the PCI-MIO- 16E board.
    Thanks,
    Jarrod
    Attachments:
    InputOutput2.vi ‏88 KB

    1) Toss the sequence frames (no flames please).
    2) Set you read and have it ready to trigger before oing the output.
    3) After the output, go back and read the data that is waiting for you.
    4) If you have errors tell us what they are and under what conditions they occured.
    End of Ben's suggestions for now.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • When using the analog inputs and analog outputs of the PCI-7344, what is the conversion between the voltage entering the card to counts? Similarly, what is the conversion between counts to voltage at the output of the card?

    I am using the PCI-7344 to control my system. The analog inputs are connected to the output of my system while the analog outputs serve as feedback to the system. The system is a servo. I want to know what is the conversion between the voltage read at the input, to card counts, and finally to the voltage output to the system.

    Carole,
    If you are trying to do analog feedback with a servo motor, Chapter 14 of the manual talks about how to set up the torque feedback. Also linked below is a LabVIEW example of analog feedback.
    Chapter 14
    NI-Motion User Manual
    Automatic Analog Feedback with FlexMotion example
    A. Talley
    National Instruments

  • I want to use two analog channels and one digital simultaneo​usly

    Hello and thanks in advance for reading this!
    What I am trying to do is generate two different signals from the output channels of my interface card (PCI6024E) and simultaneously use a digital line so that I can switch two tranzistors (one NPN, one PNP) which actually control the "flow" of the two signals. This means that both signals need to be "active" while the VI is running and at the same time whenever I want to choose the signal not in use I need to use the digital line so that I switch the tranzistors and I get the desired signal.
    I have already created a VI which activates a digital line and while I was trying to add with the NI-DAQmx Assistant the first digital output, I discovered that it c
    ould not be used simultaneously, because there was the error code -200324 saying that "Device not available in NI-DAQmx. It is possible that the device is being used by Traditional NI-DAQ or that the device is being reset."
    I did reset the device but as I get it when VI runs, it cannot have an active digital channel and an analog output channel at the same time (not to mention two analog channels). Correct me (And make my day if I am wrong but this seems to be the case. Thanks a lot for your time!

    Hey Shootist000,  Thanks for the replies.  First off, I am actually okay if we both have each other applications so I am not concerned about that. It is still unclear from what you have said as to whether I can in fact, use these two separte time machine backup to create two separate profiles on the new hard drive.  If that in fact can be done, then - will it create two copies of the apps we both have in the ROOT of the drive as well as placing all the ones we each have separately?
    And reading your second reply, makes me think that maybe the partition is the way to go to begin with and then down the road - after I am in the new iMac, I could reformat the iMac 27 with only one partion and restore my son's latest back prior to the reformat thus giving him full access to the 2 TB of the drive.
    If this is still making sense, does this mean :
    replace the 1TB with a 2TB - but have it partitione - 1.5 TB & 500 GB.
    Install(Restore using Time Machine) my latest back up prior to the  1.5 partition
    Install (Restore using Time Machine) my son's latest back up prior to the 500 gig partition
    Lastly, in order for us both to be using the partioned computer - I am assuming Switch user can no longer be used - so would we need to restart and select our respective partions in order to use the computer?   And if so, how would we each be able to be using time machine to back up - two separte external hard drives - with each one dedicated to only one partition? Or ? 
    Thanks so much.
    Ironically, I am only trying to do this so that I don't need to manually install all his apps, setting, games, blah blah for this temporary period.  :-)

  • Multithreaded analog input and output and serial communication during the AIAO

    I need to read in analog data on 4 channels (4000 scans/s on each channel for a total of 250ms) and while this is happening send out two signals: A trigger pulse (which I currently send on an analog channel, using channel DAC0OUT) and two ascii commands using the serial port. My problem is that the data acquisition VI I am using is a blocking VI, it runs to completion before allowing the two signals to be sent. I am using the VI titled, "AI Acquire Waveforms (scaled array).vi" I don't need to look at the acquired data until after the whole operation is complete. Any help anyone can offer would be much appreciated.

    Hello Mark,
    The AI Read VI will block other operations when waiting for data. I would suggest to reduce the number of scans to read (this is an input for the AI Read VI) to help with handling multiple operations simultaneously. By reducing the number of scans to read by the AI Read VI, it won't have to wait for the whole buffer to be read in before "unlocking" the CPU for other operations. You could place the AI Read in a loop and acquire smaller chunks of the data at a time. For instance, your buffer size is probably 1000. Instead of calling the AI Read VI once and waiting for all 1000 scans, you could place the AI Read in a for loop and acquire 200 scans at a time (have the for loop run 5 times).
    Or you could set up the AI Read VI to read 0 scans the fir
    st time and then just read whatever is in the backlog on subsequent calls. There is a backlog output to AI Read; you could use this with a shift register within a loop to read only the data that is already in the buffer. For both of these cases, I would place a wait in the loop (25-100 ms) to give the CPU time to do other things.
    Another method is to use an occurrence. Place the Functions >> DAQ >> Misc >> Set DAQ Occurrence.vi on your block diagram and set the "DAQ Event" input to "Fire every n scans" (the actual string is a little different). Then put in a Wait on Occurrence function (Functions >> Advanced >> Synchronization >> Occurrence) When you use an occurrence, you are waiting for the driver to tell you when the data is acquired, rather than constantly querying the driver, so it is much faster.
    One of these suggestions should help.
    Let me know if you have any additional questions.
    Regards,
    Todd D.
    NI Applications Engineer

Maybe you are looking for

  • Toolbox in Solaris management console

    I installed Solaris management console 2.0 and when I try to open it, it asks me for a toolbox. What kind of file is a toolbox? Could anybody tell me how can i install a toolbox? Thanks

  • How access Adobe Flash Player Settings on Playbook Browser

    How do you gain access to the adobe Flash player settings? For example to select Display or Privacy or Microphone or Camera. On desktop it's done with a right click on the flash object on the page and select Settings... How do you bring up these sett

  • Problem in unzip companion 10g cd .

    Hi Frnds, I am trying to unzip 10g companion using the command .. unzip <file_name> while unzipping i am getting this error during the middle file #1245 : bad zipfile offset (local header sig): 3945848393 This line is continued for 10 to 30 files. Is

  • Mail.app immediately crashing on launch, cannot get email

    I'm having trouble with Mail.app. Every time I launch it it crashes. I click on the icon, it bounces, the window opens, but then it freezes, after a few seconds, it crashes. Here is an excerpt from the crash log: +Process: Mail [2668]+ +Path: /Applic

  • Satellite C850D-115 / Win7 - the special funktion key mode ist not working

    Hi, the special funktion key mode ist not working, although I tried everything in Bios and softare " Toshiba Hardware setup utility". I still need to press "FN + " to use the special function keys, while enabled bios mode! The special function mode w