Great discrepancies of frequencies of the arbitrary waveform using niFGEN 5401

Hi all!
I'm using niFGEN PCI 5401 to generate an arbitrary waveform defined previously in the Soft Front Panel.
The reference guide says, that I can produce a frequency up to 1 MHz. Does this value refer to the whole waveform or to each sample of the 16384 samples? And how can you explain, that at last the arbitrary waveform takes about 600 ms for one cycle even though the frequency was set to 1 MHz?!
Thanks in advance
Steffi

Hi Jerry!
I generally understood how DDS works, but I'm bemused why the output frequencies do not correspond to the input frequencies?
1.) Yesterday I made a test with the GIVEN Soft Front Panel and even this does not work as it should: If I want a standard square function of 1 MHz, I get a square function of 2,5 Hz! (The same with 100 kHz = 0,25 Hz and 10 kHz = 0,025 Hz.) Where does this factor come from?
2.) This factor also corresponds more or less to the generated arbitrary function in my program: with 1 MHz I get 1,6 Hz, with 100 kHz = 0,16 Hz ...
3.) I thought changing the ratio between pulse length and length of the whole signal period (it's first a square and then a long time zero) I could generate a short pulse anyway accepting the mentioned f
requency discrepancies. E.g.: One period takes 600 ms (although my input frequency is 1 MHz). If I have a ration of 1 (square) to 100 (whole signal) I should get at least a pulse of 6 ms. But the shortest pulse I ever got was about 20 ms.
The IMPORTANT QUESTION: is there a physical limit for generating pulses (e.g. due to the inertia of the DDS method)?
I hope I could explain my problem more precisely. Thank you anyway!
Steffi

Similar Messages

  • I want to output an arbitrary waveform using LabView onto the oscilliscope through the DAQ2005 card. Can anyone help please?

    Hey guys,
    I am new to LabView and my final year project depends on it! Please help as much as you can!
    I am trying to output an arbitrary waveform on an oscilliscope. The shape of the waveform depends on user input parameters like no. of samples, amplitude of each sample and the frequency of desired waveform. Please refer to attached Arbitrary_Wave_Display.vi. In the attached vi, the desired waveform is displayed on the front panel. My project requires that I output this waveform through the analogue output channels of the 2 DAQ2005 cards that I have. When I connect the output of th Arbitrary_Wave.vi to the input of the AO write express vi, there is no output of the oscilliscope. I believe it should be connection problems with regards to while loops and loop conditions. I have also attached my attempted vi.
    Please feel free to give some advice. It is greatly appreciated,
    Best regards,
    TheApprentice of LabView

    You didn't attach any VI and what is the DAQ 2005? I don't know of any NI board with that model number. The analog output functions on the LabVIEW DAQ palette only work with NI boards.

  • How can I multiply the frequency of an incoming waveform in Labview?

    My goal is for the frequency of the incoming waveform to be measured, and then for the frequency to be multiplied by a user-specified integer. Could anyone provide guidance as to how I might do this?

    Once you have the frequency measurement just wire it to the multiply function.

  • LabVIEW FPGA - Arbitrary Waveform

    Hi all,
    I can get the example about the Arbitrary Waveform ported to my CompactRIO devices, It shows me some errors about the reference. Is this because I am using the LabVIEW FPGA 8.0 and I think that application is created with an earlier version?
    Can someone please help me out?
    thank you very much

    Can you be more specific about which example you are porting to CompactRIO? Where did you find this example? Is this from LabVIEW 7.x?
    Moving from LabVIEW 7.x to 8.0, there were some very significant changes in how you configure the project to interact with the FPGA. In LabVIEW 7.x the project was only used to configure the FPGA and develop FPGA VIs. In LabVIEW 8.x the project is a completely different structure and is used for all LabVIEW targets (FPGA, RT and Windows, as well as others).
    LabVIEW does include a tool to move FPGA applications from LabVIEW 7.x to 8.0. It is found under Tools >> FPGA Module >> Import FPGA Files from LabVIEW FPGA Module 1.x.
    After running this tool you will likely still have to make a few manual changes in the newly created project to get everything to run correctly.
    Christian Loew, CLA
    Principal Systems Engineer, National Instruments
    Please tip your answer providers with kudos.
    Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
    or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
    to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense

  • How do i measure the frequency of a sine wave using a field point counter module

    I need to measure the frequency of the sine wave using field point. is it possible and if yes how. do i need to convert the sine wave signal to square wave. Please let me know.

    It probably would be easiest to convert the sine wave to a square wave with a simple external circuit and then use a counter module to measure the frequency. There is a shipping example in LabVIEW that shows how to measure frequency with a FieldPoint Counter module.
    JRA

  • Can I Control the Pulse offset using the Counter Out?

    Hello Everyone.
    I am trying to generate the Pulse as below;
    I have seen and understood an example to generate a pulse waveform "GenDigPulseTrain_Continuous".
    However, I can not control the offset of the pulse train.
    Although the function gives me "initial delay(The amount of time in seconds to wait before generating the first pulse)",
    I can not shift "t_dead" cycle.
    /*01.Frequency Control*/
     // The units to use to define pulse frequency.
      m_pTaskWrite->COChannels.CreatePulseChannelFrequ​ency(vecstrings[0]/*LPCTSTR counter*/,
       "PWM_C0_CH_HIGH"/*LPCTSTR nameToAssignChannel*/,
       DAQmxCOPulseFrequencyUnitsHertz,
       DAQmxCOPulseIdleStateHigh,
       dDeadTime, 
       m_nFncFrequency/*frequency*/,
       prDuty.second/*dutyCycle*/);
      // The units to use to define pulse frequency.
       m_pTaskWrite->COChannels.CreatePulseChannelFreque​ncy(vecstrings[1]/*LPCTSTR counter*/,
        "PWM_C0_CH_LOW"/*LPCTSTR nameToAssignChannel*/,
        DAQmxCOPulseFrequencyUnitsHertz,
        DAQmxCOPulseIdleStateLow,
        dDeadTime/**2 + (prDuty.second *dCycleTime)*/, 
        m_nFncFrequency/*frequency*/,
        prDuty.second/*dutyCycle*/);
    Please let me know how I solve this problem.
    Thank you

    Dear Zl,
    Counting pulses is much easier with the FP-QUAD-510 or FP-CTR-500, but can be done with the FP-AI-110.  You can't directly count the pulses with a FP-AI-110, but you can do it in software. Bring in the data by doing a normal read. Then, using shift registers, if the previous voltage is less than .8V (low) and the current voltage is more than 2.5 (high), increase the pulse count. I have attached a program that shows what to do with the data once you bring it in. I took the data from an array outside the while loop, but your data will be brought in one point at a time inside the while loop. One thing to take note of, since Fieldpoint brings in data at 1 kS/s, this will only work with pulses slower than 500 Hz. The farther the duty cycle is away from 50% duty cycle, the slower the signal must be in order to catch the pulses correctly. Please let me know if you have any questions. Have a great day!
    Sincerely,
    Marni
    PS- Please only post question once.
    Attachments:
    pulsecount.vi ‏22 KB

  • The Agilent 33250A arbitrary waveform VI is ill-documented.

    I am trying to create a waveform (basically a 1 D array of voltages) using the Agilent 33250A VI. The shape is simple - a 3.5V peak ramp starting from zero that extends over 50 microseconds, followed by a DC level of zero volts for 100 microseconds.
    The named waveform is indeed saved on the instrument, but when I examined the points, it was always a 1 Vpp amplitude ramp. The timing appeared to be ok.
    On a hunch, I used the gain and offset inputs of the configure arbitrary waveform VI to set things correctly(I was already using the frequency input for setting the temporal information). Now, the waveform is fine.
    The create arbitrary waveform VI should document that it ignores the actual voltage levels. 

    In other words, you ended up doing what the example does.
    As the documentation does state, the Create Arbitrary Waveform function scales and normalizes the data that you pass to it. So, for the 33250A, it scales it from -2047 to +2047. The waveform is centered around 0. The documentation also states that the maximum value of the waveform will be equal to the gain.

  • An arbitrary waveform generator using the DSP Module

    Hi Guys,
    Just got my hands on LabView and the DSP Module, and having a bit of fun atm. Great products. I'm currently using the TI DSK6416, and was wondering if there was a labview model/example of arbitrary waveform generation using this...? Perhaps using a DDS method or something similar?
    Thanks in advance...
    GibbGodD 

    GibbGodD,
    Hello!
    There are quite a few Waveform Generation VIs within Labview, including the Simulate Arbitrary Signal Express VI and the Arbitrary Wave VI. Unfourtuantly, these are not available within the DSP Module. There is a special group of Embedded Signal Generation VIs for the DSP Module, of which one is the Simulate Signal. Take a look at these VIs as perhaps you could use them to build the waveform you are looking for.
    To answer your question, I wasn't able to locate a specific example that matched what you were looking for, but if you to Help >> Find Examples >> Toolkits and Modules >> DSP from within LabVIEW you should be able to find some great DSP examples. Particular, the example project "Variety of Signal Types.lvproj" shows the different types of signals the DSP target can generate.
    The majority of Arbitrary Waveform Generation information that I was able to find is all related to our Function Generators but not for the devices supported for the DSP Module.
    Best of Luck!
    Ben Sisney
    FlexRIO V&V Engineer
    National Instruments

  • How to measure the frequency of the data plotted on the waveform chart

    i have made a virtual instrument in labview that acquire data (say sine wave) into a spreadsheet file and also on the chart from the function generator. I measured the frequency of the data from the chart but it is coming out to be very less. How can i calculate the frequency of the plotted sine wave and also from the spreadsheet file.

    If you want to get an idea of the base-frequency of an periodic signal, you can measure the number of samples in between two maxima or in between two minima of the periodic signal.
    Multiply the number of samples by the sample-interval (1/Fsample in [sec]) gives you a rough estimate.
    FFT, I mentioned is one of the more advanced calculation-methods.
    The method calculates the spectrum from a waveform.
    Hope this helps,
    Patrick

  • Arbitrary waveform generation from large text file

    Hello,
    I'm trying to use a PXI 6733 card hooked up to a BNC 2110 in a PXI 1031-DC chassis to output arbitrary waveforms at a sample rate of 100kS/s.  The types of waveforms I want to generate are generally going to be sine waves of frequencies less than 10 kHz, but they need to be very high quality signals, hence the high sample rate.  Eventually, we would like to go up to as high as 200 kS/s, but for right now we just want to get it to work at the lower rate. 
    Someone in the department has already created for me large text files > 1GB  with (9) columns of numbers representing the output voltages for the channels(there will be 6 channels outputting sine waves, 3 other channels with a periodic DC voltage.   The reason for the large file is that we want a continuous signal for around 30 minutes to allow for equipment testing and configuration while the signals are being generated. 
    I'm supposed to use this file to generate the output voltages on the 6733 card, but I keep getting numerous errors and I've been unable to get something that works. The code, as written, currently generates an error code 200290 immediately after the buffered data is output from the card.  Nothing ever seems to get enqued or dequed, and although I've read the Labview help on buffers, I'm still very confused about their operation so I'm not even sure if the buffer is working properly.  I was hoping some of you could look at my code, and give me some suggestions(or sample code too!) for the best way to achieve this goal.
    Thanks a lot,
    Chris(new Labview user)

    Chris:
    For context, I've pasted in the "explain error" output from LabVIEW to refer to while we work on this. More after the code...
    Error -200290 occurred at an unidentified location
    Possible reason(s):
    The generation has stopped to prevent the regeneration of old samples. Your application was unable to write samples to the background buffer fast enough to prevent old samples from being regenerated.
    To avoid this error, you can do any of the following:
    1. Increase the size of the background buffer by configuring the buffer.
    2. Increase the number of samples you write each time you invoke a write operation.
    3. Write samples more often.
    4. Reduce the sample rate.
    5. Change the data transfer mechanism from interrupts to DMA if your device supports DMA.
    6. Reduce the number of applications your computer is executing concurrently.
    In addition, if you do not need to write every sample that is generated, you can configure the regeneration mode to allow regeneration, and then use the Position and Offset attributes to write the desired samples.
    By default, the analog output on the device does what is called regeneration. Basically, if we're outputting a repeating waveform, we can simply fill the buffer once and the DAQ device will reuse the samples, reducing load on the system. What appears to be happening is that the VI can't read samples out from the file fast enough to keep up with the DAQ card. The DAQ card is set to NOT allow regeneration, so once it empties the buffer, it stops the task since there aren't any new samples available yet.
    If we go through the options, we have a few things we can try:
    1. Increase background buffer size.
    I don't think this is the best option. Our issue is with filling the buffer, and this requires more advanced configuration.
    2. Increase the number of samples written.
    This may be a better option. If we increase how many samples we commit to the buffer, we can increase the minimum time between writes in the consumer loop.
    3. Write samples more often.
    This probably isn't as feasible. If anything, you should probably have a short "Wait" function in the consumer loop where the DAQmx write is occurring, just to regulate loop timing and give the CPU some breathing space.
    4. Reduce the sample rate.
    Definitely not a feasible option for your application, so we'll just skip that one.
    5. Use DMA instead of interrupts.
    I'm 99.99999999% sure you're already using DMA, so we'll skip this one also.
    6. Reduce the number of concurrent apps on the PC.
    This is to make sure that the CPU time required to maintain good loop rates isn't being taken by, say, an antivirus scanner or something. Generally, if you don't have anything major running other than LabVIEW, you should be fine.
    I think our best bet is to increase the "Samples to Write" quantity (to increase the minimum loop period), and possibly to delay the DAQmx Start Task and consumer loop until the producer loop has had a chance to build the queue up a little. That should reduce the chance that the DAQmx task will empty the system buffer and ensure that we can prime the queue with a large quantity of samples. The consumer loop will wait for elements to become available in the queue, so I have a feeling that the file read may be what is slowing the program down. Once the queue empties, we'll see the DAQmx error surface again. The only real solution is to load the file to memory farther ahead of time.
    Hope that helps!
    Caleb Harris
    National Instruments | Mechanical Engineer | http://www.ni.com/support

  • Error occurred while executing niRFSG Arbitrary Waveform Generator

    Hi,
    I am trying to execute the niRFSG Arbitrary Waveform Generator.vi.
    The inputs at the front panel are as follows -
    Resource name : PXI1 Slot2
    Center frequency : 1GHz
    Power level : -20dBm
    Selected waveform : Double Sideband
    IQ rate : 1M
    NI PXI 5652 RF Signal Generator is connected to slot 2.
    When I try to run the program, I can see an error generated after the first step, which is "niRFSG Initialize.vi". The error code is "FFFCFiE4" and the error message says "Device identifier is invalid".
    If I select "S2SignalGen" in the Resource name instead of "PXI1 Slot2", I face the same error.
    I am using Lab View 2011 and NIPXIe-1075
    Could someone please tell me what is wrong?
    Thanks so much,
    Sharmi

    Hi,
    What are the RFSA and RFSG devices you have? Please give me all the product numbers (i.e 5652, 5611, 5450 etc.).
    I want you to physically connect the RF OUT on the RFSG to the RFIN on the RFSA with an RF cable. Then you will generate a single tone using the RFSG Single Tone Generation.vi example. At the same time, you will run the RFSA SFP and it should capture what you are generating. You cannot bring the SFP into LV, it is its own application.
    If you go to Start>> National Instruments>> NI RFSA, are there examples in there? If not, can you got to MAX, expand the Software tab and take a look at what version of RFSA you have. Did you make sure to install RFSA after you installed LabVIEW?
    In the NI Example Finder (when in LabVIEW, Help>> Find Examples..), under Hardware Input and Output >> Modular Instruments, do you see RFSA or RFSG in there?
    Thank you,
    Vimal 
    Applications Engineer
    National Instruments

  • PXI_Add AWGN to a carrier generated using NI RFSG in Arbitrary Waveform mode

    Hello ! 
    Does anyone know how to add AWGN to a carrier generated using NI RFSG ?
    I know how to generate a CW signal using NI RFSG in Arbitrary Waveform mode (please see the attached file),  but I have not found out yet how to add AWGN to it.
    Thank you ! 
    Aina

    Hi Aina,
    I may still be not completely understanding exactly what you're asking for. So in my example that I gave you, we were adding the AWGN to both the I and Q arrays seperately. What you're looking for is to actually add the noise to the signal after it has been upconverted. Does that sound right? With our hardware, this is not possible because the baseband I/Q data is mixed with the carrier in hardware as the last step before it is generated. To add AWGN after the signal has been placed on the carrier you would need a noise generator. The best you can do is to add the AWGN to the baseband I/Q and then upconvert it based on the carrier frequency you specify in RFSG. Let me know if that was helpful to you.

  • Odd error originating from NI-5411 (Error code: BFFA0002) when trying to load arbitrary waveform

    Hello everyone. 
    We have some equipment (PCI NI-5411) that is misbehaving in an odd and new way. When trying to load an arbitrary waveform onto the AWG (using a library call to the "niFgen Write Binary 16 Waveform"), it produces an error. The error code is "BFFA0002", but I haven't been able to find any information that can show what this error code provides. Previously, we had some problem when the system wouldn't find the file and produces an error even though the file is there. After changing our code so the file access is attempted several times, the problem was resolved. However, that doesn't work in this case and we do not know here the problem is.
    This is a pretty much shooting wild and hoping that something falls down, but if anyone could provide me with information about the error code or another probable error source I would be highly grateful.
    Thanks in advance!
    With best regards,
    Niclas

    Hi Niclas,
    That error code suggests that a file cannot be opened. This error is defined in IVI as  IVI_ERROR_CANNOT_OPEN_FILE.I don't think we return this error code from the NI-FGEN driver.
    You mentioned that you have an issue with finding a file. Is that file specific to your application? How is it being open or used? What API do you use to open that file?
    For NI-FGEN specific error code (and generic IVI error codes), you can query the error message by calling niFgen_error_message function or niFgen Error Message.vi.
    Thanks,
    - Liusdi

  • DAQ doesn't show the input waveform in Labview as it is in oscilloscope.

    Just bought a PCI-6035E DAQ board + CB-68LP connector and testing it by inputing a square/triangluar/sine wave from a wave generator. In MAX, I can see the waveform as in the oscilloscope. However, when I try to see this input in Labview by using the Waveform Chart VI, the displayed waveform becomes an arbitrary one. Why is it happening and how can I correct it? I'm a novice in this field, so your advice would be highly appreciated.

    Seems that there's something missing in connecting to the daq card: in most cases this situation occurs when the signal reference is missing. When you input a signal in an oscilloscope, you wire both a signal and its reference (ground or similar), otherwise you see nothing than noise and disturbs.
    With a daq card things are a little more complicated 'cause you have a more flexible and more universal instrument than an oscilloscope; you must decide which type of connection to use: referenced- or not-referenced- single ended or differential connection, which channel(s) to use... and the configurations in MAX and in labview must match if you want to simplify your job.
    I suggest you to study carefully the card user manual when it describes the analog input w
    iring and all the consideration about different types of connection. My experience is that in most cases the differential input is better to reduce signal noise and reject disturbs, but you must use 2 channels per signal...
    You can also look at this tutorial about wiring an input signal:
    http://zone.ni.com/devzone/devzoneweb.nsf/opendoc?openagent&2E07CE2019CCB1D3862568650057930A&cat=99368070225FE073862567E6006C8DD7
    You're entering a (slightly) complicated but (very) interesting world. Good job!
    Roberto
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • What is the best way to detect peak to peak voltage for the following waveform ?

    I have two channels of waveform train ( ie W1 & W2 ), each of them is of frequency 64KHz.
    Each channel of waveform train consists of sinewaves of 64KHz of fixed amplitude, say 2 V pk to pk, running for 100 cycles, and then rest for 0.15 sec continue with a sinewave of 64KHz of another fixed amplitude, say 1 V pk to pk running for 100 cycles as well, and then rest for 0.15 sec. The above cycle considered as a complete waveform cycle.
    The above complete waveform cycle repeat for 10 cycles and rest for 1.3 sec and repeated itself.
    From the two simulated waveforms (ie W1 & W2), I need to detect and measure the peak to peak voltage of each of the 100 cycles sinewaves.
    What is th
    e best way to achieve that ?

    The waveform is free running as described above, ie sinewave running at approximate 64 KHz for about 100 cylce at fixed amplitude, say 2V ( actual number of cylce unknown, could slightly more or sightly less, depanding on the machine ) then rest for approximately 0.15sec, another sinewave running at approx. 64KHz at fixed amplitude, say 1.5V ( actual number of cylce unknown, could slightly more or sightly less, depanding on the machine ) running for approx 100 cycles continue...then rest for approx. 0.15 sec .....the above waveform repeated itself and free running .....I would like to capture or trigger each of the 100 cycles sinewave (rest time of 0.15 sec between each approx100 cycles of sinewave) to measure the peak to peak voltage and st
    ore them in array for analysis purpose....what is the best way to achieve that as I do not have time reference, I only know that the waveform is running at the pattern described above.
    Thanks for your help !

Maybe you are looking for