Timestamp problem DAQmx waveform
I have a program that reads analog signals multiple DAQmx using a PFI trigger from a DIO card to start the acquisition. It uses a registry to offset and Boolean logic to stop the DAQmx read the loop when the trigger is low. I traced the result to a curve of waveform. I have a 1000 S/s scanning speed. I traced the data to a graph of waveform and eye on the individual data points and it is perfect. Exactly 1 S/s. The problem: when I increase my 5000 S/s scan rate... I see exactly 1 S/s, but the displayed duration of my test data is 5 x more time. That tells me that my graph of the waveform is plotted in fact each data point individual 1ms apart. So basically, there a 1ms all dt in the waveform, and it does not change. How can I get the real dt of the analysis of data here instead of this arbitrary constant? When I look at a text of my waveform data file, I see the timestamp below where I'm expecting something ending like that... 0,0010, 0,0017, 0.0025, etc.. Any help would be appreciated. I'll post the VI if necessary, but other than the trigger power, is a fairly straightforward HERE DAQms read. Thank you in advance.
The time of LV start date is January 1, 1904 midnight GMT. Since your shows up to 6 hours before that, he must be GMT - 6. My horodateurs base are 19:00 31/12/1903, which is GMT - 5. Eastern time zone.
Are you any error coming out after your Subvi waveforms?
You empty an array of waveform data to add. The default waveform has a T0 zero and a detachment of the 1. In the Sub - VI of waveform append inside your Subvi if dt' it does not raise an error, (in fact a caveat being the 1802 error code is positive.). But she proceeds to add data and use the dt and T0 the first waveform which is initially as the default data in the initial iteration. I think that if you start with an array of wavefrom that has the number of channels of the need, an empty array of Y, but a correct dt. Then the dt should be correct. That, or you can put in your Subvi a case structure where the first call, or if the incoming waveform is empty, it is not add and uses only the 2nd waveform.
You have also a little a Rube Goldberg enters your Subvi. It could be simplified as shown in the picture as an attachment.
Tags: NI Software
I have a difficulty with the vi LabVIEW "waveform of the generation" I wired all the entries on the vi: dt, t0 and there, I have a correct timestamp, but when he connects, my wave repeat myself it is 01/01/1904?
I tried my timestamp on the example vi: create the sample waveform, and here it works? I don't understand? What I am doing wrong?
In the room attached my vi
I don't see your problem. If I enter a time stamp valid in your header BDF, then run your code, I get the same timestamp in the waveform. More specifically, where is your problem?
I run a simple application to read the data of two pressure sensors output signals 0 - 5V to a NI9215 module, and one connected to the 9237 module load cell. They are housed in the 9172 chassis.
I am new to DAQ and labview, and I find it difficult to reconcile the sampling frequency that I put in the sample clock and the apparent rate data (according to the timestamps in the waveform that I output to a text file). For example, if I ask 100 Hz rate (and 10 samples to read), the data appear to sample at 1612,9 Hz. If I ask the sampling frequency of 1000 Hz, outgoing data is 1612,9 Hz to 20 kHz, the data came out to 25 kHz.
Can someone tell me to trust the timestamps given in the waveform that is written in the text file, and if there is a way to check this? If this timestamp is correct, how can I force the application of sample data at the requested speed?
As a secondary issue, in my attached VI, you can see that I have an attached to an array of construction shift register. I can't understand how to initialize the array outside of the loop as it clears the table before the next time I run the program. Any advice?
My VI is attached.
Hi Marc, thanks for the quick response and the right explanation. It's all much more clear now.
Have a great weekend,
I tried to convert the time string timestamp, but I failed. What is wrong with it? I need a timestamp to create waveforms.
I use DAQmx Write (Bool digital 1Line 1 point) to send a Boolean sample to a digital output channel. I want to be able to tell if the signal is strong or weak, so I use DAQmx Read (Bool digital 1Line 1 point) to take up the task as input and then plug a light at the end of data. The problem is the light lights up when I pass False to the VI DAQmx writing and does not shine when I pass the value true to the writing DAQmx VI. Shouldn't the DAQMx Read VI be output Boolean even as input to the VI DAQmx writing? In others, should I not get a true reading VI DAQmx if I pass a real in the DAQmx writing VI and even for a case of false?
See code attached for simplified example of what I'm trying to do.
Which would make sense if the channel is configured as an open collector output. This would mean that the line is retrieved when you write a REAL low and left floating when you write a FAKE.
Who what to compile the Mac DAQmx Base examples?
I get a lot of errors. See annex.
It is a known issue with Mac OSX and DAQmx Base. It happens when OS x starts in the 64-bit kernel instead of the 32-bit kernel which requires DAQmx Base. Here is a workaround in the DAQmx Base Help file:
"Xcode 3.2 or later by default to 64-bit (x86_64) architecture at the call of the GCC on 32-bit OSX 10.6 If the 64-bit system hardware." This will result in errors during compilation. To resolve these errors, force gcc to use the 32-bit (i386) architecture in OSX for 32-bit installations by adding "-arch i386' for flags in your Makefile:"
"Flags =-O2-arch i386 '.
There is also an article on Mac support site that shows how to force OS x to start the 32-bit kernel on a basis of by-boot:
Finally, there is a forum OR discussion about this problem and how people were able to solve it. I link you to it because it's a good resource:
I hope this helps, let us know if you still have problems!
I'm working on a graph of waveform for a project, I want to use a node to control the time of the chart base. It works, but switching during the chart will display more divisions that I designed for a very short period of time, which is annoying. I have attached the vi and I'm appreciated if someone could help me on this problem.
Just found the solution, it seems that I sequence the function of the node of the property or the graph will be confused. Your suggestions has informed this solution. Thank you!
I'm fairly new to LabView and would be happy to use some help and advice from more experienced people. Basically I'm doing a vi that gives a square pulse of given width each time the trigger is activated. The pulse width is the setting that I can change one trig to another or keep the same whereby whenever I run the trig as the pulse of the same width is produced.
Running through the examples that I found on this forum and support OR that I managed to do a vi that almost work.
As you can see on the photo in order to change the pulse width I use 'Pulse Width (ms)"local variable associated with while loop that checks if"Pulse Width (ms)"has been changed and if so, after the trig, gives the impulse to the new width. This part of the programme of work.
He who does not work is when no change in pulse width has been filed. When I start a vi I can trig a pulse once but can't re-trig, unless I have change the pulse width (can I change to a new value, and then replace the old value and it will work, but it is not convenient).
For some reason my task is not retiggerable when is the wrong case (it is i.e. no change in "Pulse width (ms)"), even if the Start.Retriggerable parameter in the property node is set to true. Again, this works well in the real deal, when there is change of variable pulse width (ms).
Could please point to what mistake I make and what to do to make the fake retriggereable case as well.
Thanks in advance!
(PS: I use USB-6211 card.)
Thank you for your reply Owen.
I found the mistake that I did. The variable "Pulse separation" that feeds on "Pulsed CO" DAQmx event has been set to 50 seconds (I not a not divide by 1000 to make in miliseconds units). This means that even if I retrig for a pulse again immediately after the first, the new show would ' t Pulse before 50 seconds (and I've never waited as long as my pulse are more in the range of milliseconds).
Now looks like a stupid mistake (and probably is) but I thought that this variable was significant only in the case of the event of multiple pulses (such as the implementation of "Timing: implicit" DAQmx event). In fact, even if the "number of pulses" is set to 1 (which was my case), it seems that although the envelopes works we see a pulse before "Pulse separation" elapsed time and awaits me as if work Eid ' t envelopes...
In any case, thank you for your time Owen!
See you soon!
Installed Labview 2012 yesterday, daqmx was already installed (9,6) since I used it with Measurement Studio 2012.
LabVIEW does not recognize DAQmx.
I'm using Labview examples and get daq mx errors.
You must install DAQmx after LabVIEW. Since LabVIEW did not exist when you have done the installation DAQmx, LabVIEW required records would obviously not created.
photo below explains the problem.
Thanks in advance for the solutions to this problem.
Recently, I changed a series of Structures of cases in a more efficient Structure of the event. However, I'm no longer able to acquire the 4 analog inputs (OR-USB6251) terminals voltage signals with DAQmx Read and store them in a TDMS files. The code responsible for this task 8 ('start running Scan') is the event of the attached code structure.
At first I thought I was calculating the 'timeout' or 'number of samples per ch' incorrectly. However, even when I put them to contant, great values DAQmx Read doesn't seem to work and as soon as the program TDMS files Viewer is empty. One thing I didn't change was moving TDMS close in the Structure of the event when he was outside of the big loop previously. Could this be doing me wrong?
Of course you have a lot of code here. When you close the TDMS reference in your loop, the next iteration of the loop will be an invalid reference and so nothing will be written to file. Be sure to always close your references outside of your loops.
But I want to only have the date value in the format yyyy/mm/dd so as I can filter based on the values in the date variables.
If I use void string I had to throw contributions tank to which I am unable to compare it with the Date variables due to incompatibility of data type.
You have the ability on this thread as useful and Correct, just click on that.
I try to write data to a table of data from acquisition of DAQmx multi sample, but I found where I have used get date / time in my time function loop past a PDM write in series with another transmitted waveform data, I have more than the timestamps data points, I'm getting a timestamp then the list of the sampled points.
I'm looking for using the timestamp of the waveform data, but I don't know how to do this job. Attached, is an example where I tried it, but just managed to get the incompatible data types.
Could someone please offer some tips on how to get the following structure in my file:
timestamp of the sample. channel 1 sample | example of channel 2. .... | example of channel N
I'm not quite clear about your use case in the attached VI. However, you must provide input of channel names at 2 knots 'TDMS write' since they have different types of raw data.
I use DAQmx and I use playback function with the polymorphic form of wave 1 d instance. I read just 10 channels of analog voltage data, but I'm using waveform is because I need timestamp for each sample data. I also need the multiple samples, this is why I do not use unique example of polymorhpic.
With ten strings, I extract the data of Y and then concatenate all the values in a 2D array where each channel column represents a data channel. I am trying to extract the timestamp of the waveform to aid (get wave component t0), however, how do I get the timestamp in a form that can be concatenated with other data 1 d? When I convert it to double just gives me an element and not a data table. If theres only a timestamp for each 100 as data lines of tension.
Please see below the code.
What is the point of converting a 2D dbl? You can use export waveforms for spreadsheet file and the math will work with waveforms. And please, use a unique Index table function. It is expandable by simply dragging the lower part down.
I have collected a form of wave and saved using the file LVM format. I would read the waveform in labview and view with its timestamp and assigned name. The only way that I could read the data in Labview was to convert it to an array of number. I thought that if you could write a waveform and save all data, you should be able to read it back quite easily. I have included my LVM file and two simple programs. The program I use is much larger, but these two programs are representative of what I'm trying to accomplish.
I am pleased that you have something that can work even if it is not ideal.
I close this service request, but I thought that I'll let you know that
because of your issues, I have revised article in the Knowledge Base on
timestamps and verified for accuracy and thought you should know.
What is the precision of the timestamp of the waveform returned by my NOR-DAQmx
Technical sales engineer
Maybe you are looking for
I regularly open Activity Monitor for the memory tab to see which application causes my computer to slow down. Today, I happened to look down the list and see the process name 'http://www.istudentnurse.com,...» "that made me wary because I don't curr
Today I installed the version of Vista Ultimate with SP1 (PTM51E - Bios 3.60) Since installing I can not any version of the nvidia drivers graphics card to install. "Driver Installation Module stopped working and was closed" is the error that happens
Cannot open Windows Defender When I try to put in operation and open Windows Defender I get one of the following errors: 0x800705b4, 0x800106ba, 0x800710dd. What is the solution?
How to download adobe on windows xp sound come with error messages.
I installed ESXi 6 on a HP ProLiant DL380p Gen8 and got an operational virtual host. But it seems that no matter what I do, one host can reach the door at one point. All other grandis hosts can ping other virtual hosts and ESXi hardware, but can not