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
Similar Messages
-
Time delay between 2 waveforms
Hi,
Please bear with me while I explain what I’m trying to do :-) Basically, in the attached LabView file (“flow vis + trigger-m.vi”), I am generating 2 signals: a sinusoidal waveform (used to drive an actuator) and a square waveform (used as a TTL signal to trigger image capture on a CCD camera). Currently when I run the program using LabView 7, both signals are started simultaneously. I would like to introduce a time delay that can be manually specified in the VI, such that when the program is started (i.e. at time t0), the sinusoidal waveform also starts (i.e. at time t0) before the square waveform (i.e. at time t0 + delay time). In a practical sense, this means allowing the actuator to run for several seconds before capturing any images.
It sounds like it should be quite straightforward to do, but I’m not so sure how to progress. I have begun to modify the original VI (“flow vis + trigger-m_2.vi”, as attached), but would be much appreciative of any help or suggestions on how I can complete the VI to meet the above requirement.
Many thanks,
Mark
Attachments:
flow vis + trigger-m.vi 939 KB
flow vis + trigger-m_2.vi 895 KBPlease refer this URL for an example VI I made to solve the problem:
http://forums.ni.com/ni/board/message?board.id=170&message.id=227603
Way S.
NI-UK Applications Engineer -
Creating a Time Delay Between 2 Waveforms
Hi,
Please bear with me while I explain what I’m trying to do :-) Basically, in the attached LabView file (“flow vis + trigger-m.vi”), I am generating 2 signals: a sinusoidal waveform (used to drive an actuator) and a square waveform (used as a TTL signal to trigger image capture on a CCD camera). Currently when I run the program using LabView 7, both signals are started simultaneously. I would like to introduce a time delay that can be manually specified in the VI, such that when the program is started (i.e. at time t0), the sinusoidal waveform also starts (i.e. at time t0) before the square waveform (i.e. at time t0 + delay time). In a practical sense, this means allowing the actuator to run for several seconds before capturing any images.
It sounds like it should be quite straightforward to do, but I’m not so sure how to progress. I have begun to modify the original VI (“flow vis + trigger-m_2.vi”, as attached), but would be much appreciative of any help or suggestions on how I can complete the VI to meet the above requirement.
Many thanks,
Mark
Attachments:
flow vis + trigger-m.vi 939 KB
flow vis + trigger-m_2.vi 895 KBHi Mark,
I forgot that all analog waveforms generated needed to have the same number of samples in a single task. By introducing a delay into your square wave, I effectively added samples that waveform. So the same number of samples added to the square wave has to be added to your sine wave. I added code that extends the number of samples of your sine wave (# delay + square wave samples). Let me know if this works for you.
Regards
Way S.
NI UK Applications Engineer
Attachments:
flow vis + trigger-m70.vi 872 KB -
Signal Extraction & Making time delayed copy
I am considering there are three signals in my environment but I am interested in getting the signal having frequency 4 KHz.I am adding a Band Pass filter to extract that particular tone and making a delayed copy.Unfortunately I am not getting the output.Check my VI.Suppose if I have unknown signals in the environment and and I want to find out how many of them are are there and what are their frequencies, can we find ?can we visualize independently?
Attachments:
Signal Extraction and Time delayed signal.vi 144 KBHello,
I apologize for the confusion of what you were looking for. I was able to offset the X-Axis of one set of data using a XY Graph instead of just a Waveform graph. See the attached VI.
Regards,
M. Whitaker
ni.com/support
Attachments:
Offset the X-Axis for One Set of Data.vi 144 KB -
Generate two sine waves with time delay
I have not been using the waveform generation tools so I hope this is an easy one for somebody. I want to create two sine waves at different frequencies say F1 = 1.00 KHz and a second at F2 = 1.20 KHz. I know that to combine them into one I can just add them. Them problem I have is that I want F1 to start first then a few millisecond later have F2 sum into F1.
T0 = F1
T0 + Delay = F1 + F2
Is there a VI capable of a time delay? Tried to sum individual signals together but seems more difficult because of the waveform cluster format.
Any help is appreciated,
Matt
Matthew Fitzsimons
Certified LabVIEW Architect
LabVIEW 6.1 ... 2013, LVOOP, GOOP, TestStand, DAQ, and VisonWould the attached VI work for you?
Attachments:
Add Delayed Sinewave.vi 54 KB -
Fluorescence Time-delay Measurement using an Oscilloscope
Currently, I'm examining fluorescence through scanning through wavelengths on a monochrometer and averaging the signal on the oscilloscope, storing it all in an array and graphing in the end.
My goal is to time delay the value attributed to each wavelength in order to weed out rapidly decaying noise in my samples. The light source will be chopped, and a trigger line feeds into the oscilloscope.
Can this be done either:
through adjusting instrumental settings (I'm using a Tektronix 220, interfacing through GPIB)
or through manipulation of a triggered output waveform using integration with specified boundaries relative to the trigger time?Hello Matt G:
I'm not sure if your instrument can handle this. Have you looked through the manual or tried contacting Tektronix about it?
Regards,
Roland A.
Applications Engineer
National Instruments
Check out VI Roadshow -
Crosscorrelation time delay question
Hi!
I have a project, where i work with 2 microphones, and i want to calculate the time delay between the two signals. I had made a simple method for it, but it's a bit bad...
So now i try it with crosscorrelation, but i can't get a correct time-format...i had made the correlation correct, i have just some problem with the time format...
If i convert the time format into string with %<digit>, then i always becom 0...
Here is my vi, can somebody help me?
Attachments:
CrossCorrforum.vi 134 KBI took a peek- your problem is with the format string on the timestamp to string functions. Your format strings are "%5u" and "%S" the %5u returns a string that represents 5 digits of fractional seconds, the %S converts only the whole number of seconds
FROM the help-
for format timestamp to string
..." Time
format codes include the following:
%a (abbreviated
weekday name),
%b (abbreviated month name),
%c (locale-specific date/time),
%d (day of month),
%H (hour,
24-hour clock),
%I (hour, 12-hour clock),
%m (month number),
%M
(minute),
%p (a.m./p.m. flag),
%S (second), %x
(locale-specific date),
%X (locale-specific time),
%y (year within century),
%Y (year including century),
%<digit>u (fractional seconds with <digit> precision).
So, How do you want to display the time information? If you want 1 January 1900 12:00:00.000AM to display as "1/1/1900 12:00:00.0am" your format string should be "%d/%m/%Y\s%I:%M:%S%1u\s%p" (ESCAPE CODES DISPLAYED)
Jeff -
I have a zes lmg500 that I use. It has the option of continues measuring data, with a user control cycle loop (still using a while loop but the delay is coming from the instrument). The problem is that the loop time is not constant. Can I use a very short time (100ms) as the instrument cycle time but use a longer time delay in the while loop that collect the data?
I know many instrument offer the same abilities, so the question is relevant to all of them.
Thanks for any help
Solved!
Go to Solution.Does that measurement VI have built-in wait functionality and a timeout?
If not, then you are simply polling the VI at 1 kHz, but I suspect that this is not the case or your Waveform Chart probably wouldn't look as you expect (getting 0's put in everytime measurement data is not available).
I expect that if you have the instrument set up to send data at a fixed time interval (i.e. 100 ms), all the data that it is sending you will end up residing in your serial buffer (or the instrument driver will have taken it out and put it in another internal buffer), so if you come back to read it 1 sec later, then you will have 10 data points to go through. Whether you can read them all at once with the read VI or have to call it a whole bunch of times until empty I can't say.
What is your objective? -
I need to continuously acquire data from daqmx card, write into a file and at the same time corelate (in terms of time) the data with signals from other instruments. The current problem is that there is time delay during read and write data into buffer,thus causing misalignment of the data from multiple instruments. Is there a way to solve the delay? or Is there a way to mark the time of the data acquisition in the buffer? If I know the starting time (e.g. 0) of data acquisition and sampling rate (e.g. 1kHz), can I simply add 1ms to each data sample in the buffer? The current code is shown below.
void DataCollectionWin::ConnectDAQ()
DAQmxErrChk(DAQmxCreateTask ("", &taskHandle));
DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0,Dev1/ai1,Dev1/ai2,Dev1/ai3,Dev1/ai4,Dev1/ai5,Dev1/ai16,Dev1/ai17,Dev1/ai18,Dev1/ai19,Dev1/ai20,Dev1/ai21,Dev1/ai6,Dev1/ai7,Dev1/ai22","",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));
DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandle,"",1000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,60000));
DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,50,0,EveryNCallback,NULL));// Every 50 samples the EveryNSamplesEvent will be trigured, to reduce time delay.
DAQmxErrChk (DAQmxRegisterDoneEvent(taskHandle,0,DoneCallback,NULL));
DAQmxErrChk (DAQmxStartTask(taskHandle));
int32 CVICALLBACK EveryNCallback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples, void *callbackData)
DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,50,10.0,DAQmx_Val_GroupByScanNumber,data,50*15,&read,NULL));
//memcpy(l_data,data,6000);
SetEvent(hEvent);
l_usstatus_e[0]=g_usstatus[0];// signals from other instruments that need to be corelated with the data from daq cards.
l_optstatus_e[0]=g_optstatus[0];
if( read>0 ) // write data into file
//indicator=1;
for (i=0;i<read;i++)
{ //fprintf(datafile,"%d\t",i);
fprintf(datafile,"%c\t",l_usstatus_s[0]);
fprintf(datafile,"%c\t",l_usstatus_e[0]);
fprintf(datafile,"%c\t",l_optstatus_s[0]);
fprintf(datafile,"%c\t",l_optstatus_e[0]);
fprintf(datafile,"%.2f\t",data[15*i]);
// sprintf( pszTemp, "%f", data[6*i]);
// pListCtrl->SetItemText(0, 2, pszTemp);
//pWnd->m_trackinglist.SetItemText(0, 2, pszTemp);
fprintf(datafile,"%.2f\t",data[15*i+1]);
fprintf(datafile,"%.2f\t",data[15*i+2]);Hello kgy,
It is a bit of a judgment call. You should just choose the board that you think has the most to do with your issue. For example, this issue was much more focused on setting up your data acquisition task than the Measurement Studio environment/tools, so the MultifunctionDAQ board would have been the best place for it. As for moving your post to another board, I do not believe that is possible.
Regards,
Dan King -
I am currently programming in DasyLab using previously collected data. I continually get an error when using the time delay module that I am not sure what to do about. The Time Delay module works fine if I use a delay defined in units of blocks, but if I change to delaying the signal by units of samples or seconds, I get an error that reads "The data at one input of the module are of the wrong type." I have not changed the input, only the delay units (from blocks to samples or seconds). Why do I get this error? I have even started over with a blank page, using only my input data and a time delay, to make sure it wasn't anything else on my worksheet that was creating this error. Please advise.
Thank you.Hello,
i have the same probleme with a 3gs and my brother with a 3g.
and i don't find any solution...
the time is not correct only for the receveid sms, for the sms that i send is correct instead.
with the other telephones the time is correct. I have the problem only with the iphone
Message was edited by: Buon-Luca
Message was edited by: Buon-Luca -
Estimate time delay during execution
Hi, everyone.
Currently, I have a VISA program for reading signals from a GPS receiver. From the program, I want to measure time delay of execution, i.e. time delay between start and end as shown in the jpg. Are there any vi in LabView facilitating this purpose? Thanks a lot.
Regards,
yukfai88
Solved!
Go to Solution.
Attachments:
VISA.vi 12 KB
Estimate delay.jpg 54 KBSee attached VI and below screenshot which shows how to use it in your code. Just one solution...
Attachments:
Elapsed time LV80.vi 27 KB -
Impulse trigger to create a time delay of x ms to perform an action for y ms
Hello all,
Here is what i'm trying to do:
I'm measuring an audio signal when a sound level is above a certain value Y (controllable) i need to wait a few ms (around 900ms) to get pass the main sound compound. Yhen i need to filter the next few ms (around 500ms) of data and do a FFT of that part of the filtered data only once until Y is reached again.
I can do all this with saved data but i'm struggling to do it as it occurs without saving the data.
I have everything in place i just need to know in general how to use an impulse trigger to a create time delay of x ms to perform an action for y ms.
Do you have any ideas how i can achieve this?
Thank you in advance,
Frederic.Hi Frederic,
I've looked at your program and I have a few questions. What is the purpose of the Two While Loops that simply have a Case Structure that nothing in the false case and a Wait (ms) function in the true case? As it stands if these loops go into the false case then there is nothing to slow down the execution so the will try to run as fast as possible and not give the processor any time for other tasks which may explain why your computer goes so slow whilst this is running. This also applies to the While Loop where the false case says "If its not time to write the measurement file, do nothing."
I believe that what you want to look at is a Producer/Consumer(data) Pattern, where you have one loop that generates your data (producer), in this case reads in the sound data, and then a processing loop (consumer) that will do the Fat's and log data to a file etc.
More information about this can be found here: http://zone.ni.com/devzone/cda/tut/p/id/3023
Hopefully this helps you a bit. Let me know any questions you have.
James W
Controls Systems Engineer
STFC -
How to measure time delayed measurement
Hi All:
I am using TDS3064 scope to measure time delay betwwen two channels (using IVI driver
complience package 2.2 for scope IVI driver). I look through drivers, but not able to find
delayed measurement function. Is there any alternate way to measure time delay betwwen two
channels. If possible please provide me example. I am new to LV programming.
Thanks
DBhagatYou have to understand something about IVI class drivers. To support portability, those functions that are common to a class are what you see in the driver. Some scopes might have the ability to measure time delay between trigger points on different waveforms but many don't. If there is such a function supported by your scope, then you can make a call to the instrument specific driver or a VISA Write/Read. Of course, you then loose the portability feature of IVI which, imho, is about the only reason to use IVI class drivers. What I would recomend is that you do a capture of both traces and then do an analysis of the raw data in LabVIEW. One way to do this is with Trigger Detection for 1 Channel (Analyze>Waveform Monitoring palette). Wire each channels data to the function and obtain the time for each trigger event. The function will return the time for each event that you can use to calculate the difference.
-
Hi,
I have attached my simulation loop.In the model attached i hav eone main pump with constant rpm which drives the 5 smaller pumps and fills the tank at the same time.As soon as the tanks reach their 90% level,the valves of the five pumps close(SP1,SP2,SP3,Sp4,Sp5).After that the recirculating pumps opens for 5 secs of the first tank.As soon as the recirculation finishes,the drain valve(SV1) for tank 1 open and the volume goes to interim storage.This happens for all the remaining tanks.
My simulation works the first time,but when the second time the loop starts,it skips the recirculation pump even though i gave a time delay for 5 secs.Plz help ..I have attached the simulation.
Thanks,
Rami
Attachments:
Spatial Logic_2_Final.vi 223 KBRami,
I suspect that you have a race condition. The widespread use of local variables frequently leads to race conditions. Your subVI (Spatial Logic Sub_2.vi was not included) so I cannot run the VI. You have no way of knowing whether the subVI or the inner case structure will execute first, because there is no data dependency between them.
I think a shift register or a few and some dataflow thinking would allow you to eliminate the inner case structure, the local variables, and, probably, most of your problems.
Some of the SPi are indicators and some are controls. How are they used?
The last case of the inner loop retursn to Case 1. Would case 0 be better?
As for the second time through issue, it may be related to the Elapsed time function Auto Reset. From the help file: "Resets the start time to the value in Present (s) when the Express VI reaches the Time Target (s)." If more than 5 seconds elapses between the first time you use this and the next, it will exit immediately on the subsequent calls.
Lynn -
Hallo,
I'm working on an academic control project, where I need to read (ni9215) 3 or 4 channels very fast,
process the data and write them back (ni 9263) via usb-chassis 9172. To check the accuracy and time
delays I tried a loop from AO to AI (only one channel) and generated a step, saved the timestamp of the
step and checked, when the step was readed in the written measurement log. I doesn't see andy difference
in using two VI's to read and to write or combining them in one VI, so I added images of two VI's.
While comparing the timestamps of the sampled step and the log file, i noticed time delays of about 200ms
from output to input. So my VI's are times too slow for my control purpose... anybody knows, what to try?
In this VI I read data with 500hz, 10 samples to read and 10 samples/channel. The read timeout is set to
default, but if I set it to zero, strange (negative) times are written to the measurement log... I tried
to change from N samples acquisition to single sample acq, but it didn't speed up the VI.
Thanks for answering!Hi IoInNBlack,
first of all thank you for posting in this forum.
I think you should synchronize your input/output operation, otherwise I don´t understand how you can take the timestamps and consider them
reliable for your evaluation. I suggest you to modify the LV example here attached with timestamps and file I/O to build up your test and see what results you get then. Consider also that 20 ms are necessary for the acquisition of the samples and then you have add the time necessary to manage the file I/O.
Best regards.
Andrea P.
Message Edited by pxchellone on 07-06-2009 09:23 AM
Attachments:
Multi-Function-Synch AI-AO.vi 35 KB
Maybe you are looking for
-
Need help! White screen and hard drive
I have a MacBook Pro A1211 I got off Craigslist. It needed a new logic board and hard drive so I got both. My problem is I just found out the hard drive has windows on it and when I power on the MBP all I get is a white screen. My question is is the
-
Many to Many PL/SQL - how to nest a linking table?
I have two objects that are linked with a many-to-many relations. These two objects have to be nested inside a third object. How should I do ? I created the type and the table for A, I did the same for B and I finally created the linking table for A
-
I have severe, multiple disabilities whish seriously limit my typing time! Multiple Muscular/Skeletal problems + affters affects of spinal compression in my neck. Yhis affects & hurts my wole body! Also born with Arthrogyposis Multiple (look it up!),
-
VPN - Unable to load Citrix page via Airport (but works w/other router)
I had successfully used my PowerBook to connect to my company's system via VPN and Citrix for 3 years using an Airport Extreme connected to a DSL modem. In the last 6-8 weeks or so I have been able to establish a VPN connection, but my browser is nev
-
I have a monthly subscription to Nokia Music+ but my purchase receipts are going to an email address that is no longer associated with my Nokia account. This old address appears nowhere in my account details and the new email address is firmly checke