Generating a pulse sequence in NI5401 board

Sirs,
I?m sending this email massage because I have a doubt concerning NI 5401 Function Generator Board.
I?m working with a PXI system together with a NI5401 board, and I want to generate a pulse sequence with this board.
The propose of this is to synchronize my pulses with the acquisition of data by another board (PXI board from Goeppel ? Boundary Scan board which has 4 I/0 ports of 8 bits)
I want for each pulse generated to acquire and transfer data in that board, thus I need to know how can I send a predetermined sequence of pulses, (N pulses and then stop). (attached I send a figure to illustrate my question)
Please, I tried to understand the triggers but....
If the triggers is the solution for my probl
em please send me an example.
Note: Now I'm generating a sequence of pulses using a simple pin I/O of the Goeppel Board but the problem is if I run many Labview applications sometimes the software is not fast enough to generate that pulses. Then I think if I use a hardware solution, like in the 5401 board,I could get faster a better responses for my pulses. Note that I'll need to now, in each instant, how is the level of each pulse.
Note2:I'm using LabView6i software.
Thanks very much.
Attachments:
PULSE.jpg ‏25 KB

Hi
The NI 5401 is a Function Generator; this is significant in that it is made to make periodic waveforms such as Sine, Square, and even a user defined periodic waveform that a user can download (the 16K buffer). The board can be triggered to start generation, and with a software call, abort generation. But there is no hardware that can specify how many cycles of a waveform has been generated to control the number of cycles at the output.
Depending on the rate of the pulses you need, it may be possible to do something. A pulse train is essentially a square wave with a certain duty cycle. Set up the device for a certain frequency that matches the rate of your pulses, and program it to start with a Software trigger. The best output to use is the Sync output which w
ill give you a TTL pulse.
After the software trigger is called in your code, use the Wait VI to wait a certain amount of time that corresponds to the number of cycles/pulses for the signal that you need, and then after the wait, immediately call NI-FGEN Abort to stop the output generation.
If you are unable to control the number of pulses through software, the NI 5401 really isn't made for this operation. The NI 5411 Arbitrary Waveform Generator is the device made to do this, create the pulse waveform you need, select how many times you want it to "loop", and then generate a waveform of zero volts. The NI 5411 has the hardware to count number of loops, and trigger, etc.
I hope this helps.
Jerry

