Writing Analog Output

Hi,
I am now actually at the part in my program where i'm going to output some data to adjust mirrors for the positioning of a laser dot. I just want to know if i am doing the right way... I use the example in the example finder Voltage (non-regeneration) Continuous Output.
I have some files with many samples more then 1.000.000 samples (patterns for the laser dot) and want to output them in parts (1024 samples at one loop cycle), but also want to be able to push on Pause when it has to hold. So is this the right way then? 
Best regards,
Thijs
Solved!
Go to Solution.

The VI which i am going to use is the one in the Example finder... but my only question is, is that the right one for the job... I haven't write any VI for the data generation yet...
So is this the right way? Or is there a cleaner way to do this, i don't like the part with the case and the "first call" vi in front of it... but some how you have to start the generation after the DAQmx write... i find that odd and then repeat the write DAQmx after the start...
Best regards,
Thijs

Similar Messages

  • Multi channel analog output

    I'm trying to make analog output pulses of microsecond order
    via 3 output channels.
    I try Daqmx write for that goal..and I can make single channel
    pulse with pulse vi in Signal processing category
    But ,I have difficulty in make pulses for more than
    two channels.
    When I try , Labview always make error(that I can't understand)
    or do not make signal at all.
    I also tried to make analog output for DC ,and it works.
    I don't know,however, how I can modify this for pulses.
    I will link screen captures of my labview program.
    http://www.mylv.net/include/file_download.asp?file​=/qna/data/PULSE.JPG&size=80854
    http://www.mylv.net/include/file_download.asp?file​=/qna/data/MLTI(0).JPG&size=63567

    ok i made you a small application in LV 8.2
    it might not work at first try, so you will have to play around and modify as needed.
    you have an array that define the pulse width and relative phase for every channel (every line of the array defines a channel, in order). it is then transformed into a 2D data array, and sent to buffer.
    this approach will work as long as there is a proportional relation between the rate of output and the width of pulses, to avoid underbuffer problems.
    ifyou have to update lots of channels lots of times, then you might want to cycle your writing trough the buffer.
    dont forget to write in the "physical adresses" control the ful list of channels used.
    Message Edited by Gabi1 on 11-29-2007 01:19 PM
    ... And here's where I keep assorted lengths of wires...
    Attachments:
    multichannel pulses.vi ‏35 KB
    multichannel pulses.png ‏14 KB

  • Setting analog outputs to 0

    I would like to start by cautioning you that I am not a programmer.  I have been trained in LabVIew basics, so naturally I am trying to write a much more than basic code. 
    I am writing a test sequence in which I am using a sequence structure to setup and sequence various test functions. For part of the code I am writing I am trying to control a pressure output, I start the task outside a while loop, I write to the task to control control pressure inside the while loop after leaving the while loop and then stiop the task outside the while loop, but the analog output remains at the last commanded value, how do I set it to 0? 
    I have tried writing a constant 0 to the task after I leave the loop and then stoping the task but this does not appear to work. I have a number of analog and digital outputs in this code that I would like to set at 0 before I proceed to the following sequence. 

    My appologies, I have been going through a number of trial and error phases with this code.  Here is an example of when I was trying to write a 0 to the channel, in this version I used a case structure to tell it to go to 0 when the test sequence would be complete.  I arrived at this potential solution after having no success with earlier attempts. 
    As far as state machines go, like I said I have only been to LabView basics I and II, would I be able to convert the sequence structure to a case structure and put that in a while loop of some sort to control the sequencing?
    Attachments:
    Purge Portion 15.vi ‏59 KB

  • How much noise expected in analog output?

    I'm using a PCI-MIO-16E-4 with LabView to generate buffered analog output, and at the BNC-2090 output (DAC0/1OUT) I'm finding ~180 Hz hum of about 20 mV peak-to-peak. It doesn't seem to matter whether I'm writing a waveform or not; the noise magnitude is always about the same.
    Is there something I can do to eliminate or reduce this, or is it typical so I'm stuck with it? I futzed with the BMC-2090 shield ground jumper (W1) but none of the three documented settings made any difference.
    Any suggestions would be greatly appreciated.
    thanks,
    Kevin

    No particular noise is "typical." No noise at all is atypical. 20mV is low enough that it could be radiated noise for nearby equipment. I doubt you card would have that noise in the lab situation where they test for noise. Which essentially means something about you estup is responsible for the noise.
    Since the frequency is a multiple of 60Hz it is probably environmental noise, radiated ot picked up off of the ground. Really and truly, 20mV is not a lot. I have acquisitions where I must be very careful in grounding ALL the associated equipment or I see huge blurts of noise from a motor drive - on the order of 3 Volts until I drove an eight foot gound rod through the floor to get an isolated safety ground for my DAQ PC and scope. I still see the noise, but it is now lower than 0.8V so I don't get false triggering of TTL circuitry from it. This is AI not AO like you are discussing.
    If you check the specification of your card there is a table on "System noise." I am not saavy enough to understand it, but I see that the noise is dependant on the output range. I suspect that the range is not a user selectable item, but in theory if you see more noise than the spec sheet says, then it is part of your setup not the card.
    Here is part you really don't want to hear: Solving a noise problem by text messaging is like solving a mental illness over the phone, maybe worse. I can tell you all sorts of practical, common sense things that are not specifically helpful. I can tell you from personal experience that you really need to follow all the good practices you can, if you really want to have as high a SN ratio as possible.
    Can you set up a single point ground? Can you eliminate all ground loops (shielding only grounded on one end.) I had a stray strand of shielding that brushed against a case that made terrible noise once.
    There is a good book called ,"Grounding and Shielding Techniques," by Ralph Morrison from Wiley Inter-Science. There are papers on this in in the tech resources of ni.com. In particular the paper on "Field wiring" is good. Keithley has a good book they will send you for free on low level measurements that is very informative. You have to call them on the phone to get it.

  • Multiple waveform generation on analog output channels

    hi,
    I am writing data on the two analog output channels on my PCI-6052E card.But AO write takes only one dimensional array of waveform data. How can I simultaneously output seperate waveforms on each of the analog output channels(say sine on DAC0 and square wave on DAC1)?

    I've had a similar experience I believe.
    I had to create the two waveforms with function generators, suck out the Y
    values, then Interleave them into one array.
    Basically, point one was the first point in waveform1 for Dac0, point two
    was the first point of the second waveform for Dac1.
    Then that gets wired to the output block where you tell it to scan both
    channels.
    Confusing as labview eh??
    "shiv" wrote in message
    news:[email protected]..
    > hi,
    > I am writing data on the two analog output channels on my PCI-6052E
    > card.But AO write takes only one dimensional array of waveform data.
    > How can I simultaneously output seperate waveforms on each of the
    > analog output channels(say sine on DAC0
    and square wave on DAC1)?

  • Usb 6009 continuous analog output

    Hi
    I'm pretty new to Labview, so you may have to bear with me. I have a USB-6009 and I want to generate a continuos analog output voltage. I've got the example you have posted 'Gen Mult Volt Updates-SW Timed_LV7.1 (0 to 4).vi' working and it outputs a continuous sine wave.
    In a similar manner I need to generate:
    1. Ramp up voltage (and ramp down voltage): starting with a continuos constant voltage, which after a period of time linearly increases to another constant voltage, and which allows me to specify the 3 time intervals and the rate of increase.
    2. Pulsations: whereby I can specify the amplitude and time interval of each pulsation
    This is so that I can control voltage to a valve which regulates my pipe flow. In the example I have (one stated above), I do not understand specifically:
    i. Why I need both a 'Software Loop Time (ms)' as well as 'Timeout'
    ii. The 'Sinusoidal Pattern' input which seems to generate data for a sine wave- I can't get a description of that and there are no similar VIs for other waveforms; and what is the function of the two numbers it has?
    iv. How do I change amplitude and time period for the wave?
    iii. What does 'Index Array' do?
    thank you

    Hi there,
    I'm guessing the VI you are using is the one from this KB:
    http://digital.ni.com/public.nsf/allkb/6F2C2B49A89D685C8625711D007BDD64
    i. The software timed loop control is to control the rate at which you change the voltage output.  The timeout on the DAQmx Write VI is the maximum time in seconds the VI will wait to output a sample (eg. if the write buffer is full, the Write VI will wait for it to become available for 'timeout' seconds before outputting an error).
    ii. The sine pattern is just an array constant of doubles that make up the sine wave voltage values, and the for loop adds an offset (of two volts) to every single one of those values. You might want to replace that entire array constant and for loop with a Simulate Signal Express VI (just search for Simulate Sig or look in the Functions >> Input palette) and convert the dynamic data output to an array of doubles.  You can configure the type of waveform, amplitude, and time period from that express VI as well.
    iii.  Refer to previous answer.
    iv.  Index array returns an element of an array based on the index input.  You can turn on the context help and move your mouse over functions to get more help on them.
    I hope that helps!
    Way S.
    NI UK Applications Engineer

  • Usb-6009 analog output voltage

    Hi,
    The usb-6009 has two 0-5 volts analog ouputs. Is it possible to connect
    them in series, in order to get a single 0-10 volts analog output
    channel ?
    Thanks,
    Nicolas

    Those are ground-referenced signals. To connect them in series, you would have to connect one of the outputs to ground. You would be shorting out (at least) one of your analog outputs, and probably damage the unit.
    John Weeks
    WaveMetrics, Inc.
    Phone (503) 620-3001
    Fax (503) 620-6754
    www.wavemetrics.com

  • 2 analog output channels with different frequencies

    Hi,
    hope that somebody can help me:
    I created two physical tasks, analog output channels.
    I should give signals (triangle signals) to a scanner. The problem ist that I need these triangle signals with two different frequencies.
    I can create the signal with each of the task, but not together. Can I solve this problem somehow?
    Ah, and of course the 2 tasks should start together...
    Thanks for your help!!
    Telly

    You didn't mention the type of device you're using, so I'll assume it's a standard MIO. A typical MIO only has one AO timing engine, so you'll have to create one task for both channels and use a single update rate for the task. You will have to make the output frequencies different by passing different data for both channels.
    For example, let's say your update rate is 1KHz. The data for channel 0 is 1000 data points of a single cycle of a triangle wave. The data for channel 1 is 1000 data point of two cycles of a triangle wave. When you run the task, you will get a 1Hz triangle wave on channel 0 and a 2Hz triangle wave on channel 1.
    Good luck,
    Joe

  • HELP about analog output video

    Hello, I´m need help about analog output video in Premiere CS5 using Matrox RTX2. I need to crop a video with resolution in 1440x1080 to 4:3 in output analog. But what happens is wrong (I think). My video is in format anamorphic and the other option is 16:9 letterbox. Is there any way to crop the video without using effects. Thanks a Lot and sorry my bad english (my native language is Portuguese).

    There are no 4:3 HD specifications.  You'll have to put the video into a normal SD sequence, and scale it down till the top and bottom of the video meet the frame.  That way the sides will be cut off.

  • Simultaneous analog output 1k sine wave and data acquisition

    Although many topics of simultaneous analog output and input can be found in NI Developer Zone, I have not found a case similar to my project. I'm trying to generate a 1kHz sine wave by using the analog output of NI DAQPad-6070E, and acquire one channel input signal simultaneously. I found most of the examples can not work properly above 100Hz. Any suggestions are welcome. Thank you.
    Jian

    I have sucessfully solve the problem when I observed the increase of
    scan backlog number. Simply increase the buffer size of AI/AO and you
    can make the 1kHz sine wave output and data acquired properly.
    On Tue, 3 Feb 2004 09:03:07 -0600 (CST), jujian wrote:
    >Although many topics of simultaneous analog output and input can be
    >found in NI Developer Zone, I have not found a case similar to my
    >project. I'm trying to generate a 1kHz sine wave by using the analog
    >output of NI DAQPad-6070E, and acquire one channel input signal
    >simultaneously. I found most of the examples can not work properly
    >above 100Hz. Any suggestions are welcome. Thank you.
    >
    >Jian

  • How to avoid delay during analog output generation by changing its frequency?

    Windows XP
    LabVIEW 7.1
    PCI-6036E + BNC-2120
    Hi,
    I am going to create a vi to generate an engine speed sensor signal (a simple square wave with specific missed pulses, in my case 58 pulses “teeth” and 2 missed pulses “missed teeth”) as an analog output but in addition give me the opportunity to control parameters for example frequency online to simulate the engine speed changes during running that vi. For this purpose I have started with “Continuous Generation.vi” which is available in NI Example Finder under the following path:
    Hardware Input and Output > Traditional DAQ > Analog Output > Continuous Generation.vi
    Then I modified it towards above mentioned goal, all related vi s are attached. The main vi is: "Motor Signal Generator_1.12.vi"
    At the first try it looks that it works properly but when have a look on that more accurately with Oscilloscope (fortunately I have a good one: Agilent 54621A – 60 MHz, 200 Ms/s) obviously there is a gap (delay or Jitter) whenever I change the engine speed. It is also attached in Signal generation_problem report.doc file.
    Note: Small gaps are OK and related to predefined missed teeth but the big one is happened during changing engine speed.
    As far as I understand it is related to the time which case structure in AO C-GEN sub-vi needs for AO reconfiguration each time after changing the engine speed (update rate). How can I get rid of this delay or gap during signal generation and generating completely continuous signal?
    I have to mention that obviously I changed the frequency by changing the update rate. The other possibility is to change the number of updates in one period (refer to "generate arb frequency.vi" in NI site: http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B45EACE3E48F56A4E034080020E74861) which resulted in no delay however then I can not change the frequency continuously but step by step (for example jump from 5Khz to 2.5KHz immediately) and this can not pass to my application.
    Any hint is appreciated.
    regards
    Attachments:
    Signal_generation_NIsupport.zip ‏81 KB

    Hi Roozbeh,
    The following example will allow you to vary the pulse train frequency during run time.
    Thanks,
    Lesley Y.
    Attachments:
    GenDigPulseTrain-ChangingSpecs.vi ‏75 KB

  • How to switch analog output between two waveform frequencie​s

    Hello,
    I'm using a fairly simple VI to generate a square wave at our analog output board.  I have the square wave controls in one panel of a sequence structure, and a "release" function in the other panel of the sequence. Currently the VI is programmed to switch from the original square wave to -10V when the Boolean control is switched.
    What I'd like to do now is to modify the VI so that I can swtich between a square wave of a given frequency, say 100 kHz, to a square wave of a different frequency, say 10 kHz, or to DC -10V. But I'd like to be able to vary each frequency and amplitude independently.
    Could anyone give me some programming pointers?
    Thanks,
    Michelle

    Thanks to the three of you for the suggestions. I started trying a few of them, and then realized that what I had already built will work pretty well to update the frequency. I didn't realize that it would update the waveform in "run" mode -- I thought it would only do that in "run continuously" -- so I've found that I can change the frequency of the waveform by doing that. This doesn't allow me to change the frequency and the amplitude simultaneously, but I'm not sure yet whether or not I will need to do that -- I so will probably go ahead with the experiments I need to do with this set-up, then modify it if I find that I need to control both frequency and amplitude simultaneously.
    Thanks for your help!
    M.

  • NI-DAQmx VisualStud​io C++ 6 Single point analog output

    Specs: NI-DAQmx 7, VisualStudio C++ 6.0,  PCI-6722,8channel AO
    We have a very simple application: set a voltage (actually 6 channels) and keep it until we want it changed again, perform the change very quickly in response to an image capturing algorithm. So I don't need any waveforms or buffering.
    In this forum post http://forums.ni.com/ni/board/message?board.id=231​&message.id=3283&query.id=18094 you talk about an AOOnePoint example, but I get an error that the NI-DAQ driver does not support my device.
    I may need to use NI-DAQmx, but how? I would like to use something like AO_VWrite(,,), maybe for 6 channels in one call. But I can't find it in NI-DAQmx. It seems I need to setup buffers and frequencies. I have a working sample, but it seems a slow and certainly overkill of this simple application:
    // Link with \DAQmx ANSI C Dev\lib\msvc\NIDAQmx.lib
    #include "NIDAQmx.h"
    double[2] data;
    int taskHandleAnalog;
    int written;
    void Init()
        DAQmxErrChk (DAQmxCreateTask("",&taskHandleAnalog));
        DAQmxErrChk (DAQmxCreateAOVoltageChan(taskHandleAnalog,"Device and Channel Info","",0,10,DAQmx_Val_Volts,NULL));
        DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandleAnalog,"",1000,DA​Qmx_Val_Rising,DAQmx_Val_ContSamps,NUMBER_OF_AO_SA​AMPLES));
        DAQmxErrChk (DAQmxWriteAnalogF64(taskHandleAnalog,NUMBER_OF_AO​_SAAMPLES,0,1.0,DAQmx_Val_GroupByChannel,data,&wri​tten,NULL));
        DAQmxErrChk (DAQmxStartTask(taskHandleAnalog));
    void SetVoltage( double voltage )
        data[0] = voltage;
        data[1] = voltage;
        DAQmxStopTask(taskHandleAnalog);
        DAQmxErrChk (DAQmxWriteAnalogF64(taskHandleAnalog,NUMBER_OF_AO​_SAAMPLES,true,10.0,DAQmx_Val_GroupByChannel,data,​&written,NULL));

    Hi,
    It looks like you simply wants to output voltages on the analog output channels, but only wants one update at a time with no waveforms or buffering in DAQmx.
    As I'm sure you know there are really just 3 types of measurements.  Single Point, Finite, and Continuous.  Since you want a single value at a time it's just a Single Point operation.
    You can find DAQmx examples for single point operations in this path:
    C:\Program Files\National Instruments\NI-DAQ\Examples\DAQmx ANSI C\Analog Out\Generate Voltage\Volt Update
    Simply place the DAQmx Write Code within a loop and you will be updating one value at a time, but multiple times when "we want it changed again".
    Dennis Morini
    Field Sales Engineer
    National Instruments Denmark
    http://www.ni.com/ask

  • How do I configure 128 channels of DIO and 128 channels of Analog output with the availabili​ty of 3 pci slots

    I have only 3 slots of PCI or 4 slots of ISA bus, I want to configure with the minimum possible modules to attain 128 channels of DIO and 128 channels of analog output. This is inturn fed to the PCM (Pulse code Modulator). The cards will be placed in industrial PC.

    Associate Engineer-Marketing,
    Using just those 3 PCI slots you're not going to be able to get the 128 analog output channels. You will probably want to go either the MXI-3 (PCI bus extender) to a PXI chassis or E Series DAQ card to a SCXI chassis for such a high channel count system. Which analog output cards and which digital I/O cards you will want depends on your application. You will have to decide whether you will need static or dynamic analog output as well as whether you need clocked digital I/O or not. I highly recommend contacting our internal sales department at 1-800-433-3488. They are great at helping specify systems.
    Ames
    Applications Engineering
    National Instruments

  • Single shot analog output: How to pulse this. Probably easy, I'm at a loss.

    Hello.
    I have a piece of machinery that my system is connected to.  Every time it reaches a proximity sensor (It's a reciprocating unit), I need to do a single pulse of 5v out of my analog output.  It has to be fast, it has to stop until the sensor is reached again, and it can't stay 'on' for long.
    I've attached my VI.  I'm using a voltage input via DAQ assistant, routed through some logic to produce a 'true' boolean every time that sensor is reached, and that boolean is connected to a case structure with voltage out tasks created in DAQmx.
    My problem is that the machine won't reverse while the case is still true and there's still the 5v being called by the true case on the case structure.  It has to pulse, then stop, then be allowed to come back when the proximity sensor is reached again.  As it is now, the machine reaches the prox and then the whole system stops, as the 'true' condition on the case structure, and subsequent voltage output, remain high.
    I've attached the VI and heirarchy as well.
    I've tried a few different things here, as well as just using a DAQ assistant with N samples, but that would just retrigger when the loop repeats anyway.
    I'd love to sit and bang my head against this til I get it, but I'm under a time constraint.  Help!
    Still confused after 8 years.
    Solved!
    Go to Solution.
    Attachments:
    using create channel.vi ‏94 KB
    logicsub.vi ‏32 KB

    Ralph, without knowing the exact DAQ card that you are using, it is difficult to give you the best solution. If you want to continue with the solution that you currently have, try adding a shift register to the outer while loop to track the previous value of the boolean. In this way, we can keep multiple values that are above the threshold from causing multiple pulses. Next add a time delay after the DAQmx Write, then add another DAQmx Write to set the output back to your low value. Remove all code from your "false" case. See attached VIs. Please let us know what model of DAQ card you have as we may be able to do something clever like a retriggerable pulse train if your card can support it.
    Charles Chickering
    Charles Chickering
    Architecture is art with rules.
    ...and the rules are more like guidelines
    Attachments:
    using create channel.vi ‏98 KB
    logicsub.vi ‏29 KB

Maybe you are looking for

  • FastRes 600 and FastRes 1200

    I have HP LaserJet P1102. Why my FastRes 1200 is paler/whiter than my FastRes 600? Is there something wrong with my printer configuration? Does anyone experiencing the same?

  • Message of type E in ALV Grid Control

    Hello All, When I am giving a message of type 'E', the application is getting terminated. I hope for this reason, we have the ADD_PROTOCOL_ENTRY method to raise the error messages in ALV. But the problem is, we can call this method only in Data_Chang

  • Report 3.0 oracle database 9i(Encounter the symbol "(" when expecting

    Hi, i am using oracle 9i database and report 3.0 and OS win xp and my procedure is PROCEDURE GET_MILLION_TEXT (MILLION IN NUMBER,MILLTEXT OUT VARCHAR2(30)) IS BEGIN SELECT ARA_TEXT1 INTO MILLTEXT FROM NUM_WORD WHERE NUMB=MILLION; EXCEPTION WHEN NO_DA

  • Password for pc synch

    i can't synch my blackberry to my pc because i need a password, but i haven't set one and trying to contact blackberry to sort it out is impossible. any ideas?

  • Errors exist in required project(s)

    I have not found anything as yet about this error. Does anyone else get this? I have built a few projects that have worked then for some reason this error pops up as soon as I try to run an application that had been working. I am just getting started