Signals vs waveforms

Is there anywhere some information which relates to the advantages and disadvantages of using Signals or Waveforms? Are they essentially the same? Waveforms seem not appropriate for non-uniform X/Y-Data (variable aquisition rate). Does the same hold true for Signals? What is the most multipurpose way to represent non-uniform X/Y-Data? It all seems quite confusing and there seems no place where this is really elaborated.
Thanks in advance for you help to a newbie!

As far as my experience goes (I prefere the raw data of arrays, as most data in my apps are of xy-type), ddt is related to Express VIs.
So when prototyping with Express VIs, the DDT is really nice in terms of programming speed. But once the coding starts, using 'traditional'/'real' VIs all these conversions from/to DDT start polluting the Diagram. A DDT might be of different data types (similar to variant data), and polymorphic VIs (and controls) adapt to these. From that comes the advantage during prototyping, as you still can easily change the actual data type.
Waveforms as said before contain timing information. They are ok if you're only interested in a signal vs. time data (evenly spaced time!). But when I wanted to do more than just wire them to a graph, things quickly messed up. Such things as Waveform subset never worked the way I expected them to work (mainly a thing with the timestamp and absolute vs. relative), so they wasted more time than donated for the coding.
One thing thats performed better with Waveforms than arrays is to display ditigtal data, as the nice digital graph won't work with boolean arrays.
Arrays are the most clear, strict data type of all these. That's why I would do all real coding with these only.
Short:
* DDT for prototyping
* Waveform if signal vs. time is all
* Arrays for everything
Holds true for LV 7.1, don't know about the newer versions.
And also, I guess some fresh trained programmers will outperform me with DDT or waveforms where they are useful.
Felix
www.aescusoft.de
My latest community nugget on producer/consumer design
My current blog: A journey through uml

