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

Similar Messages

  • How to use PXI 6071E daq card to complete multichannels scan with high sampling speed

    I used pxi 6071E daq card to acquire 115v 400hz AC signals.when I use mutichannel scan function,I find that the voltage of waveforms have much more error.The voltage error is about 0~15v.please you can tell me why this happened?how to solve it.
    Attachments:
    多通道监测4.vi ‏199 KB

    Sunny;
    As you are scanning multiple channels and the signal range is high, you can try to set the interchannel delay a little higher. The interchannel delay is the time which the multiplexer will take to switch to the next channel. If that time is to short, the instrumentation amplifier can have problems to settle, and then an error at the reading will happen.
    You can change the Interchannel delay at the AI Config.vi.
    Hope this helps.
    Filipe

  • How to structure the DMA buffer for PXie 6341 DAQ card for analog output with different frequencies on each channel

    I'm using the MHDDK for analog out/in with the PXIe 6341 DAQ card.
    The examples, e.g. aoex5, show a single Timer  (outTimerHelper::loadUI method), but the example shows DMA data loaded with the same vector size.
    There is a comment in the outTimerHelper:rogramUpdateCount call which implies that different buffer sizes per channel can be used.
       (the comment is: Switching between different buffer sizes will not be used)
    Does anyone know what the format of the DMA buffer should be for data for multiple channels with different frequencies ?
    For example, say we want a0 with a 1Khz Sine wave and a1 with a 1.5Khz sine wave.  What does the DMA buffer look like ?
    With the same frequency for each channel, the data is interleaved, e.g.  (ao0#0, ao1#0; ao0#1, ao1#1, ...), but when the frequencies for each channel is different, what does the buffer look like ?

    Hello Kenstern,
    The data is always interleaved because each card only has a single timing engine for each subsystem.
    For AO you must specify the number of samples that AO will output. You also specify the number of channels. Because there is only one timing engine for AO, each AO will channel will get updated at the same time tick of the update clock. The data will be arranged interleaved exactly as the example shows because each AO channel needs data to output at each tick of the update clock. The data itself can change based on the frequency you want to output.
    kenstern wrote:
    For example, say we want a0 with a 1Khz Sine wave and a1 with a 1.5Khz sine wave.  What does the DMA buffer look like ?
    With the same frequency for each channel, the data is interleaved, e.g.  (ao0#0, ao1#0; ao0#1, ao1#1, ...), but when the frequencies for each channel is different, what does the buffer look like ?
    In your example, you need to come up with an update rate that works for both waveforms (1 KHz and 1.5 KHz sine waves). To get a good representation of a sine wave, you need to update more than 10x as fast as your fastest frequency...I would recommend 100x if possible.
    Update Frequency: 150 KHz
    Channels: 2
    Then you create buffers that include full cycles of each waveform you want to output based on the update frequency. These buffers must also be the same size.
    Buffer 1: Contains data for the 1 KHz sine wave, 300 points, 2 sine wave cycles
    Buffer 2: Contains data for the 1.5 KHz sine wave, 300 points, 3 sine wave cycles
    You then interleave them as before. When the data is run through the ADC, they are outputting different sine waves even though the AO channels are updating at the same rate.

  • PCI 6602:How can I use the digital lines of the board and in the same time to generate pulse train using a counter?

    Hello!
    My problem appeared when I tried to update my code from Traditional NI-DAQ Legacy to DAQmx.
    I am using 2 counters (counter 5 and counter 7)  from PCI-6602, to generate pulse train, and also the Digital I/O lines of the port 0 (the lines form 0 to 7). What I do in my application is that I am starting to generate the pulse train on the output of the 2 counters, and after that I am playing with the state of the digital lines.
    In traditional there was no problem using the counters and the digital lines in the same time, everything was going perfectly, but in DAQmx this is not possible.
    What happens: I start to generate pulse train on the output of the counters,  no errors encountered, but when I try to modify the state of one line of the digital port the generation of the pulse train is stopped. This is happening when I start the task associated to the digital port.
    My question is: it is possible to create a channel on the digital lines without altered the channels created for the counters?
    Another thing what I manage to see using the  "Measurement & Automation Explorer" and Test panels for PCI-6602, basically is the same thing, I generate pulse train on the output of the counter 7 and try to start a task on the digital line, but I get one error :
    "Error -200022 occurred at Test Panel
    Possible Reason(s):
    Measurements: Resource requested by this task has already been reserved by a different task.
    Device: Dev4
    Terminal: PFI8"
    Instead if I use the counter 0 or counter 1 to generate pulse train I don't encounter the same problem.
    Which resources are used by the counters 2 to 7 from the PCI-6602 board and the counters 0 and 1 do not use?
    Thank in advance for any replies!
    Ciprian
    Solved!
    Go to Solution.

    Hello Jordan, thank you for your reply.
    I am sorry but I can not see or run your example, I don't use LabView, I use Visual C++ for developing.
    Here is the code for generating the pulse train:
    GeneratePulseTrain(unsigned long ulCount1, unsigned long ulCount2)
        short nStatus = 0;
        nStatus = DAQmxCreateTask("",&m_taskHandle);
        nStatus = DAQmxCreateCOPulseChanTicks (m_taskHandle, "Dev4/count5", "", NULL, DAQmx_Val_Low, 0.0, ulCount1,ulCount2);
        if( bTriggerMode == true) // if hardware trigger is enabled
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_ArmStartTrig_Type, DAQmx_Val_DigEdge);
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_DigEdge_ArmStartTrig_Edge, DAQmx_Val_Rising);
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_DigEdge_ArmStartTrig_Src,"Dev4/PFI17" );
        //set the internal timebase
        nStatus = DAQmxSetCOCtrTimebaseSrc(m_taskHandle,"Dev4/count5","20MHzTimeBase" );
        nStatus = DAQmxStartTask(m_taskHandle);
        return nStatus;
    And the code where I try to set the digital line:
    SetChannelState(short nState)
        short nStatus = 0;
        uInt8 wrtBuf0[1]={0};
        nStatus = DAQmxCreateTask("",&m_taskHandle);
        // Configure line as output 
        nStatus = DAQmxCreateDOChan (m_taskHandle, "Dev4/port0/line0", "", DAQmx_Val_ChanPerLine);
        nStatus = DAQmxStartTask(m_taskHandle);
        wrtBuf0[0] = nState;
        nStatus =DAQmxWriteDigitalLines (m_taskHandle, 1, 0, 0, DAQmx_Val_GroupByScanNumber , wrtBuf0, NULL, NULL);
        nStatus = DAQmxWaitUntilTaskDone(m_taskHandle,10);
        nStatus = DAQmxStopTask(m_taskHandle);
        nStatus = DAQmxClearTask(m_taskHandle);
        m_taskHandle = 0;
        return nStatus;      

  • HT201493 How can I find my friends on my iPhone 4 with an apple i d already use

    How can I download find my friends on iPhone 4 with an Apple IDE used before

    You can access internet radio stations using an app such as TuneIn. There are many others as well.

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

  • How to generate a program counter

    Hi, buddies.
    I face this situation that I want to make a counter to count how many user run a special program(report or function module) in R/3 which will consume lots of resourses during the operating. I hope to utilize the counter to limit the numbers of the user.
    I am wondering whether there is global parameter I can use or there is another method to realize my requirment.
    Looking forward your replies.
    Thanks in advance.
    Alex

    Hi,
    Use IMPORT, EXPORT statement to achieve this..
    Have this code at the end of the program..
    DATA: V_RUN TYPE INT4.
    Get the counter..
    IMPORT V_RUN FROM DATABASE INDX(ST) ID 'PGM_RUN'.
    Increment by 1 to know to how many times this program has been executed.
    V_RUN = V_RUN + 1.
    Update the country
    EXPORT V_RUN FROM DATABASE INDX(ST) ID 'PGM_RUN'.
    Thanks,
    Naren

  • Can I Control the Pulse offset using the Counter Out?

    Hello Everyone.
    I am trying to generate the Pulse as below;
    I have seen and understood an example to generate a pulse waveform "GenDigPulseTrain_Continuous".
    However, I can not control the offset of the pulse train.
    Although the function gives me "initial delay(The amount of time in seconds to wait before generating the first pulse)",
    I can not shift "t_dead" cycle.
    /*01.Frequency Control*/
     // The units to use to define pulse frequency.
      m_pTaskWrite->COChannels.CreatePulseChannelFrequ​ency(vecstrings[0]/*LPCTSTR counter*/,
       "PWM_C0_CH_HIGH"/*LPCTSTR nameToAssignChannel*/,
       DAQmxCOPulseFrequencyUnitsHertz,
       DAQmxCOPulseIdleStateHigh,
       dDeadTime, 
       m_nFncFrequency/*frequency*/,
       prDuty.second/*dutyCycle*/);
      // The units to use to define pulse frequency.
       m_pTaskWrite->COChannels.CreatePulseChannelFreque​ncy(vecstrings[1]/*LPCTSTR counter*/,
        "PWM_C0_CH_LOW"/*LPCTSTR nameToAssignChannel*/,
        DAQmxCOPulseFrequencyUnitsHertz,
        DAQmxCOPulseIdleStateLow,
        dDeadTime/**2 + (prDuty.second *dCycleTime)*/, 
        m_nFncFrequency/*frequency*/,
        prDuty.second/*dutyCycle*/);
    Please let me know how I solve this problem.
    Thank you

    Dear Zl,
    Counting pulses is much easier with the FP-QUAD-510 or FP-CTR-500, but can be done with the FP-AI-110.  You can't directly count the pulses with a FP-AI-110, but you can do it in software. Bring in the data by doing a normal read. Then, using shift registers, if the previous voltage is less than .8V (low) and the current voltage is more than 2.5 (high), increase the pulse count. I have attached a program that shows what to do with the data once you bring it in. I took the data from an array outside the while loop, but your data will be brought in one point at a time inside the while loop. One thing to take note of, since Fieldpoint brings in data at 1 kS/s, this will only work with pulses slower than 500 Hz. The farther the duty cycle is away from 50% duty cycle, the slower the signal must be in order to catch the pulses correctly. Please let me know if you have any questions. Have a great day!
    Sincerely,
    Marni
    PS- Please only post question once.
    Attachments:
    pulsecount.vi ‏22 KB

  • How can I delete my first apple ID it interferes with apps I want to buy using my iCloud id

    I recently had my macbook pro worked on at apple, with great success.  I was told I would be able to delete my first apple ID which is a me.com account
    I now use I cloud and want the other to go away for good..  But it isn't as they said it would.  It interferes with purchases on my I-phone and I don't even remember the password.  Is it possible to delete it ? if so How ???

    You cannot delete an Apple ID. You can just stop using it. You should change the iCloud Apple ID address you now are using in the device to the new one you wish to use. I suggest you tab Settings > General > Reset > Settings, then reconfigure your phone this time using your new Apple ID.

  • Hello  How do I get out of this problem (Activate ipad) with this problem, I can not use my ipad as before, I hope that you will find the solution to me

    How do I get out of this problem (Activate ipad) ?

    What is happening when you try to activate? Describe the problem with some detail please.

  • Pulse out for every Nth pulse in using 6024E counter?

    Is it possible to get (continuously)a pulse out of the 6024E counters for every Nth pulse of an external signal going to the source pin? A VI and the description of the connections will be appreciated.appreciated
    Scientia est potentia!

    Hi magvar,
    Depending on your application development environment (ADE) API (LabVIEW, CVI, VC++ etc.) you will want to configure the counter for continuous pulse generation. There are two pulse specs that you have to configue. The first configures the delay in number of edges of your source and the second configures the width of your pulse. Therefore if you set pulse spec (ND_COUNT in C code) 'A' to N/2 and pulse spec 'B' to N/2 then your pulse train will output a pulse every Nth pulse on the source.
    Each ADE will have a shipping example that demonstrates this configuration. These examples ship with NI-DAQ and can be found in the NI-DAQ folder of National Instruments unless it is LabVIEW or CVI in which case it should be in their respective direc
    tories. Hope that helps. Have a good day.
    Ron
    Attachments:
    TIOgenSquareWave.C ‏6 KB

  • How do i print from internet in black ink only with my mac osx 10.5 using hp 6510 all in one

    i can not get my IMAC OS X 10.5 to print only black ink from the internet, using my new HP 6510 all in one printer.  HELP
    This question was solved.
    View Solution.

    With pleasure!
    Great to know it worked for you
    Say thanks by clicking the Kudos thumb up in the post.
    If my post resolve your problem please mark it as an Accepted Solution

  • How do you select an item from a table indicator with a mouse click and then use that selection in code?

    Hi,
    I am displaying a list of filesfrom a directory  in a table on the front panel of a VI as part of a program I am developing. I would like the user to be able to select from that table so that particular file can be processed. Is there a way to do this?
    Thanks,
    Aaron

    you'll find that most of the useful functionality of the labview user control interface is hidden within the property node and invoke node functions. just right click a control or indicator terminal on the block diagram and mouse over to create, then to property node or invoke node. lots of fun stuff in there. attached is an example. one file is saved for labview 8.0, the other is saved for labview 8.6.
    Message Edited by Root Canal on 10-16-2008 11:17 AM
    global variables make robots angry
    Attachments:
    file selection table.vi ‏26 KB
    file selection table lv 8.0.vi ‏42 KB
    file selection table.PNG ‏18 KB

  • How can Hebrew letters in a pdf file be reproduced with Hebrew as a word doc using adobe export pdf?

    I subscribe to Adobe Export PDF and it has worked well. Today I uploaded a PDF file with Hebrew letters and the downloaded Word doc did not format the Hebrew letters as Hebrew letters. Is there a way around this?
    TYIA
    John

    Try Goodreader in the App Store. It should do the job for you.

  • How do you configure the antialiasing filters on a PXI-6120 DAQ card?

    I'm am using Measurement Studio 7.0 and C#. I am trying to use the AIParameter function in the CWDAQTools control.

    I was originally trying to use the approach in the link, but am getting a type mismatch error. Here is my code. Maybe you can see what I'm doing wrong.
    int device = 4;
    CWAIParameterNames paramName = CWAIParameterNames.cwaiFilterSetting;
    string channelString = "1";
    CWDAQParameterOperations operation = CWDAQParameterOperations.cwdaqParameterSet;
    double floatIn = 100000 //100 kHz for 6120;
    CWAIParameterValues valueIn = CWAIParameterValues.cwaiVolts;
    string stringIn = "";
    bool boolIn = false;
    object deviceOut = new int();
    object valueOut = CWAIParameterValues.cwaiVolts;
    object floatOut = new double();
    object stringOut = new string(new char[0]);
    object boolOut = new bool();
    axCWDAQTo
    ols1.AIParameter(device, paramName,
    channelString, operation,
    floatIn, valueIn, stringIn,
    boolIn, ref deviceOut,
    ref valueOut,ref floatOut,
    ref stringOut,ref boolOut);

