How to Generate Synchronized pulses across two separate cards on a PXI system

Hey,
I'm trying to generate three pulses from my PXI System for triggering purposes. I have two cards (PXI 6259 and PXI 6115) , each with two counter/timers on them. The 6259 has 32 bit timers, and the 6115 has 24 bit timers.
Up until now, I only needed two pulses. One was 180us long at 20 Hz, and the other is 5us at 20 Hz, starting 150us after the beginning of the first pulse. I was able to achieve this by generating both pulses on my 6115 card by triggering the shorter pulse off of the rising digital edge of the longer pulse and giving the DAQmx Counter/Timer task an initial delay of 150us.
The third pulse needs to be identical to the short pulse, only it needs to occur 20us early (130us after the start of the wide pulse). I tried to generate it using the same technique as I used when generating the short pulse, only generating the pulse and reading in the rising digital edge trigger on my 6259 card instead of the 6115. 
The result was that my pulse trains were asynchronous and the pulse generated on the 6259 card was constantly shifting to the left.
This puzzled me, so I wrote up a little dummy program to test generating triggered pulses. The results were that when I generated two pulses on the same card, they were always synchronized; however when I generated pulses on separate cards, one of the pulses always shifted.
I was hoping somebody could suggest a reason that the pulses across cards are asynchronous even though I'm reading in a digital trigger and hopefully a way to rectify the situation and synchronize all of my pulses.  

The problem, in a nutshell, is that the timebases on the two boards have manufacturing tolerances that will cause them to differ from one another.   The accuracy error is a small fraction of a percent, but the effect on the phasing of your pulses will be cumulative.  That's why you saw the one set of pulses "shifting to the left."
The solution is to make sure each board derives its pulse timing from a single common timebase.  Fortunately, this is pretty easy to specify with DAQmx, just a little tricky to find.  In the chain of VI's you call to configure the counter pulses, insert a DAQmx Channel property node.   From memory, I *think* you should be looking under something similar to "Counter Output->General->Timebase->Timebase.Src"
Right click and create a constant or control to define the timebase source.  You should get a dropdown list that includes a wide variety of choices.  Among them are each of the boards' 20 MHz clocks.  By default each task will use a timebase from its own board but this technique lets you route one board's timebase over the PXI backplane with that single property node setting.  DAQmx does most of the dirty work behind the scenes.
-Kevin P