Similar Messages

  • 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

  • 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.

  • Generate a pulse train using a count from a quadrature encoder as the clock

    I am trying to generate a pulse train with the same frequency as my quadrature encoder.  Every time the encoder counts, I want the pulse to go high until the next count and then go low and so on.  I am using a 6602 PCI card and a BNC 2121 accessory.

    Maybe I'm not understanding your app, but I *think* you and I are approaching it from two very different directions.
    As I understand it, you'd like to emit a pulse with each quad state change.  Then that pulse would act as a counter Source signal.  The counter will then increment on each pulse, to keep track of accumulated position.  Further, you'd use your device-under-test (DUT) as a counter Gate signal, which would buffer the position count each time there's a rising edge on your DUT.  The end result is a buffer of position values, captured at each rising edge of your DUT.
    I'm talking about a different approach to produce the same data.  You'd use 2 tasks on a M-series board.  One of them is a hardware-timed digital input task based on "change detection."  Each time one of the specified bits has a transition, your whole set of digital input bits can be captured and an internal "change detect pulse" is generated on the board.  This task should be sensitive to the DUT edges.
    The other task would be a buffered position measurement.  It would receive the reference encoder inputs and internally do quad decode and keep a running count.  The sampling clock for this task would be specified as the other task's "change detect pulse."
    Net result: on each specified edge of your DUT, you'll buffer a reference encoder position value and a digital state of your DUT.  You can choose to be sensitive to rising edges, falling edges, or (!!!!) both at once. You can also choose to be sensitive to many bits simultaneously.  These are better capabilities than you get with the 6602 alone.
    I *think* the 6220 should be ok, based on a quick overview of specs.  I assume your 3.6 MHz is the rate of ref encoder quad state changes, right?  In the approach I'm suggesting, you only need concern yourself with the rate of DUT edges which appear to be in the 10's of kHz or less.
    Gotta go for now.  Post back if any further questions.
    -Kevin P.

  • Generate a pulse train

    How do I generate finite pulse train of 3 pulses of 25us pulse width, pulse period (1/(7000Hz)), and retrigger the same finite pulse train every 588.23us with the PCI-6602?
    What are the externals connections?
    What is the right Labview programming?

    this can be done with the 6602 using multiple counters, but this board has 8 so you will still have many left over for other tasks.
    You will need essentially 2 tasks, one taks is a retrigerable gated finite pulse train and the other is a simple finite pulse train.
    I have done something similar using DaqMX and LV 7.0
    To create the finite pulse train, create a CO.PulseTime task, create a channel setting the high times and low times (25 microseconds)and set the low polarity. I will assume that such a pulse train is going to trigger some external event or other DAQ card. Next set the timing to be implicit and sample mode to be finite and the number of pulses to be 3. To handle the retriggering and gate properities use a channel properitiy node and select:
    StartTrigType = Digital Edge;
    Start.Retrigerable = True;
    Start.DigEdge.Edge = Rising;
    Start.DigEdge.Src = PFI number of the out from the continious pulse train.
    This last option will allow you to route the trigger from the controlling pulse trian to trigger your finite pulde train.
    Now set up a second task to put out a continious pulse train with the period equal to the total durration between finite pulse trains (~500microseconds I dont have the exact number in front of me).
    After creating these two tasks, start the retriggerable task first.
    now when you start the continious pulse train you will get a finite pulse train of 3 pulses every time the rising edge of the continious pulse train fires. Stop and start the continious pulse train using software at will but only stop the finite task when you are done. Hope this helps.
    -Paul
    Paul Falkenstein
    Coleman Technologies Inc.
    CLA, CPI, AIA-Vision
    Labview 4.0- 2013, RT, Vision, FPGA

  • Generating interruptable pulse train

    I have a PCI6071E board and I'd like to use its counters (DAQ-STC) as a triggered pulse generator as follows.
    I get an 50% duty cycle pulse F ~ 10Hz (F is inaccurate). On each lo->hi edge I want to generate a train of 50 pulses using the counters.(*) If next trigger edge occurs before the train finishes, I'd like to immediately reset the current train (the output should be 0) and to start next one.
    There is an example of how to generate a finite-length train, but it fails to treat the (*) condition. As far as I understood, there is no hardware "reload" to the DAQ-STC counter. Is there another solution ?
    If it's impossible, is there any cheap dedicated counter board with an RTSI bus and an option to perform a hardware "realoa
    d" ? Any other options to solve this problem ?
    Thank you,
    Sergey.

    Hello;
    Unfortunatelly, you can't accomplish that task with the STC counter chip. The STC counter doesn't support triggering operations.
    You will need to migrate to one of the 660x counter boards so you can catch the trigger edge.
    As far as the hardware reset is concerned, there is no National Instruments device that support that operation. Once the pulse generation is started by the trigger pulse, it will run freely in hardware until it generates all pulses of the train. In case another trigger pulse comes while the pulse train is being generated, it will be ignored by the hardware.
    Regards
    Filipe A.
    Applications Engineer
    National Instruments

  • Generate Digital Pulses BNC 2120

    Hello,
    I am new to LabView and I am trying to use a DAQ Assistant to generate a discrete number of digital square pulses to be fed to a stepper motor driver via BNC 2120.  But I don't know how to go about doing this.
    I had an idea that I would use a Timed Sequence with 2 frames, the first frame would have a DAQ in it, and there would be a 1-D array of Boolean (TRUE) input in to the "'data" field of the DAQ. 
    Then the second frame would have a DAQ in it, and there would be a 1-D array of Boolean (FALSE) input in to the "'data" field of the DAQ. 
    But like I said I am very new to LabView and so I don't know if this approach makes sense. Please offer some suggestions!

    Hi all.
    I am currently doing a final year project to run six stepper motors using labview. 
    I was using an arduino mega to control the motors. When I had wrote the program to control the motors realized I only had enough outputs to control one motor.
    Now I intend on using the BNC 2120 to generate the pulses to run the motors but I have no idea where to start. 
    Any help would go along way. 
    I am using 6 Digital inputs for each motor. i have attached the VI i am using
    thanks in advance
    Attachments:
    StepperMotor1 project.vi ‏28 KB

  • Simultaneously generate a pulse with each AO iteration

    Dear Filipe :
    Would you please take a look at the comment of the question "Synchronize counter and 2AO boards"
    I don't know whether you have read it.
    Is it possible to generate a pulse train instead??
    Thanks!!

    Dear Filipe:
    I attach a Word file,and I describe my problem in it.
    Thanks!!
    Attachments:
    Generate_a_delayed_pulse_with_AO_boards.doc ‏25 KB

  • 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

  • Generating a pulse train

    Hello everyone,
    I'm using one counter timer from the DAQ card PCI-6014. I want to generate a pulse train with this output where I can control the number of pulses and the frequency of the pulse. The duty cycle is not important, I want to use the default value, i.e. 50%.
    I have used the vi called "train_impulsion2.vi" with the following values:
    -number of pulses = 10
    -frequency = 1 Hz
    -duty cycle = 0.5
    When I connect the output from the counter timer 0 to an oscilloscope (pin 2 and pin 53), what I see is a constant 5 V for the 10 sec. I don't see the 10 changes from 5 V to 0 V as it would be expected.  No falling or rising edges are observed.
    However by using the DAQ assistant with the vi "daq_assistant_pulse_train.vi", with the following numbers:
    -time high = 500 ms
    -time low = 500 ms
    -generation mode = N samples
    -number of samples= 10
    I'm able to observed what I want, i.e. 10 changes from 5 V to 0 V on the oscilloscope.
    How can "train_impulsion2.vi" works like "daq_assistant_pulse_train.vi"? Thanks a lot
    Marc  
    Attachments:
    train_impulsion2.vi ‏21 KB
    daq_assitant_pulse_train.vi ‏101 KB

    Hello everyone,
    Everything is now ok. I didn't put the correct leads inside the oscilloscope. That's why I wasn't measuring any rising or falling edges. Doh!!!!!!!!!!!!!
    Marc

  • 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 can we generate a pulse train with variable inster pulse delays?

    I want to generate a pulse train with random inter pulse delays (100us-10000us) and the pulse width would be 50-100us. I programmed for single pulse generation using counter cfg,a for loop contaning set attribute parameters pulse spec 1 and pulse spec 2. I changed the pulse spec 1 value in every cycle
    This program is generating the pulses but not the exact values in the sense the some times the delays are more than 10 msec. As per the program the delay should be maximum 10 msec. please help me ASAP.
    thanks
    thota

    Hey Thota,
    I would suggest to take a look at the example program linked below. It shows how to change pulse specs on the fly. You have to be make sure you are ignoring a certain error when doing this.
    Pulse Train Generation with Changing Pulse Specs (PWM)
    http://sine.ni.com/apps/we/niepd_web_display.displ​ay_epd4?p_guid=B45EACE3E21756A4E034080020E74861&p_​node=DZ52328&p_source=External
    I hope this helps.
    Regards,
    Todd D.
    NI Applications Engineer

  • How to use single Timer to generate PWM PULSE, Pulse ON time measuremen​t, Event time measuremen​t1,Event time measuremen​t2

    Hi,
    I am planning to use a single Timer to generate PWM PULSE, Pulse ON time  measurement, Event time measurement1,Event time measurement2 some one please suggest me how can I achive this.
    Thanks in advance..
    Michael

    Hi Michael,
    It would be really good to understand your application a little more so that any specific needs that you have may be met. In the meantime, I would also suggest searching on ni.com for "pwm" or other keywords that relate to your application. You will see a faceted navigation on the left side that allows you to narrow your search for example code, tutorials, etc.
    Please post back with more information and the community will be able to help out with suggestions.
    ni.com search for "pwm"
    Mark E.
    Precision DC Product Support Engineer
    National Instruments
    Digital Multimeters (DMMs) and LCR Meters
    Programmable Power Supplies and Source Measure Units

  • How generate real pulses in myRIO from pulse train function

    Hi,
     I need to generate modulated pulses for an experiment. I should be able to select the number of pulse for second and their frequency, variate the amplitude among then and produce them in myRIO. To build those pulses I used the tool pulse train; however, I am stuck about how to generate those pulse from the pulse train function in real pulses in myRIO. The PWM tool, aparently, doesn't allow to select and change the amplitude between the pulses. Does anyone knows how to produce them from pulse train or even another way to do so? Thanks.
    Solved!
    Go to Solution.

    I need that each pulse have the same amplitude in the same pulse train, but just in case I want to change to each pulse different I made this draft code where I can manipulate everything that I need and change with few adjusts to the second option. I can control also the gap time. The program is running fine so far, but I still have one more task to do that is struggling me. I need to generate numbers inside the range (max-min) according to the steps with no repeatition. In case of lack of option the number does not need to to follow the rule of 2up1down. After run all the numbers between the range I need to start all over again. This code should be attached probably after restrict the number to the steps.  Any idea? The code is still not clean, which may cause confusion in some aspects. However, all I need to change is the beginning of the code to attach the non repeatition cicle. Thanks.
    Attachments:
    MonophasicGenerator.vi ‏36 KB

  • Generating a different sequence for 32 different  warehouse....!!!!

    We have got around 32 different warehouse where various material are stored......
    I have to design a form in such a way that i generate a different sequence number for the materials stored in 32 different ware house
    ex
    name:suhail
    pwd:123
    warehouse: America
    Now after i login i want to generate a  sequene number only for america's ware house say 21001
    name:ANDREAS
    pwd:345
    warehouse:France
    for this user the sequence number generted  should be different  say some thing like 31001can any one help me out with this :)
    Edited by: Suhail Faraaz on Oct 2, 2010 10:37 PM

    Suhail,
    I'm not a big fan of using "Intelligent Numbers." What happens when you reach the maximum number for a given warehouse (France's value range = 31000 - 40999)? I have seen this methodology cause problems time and time again. The better option would be to use a generic sequence and a seperate warehouse identifier on the record. This offers the greater flexibility and doesn't force limitations on the number of items that can be assigned to a given warehouse. If you are not locked into this numbering method, I recommend you add a warehouse_ID column to your table and create a unique ID for each warehouse and record this unique_id in the warehouse_ID column. Then use a generic Sequence as Andreas suggested. In addition to greater flexibilty, this method also provides a unique ID that could be used to Partition your warehouse tables if the size of the tables become a performance issue later.
    Hope this helps,
    Craig B-)
    If someone's response is helpful or correct, please mark it accordingly.

Maybe you are looking for

  • "transaction variant" functionality in the Web Client

    I'm opening this message for a customer this message is a consulting... Thanks in advance, Daniel Kaoro Kobashigawa In the SAP GUI we have Transactions that use transaction variants. For example we have ZBUP1A that is based upon BUP1. It uses a trans

  • My computer will not load Pay per-view sites

    I have tried numerous times to pull up payperview sites. When I try to access the site i get the message: "Safari can't open the page ....... because it can't find the server ....... I have called customer service for the sites and they have tried tr

  • Which AIR SDK versions will run which iOS versions

    Where can I find information about which AIR SDKs can target each version of iOS. Specifically, we are updating our app from AIR SDK 3.4 to the current 3.7; however, we aren't sure which versions of iOS the new SDK will work with. There is an air faq

  • Forms and reports server characterset aix

    My database is in UTF8 mode and is displaying all characters correctly. However when I run a report using the forms and reports server it uses Western European Character Set. I have tried re-installing forms and reports server in order to fix this ch

  • Flash player preferences keep changing

    Hi everybody, My Flash Player preferences (in the preferences pane) keep returning to the default settings after i have made changes to the settings. It seems to take about a week between the time i set the preferences till they return back to the de