DAQ session-based input, is it possible to have different clocks for input and output?
3 views (last 30 days)
Show older comments
Hello all,
A question for those who have played more with the Session Based interface than I have. I've been updating my DAQ routines that interface with a PCI 6115 to the new, 64-bit version (the old routines gave a noticeable drift for non-zero data). Going through some old data taken with the legacy code I noticed that the input clock was working at 10 MHz and my output clock was at 4 or 2.5 MHz (depending on the number of channels). This is what I want, since these were the rates National Instruments specifies works for analog I/O.
However, with the new session based interface, I'm under the impression that both the input and outputs are tied together clock-wise: If I'm using two output channels the maximum Matlab would let me sample for input is at 2.5 MHz. Is this indeed the case, or is there a way for me to get my input sampling to 10 MHz? And if so, will this be changed in 2012a?
Thank you, Paul
0 Comments
Accepted Answer
Manisha
on 27 Dec 2011
Hi Paul,
As you noticed, a session can have only one rate. However, you can always create two sessions- one for your analog input and one for your analog outputs. This way you can set different sample rates for your device.
aiSession = daq.createSession('ni');
aiSession.addAnalogInputChannel('Dev1', 'ai0', 'Voltage');
aiSession.Rate = 10e6;
aoSession = daq.createSession('ni');
aoSession.addAnalogOutputChannel('Dev1', 'ao0', 'Voltage')
aoSessio.Rate = 4e6;
Hope that helps,
Manisha
3 Comments
Manisha
on 3 Jan 2012
Hi Paul,
If you want synchronization at different rates, one thing that you could try is to use the new trigger functionality added in the R2012a prerelease.
Basically to achieve perfect synchronization you need to share a start trigger and the clock. Since you are using the same device, they automatically share onboard clocks. For triggers you can use the addTriggerConnection command to export the start trigger to a PFI terminal on aiSession and to import a start trigger from another PFI terminal on aoSession
The code could look like
aiSession.addTriggerConnection('Dev1/PFI1','External','StartTrigger')
aoSession.addTriggerConnection('External','Dev1/PFI2','StartTrigger')
ao.startBackground; % Start the session that receives start trigger first
ai.startBackground;
And make sure that you physically connect PFI1 to PFI2. This should make your sessions synchronized.
Let me know if you have any issues implementing this approach
Hope this helps,
Manisha
Kelvin
on 11 Nov 2014
Hi all,
I am trying to start multiple sessions as mentioned by Manisha, but the second session will not start with the first one running. How do you start multiple sessions?
Thanks,
More Answers (2)
Orpheus
on 31 May 2012
Hi Manisha,
I am in the same situation as Paul, but in my case I am using two different devices on the same chassis. As you mentioned, in addition to a trigger I will also need to share a clock between them. However, I am not sure how to set this up. I would greatly appreciate if you could provide some guidance on this.
I am using the session based interface on Matlab 2012a (64-bit).
Kind Regards, Orpheus
3 Comments
Feng
on 12 Aug 2013
I have a similar problem:
I used one of the counters to trigger an external device and trying to collect data after the trigger. I was able to do it in the legacy DAQ with these codes:
set(ai,'TriggerType','HwDigital')
set(ai,'HwDigitalTriggerSource','PFI0')
set(ai,'TriggerCondition','NegativeEdge')
In session-based DAQ, I have these two lines
s.addTriggerConnection('Dev1/PFI0','Dev1/PFI4','StartTrigger');
s.Connections(1).TriggerCondition = 'FallingEdge';
and it says 'Source and Destination devices can not be the same for a connection'. How should I solve this problem?
Thanks,
Feng
Hakmin
on 15 Oct 2012
Hello All,
I don't have any experiences with the session based interface daq. Is it possible to generate multiple analog outputs using a nidaq USB-6259 that are timed differently? I would like to generate an analog signal (30 mins of continuous random noise using appropriate memory buffers) that is presented simultaneously with a shorter 200 ms tone burst that can be triggered independently from the first noise signal. With two session based analogout objects, can I use background trigger events to trigger the two signal types independently?
Thanks for your input
Norman
0 Comments
See Also
Categories
Find more on Simultaneous and Synchronized Operations in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!