Similar Messages

  • How to generate pwm pulse using NI DAQ in MATLAB

    hi everyone. please tell me how to generate pwm pulses using Ni DAQ card in MATLAB Simulink. if through coding is possible then post the corresponding code.....reply me 

    Make sure you have installed the Measurement studio support for VB 6.0 then you will be able to find examples in the folder below on win7 and 8.
    C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples
    Narrow down to Analog Output and choose update voltage example for measurement studio.
    You also have the possibility to use DAQ assistant if you have measurement studio installed. This function is a configuration type programming. After going through the configuration Wizard code is automatically scripted for you so that you can output the voltage you need. Read more about DAQ assistant in the blow link.
    http://www.ni.com/white-paper/4652/en/
    Best Regards
    Jonas Mäki
    Applications Engineering
    National Instruments

  • How to generate biphasic pulses and change parameters?

    Hi I am a beginner. I need to know how to generate biphasic pulses. What are the functions i need to use(the logic involved in labview to generate)? I should be able to change the parameters like duration,interval during the course of the program.

    Greetings:
    You can go to the Analysis/waveform/signal generation toolbox and find Pulse Pattern. You can set the duty cycle, frequency and phase with the standard controls.
    Eric
    Eric P. Nichols
    P.O. Box 56235
    North Pole, AK 99705

  • How to generate I&Q data using NI5640R card?

    Hi there,
    I know how to generate a chirp using the NI5640R card (because there is a "chirp" generation function/block), But i dont know how to generate the I and Q components of the chirp. Could someone please help me with generating the I and Q components of a chirp (i.e, Can you please make a VI that generates the I and Q components of a chirp and give it to me).
    Any help regarding this will be grately appreciated.
    Thanks,
    Sandeep.
    Sandeep Palreddy, Graduate Research Assistance
    The Microwave Remote Sensing Laboratory (MIRSL)
    University of Massachusetts
    151 Holdsworth Way
    Amherst MA 01003-9284

    If the chirp signal you are generating is all real valued, there will be no Q component.

  • How to generate a pulse train with different pulse width and delay?

    How to generate a triggered pulse train with different pulse width. for example, after each trigger signal, let's say 2 ms, then the counter output a pulse with pulsewidth of 1 ms, and then after 3 ms delay after the first pulse, the second pulse was generated with a pulse width of 4 ms.  Next cycle when the trigger signal comes, the same two pulses will be generated and so on. Is it possible to achieve this by using 6601 counter card? and if yes, how to achieve this? Thanks!

    Unfortunately you can not create a hardware timed pulse train with different widths on each pulse from a counter. Whilst it can be changed on the fly using software, since you require a hardware triggered signal getting the software involved will not give a huge amount of accuracy when the pulse will actually change.
    So in short you can't use your 6601 card (or a counter timer) to achieve this
    There are three possible Alternative solutions
    1 You could use a high speed digital IO device such as the (6533/34) to generate your variable signal which would require setting up the pulse train as a series of states based around the burst transmission mode where the clock would give you your specific timing.
    2 A timed analogy output (for example on a MIO card with a clock (PCI-6220 / 62xx), i.e. Not the 6704 style static analogy output cards)
    3 A high speed digital waveform card such as the (, 656x , 655x, 654x, 6534, 6533 (http://www.ni.com/modularinstruments/find_right.ht​m) ) this could then be scripted to work with your triggering and also there is a digital waveform editor which will enable you to set up the pattern you wish to generate (http://sine.ni.com/nips/cds/view/p/lang/en/nid/135​55) 
    Hope that helps
    Tim Matthews
    NI (UK)

  • How to generate a pulse waveform 90 deg phas shifted with respect to a pulse generated using a counter in PXI 6070E daq card ?

    Hi
    I ma using 6070E daq. I am generating a infinite pulse train using one of the counters. I want to generate another pulse train which should 90 degress phase shifted with respect to the previsously generated pulse. How to implement this using the counters in the DAQ card.

    Hi Gopal,
    1) yes the frequency generator is programmable. You have 2 timbebases (10MHz and 100kHz) and you can divide down by any integer between 1-16. Those are the only frequencies you can use.
    2) The way counters work is that you can apply a gate signal to the counter which will cutoff the output. Therefore, you can have a second counter generating a pulse train of an equivalent frequency to the frequency generator (fout) but you don't want it to start immediately. You want it to start only after a short delay (equivalent to a 90d phase). Therefore, you need to "gate" or prevent the output on this counter for that small delay period of time. The way you can do this is by using a second counter to create a delayed pulse. You would
    connect the output of that counter to the gate of your pulse train function. That way, during the delay period of the pulse, you won't be outputing your pulse train yet. When the pulse (high-time) of your pulse reaches the gate, then your pulse train will start generating its pulse train (which is consequently delayed by the amount of delay used in the single delayed pulse counter). Since you don't want your pulse to go back low, you will have to turn off or clear your pulse counter while it is high. That way the signal on the gate will remain high forever.
    Your better solution is to use a PCI-660x card to perform this action. You will have more counters which will give you a greater range of frequencies to choose from and you will have more accurate timing of the signals.
    Anyway, hope that clears things up. Have a good day.
    Ron

  • How to generate a pulse on x number of events PCI-6602

    I am running LabVIEW 5.1 full development with a PCI-6602 counter board.
    I would like to generate an output pulse after counting x number of input pulses. I would also like to reset the counter with an external signal.
    My application is I am trying to generate a second index pulse for an encoder.
    I would like to count the pulses from encoder phase A and generate an output pulse on x number of counts. Then I would like to reset the counter using the encoder’s index pulse. This way I can change the phase of the “generated” index pulse with respect to the “real” index pulse by x number of counts (degrees) and maintain that regardless of encoder rpm.
    Thanks
    Brian

    Brian,
    There actually is a way to do what  you want, but it gets a little complicated.  I don't have LV on this machine so I'll have to just describe the idea.  First a summary: the counter will repeatedly countdown to 0.  Each time it reaches 0, it will generate a brief pulse which will in turn hw-reset the counter value to N.  Then it will countdown to 0 again, etc.  The same brief pulse could also be wired to a different encoder-measuring counter to create a "delayed" reset to 0 (or some other #).
    1. Configure your counter for "position measurement" instead of "simple event counting".  Set the encoder type to, um, I forget the name -- something like "two pulse encoder."  It's the setting that will increment with every SOURCE edge and decrement with every AUX edge.  Wire your encoder channel A to the counter's default AUX input (in position encoder mode, you must use the default input pins).  Hard wire from the default SOURCE input to GND.  Now every encoder edge will decrement the count, and nothing wlil ever increment it.
    2. Configure the counter to use z-indexing.  Set the z-index reload value to be N-1, where N is the # of encoder counts by which to delay the encoder's real z-index pulse.  Set the z-index reload phase appropriately, probably to A low B low.  Wire the real z-index pulse to the counter's GATE input.
    3.  Configure the counter to "pulse on terminal count" -- you do this using 'Counter Set Attribute.vi'.  So N encoder edges after the real z-index pulse, you'll generate a pseudo-z-index with this counter.
    4. You can wire this pseudo-z-index to the GATE input of the encoder-measuring counter.  Now the encoder's z-index pulse is delayed by an amount you can program.
    5. Note: this method requires the motion to be uni-directional.
    Good luck!
    -Kevin P.

  • How to generate a pulse with 9472?

    I am trying to generate a single 8V pulse of 10ms duration on multiple channels of the 9472.  The 9472 is in slot 4 of the 9172 compact daq chassis.  To test my results, I have connected an oscilloscope to one channel of the 9472 (with no load attached).  I tried modifying the Create Digital Waveform VI from the Write Dig Chan-Ext Clk example VI.  In doing so, I generated a binary array with the first half of the array filled with all 0's and the second half of the array filled with all 1's.  When I triggered my O'scope on a rising edge, I saw the channel turn on (also the LED was lit on the 9472).  However, the channel stayed on even after the routine had completed (LEDs were lit solid).  So to try to turn the channel off, I appended one 0 to the end of my array.  Now the O'scope won't trigger and I see no sign of the LEDs on the 9472 blinking.  Any ideas how I can solve this problem? 
    I was able to get a single pulse of the proper duration by setting up a task in MAX with the 9472 in slot 5.  But in doing so, I was only able to generate the pulse on one channel.  I need to be able to parallel multiple channels for my application.

    I am trying to generate a single 8V pulse of 10ms duration on multiple channels of the 9472.  The 9472 is in slot 4 of the 9172 compact daq chassis.  To test my results, I have connected an oscilloscope to one channel of the 9472 (with no load attached).  I tried modifying the Create Digital Waveform VI from the Write Dig Chan-Ext Clk example VI.  In doing so, I generated a binary array with the first half of the array filled with all 0's and the second half of the array filled with all 1's.  When I triggered my O'scope on a rising edge, I saw the channel turn on (also the LED was lit on the 9472).  However, the channel stayed on even after the routine had completed (LEDs were lit solid).  So to try to turn the channel off, I appended one 0 to the end of my array.  Now the O'scope won't trigger and I see no sign of the LEDs on the 9472 blinking.  Any ideas how I can solve this problem? 
    I was able to get a single pulse of the proper duration by setting up a task in MAX with the 9472 in slot 5.  But in doing so, I was only able to generate the pulse on one channel.  I need to be able to parallel multiple channels for my application.

  • How to listen to iTunes through two separate stereo systems simultaneouly?

    I was thinking of buying two Airport Express units in order to run iTunes to two seperate stereo systems in two different rooms. Can this be done, or is there a better way to accomplish this?
    thanks for any help!
    pjo
    iMac G4, 800 Mhz   Mac OS X (10.3.9)  

    Hi Pjo,
    Yes, you can listen to iTunes through two separate stereo systems simultaneously. The current version of iTunes allows you to stream your music to multiple Airport Express units. At the bottom of iTunes, where the different Airport Express units' names are listed, there is a "Multiple Speakers..." option; select this to choose from one or more of your units.
    Hope this helps.
    - Keith

  • W530 - How does things work when having two graphics cards?

    So I have a W530 with an Intel HD Graphics 4000 and a NVIDIA Quadro K2000M.
    How does things work when the computer has two graphics cards? I mean, is only one active at a time? Or is one doing complex calculations while the other one might be the one displaying them on the screen?
    Related question:
    I just bought and installed the game Portal 2. How do I know if it is using the better graphics card (NVIDIA Quadro K2000M)? And if it is not, how do I configure Windows, Steam or Portal 2 to use it to its full potential?

    Technically, the Intel integrated graphics is always active, although it is not always in use. Nvidia graphics will turn on and off according to need. Software from Nvidia called Optimus automatically switches between integrated (Intel) and dedicated (Nvidia) graphics, according to the application. Portal 2 will run smoothly at maximum settings and native 1920x1080 resolution using the K2000M. The easiest way to see which graphics card is in use is to check the "Display GPU activity icon in notification area" option in the Desktop menu of the Nvidia control panel. It should automatically use the Nvidia graphics card when Steam is running. If it does not, you can add Steam to the program settings in Nvidia control panel and select that it should always use the Nvidia graphics.
    Also, if you are using an external monitor and the notebook monitor, then you will be using both graphics cards - the Intel graphics will drive the notebook screen and the Nvidia card will power the external display(s).
    Thinkpad W530, i7-3720QM, 1920x1080 screen, 32GB RAM, dual SSDs (Samsung 830, Crucial M4 mSATA), Quadro K2000M, 9-cell battery, DVD burner, backlit keyboard, Bluetooth, Intel 6300 wireless card

  • How to generate a pulse of 5 V -ve polarity in synchronis​ation with a 10 v input using PCI 6251 DAQ board

    HI
    I want to generate a 5V -ve polarity pulse to trigger my IEEE 1394 camera using an PCI 6251 (scb68 pin E) device, furthermore I am reading a standard Vsync signal from a SVGA port which is 10 v.
    Now I want to synchronise the image capture of an IEEE 1394 camera with the Vsync signal so that camera is triggered to capture at every 4th Vsync signal (which is 50HZ.). Presently I am able to read the Vsync signal and also generate the -5 v signal But the Daq board generates a continues -5v signal while I want a 1 ms pulse (for every 4th Vsync).
    Also this 5 v signal is generated even if the vi is stopped running.
    Can anybody guide me so this problem can be solved.
    Thanks a lot in advance
    Shri

    You can use the Write function, that is you can use the 10 volt signal as a trigger for the task, and when you get this trigger, the task starts and generate (writes) a waveform you defined in an array ("data", in the example).
    Something like this..
    DAQmxCreateTask("",&taskHandle);
    DAQmxCreateAOVoltageChan (taskHandle, clokSource, your_sampling_freq, -10.0, 10.0,
    DAQmx_Val_Volts, "");
    DAQmxCfgSampClkTiming (taskHandle, clockSource, SAMPLING_RATE,
    DAQmx_Val_Rising, DAQmx_Val_FiniteSamps,
    samp_to_read);
    DAQmxCfgAnlgEdgeStartTrig (taskHandle, input_channel, DAQmx_Val_RisingSlope, 9.0);
    DAQmxWriteAnalogF64 (taskHandle, 1000, 0, 10.0,
    DAQmx_Val_GroupByChannel, data, //data contain a pulse
    &samp_per_channel, 0);
    DAQmxStartTask(taskHandle);
    // and then you create a loop....
    For example you can specify data to be like this:
    data[0] = -5;
    for(i=1;i<1000; i++){
    data[i] = 0;
    Tell me if you need more help.....
    bye

  • How to generate a number from two dates

    I am 'new' at this of using Numbers for anything.  What I want to do AND I can't seem to figure it out, is to generate a 'days total' from two dates.  I get paid S.S. on the 2nd Wednesday of each month.  I have X number of dollars to spend.  In order to view each day how much money I have for the rest of the month, I need to be able to obtain how many days are left in the period.  I know what the fixed day is for the end and could key that in.  I want it to be able to take the current day for the calculation without my having to key IT IN each day.  Then I could use that returned number for other functions.  I did look into "Functions" screen on the right hand side, read them several times, tried some but have not succeeded.  Can someone here help this 68 year young man to figure this out?  Thanks

    you can use the function TODAY() to get the date.
    then you can compute a duration (the difference between two dates).  Data/time is a single type of variable in Numbers.  Meaning that a complete date/time value includes both a date and a time.  When you enter one without the other Numbers assumes the other portion.
    you can subtract any two dates to get the duration.
    The format for a date is:
    1/2/2015 12:09A
    2 Jan 2015 12:09A
    a duration would look like:
    3w 4d 6h 15m 45s 76ms
    Three weeks, four days, six hours, fifteen minutes, forty five seconds, seventy six milliseconds
    you can use any combinations of these parts for a duration
    A1
    =TODAY()
    B1
    =EOMONTH(TODAY(),0)
    C1
    =B1−A1

  • How to generate digital pulses to run stepper motor in a sinusoidal motion profile using NI DAQ 6229 card

    Hi,
             I need to make a stepper motor undergo rotary oscillation with a sinusoidal motion profile. As it nears the extreme points it should decelerate and finally slow down to zero velocity and then it should reverse direction and accelerate until it reaches the other extremity where it should slow down and stop and reverse direction and repeat this motion.
            The hardware is NI DAQ 6229 and the stepper motor can be controlled using digital Hi-Low (1,0) pulses. For each high pulse(1's) the motor turns 1 step. I am able to generate a analog sine wave and convert it to digital data using Analog-to-Digital.vi  But i am not able to convert the digital data to a stream of 1's and 0's in the correct sequence to get the sinusoidal profile with the amplitude and frequency i require.
            The direction of rotation can be changed by giving a pulse to another input of the stepper motor. So only half cycle of sine wave needs to be generated and it can be replayed after changing the direction to get the full sinusoidal profile.
    Any ways of making this approach work or any new approaches to this problem would be helpful. Thank You.
    Regards,
    Prabu.
    Solved!
    Go to Solution.

    Hi,
             I finally figured out a way to do it. The analog sine wave is converted to digital and sampled. Consecutive values are compared and if the least significant bit(LSB) changes then a pulse is sent to the stepper motor to turn one step.
    I have included the sub-VI's that accomplish it for the particular stepper motor and connector block i have. The front panel of both sub-VI's are quite messy but the block diagrams should be much clearer. The sub-VI's get their inputs from a third VI which i have not included. So take a look at the VI connector panel to figure it out. Hope this helps. Kinda messy but worked out fine in the end for my application. 
    Thanks again for all the help. I appreciate it very much.
    Regards,
    Prabu Sellappan
    Graduate Student
    Aerospace and Mechanical Enggineering
    University of Southern California
    Attachments:
    start motor test waveform dtest.vi ‏73 KB
    sine profile generation subVI.vi ‏41 KB

  • How do I get back my two separate email folders?

    I previously had my Mail folder with two subfolders showing my two distinctly separate email address boxes. Somehow I lost the distinction and all emails are arriving into one main "mail" box. Under preferences, I show 2 comcast accounts with distinct email addresses. Yet both of the 2 emails are arriving, just all together. Sounds simple? Not for me. Thanks for any help to get my husband and my emails separate again.

    It worked! I am so dumb, but so very appreciative of your help. I spent over 2 hours today reading help topics, forums and trying all sorts of things. Technology is moving at faster than lightening speed, and for those of us at the end of the life spectrum, we are fortunate to be able to rely on those of you who can, to help us out. Gratefully yours!

  • How to Merge the elements of two separate lists into a single one .

    Hi ,
    I am unable to add elemnts of 2 separate Lists suppose list1= { HashmapA, HashMapB}
    List2 = { HashmapC, HashMapD } into the third list List3 whose elements should be
    { HashmapA, HashMapB,HashmapC, HashMapD } .
    I am trying Collections.addAll(List3 ,List2 ,list1)
    but it is giving me a list whose elements are 2 lists( 0 -> list1,1->list2) and not { HashmapA, HashMapB,HashmapC, HashMapD }.
    Can anyone help me out with this !!!!!

    I am unable to add elemnts of 2 separate Lists suppose list1= { HashmapA, HashMapB}
    List2 = { HashmapC, HashMapD } into the third list List3 whose elements should be
    { HashmapA, HashMapB,HashmapC, HashMapD } .
    You can also try
    Set<T> union = new HashSet<T>(list1);
    union.addAll(list2);Assuming you want to get rid of the duplicates. Replace T with the actual type of your elements.

Maybe you are looking for