Arrive time of start trigger
Dear all NI high speed digitizer experts:
I am asking how can I read the timestamp of the start trigger? In my measurement I configure my digitizer NI5154 to start a multirecord acquisition by sending a start trigger. Currently I use the timestamp of the first captured waveform as the trigger time. This is not a precise approximation since the time difference between the first waveform and the trigger varies in a few ms range.
Anyone know how to read the trigger timestamp?
thank you.
Lixin
Hello,
The timestamp that you're looking at is actually the software timestamp returned by the NI-Scope driver VI, so you're right that it will differ from when the start trigger on the digitizer hardware is received and when that first sample is returned in software, especially if you have a very long record length.
There are two properties that can help you determine a relative timestamp between records, but is actually a time value of a constantly running counter onboard the digitizer. The "Absolute Initial X" and "Relative Initial X" values that get returned as part of the "wfm Info" on the Fetch VI, will show you the timestamp of the first sample in each record of a particular acquisition and the time from the trigger to the first sample of the record, respectively. Take a look in the niScope Fetch (poly) detailed help and you can see this explanation.
These values are good for comparison between records, but not a good absolute timestamp, because this counter is constantly running and is only reset on rollover or when the board is reset. So, you can see that the values returned may look a little funny, but keep in mind they are values derived from the counter counting a certain rate. So, what you can do is take the first values returned for AbsoluteInitialX and RelativeInitialX and add/subtract them (depending on your trigger type) and make that value your "0" time, and then for each consecutive record, just extrapolate from there.
Hopefully this helps out.
Chris W
Similar Messages
-
How to calculate the time between start trigger,first scan and first A/D in DAQ
Environment: Labview 6.1, N6052E DAQ board(max scan rate=333KHz, max channel rate=333KHz, settling time=3.5usec+1LSB)
I am using external scan clock 10K scan/s collecting data on 16 AI channels, and external channel clock 200KHz.
Could show me how to calculate the time betweent he start trigger, the first scan and the first A/D conversion?
ThanksI read the one you give to me. still cannot work out. I am using Labview 6.1 DAQ vi, including AI config.vi. clock config.vi, AI control.vi, AI read.vi, working on colect data on 16 AI channels. So I belong to SCAN function and external scan and sampling timing, right?
But it says the T1 and T2 are determined by external signals. How can I calculate that?
T1=1/10KHz or T1=1/160Khz?
T2=1/200KHz?
Is the above correct? -
Producer Consumer Start Trigger
Short Explanation: I'm using a 3rd party device to send a TTL signal to use as my start trigger in my VI. My cDAQ and modules appear to have the ability to send a start trigger independantly but I have been unable to hunt down how to do this in a producer/consumer system. I do have an idea at the bottom of the long explanation.
Long Explanation:
I'm running a test system that monitors the pressure wave from a hydrogen/oxygen ignition. Components are a cDAQ-9188 with modules 9222 (x3 high speed AI), 9481 (x2 relay), 9402 (x1 I/O Module), 9221 ("Low" Speed AI).
Based upon recommendations in this forum I've placed my DAQ in a producer/consumer architecture.
At this point the system mostly works, I still have a few more things to add for all the information I want to collect. However, it records at high speed and the 9221 and the 9222 modules are synchronized. It has successfully collected good data as of this writing.
When the system starts it will monitor, but not record. I need to fill the test structure with gas to a specific concentration before I ignite/record. When I press the record button I send a TTL signal from the 9402 to my high speed camera and I close a relay on a 9481 which engages a spark system. The spark system takes a variable amount of time to charge and fire so I have a timer that leaves the TTL and the relay active for a half second.
My problem, and it's a small one, comes in with the monitoring system and the synchronization. In order to get the system to synchronize properly I had to generate an external pulse into PFI0 to use as a trigger. I attempted to assign the various clocks available as a start trigger but I ended up with unsynchronized data.
Is there a way to generate a pulse on my 9402 to use as a trigger? It feels silly to me to use an external device when I have something that can generate the signal I need.
In thinking about this post I might have solved my problem, at least in my head. I'm thinking I can move the TTL output VI (which I will eventually change to DAQmx) into the producer loop and move my true/false statements to the consumer loop as a 1D array within my queue to start the record. Probably more to it than that but I can only learn by experimentation right?
Thoughts? Recommendations?
VI attached.
Solved!
Go to Solution.
Attachments:
HUCTA Controls.vi 186 KBYou can't generate a pulse with the 9402 itself. The pulse would actually be generated by the 9188. You should create a Counter Output task to generate a pulse train. Try the attached example as a start point to experiment with the counter.
This Vi is for LabVIEW 2013, if you have an older version let me know and I will try to convert it.
Camilo V.
Applications Engineer
National Instruments
www.ni.com/support
Attachments:
Pulse Train Generator.vi 18 KB -
Timer fires during trigger processing on web
I was looking for a way to augment the default behaviour
of a hierarchical tree. The trouble is clicking in a tree can fire various combinations of WHEN-MOUSE-CLICK, WHEN-TREE-NODE-SELECTED, WHEN-TREE-NODE-EXPANDED,
WHEN-TREE-NODE-ACTIVATED, WHEN-MOUSE-DOUBLE-CLICKED. I wanted to trigger some action after they had finished firing but as I didn't know which would fire last, where to put the code ?
The solution I found was to start a 1 ms timer in WHEN-MOUSE-CLICK (which always fires first), gather information from the other triggers into a variable, and do my processing in WHEN-TIMER-EXPIRED. This worked fine on client/server but when I deployed it on the web I found the timer expired between WHEN-MOUSE-CLICK and WHEN-TREE-NODE-SELECTED (triggered by a single click).
My understanding of timers is that, however short their duration, they should not expire during trigger processing. Have I got this wrong or is this a bug ?
It seems to work OK with 5 ms but I would like to know what is going on.
(f6i patch 7)All,
as promised, here's an answer from development. Duncan said it already, but here's the long version
1). Regarding timers in general. 1ms timers fire on the server (effectively,
at the time the timer is created in a trigger, we put a timer macro on the
stack so that that next time we go for input (after we've processed all
of the events we've already gotten at that point), it will act as if the timer
has expired. This, as you know, prevents us from doing round-trips to the
client when people are simply creating a timer to get around some of the
restricted built-in/trigger issues. Any timer of longer than 1ms will get
created on the client and thus cause round-trips. We have no plans to
bump that threshhold up, so people could use 2ms timers if they wanted...
2). Regarding timers expiring during trigger processing. It is true in both
client/server and web that we will not expire a timer while a trigger is
firing. However, the order in which the user will see events (and thus
which triggers will fire in) can vary. In the example that was given,
the user (double)clicks on a node in the tree on the client. The first
mouse click causes a message/event to be sent immediately to the
server, which ends up causing the when-mouse-clicked trigger to fire.
As soon as that message is sent, the server starts processing that
trigger. In the meantime, the client may decide that it needs to send
other messages (such as when-node-selected, etc.). However, until
the server sends a return-message to the client asking for more input,
this won't get sent. Now, the server fires the when-mouse-click trigger,
and as part of it a timer gets created. There are two possible scenarios
here.
In the first scenario, the timer is 1ms, and thus is handled on the
server. Thus, when the trigger ends, the server sees if there is any more
input to be processed, and sees that the timer has expired (because, as
I explained above, this gets put directly onto the macro stack). Thus, the
timer expired trigger fires. After that trigger fires, the server sees that it
has no more input waiting, and sends a message to the client telling it to
send more input. At that point, the client can send whatever other events
it has queued up (such as the when-node-selected) and we carry on.
In the second scenario, the timer is more than 1ms long. In this case, when
the trigger says to create a timer, the server queues up a message to send
to the client telling it to create a timer. When the rest of the trigger is complete
and the server sees that it has no more events to process, it sends this timer
creation message to the client at the same time it asks the client to give it
more events. The client sends the when-node-selected event, the server
processes it, and eventually asks the client for more input. By then, the
timer has expired and then the timer message gets sent to the server.
In neither of these cases does the timer trigger fire in the middle of
another trigger that is already firing, it is simply that the separate triggers
might fire in a different order because of the order that the underlying
events are processed. In client/server, the process is effectively the same
as the 2nd scenario above, because the timer is handled by the toolkit, just
like the other events, and thus the message for the timer expiring will get
sent to Forms after any of the events related to the mouse click. But again,
the rule about timers firing during trigger processing is not violated, it is just
that there is a break between triggers that can allow a 1ms timer to fire
'sooner' on the web than in client/server.
Fran -
Using DAQ occurrence to wait for start trigger
Hi,
I'm trying to use digital triggers to start and stop datalogging. Every time start trigger appears, new file is created and data is acquired to file until stop trigger occurs. Now I'm using set DAQ occurrence and wait for occurrence functions to wait for start trigger before creating a new file. The problem is that after first stop trigger this occurrence method doesn't work. I believe it's because AI is not cleared and configured before calling DAQ occurrence again. Number of scans acquired is not zero, if I don't clear and configure AI again? Am I right?
Do I have to clear and init AI everytime before occurrence config or is there a better way to make program wait for start trigger?
Thanks in advance,
JakkeHi Matt99eo,
Have you configured your device for triggering? Although you have not mentioned your device specifically, the M series user manual provides a great explanation of digital triggering. Using the DAQ Assistant, this can be configured from the triggering tab. Hopefully this helps!
Regards,
h_baker
National Instruments
Applications Engineer
Digital Multimeter Resources -
i want to know how a start trigger starts the acquisition of data.please give me any example
Hello Christian,
Thank you and Best Regards,
I implemented a advance Measurement and Control system using cRIO-9074
with c-Series I/O cards( NI 9217, 9411, 9264)
I have some questions about it,
(1)- Data rate from FPGA targate to host vi is too low. how can I increase
it, when I run my host VI, sometimes all temperature sensor update at
same time and sometimes one by one, can you please give me some hint, how
can I correct it, I used two FIFOs for NI-9411 digital pulses, I put all
Digital input and all analog output and input in a seperate while loop in
FPGA targate VI.
(2)- I have to write that data to analyse for further result. I tried all
possible way to write data including wite to spreadsheet.vi, write to
text.vi, Data storage.vi, Write to measurement.vi. All this VI work
efficientlywhen it run individualy, But when I connect this VI to
writedata from FPGA host VI. than it always give empty file.
I saw your post in NI discussion forum about how to write data from
Host.vi, But still I am confuse that how can I creat a protocol between
host VI and Fpga target vi. to write the data in a file. I have nearabout
38 channel to write data.
(3)- I have to measure time difference between two digital pulses, to find
a flow rate. I am using counter for it with risisng edge shot.vi, but when
i get a timestemp when there is risisng edge for the second rising edge
how can I get timestemp. Its like i have to measure time between two
pulses, I triend waveform measurement.vi to find cycle period. but it not
worked. any other was to measure it.
I am stuck in this question since from last one month. I already followed
NI-discussion forum solution but it doesnt work. I think the way I applied
is may be wrong.
Looking forward to hear from you soon.
Plese send an additional email copy to [email protected] -
CTR start trigger error - USB6343
Hi-
A digital pulse from a device in my system is connected to the gate of CTR0 (PFI9).
CTR0 is used as a quadrature encoder. My code routes PFI9 to the gate of CTR1 (PFI4)
and also defines PFI9 as a start trigger for CTR3. CTR3 is set to generate a finite
retriggerable pulse train for each digital pulse on PFI9.
My code returns error -89137 indicating that Specified route cannot be satisfied,
because it requires resources that are currently in use by another route.
Not sure what this means?
Screenshots of relevant code and error message are attached.
I am using LV2010 and a USB-6343.
Your help is appreciated !
Dar
Solved!
Go to Solution.
Attachments:
CTR3 start trigger code.jpg 89 KB
External trigger pulse route and CTR1 setup code.jpg 129 KB
Error.jpg 163 KBHey Dar,
As long as you're careful about managing your hardware resources then you shouldn't face persistent problems. It's just a matter of knowing which lines you are using at what time, and being conscious of how your signals are physically re-routed in your hardware (as I said, this is something you can check in Measurement & Automation Explorer). There are lots of great DAQ resources online through NI KnowledgeBase articles, Developer Zone articles, and community examples (found at ni.com/support). For resource related conflicts, this KnowledgeBase article is particularly good:
http://digital.ni.com/public.nsf/allkb/485201B647950BF886257537006CEB89?OpenDocument
I hope this helps! If you encounter future problems, the forums are a great way to get peer input &/or response from NI engineers.
Courtney L.
Applications Engineer
National Instruments -
PXI question: four analog ouput cards to start-trigger simultaneously
Hi all,
Here's the situation:
We have built a system that ouputs 24 analog signals using a PXIE-1073 chassis. It has 5 slots:
Slot 1: Internal
Slot 2: Empty
Slot 3: Empty
Slot 4 (Hybrid): PXI-6733
Slot 5 (Hybrid): PXI-6733
Slot 6 (Hybrid): PXI-6733
As you can see, it has three analog output cards, which occupy all three of the hybrid slots. And we have two empty slots.
Our LabVIEW code is designed to output analog signals on all three cards (at the same rate) using three DAQmx tasks which start-trigger simultaneously. To do the triggering, we setup two of the tasks to start-trigger off of the first task (master-slaves style). In this manner, we can get all outputs to start at the same time. Its actually quite simple.
My question: I want to add another output card. But I am fairly I can only use hybrid slots for my application. I remember working with NI and they told me I had to use the hybrid slots to be able to get the triggers routed automatically along the backplane. Our code actually failed (error) when we used the non-hybrid slots (I forgot the error code).
Is there any way to add another PXI-6733 and have it trigger with the other cards?I can't speak to the chassis, but I'd warn you that if you want your tasks sync'ed, you'd better share a sample clock too and not just a start trigger. The onboard clocks will have a tolerance (often ~50 ppm, dunno for your 6733's) and their sampling instants will drift apart from one another over time. In fact, I rarely both with triggers at all for syncing tasks & boards. I'll usually *only* share a sample clock, and then make sure I start all the slave tasks before the master whose sample clock is being shared.
Good luck on your real question though...
-Kevin P -
Program works in CVI 8.0
I use several 6225 for analog acquisition and one 6608 for time metering.
For simultaneous start of all devices start trigger must be set up.
DAQmxCfgDigEdgeStartTrig function allows me to connect ai\StatrTrigger of "master" 6225 with PXI_Trig0 and to connect ai\StartTrigger of other 6225 with DevN\PXI_Trig0.
So, one of 6225 defines strarting others devices 6225. For complete syncronization I must tune up start of 6608. This mean, that I shall connect PXI_Trig0 with DevN\Ctr0StartArmTrigger, where DevN - name of device 6608 in system.
What function must be applied for it? Maybe I need fundamentally other method of syncronization?
Best regards, AlexanderHi Alexander,
To define the source terminal of the Arm Start Trigger in LabVIEW, use the DAQmx Trigger Property Node (see attached image). The C function for the same operation would be DAQmxSetDigEdgeArmStartTrigSrc(). Is this what you're trying to configure?
Regards,
Andrew W
National Instruments
Attachments:
trigpropnode.JPG 25 KB -
I am using 'DAQ Assistant' (subVI) to measure some AI's I am then storing this data using 'write LVM'(subVI). I acquire for a length of time when a trigger is received, it then stores and waits for the next trigger where the process is repeated. When I look at the LVM file I see that the time axis doesn't start at 0 seconds. I think the time actually starts when I start the program running because as you look at the files sequentially the start time always gets bigger, although I am not sure as I am only using express vi's so it all quite elusive and clever and not in my control. In order for my time axis to start at 0 seconds what do I need to reset.
NiceHello,
I have had this post in my inbox for a few days and have been checking to see if you have posted further questions or if the posts from other users helped you out enough to get moving again with your project.
If you have sorted out your problems then that is great, if you are still having the problems then please feel free to post to this thread again and I will monitor the thread for your response. I can then look into this further for you. I'm still not quite clear on exactly what you are trying to do though, so maybe if you could post a piece of example code which shows the problem then I will be in a better position to advise you.
Best regards,
Peter H
Applications Engineer
National Instruments UK -
Every time I start iTunes I get the message: "iTunes exec has been set to run in compatability mode for an older version of Windows. Turn off compatability mode for iTunes before you open it." How do I turn off the compatability mode? Particularly when I have to do it before I turn on iTunes.
Try the following document, only be sure that none of the boxes in the compatibility mode tab are checked (not just the compatibility mode box itself):
iTunes for Windows: How to turn off Compatibility Mode -
My Macbook Pro, bought 2012, takes a very long time to start up/restart (5 mins) every single time I have shut it down. I try not to shut it down at all now because once or twice, I have got a grey screen, and then nothing. I've held down the power button to shut down again and restart How do I fix all this?
Start up with your built-in Recovery disk by holding down the Command and R keys when starting. Open Disk Utility from there and use it to REPAIR your disk (you've already verified it and it came up with errors).
With any luck, your problems will be solved. While I was there, I would also repair permissions.
Good luck,
Clinton -
Installation of Yosemite 10.10.1 has severely slowed performance of my Mac Mini. Tales a long time to start, and a very long time to start any apps.
Open Activity Monitor and kill this process - rapportd.
Reinstalling OS X Without Erasing the Drive
Boot to the Recovery HD: Restart the computer and after the chime press and hold down the COMMAND and R keys until the menu screen appears. Alternatively, restart the computer and after the chime press and hold down the OPTION key until the boot manager screen appears. Select the Recovery HD and click on the downward pointing arrow button.
Reinstalling OS X Without Erasing the Drive
Repair the Hard Drive and Permissions: Upon startup select Disk Utility from the main menu. Repair the Hard Drive and Permissions as follows.
When the recovery menu appears select Disk Utility and press the Continue button. After Disk Utility loads select the Macintosh HD entry from the the left side list. Click on the First Aid tab, then click on the Repair Disk button. If Disk Utility reports any errors that have been fixed, then re-run Repair Disk until no errors are reported. If no errors are reported click on the Repair Permissions button. Wait until the operation completes, then quit Disk Utility and return to the main menu.
Reinstall OS X: Select Reinstall OS X and click on the Continue button.
Note: You will need an active Internet connection. I suggest using Ethernet if possible because it is three times faster than wireless.
Alternatively, see:
Reinstall OS X Without Erasing the Drive
Choose the version you have installed now:
OS X Yosemite- Reinstall OS X
OS X Mavericks- Reinstall OS X
OS X Mountain Lion- Reinstall OS X
OS X Lion- Reinstall Mac OS X
Note: You will need an active Internet connection. I suggest using Ethernet
if possible because it is three times faster than wireless. -
Recently when I turn on my mac it takes a long time to start up and at first and in the beginning it appears with a grey screen and at the end it turns blue.
Also it freezes in some of the Apps, so it make me to turn of.
Please be kind enough to guide me to solve these problems.
I thank you in advance for your cooperation and quick response.
Best Regards
Ahmad EmamiWhat SP are you on? We had a similar issue w/SP6 but it was resoloved with SP7.
Michael -
Lenovo Services/P​rogram takes a long time to start after bootup
It seems like Lenovo services take a long time to start after boot up is completely done.
My Bootup time is less than a minute (0:51s), but my lenovo services (Power Manager Gauage, Lenovo Services in the Sidebar, have th ThinkVanatage Button work, and most annoying of all is having access to my network card to change networks) takes about 2 minutes.
Is there a reason why this is taking so long?
I've uninstalled and installed the lastest Lenovo Interface Driver, and a lot of ThinkVantage/Lenovo software and drivers.
Any ideas?No response?
Anyone else on T400 notice this?
Maybe you are looking for
-
Exception currencies TCURX table, R3 - BW loading issue
Hello Friends, I am facing issue in report values for amount in local currency key field. Its value not matching with R3 values. Decimal places are shifted in report. We are on BI7 (RSDS data source). There is data coming from R3 into one DSO from di
-
Can't save a word document in pages
hello all, hopefully someone can help me because i am very frustrated with pages. I recently bought my 2011 macbook pro for school this fall. I transferred all my data from old macbook to this macbook. I needed a new word processing program, so I dec
-
Hallo , While creating return delivery using transaction MBRL the following error occurs. Could anyone help me out? Please let me know the required customizing settings in this regard. Data for creating a delivery is incomplete (Shp.Cond.) Message no
-
Hello, We're on Oracle 10.2.0.3. I want the Resource Manager to map a specific machine in de 'LOW_GROUP'. Therefore I've used the value of 'machine' from the following query select sid, serial#, username, machine, resource_consumer_group from gv$sess
-
Hi all, which roles do we need to view or access the Design Time Repository. We have been assigned to the NWDI.Developper group but it seems it not enough. Thanks.