Similar Messages

  • Modifying CAN Signal Output Waveform.vi

    I have been working with the CAN Signal Output Waveform.vi trying to get data from my analogue input moduel (NI 9205) onto a CAN bus via my NI 9862.
    I started off by working with the example VI; CAN Signal Output Waveform.vi (attached at the bottom of this post) and that worked fine, I could clearly see the data coming over the CAN bus into my analysis tool in real-time. To modify the vi I removed the Signal Generation components and added DAQmx Read blocks (again attached at the bottom of this post). When viewing the Waveform Chart window the changes I make to the input is reflected in the Waveform Chart window in real-time; however the data on the CAN bus is delayed by around 1 - 2 seconds. I am using the same XNET database in each setup so that isn't causing the issue.
    The NI modules are housed inside a cDAQ-9178.
    Thanks.
    Richard
    Attachments:
    CAN Signal Output Waveform._4vi.vi ‏26 KB
    2 channel analogue.vi ‏26 KB

    Sorry, I meant do you have any other VIs that operate after this VI?
    I think you answered my question though, you are just running this VI alone, right? If this is the only subVI that's being run then when it stops, the LabVIEW environment stops as well, which means your DAQmx tasks are no longer running. You need to make an application structure that allows for LabVIEW to continue running after this VI is called. Use this subVI in your initialization step and then have a user interface of some sort that continues operation. You can't just run this subVI and expect all of the DAQmx tasks and operations to continue if LabVIEW isn't running.

  • Simultaneous signals into waveform graph

    I am trying to use a VI to test multiple components' voltage inputs and outputs and I have developed the following VI.  The problem I am seeing is that when I operate two components, the DAQ assistant sends the two signals in series and my waveform graph doesn't plot the two signals simultaneously.  It appears that the graph flickers as it alternates between either of the signals.  Ideally I want to have about 4 components read by this VI, but I have not been satisfied with two yet.  Is there a better way to split these signals?  I have attached the VI, with my latest unsuccessful attempt to split the signal.  Ideally both readings would be going to the graph simultaneously, as different plots.
    Attachments:
    HE Control.vi ‏203 KB

    Thanks for the response Dennis. 
    The first problem that I originally wrote about was that the readback from the DAQmx in my VI "flickers" between the two signals, indicating to me that perhaps the signals needed to split and re-merged.  Using the test function of the DAQmx task manager, the data flow smoothly and simultaneously, but in my VI there will always be, for instance, a changing y-axis in a chart if I set the two voltage signals to different values.  Meanwhile, numeric readbacks seem simultaneous, but that is harder to determine.
    The second problem (tradition DAQ output and DAQmx input) stems from me reading a post when I first set up that my hardware does not support DAQmx.  It is a PXI-6704.  I checked this in the LabVIEW help files and this seems to have changed in later versions - although I have yet to make it work with only DAQmx.  Whether or not this is related to the first problem remains to be determined.  I have also posted a reply on the old post regarding incompatibility between the PXI6704 and the DAQmx to clarify what version they were using.
    Brad

  • Add signal to waveform

    Hello,
    i want to read signals from my ni- card and add another signal.
    see the attachement.
    in my chart there is only one value from my added signal.
    is it possible to interpolate values to have a signal like the sine?
    markus
    Attachments:
    Untitled 1.vi ‏66 KB

    Markus,
    The VI u have attached is not opening!
    Read your explanation
    In the attached VI, i am displaying two signals on a chart (one stacked, other overlay)
    Hope this gives you an idea,
    if not, re-attach ur vi so that we can answer your query better.
    Regards
    Dev
    Attachments:
    chart.vi ‏79 KB

  • XNET Resample fails, bug? (Signal Waveform)

    Hello,
    I'm using:
    XNET 1.7
    NI-DAQmx 9.7
    LabView 2011
    cDAQ-9178 and module 9862, also tried cDAQ-9171 and module 9862 with same results.
    I'm using the simple "CAN Signal Input Waveform.vi" to monitor some singnals from vehicle CAN bus (attached database).  When resampling at 100Hz the signal "Brake_pedal_SW" do not show any change (remains at 0 value) when the brake pedal is applied, instead "Brake_lights" signal changes normally, both signals shoud have the same value. Resampling at 1000Hz both signals remain to 0, and if I resample at 10Hz both signals seem to show the correct values. Similar behaviour happens with the other 2 channels.
    Due to this behaviour I decided to record some data using "CAN Signal Input XY.vi" and plot it, everithing works fine so I don't see a reason why Signal Waveform is returning wrong values other than it is not doing well the resample.
    As we have the original data from the "CAN Signal Input XY.vi" on the array control, how we can generate the same frame outputs, with the same timings to reproduce the problem?
    Can any one explain that behaviour or it's a bug from the resampling?
    Regards,
    Marc
    Attachments:
    Original Data Plot.vi ‏104 KB
    CAN Signal Input XY.vi ‏94 KB

    I'm sad and disappointed because one week after my post and support request to NI (Reference#9023-GRQ 747) no one answered or contacted me.
    After many tests I could reproduce the problem and the final conclusion is that "XNET Read (Signal Waveform).vi" doesn't work properly inside a timed loop. If you reproduce always the same data from one CAN port and read that data from another CAN port the read values are wrong and different every time. So data is not well resampled or whatever... is this a bug?
    To reproduce the problem:
    You need 2 NI 9862 modules, I used 2 different chassis, the cDAQ-9171 to reproduce/generate the CAN data and the cDAQ-9178 to read it.
    You need to connect them properly one to each other and power them.
    1. Open the vi attached call "CAN Signal Input Waveform_Timed.vi"
    2. Select your input interface, database "Database_red.xml" and the 4 signals: Brake_lights, Brake_pedal_SW, Gear and Retarder_position
    3. Run it to start the acquisition
    4. Open the vi attached call "CAN Signal Input Waveform_Timed.vi"
    5. Open the vi "Reproduce Output.vi"
    6. Select your output interface
    7. Run it to generate the otput
    8. When vi  "Reproduce Output.vi" finishes (arround 2 minutes) stop the vi  "CAN Signal Input Waveform_Timed.vi" using the stop button.
    Now you can compare the output graph with the one from my first post and see the diferences. Every time you reproduce the data the readins are diferent.
    Now if you repeat the proces but using the vi call "CAN Signal Input Waveform" no timed loop used, the readings seem to be good.
    Unfortunately I use timed loops in my application so it is a BIG problem !!!
    See below picture of a bad readings, Brake_lights and Brake_pedal_SW signals should be equal and are different.
    Hope someone can answer to this post, specially from NI to work around this.
    Regards,
    Marc.
    Attachments:
    XNET Bad Resample.zip ‏390 KB

  • Signal time delay waveforms

    Hi,
    I`m using Labview 2009. I wann simulate various signal time delays. Pls find the attachment.
    I tried with waveform generator and component tool eg: dt, t0 but `d not simulate my requirement.
    Also I tried searching in forum for similar VI but `d not get 4 my requirements.
    Pls help.
    Regards,
    Manoj
    Attachments:
    Waveforms.JPG ‏171 KB

    I`m simulating PTT kinda situation so I have used Digital Random Generator in my VI.
    Whenever PTT is pressed (active low), data enable shud be become high after a few delay say T1.
    Whenever PTT is pressed (active low), audio signal (sine waveform) shud pass through after a few delay say T2 & so on.
    Similarly for rest of the waveforms.
    But here `m not able to get a constant delay for all the transitions of 0s & 1s using my VIs inspite of using waveform components like t0, dt.
    I was stuck here. So only I didnt proceed with sine waveforms(audio signal).
    pls tel me how to go abt dis
    Regards,
    Manoj

  • How to Extract the Freq List, Cycles per Freq and Samples per Cycles of sweep waveform

    How to Extract the Freq List, Cycles per Freq and Samples per Cycles of sweep waveform
    I want to extract the freqency distribution, cycles per freqency, and samples per cylce of swept waveform, in order to output the same of swept waveform with I have acquired by NI DAQ card, tks!
    owen wan
    Attachments:
    Untitled 1.vi ‏2333 KB

    Look inside the palette called Signal Processing - Waveform measurements.  There are a lot of functions here that you can use to get the information you desire.  For instance, the Extract Tones function will output an array of clusters, with each cluster element giving the frequency, amplitude, and phase of the signal component.  Go through the entire arry to see each frequency component of the complex waveform.
    Also, in the Waveforms palette there is the Get Waveform Components function that will give you t0, dt, and Y components of the waveform.  1/dt should give you the sample rate.  See attached VI.
    - tbob
    Inventor of the WORM Global
    Attachments:
    WfmInfo.vi ‏4658 KB

  • How do I measure the period of one TTL signal and the delay until a second TTL signal?

    Hi,
    I have a PCI 6024E board, the SCB-68 terminal box and am running LabView 6.1.  If needed I could install 7.1.
    I have two Honeywell sensors (HOA7720) which each consist of an infrared transmitter and a infrared reciever.  When the beam is broken they output 5V, when the beam is open it outputs 0V.  These are sensing the presence of a hole in two discs passing thru the sensors.  
    So as disc 1 rotates the signal is 5V until the hole passes thru sensor 1, then it drops to 0V until the hole passes.  Then it jumps back to 5 V. 
    Disc 2 is rotating at exactly the same RPM as disc 1 because they are coupled with a spring loaded coupling.  There is a delay between the first hole passing thru sensor 1 and the second hole passing thru sensor 2.  The delay increases with torque. 
    Using the oscilliscope function and connecting Signal1 and Signal2 to AIn0 and AIn1, I have verified that the TTL signals are there.  So electrically everything is working.  I just need to know how to measure the period and delay.  I'm familiar with A/D, but not with counters/gates etc and I think that's what is required here. 
    The first measurement needed is RPM.   Somehow I need to measure the period of the TTL signal. 
    The second measurement needed is the delay between the 1st falling edge and the 2nd falling edge.  
    I don't think it's possible to use the millisecond timer for anything, because the accuracy wouldn't be good enough.  At 3600RPM the disc will spin 60 revs per second, or one every 17ms.  A resolution of 17 samples per revolution is not good enough.    
    Help please!

    It worked!
    I ended up figuring it out today.  It's really simple.  I went analog in to AIn14 and AIn15 which were free. Then the program does a multichannel scan of the signals (collects array of 2 waveforms), Signal 1 and Signal 2 at some scan rate.  I used 100,000 S/s for 10,000 samples. Then I split the array into two separate waveforms.  Then I did an edge detect on each one and it returns the position in the array where the falling edge occurs.  The difference is the delay (after correcting for the scan rate), unless Sig2 comes first in which case the delay is the period - (or +) the difference
    To find the period I used a subset of the Signal 1 waveform from the first falling edge on to the end of the waveform, then did the same edge detect except set the reset setting to true instead of false so it wouldn't detect the low signal which was now at the position 0 in the waveform.  So it would ignore the initial low value, wait for it to go high, then detect the falling edge position.
    Anyway, it works awesome, seems very accurate and gives very stable readings.  3600rpm no problem.  It detects changes of one or two degrees in angular position, with a range from ~145 degrees to ~280 degrees

  • Using waveform element to build arrays

    Hello, there,
    from this forum, I learned that i can use "get waveform components" to extra time and data from waveforms.  great.  but how do i build an array and output it to a file?  does it come as a strand of arrays as it is?  or do i need to loop it so the index will shift?
    if you can help and have an example...you'd be awesome!
    best,
    ck

    If you want to create an array of timestamps, one way to do it is like in the picture attached. Using Export Waveforms To Spreadsheet File will do this for you too, if I remember correctly. I don't use the function that much.
    You data is not appended randomly but whether it is correct or not, I can't say without having the actual VI to run and knowing exactly what you are trying to do.
    The function Write Characters to File is probably slowing things down. If you were to look inside the function, you would thatt every time it is called, the file is opened, written to, then closed. The file opening and closing takes some time as does the actual file writing. You can put the file open and close outside the loop so that each is only done once. The time it takes to do the file writing is determined by the amount of data and the type of data. You are converting to text and that requires more bytes to store each data point. You could, save the data as binary. This will result in a smaller file and a faster write. You other option is to defer the file write until after the while loop terminates. You could wire the signal data type to the edge of the while loop and enable auto-indexing. Then, the array of signals or waveform datatypes could be written all at once.
    Message Edited by Dennis Knutson on 04-17-2006 07:40 AM
    Message Edited by Dennis Knutson on 04-17-2006 07:40 AM
    Attachments:
    Build Time Array.JPG ‏8 KB

  • How to measure SNR of an EMG Signal?

    hi
    i want to measure SNR (Signal to Noise Ratio) of an EMG signal. I have attached a VI. Please have a look in the front panel. Among the three XY-graph, one is EMG, 2nd one is ECG and last one is EMG+ECG. I want to measure SNR for the signal EMG+ECG. Here ECG should be considered as noise. How to do so? I didn't find any convenient way for this. Please help me out.
    Thanks at advance-
    Taslim
    Attachments:
    SNR-1.vi ‏140 KB

    Taslim,
    Typically signal to noise ratio is defined on simple signals such as sine waves. Even if you have a "clean" version of the ECG signal, you cannot simply subtract or divide it because it will have a a slight phase shift and probably a small difference in the waveform due to the separation of the ECG electrodes from the EMG electrodes.
    The SINAD VI in the Signal Processing >> Waveform Measurements palette uses FFT methods to identify the fundamental frequency and to isolate that "signal" from other components in the total signal.  
    With a signal which looks much like noise (the EMG) you must define exactly what you mean by signal to noise ratio and how it could be measured.
    You might be able to take the RMS of the composite signal and compare that to the RMS of a clean ECG, but you would need to normalize the amplitudes in some way to make the result reproducible and meaningful.
    Lynn

  • Simulate Signal Express VI is sending two periods of the wave per loop iteration - how can I reduce this to one period?

    Hello,
    I've been trying to use the Signal Generator Express VI and DAQ Assistant in order to generate an output waveform, as seen in this NI tutorial video:
    http://www.ni.com/academic/students/learn-daq/generate/ (timestamp is at 2:07 for what I'm trying to do)
    For background, I'm trying to move a piston device using Labview. The sine waveform is intended to move the piston at a smooth speed. For every loop iteration, the Simulate Signal VI running into my DAQ Assistant moves the piston to its maximum displacement and back twice. I cannot determine why this is occuring.
    The settings in my "Configure Simulate Signal" tab are as follows:
    Frequency: 1Hz
    Phase: 90 deg
    Amplitude: 2
    Offset: -2
    I would like my piston to only reach its maximum displacement and return for every iteration of the loop. I've tried adjusting all of the settings within "Configure Simluate Signal" but I can only work in even numbers - sending the piston back and fourth two, four, or eight times, ect.

    The Simulate Signal VI is set for integer number of cycles and the default frequency set in the Cycles per Second control is 3.75 Hz. That results in the signal containing three complete cycles and the data array contains 8000 elements, not the nominla 10000 specified in the Express VI dialog.
    If you only want one cycle, you need to specify the signal so that you only get one. Either reduce the frequency or reduce the number of samples.
    As you have noticed Express VIs do one thing exceedingly well: They obscure what is going on inside.  I pulled your signal generation code out into a separate VI and then created a generator which will generate the same signal but allow you to select the number of cycles. It uses the Sine Waveform.vi from the Signal Processing  >> Waveform Generation palette.
    I also recommend that you change the structure of your program. The use of sequence structures is discouraged in LabVIEW  because they defeat dataflow are very inflexible when changes need to be made. A Producer/Consumer Design Pattern plus a state machine would probably be a good choice. This will allow separation of the daq acquisition from the saving to file so that the timing of one does not constrain the timing of the other.
    Setting the Analog Input Read to read multiple samples simultaneously and using the hardware timing of the data acquisiton device will get data faster and the timing will be precisely (compared to software timing) controlled by the hardware.
    Writing to the same file in parallel loops probably results in some strange behavior such as differing numbers of writes from acquired data compared to generated cycles. As the file grows, the writes may slow down due to the OS needing to fragment or reallocate space for the file.
    Lynn
    Attachments:
    Signal generator.vi ‏49 KB

  • Determine changes in a signal (peaks, valleys and 'flat' zones)

    Hello!
    I am using a software to predict the values of a parameter as a function of time. The result is output in an excel file with the time on first column and the parameter values on the second column of a worksheet. When I represent the parameter values versus time in an XY chart it looks similar to a signal or waveform with no noise.
    I would like to detect the peaks, the valleys and the 'flat' zones and place coursors where the actual 'flat' signal starts to increase or decrease. More precisely, or rather additionally, I would like to be able to isolate a peak or a plateau if the height is over a certain treshold limit.
    By 'flat' zone I understand a portion of the signal that does not increase or decrease more abruptly than a certain treshold limit.
    Is anybody aware of an example that may do something at least somewhat close to what I am describing? Any suggestions?
    I have the LabView full development system with no additional packages or toolkits.
    Thank you.

    Hi RPJ,
    Thanks for your post and I hope your well today. 
    I great VI in vi.lib I would recommend using is the Peak Detector:
    Its outputs include,
    Locations - the sample number
    Amplitudes - the value at the peak/valley
    2nd Derivatives - which you can use to test how abruptly/sharp the peaks/valleys are.
    Its inputs include,
    Theshold - they amplitude theshold
    Width - how many samples above the theshold the peak/valley should be to be classed
    Peak/Valley - type
    You could use the 1st Derivative to find locations of flat zones (or use the 2nd derivative ..2nd Derivatives gives measurements of the second derivative of
    the amplitude at each of the peaks or valleys found in the current block of
    data. 2nd Derivatives gives an approximate measure of the
    sharpness of each peak or valley. If you are detecting peaks, these values are
    all negative. If you are detecting valleys, the values are all positive.)
    I hope this helps, please let me know what you think,
    Kind Regards
    James Hillman
    Applications Engineer 2008 to 2009 National Instruments UK & Ireland
    Loughborough University UK - 2006 to 2011
    Remember Kudos those who help!

  • Pulse measurement for 500hhz signal

    I am using USB 6251 daq card. I need to measure the number of pulses arrived with in some start time and end time. the saignal can vary upto 500k hz.Also i need the pulse arrival time for all pulses.
    if i configure  task for pulse width mesaurement in daqmx can i be able to measure the pulse count and pulse arrival time (upto 500khz)
    Solved!
    Go to Solution.

    I suppose what you are reffering to is the timestamp. when you use the low level VI's of DAQmx you can obtain the signals as waveform data type, which has the initial sample time t0, the sampling intervals dt as well the sample values array Y. You can do the rest by obtaining each of the parameters in waveform pallette.
    Hope this helps!
    Shreyas Hebbare
    Shreyas Technologies
    India

  • Waveform generator question..

    I've attached a vi to start with a vibration profile. This is something new to me so "please" bare with me..
    The idea is to get the inverse fft of the profile and input it to a voltage wfm generator (Hardware Input & Output - DAQmx - Voltage - <one of the wfm generator examples>). In the attached vi, can I just wire the psd output after the for loop to inverse fft vi? and how can I go from there to connect its signal to waveform generator input?
    Thanks in advance..
    KowdTek
    LabVIEW 2009
    One Step At A Time, Maybe Two...
    Attachments:
    Trial.vi ‏15 KB

    KowdTek,
    To do the Inverse FFT, you can simply use the attached VI.  I have also used a Build Waveform function to give you your waveform.  This particular waveform starts at 0 (default), and has a time step of 0.1 seconds.  To output this, use one of the examples, but replace the waveform generation subVI with your waveform.  You will probably also need to change the DAQmx Write VI to Analog » Single Channel » Multiple Samples » Waveform.
    Hope this gets you started! 
    Drew T.
    NIC AE Specialist
    Attachments:
    Trial.vi ‏20 KB

  • FM down converter in LabView. How?

    Hello NI Developers!
    I have Frequency Modulated (FM) Signal, with carrier frequency 1000Hz and message signal frequency 20Hz. I want to downconvert FM signal frequency to 200Hz. I searched through the forum and google and didn't find anything where would be at least algorithms or Math equations. How to downconvert FM signal?
    The aim is down convert signal to low frequencies where it is easier to filter from noise.
    Thank you in advance! 
    Solved!
    Go to Solution.

    Hello,
    You could try using the Scale Delta t VI (Functions >> Programming >> Waveform). As the help says, "Multiplies the delta t component of the waveform by the specified scale
    factor. Generally, this lengthens or shortens the sample rate of the
    waveform." 
    You could also take a look at the  Resample Waveforms (continuous) VI (Functions >> Signal Processing >> Waveform Conditioning. 
    I hope this helps.
    Vivek Nath
    National Instruments
    Applications Engineer
    Machine Vision

Maybe you are looking for

  • Can I add a second hard drive to time capsule for backup?

    When I plug it in I can see it in finder but not in Time Machine settings when it asks me to select drive? Is it possible to do this to back up one of my computers as Time Capsule's hard drive is full from backing up other machines.

  • Over 1 Gig Of Ram

    I have the MSI 6704, Pentium 4 2.53, Currently 1 Gig of RAM (2 512). I went to add one more chip of 512 but when I did the bios and windows said I only had 512 when I had 3 chips of it in there. Is there anything I have to do to get the board to see

  • MOBI with BOE and mobile server on different servers

    Hi Experts, We need to set up a BO MOBI with BOE and Mobile server on two separate servers. In such a configuration, how does the two servers communicate? What should be the VAS and VMS server configurations? especially the external hostnames in the

  • SpryMenuBar IE Problem - Menu closes when the cursor is in between the text

    http://www.blassdesign.com/temp/test.html In firefox, it works like it is supposed to. In IE, however, (as always) it messes it up. When you put your cursor in between the words, the menu closes. While this isn't catastrophic, the company that I am d

  • IPhone 5s will not activate after erasing data

    I Reset my iPhone 5s and now it will not reactivate error message reads activation server is temporarily unavailable been been this way for several hours