Maybe you are looking for

  • How can I stop iTunes from launching and playing by itself?

    iTunes launches and plays by itself, which is very annoying, given that there is no discernable reason for it to do so. Nothing in preferences should allow this. No device is connected. The library is not being shared. Has anyone found a solution to

  • Inspection lot origin don't work in COA

    Hello All, I have created a COA Profile (QC01), Where in I have assign inspection type 89 in the field "Insp.lot origin" and "Inspection Type". Now as per the F1 help suggest I am expecting that system will not allow me to print COA for those lots do

  • Installing Flash Player in Foxfire 3.6

    I have been trying to install Flash Player in Foxfire 3.6.  My OS is Windows XP Media Edition.  It says Flash Player is installed but it's not.  Java Script is enabled.  I have uninstalled and reinstalled at least a dozen times.  Any other ideas?

  • Missing Grid!!

    Hi guys, my grid is missing! i'm currently working on a game, and tried adding menu control buttons; the menu buttons work well, but my grid is now missing!! This is really both funny and frustrating.. can anyone tell me what's missing with my code?

  • Q: Need help troubleshooting Service registration is RAC (on Windows)

    Services were defined with 'srvctl' and started at the OS level. This causes the Service to be created in the Database and visable in DBA_SERVICES table, however nowthing show up in DB parameter SERVICE_NAMES. IF we then execute DBMS_SERVICES.START_S