2 counters pairs / pci 6602

This program I enclose within this question record the arrival time of photons on a PMT detector. How could I change this program so I could use 2 PMT detectors ( 2 counters pair instead of one counter pair)? I d like to get a graphic output like the one I enclose (GIF image). Thanks. anne
Attachments:
new_intensity22.vi ‏284 KB
GRAPH_INTENSITY.gif ‏8 KB

Anne,
I believe you could modify this program by copying/pasting the entire block diagram for the outer sequence (frame 1) into that same sequence frame. LabVIEW will then use multiple threads of execution for the two parallel paths of execution that now exist. Remember you'll need to change the counter numbers. Both parallel paths of execution will end up working, and you still will want the results graphed on the same chart by the local variable mechanism that you are already using.
David McClelland
National Instruments

Similar Messages

  • Use PCI-6602 Counters from different threads

    Hello,
    I have read that DaqMX is thread safe. So is it possible to use several Counters form the PCI-6602 form different threads at the same time?
    Thanks
    farmer

    Hi Farmer,
    the DAQ driver is thread safe, that means, that the driver manages the
    data flow to your application and no data gets lost in case of
    simultaneously tasks in an multichannel acquisition for example. So the
    mechanism of how to deploy the data from different channels in your
    application threads will be managed by the driver.
    It's possible to create parallel threads where an data aquisition with
    different channels is running. The new DAQmx driver is a multithreaded
    driver, it improves the performance and programming simultaneously is
    much easier.
    Have a look on the following link for further information to that,
    http://digital.ni.com/public.nsf/allkb/E1C8492854855FA98625689E0072E832?OpenDocument
    regards,
    Nikolai

  • Conceptual problem in using a PCI-6602?

    Hi, All You Wild and Crazy NI/LabVIEW Types --
    I have a problem that's been close to sending me off the deep end for more than a month now, and I think that I'm so enmeshed in it that I can't see the forest for the trees anymore. I'd like to apologize in advance for the length of this post, but there are some details that might or might not be important, and I'd rather make the mistake of giving you too much information than not enough.
    We do impact-cratering experiments, using a gun to launch (usually) spherical projectiles at a variety of targets. One of our big efforts is to measure the velocities at which material is ejected from growing craters. We do that with a line-generating laser, oriented so the "sheet" of laser light is perpendicular to the target's surface and through the impact point; we strobe the laser at a programmed rate (with our PCI-6259 board) and take a time exposure of the scene with a Nikon D100 DSLR. When target material -- usually grains of sand -- is ejected, the laser illuminates a "slice" through the curtain of ejecta, illuminating a small portion of the fragments numerous times in their trajectories. Since we know the scale of the photograph and its orientation relative to the laser's illumination, and we also know the rate at which the laser is flashing, we can easily calculate the velocities of the illuminated particles. I'm attaching a picture (file 4044, cropped.jpg) of an example taken with an older camera to give you an idea. In the picture, the laser's illuminating the scene from the right of the frame and the projectile flew into the picture from the top of the frame, traveling along the left-hand edge. The brightest portion is the flash from the impact, and the rest of the parabolic trajectories are the grains of sand in flight. The target bucket, full of coarse sand, is the elliptical looking cylinder at the bottom of the picture. It's roughly 28 cm in outside diameter, if you'd like a scale.
    As you might imagine, with our projectiles moving anywhere between 0.7 and 3 km/s, sequencing everything is pretty important. We're using (or trying to use) LabVIEW to do all of the sequencing, instrument control, and data storage. Things are going pretty well so far, except for what I'll describe in more detail below. A couple more things, though, first. It's important that we measure the projectile's speed in each shot, as that controls impact energy and momentum, which are critical to know in a given experiment. We do that with simple laser-photodetector pairs (which we normally call "velocity stations") arranged along the projectile's trajectory. As the projectile passes between a laser and its detector, its shadow is detected and a TTL pulse is sent to our PCI-6602 board. Depending on the experiment, we use three or four such laser-dector pairs. They use counters 0, 1, 2, and 3. We know the distances between the laser stations and, once we get the times between detections, it's s simple matter to calculate the projectile's velocity.
    We also use LabVIEW to fire the gun, and we do that because opening the camera's shutter has to be synchronized with the firing pulse, which currently is sent via P1.1 on the 6259. Here's the problem: when we test the laser-detector arrays in a "standalone" mode (that is, without any other tasks or operations being done with LabVIEW), they work infallibly. It's when we try to use LabVIEW to fire the gun that we get either very erratic results from the velocity stations/6602 or no results at all.
    I've tried a range of things, from starting the two-edge measurement task before the firing signal is sent, to trying to force things with a timed sequence, to doing things with brute force via a seuqence structure. When I try to start the two-edge measurement task first, though, the firing signal isn't sent until the counters time out. This of course, wrecks the experiment, because all of the timing is then messed up. The VI that I've attached (Version 1.vi) is a HIGHLY simplified version of the initial attempt I made at doing this, with all sorts of background stuff removed just so I can cut to the chase. (Only one two-edge measurement task is shown, for instance.)  I think that the VI is pretty self-explanatory (and embarrassingly primitive), so it probably doesn't need much in the way of explanation. Counter 7 and PFI 0 on the 6602 are used to accept the signal from the firing button and trigger the event structure, which contains the two-edge separation and gun-firing tasks. (In reality, I use a separate VI to have three to four concurrent two-edge separation tasks running concurrently, one for each velocity station.) I start the two-edge separation tasks first so the detectors and counters are ready for the projectile. It's not necessary here, but I kept the 500 ms wait frame in this example because that's why the sequence structure exists -- to allow the shutter of the Nikon to open completely before the gun fires. After those 500 ms, the firing signal is sent to the circuit that actually fires the gun.
    What happens in this configuration is that the second frame of the sequence structure doesn't execute until the 5-s timeout transpires in the two-edge separation task. I've also tried this using a line on the 6602 to fire the gun instead of P0.1 on the 6259, but that ends up with the same result. (Both counters are used on the 6259 to strobe the main illumination laser, so they're unavailable, if you're wondering. In any case, we need four counters for the four velocity stations.)
    FINALLY, my question: What am I doing wrong, here? If I put the two-edge separation tasks in the same frame of the sequence structure as the firing task, the gun fires when it's supposed to, but we get no velocity measurements. I've also tried to force the timing with another version of a sequence structure; I'm attaching another very simplified version below as Fire and speed example.vi.
    After you recover from your violent fits of laughter, I'd really appreciate hearing what you might recommend. (And no, surrender isn't an option.)
    Thanks for taking all of your valuable time to read this huge post -- I really appreciate it!
    Mark
    Attachments:
    4044, cropped.jpg ‏197 KB
    Version 1.vi ‏35 KB
    Fire and speed example.vi ‏30 KB

    I agree with all 3 of Kevin's points.  His first suggestion will probably fix your problem (see below).  The 2nd and 3rd suggestion would improve efficiency and responsiveness, but #2 might not be possible since independently triggering four outputs in hardware would require the use of 4 counters (on the 6602 anyway) which might be busy doing other tasks in your application (although if you don't need the stations to trigger independently then you could implement this with a single counter).
    I think I have an explanation of the problematic behavior you are seeing based off of the following bits of information from your post:
    1.  Running the small example code by itself works flawlessly, but adding other simultaneous functionality fails.  You mentioned you are doing this on 4 stations, so I'm assuming 4 counter input tasks running in parallel.
    2.  The behavior you are seeing is that the 2nd sequence does not execute until after the read times out (note that the sequence is supposed to be executing in parallel with the read).
    It sounds like the problem is coming from a combination of calling into DAQmx Read before data is available (this consumes one of the threads that LabVIEW has allocated to your application until DAQmx Read finishes executing) along with the fact that LabVIEW allocates 4 threads per execution system per priority by default.  Since all of your threads (from what I can tell) are executing on the same priority, the 4 reads you are calling will block anything else from executing until they have completed.  By then it's too late and the firing of your gun happens after the counter task has already timed out.
    You *may* increase the number of threads allocated to your application by using a VI that is included with LabVIEW (vi.lib\Utility\sysinfo.llb\threadconfig.vi) and this would also probably remedy the behavior you are seeing.  However, rather than throwing more threads at this application I think the better solution would be to change the sequencing of your tasks like Kevin suggested ("create and start the 2-edge task before entering the sequence structure, and defer the 2-edge *reading* until *after* firing the DO")--in doing this you would now expect to see data immediately upon calling DAQmx Read and you avoid the situation where Read is blocking indefinitely and consuming an application thread.  You could take this a step further by checking the Available Samples per Channel property (or using the DAQmx EveryNSamplesAcquiredIntoBuffer event) to ensure that data is actually available before calling Read.
    Best Regards,
    John Passiak

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

  • Maximum number of PCI-6602 cards in 1 computer?

    Is it possible to have 4 PCI-6602 cards in 1 computer?
    Are there any DMA channels or IRQ limitations we need
    to worry about?
    Our computer will have 1 graphics card in the AGP slot,
    possibly a PCI NIC ethernet card and possibly a PCI
    based sound card. It will also have an IDE controller
    with 2 hard drives and 1 CDRW.
    The PCI-6602 manual seems to imply that if you are
    using more than 3 counter channels that you must
    use the slower Interrupt based transfer mode which
    has a maximum transfer rate specified as 2000
    Reading/second. If there are 4 PCI-6602 boards in
    the same computer and all 8 of the channels are
    used on each board does that mean the total
    transfer rate is still 2000 Readings/sec? Or
    wo
    uld the total transfer rate be 8000 Readings/Sec
    since there are 4 PCI-6602's (2000 Readings/Sec
    for each of the 4 PCI-6602's)?

    Hello;
    The only concern you need to have is the number of IRQs available. As far as DMA channels, as the PCI bus itself has only 3 DMA channels available, all the devices that use DMA will share those 3 channels. But, as IRQs can't be shared, the number of counters you will be able to use will be the exact number of available IRQs you still have on your machine.
    As far as transfer rate, the maximum transfer rate will be 2000 Readings/sec, regardless the number of counters you are using.
    Hope this helps.
    Filipe

  • Count digital events on a Counter with pci-6602 with callback on CVI

    Hi,
    I'm using a PCI-6602 card with CVI 8.5 and I need to trig on event.
    On every pulse I received, I need to do some actions like increasing a counter, send a message on Rs232 etc.. I don't want to do any loop checking that the counter value has changed. I would like to use a callback to execute this code only on the edge or counter value event.
    My problem is that I don't know which function can do this. Is there any way to get an event on a pci-6602? 
     Thanks 
    James 
    Solved!
    Go to Solution.

    Hello.
    It's completely possible to create a callback that will allow you to do what you want when a edge will occur on an external signal you define.
    To do this, you can for exemple create a counting edges task that will use one of the 6602 counters,and the set your external signal to be the source of your sample clock.You'll then be able to register a callback with the function DAQmxRegisterSignalEvent, and your callback will be called each time an edge will occur on your specified sample clock source.
    Here's 2 links that explain the events in DAQmx and how to handle them in CVI. The example ReadDigChan-ChangeDetectionEvent.pr that ships with DAQmx examples (Hardware Input and Output<<DAQmx<<Digital measurements) can be very useful to understand how to do. This example creates a signal event callback to detect change detection for digital inputs.
    Regards.

  • Frequency divide by N doesn't work on Counter-Ti​mer PCI-6602

    Hello everybody,
    I tried to do something basic ( ?) with this Counter-Timer 6602 Board, and it doesn’t work.
    So I hope some people with more experience than me could understand what happens here.
    1) What I need:
    I need to generate 4 synchonised clocks, whose periods will be multiple of 1 ms.
    2) What I have:
    LabVIEW 7.0 and a PCI-6602 Counter-Timer Board in a DELL PC running under XP pro.
    The PCI-6602 Counter-Timer Board has 8 counter timers named CTR 0, CTR 1, ... CTR7.
    3) What I have already done, and that worked:
    - Generate a 1 kHz “Master Clock” signal from CTR 4, configured by “Continuous Pulse Generator Config.vi” (found in “Data Acquisition, Counters...).
    - configure CTR 0 and CTR 1 to work as frequency dividers, by use of “Down Counter or Divider Config.vi”.
    - Apply the output signal of CTR 4 (OUT ) to the SOURCE inputs of CTR 0 and CTR 1 by means of physical wiring in the SCB-68 connection box.
    When I do this, I get two nice secondary clock signals on my oscilloscope screen, ( with periods = 3 ms, or 5 ms or whatever multiples of 1 ms I choose) from CTR 0 and CTR 1 outputs , very clean and perfectly in phase with the 1 kHz Master Clock.
    So far, so good...
    But I still need 2 more secondary clocks...
    One would say: “No problem, do the same trick with two other counters...” Well, not so simple, it seems...
    4) What I tried to do, and that didn’t work:
    When I try to do the same frequency division with any of the remaining counters, (CTR2 to CTR7), the program stops and I get an error “ –10020 : Time base not valid “.
    I can’t figure out what happens here: I thought any counter could be configured to work as a frequency divider, but it seems not to be so, and I am stuck here.
    Has anyone an idea about how to fix this type of problem?
    Attached file: hor_div02New.vi
    Attachments:
    hor_div02New.vi ‏123 KB

    karolik,
    I'm just adding a followup in English. As Marc L. mentioned, the particular vi named "Down Counter or Divider Config" isn't compatible with the 6602. While the 6602 does have the ability to generate 4 synchronized clocks, a different syntax is needed. Here's how I'd do it:
    Traditional NI-DAQ
    1. Configure a continuous pulsetrain on CTR 4. Route its output to, say, RTSI 4. Don't start it yet.
    2. Configure CTR 0,1,2,3 for continuous pulsetrains using RTSI 4 as their "timebase source." Start them.
    3. Start the CTR 4 pulsetrain.
    4. Now CTR's 0-3 should generate separate clocks with synchronized phasing.
    DAQmx
    1. Configure a continuous pulsetrain on CTR 4. Don't start it yet.
    2. Configure CTR 0,1,2,3 for continuous pulsetrains using "Ticks" for units. Use a DAQmx property node (probably Channel property node, but am not 100% sure and don't have a LV PC handy to check) to specify that the "ctr4 internal output" should be used as the timebase. Start them.
    3. Start the CTR 4 pulsetrain.
    4. Now CTR's 0-3 should generate separate clocks with synchronized phasing.
    -Kevin P.

  • NI PCI-6602: semi-period measurement stops unexpectedly or returns wrong values

    Hi,
    Using an NI PCI-6602 card we try to measure the semi-periods of a digital signal.
    In "continuous sampling mode", 10 samples are collected in the buffer and then are read
    out.
    Up to 6 counters on this card are sampling the same signal in our testing configuration.
    Here we found these issues:
    1. Failure
    In principle, the measurement runs correctly, but one or more counters sporadically may
    suffer a complete failure. I.e. these counters don't provide samples anymore.
    Only after stopping and restarting the assigned task, a failed counter works again.
    Apparently, a counter failure is most likely to happen when
        - the sampled signal "changes", i.e. when the pulse width of the signal changes,
        - or when the computer load is high, e.g. when opening a window of another application.
    Every counter occasionally failed, but the issue was found very often at counter 1 of
    the PCI-6602 card, if we used counters 0 through 5 in parallel.
    Using another PCI-6602 card, the failures happened preferably on counters labeled "near"
    number 5.
    2. Wrong values
    Occasionally the "interpretation" of the sampled values changes, i.e. the length of the
    "high level" period is returned, where the "low level" period length should be given, and
    vice versa.
    This is our task configuration:
    Configuration done with MAX:
    Signal input range:    2 usec - 2 sec
    Custom Scaling:        None
    Sample mode:        continuous
    Buffer size:        10 Samples
    In addition these calls are made:
    ret = DAQmxSetDigEdgeArmStartTrigSrc( task->mHandle, <use the same terminal as is used for
    the signal to be measured>);
    ret = DAQmxSetArmStartTrigType( task->mHandle, DAQmx_Val_DigEdge);
    ret = DAQmxSetDigEdgeArmStartTrigEdge( task->mHandle, DAQmx_Val_Rising);
    ret = DAQmxSetCISemiPeriodStartingEdge( task->mHandle, <the channel>, DAQmx_Val_Falling);
    Best regards
    Manfred

    Hi Manfred7,
    did you already test this behaviour with a simple example from us?
    Just go through the example database and try the examples there.
    These examples should work. 
    If it works, there is a problem with your programm.
    If it won't work, please tell me more about your software:
    - Version
    - DAQmx Version ,...
    best regards
    Dippi 

  • How do I synchronize a pulse output to a sine wave input on a pci-6602 card?

    I have a sine wave from a function generator as the input on the source of a counter. Input frequencies vary from 2-60 kHz. I want to produce a pulse train at a different frequency (10 Hz), but in phase with the sine wave. I have only been using Labview 5.1 for a short time. I am using the PCI-6602 card with a SCB-68 connecting block.

    Hello;
    Unfortunately, you can't connect a analog sinewave to the counter source. Counters only work with digital TTL signal type. To accomplish that task, you will need a MIO board working in sync with the 6602 you already have.
    Regards
    Filipe A.
    Applications Engineer
    National Instruments

  • Alternative to PCI-6023E + PCI-6602

    Hello,
    I am already using a system to acquire 16 analog inputs data (at 50Hz) and 100Hz PWM signals (counters) and to send 100Hz PWM signals to external devices. Because it deals with 12 concurrent counters I bought 2 x PCI-6602 counter boards on top of a PCI-6023E for the 16 analog inputs (through a SC2345 box). This works all well.
    I now have to build a simplified and portable solution that has to run on a laptop. I was thinking about a DAQ-6036E or DAQ-6024E (or even DAQ-6062E) and keep a SC2345 but do not know if I will get the same functionalities particularly for the PWM counting (in and out). I have to be able to count the high edge of the square signal at 100Hz while acquiring my analog inputs; also be able to generate those 100Hz signals. Will I be able to connect my counter in and counter out (one of each) to the SC2345 to do that?
    Thanks for your comments,
    Christophe

    Hello Christ0phe,
    Looking at your current specifications and hardware, the best suitable solution for a portable appication with >2 counters would be the Compact RIO Platform.
    As this is an FPGA based platform, you can implement (theoretically) as much counters for PWM generation and reading as you want.
    As you are an existing DAQ user, you will not be able to reuse your existing code.  The cRIO platform uses the NI-RIO driver which is using some different program logic than the NI-DAQmx driver.
    Why is the Compact RIO platform the best solution?
    Well, the cRIO chassis can be powered by a simply DC power supply. Depending which chassis this is between 9 and 30 VDC.
    The cRIO platform also has a dedicated controller inside which will run your LabVIEW code.  The PWM logic itself can run on the FPGA integrated in the cRIO chassis.
    So, the laptop will not be use for any calculation, only for monitoring and control of your application.
    If you want to stay with the NI DAQ plaform I see two other portable solutions:
    The first one is to make the swtich to the PXI platform.
    There is a small chassis (PXI-1033) which has an integrated MXI-interface. Using MXI technology, you can control a PXI chassis from another PC, including a laptop (using ExpressCard, not PCMCIA).
    For the PXI platform you can use identical or similar DAQ boards as you have now, reusing your existing LabVIEW code.
    Drawback of the PXI-1033 is that it can only be powered by 230VAC, you will have to provide a DC-to 230VAC converter yourself to be able to use it in the field.
    For your information. It's becoming harder and harder to find laptops with PCMCIA slots, ExpressCard is the successor available on most new laptops.
    But please have a look at following article concerning laptop compatibility: http://zone.ni.com/devzone/cda/tut/p/id/5035
    A last solution is to use the cDAQ plaform.
    Again a fully portable DAQ solution, but as it uses the same technology as the 'normal' DAQ boards, it only has 2 counters on board.
    As your PWM speeds are quite slow, it may although be possible to use this platform for multiple PWM signal generation and reading.  All will depend on the desired PWM accuracy (resolution) and if they all share the same signal period.
    It is possible to use the 2 on-board counters as a known sample clock to generate and read the PWM pulses using correlated DIO.
    Correlated DIO means that your digital input and output signals are hardware clocked (synchronized with other available clock source). On the cDAQ platform, your I/O modules must be placed in slot 1-4 of the cDAQ chassis to be able to use correlated DIO.  Possible I/O modules are in the C-series 940x range.
    Drawback: all your calculations have to be done on the fly in LabVIEW.  You will need to write code to generate an array
    of digital waveform data, then output it using hardware timed DIO
    synchronized to generate counter clock.  For the readout of the PWM signal, you will have to count (within the LV application) the number of tick (of pulses) of the sample clock during which the PWM signal was 'high' and calculate based on the known timing information the PWM on-time, period (and if needed duty cycle). 
    More info about cDAQ and Correlated DIO:
    NI-DAQmx: Correlated Digital I/O with NI CompactDAQ and LabVIEW
    Can I Use Different Sample Clocks for Correlated DI and DO?
    Some examples exist:
    CompactDAQ - Generating More Than 2 Pulse Trains
    NI-DAQmx: Digital Channel Pulse Width Modulation (PWM)
    This info should already help you make a selection.
    But please contact you local National Instruments office if you need more information.
    Best regards,
    Best regards,
    Joeri
    National Instruments
    Applications Engineering
    http://www.ni.com/ask
    Make our forums great:
    If you like the answer, don't forget to "Kudos!".
    "Accept the Solution" if your question is answered!

  • How to buy a PC to accomodate 5-Volt PCI card PCI-6602?

    We've been having the devil of a time finding a computer with 3 or more
    PCI slots at all, and then most makers & sellers have no idea about
    voltage compatability!  My understanding is that the NI-PCI-6602
    (of which we have just bought 2) is a 5-Volt card, and therefore my PC
    needs to have either a "5-Volt" slot or a "Universal" slot which would
    be capable of accomodating either a 5 volt or a 3 volt (3.3 volt?)
    card.  To confuse the issue further, some *cards* are said to be
    'Universal,' meaning that they can operate in either a 5 volt slot or a
    3 volt slot.  Thus, a slot capable of accomodating a 'Universal'
    card is not necessarily a "Universal" slot!  Oh, and did I mention
    that all these cards and slots fit mechanically, it is just that some
    combinations don't work electrically.  Besides this, I have heard
    that some motherboards, while not offering "Universal" slots are
    switchable to either 5 or 3 volts.  I'm not even getting in to the
    different kinds of PCI slots (PCIE, PCIX, etc.)  The slot I think
    I need for my new pair of 6602s is a plain old PCI slot.  I am
    happy to buy (or even build) new computers to do this job.  I just
    need something with 5-volt plain PCI slots, five of them ideally but at
    least three.  Thank you!

    Pretty much any new computer that you can get will have the appropiate
    PCI type that you need to use these boards. You will be looking for a
    Computer/Motherboard that is compatiable with the PCI 2.1 or 2.2
    standard which supports the 5V you need to power these PCI-6602s. What
    you might be seeing is a lot of computers that are coming with the
    PCI-Express slots, which are very different then stardard PCI. These
    computers, since they have PCI-Express, have a limited number of
    standard PCI slots (usually 3). So if you go with a computer with no
    PCI-Express, then most will have 5 slots. So depending on whether you
    go with your favorite computer maker or decide to build a machine
    yourself just make sure that the motherboard says it has 5 PCI slots
    (and not PCI-Express, or PCI-X) and as long it is new you should be just fine. If
    you want to read up on some on the PCI standard here is a link to a
    good resource.
    http://en.wikipedia.org/wiki/Pci
    Good luck with your computer hunting.
    -GDE

  • PCI-6602 comment generer un signal non peridodique

    "bonjour,
    je voudrais simuler un signal non périodique et synchrone sur une seul des sorties de compteur de la PCI-6602.
    Cependant j arrive a simuler mon signal mais j utilise deux compteurs :
    pour cela j ai utilisé un des sous VI de multiple pulse train c est a dire "configure and arm counters phase(NI-TIO)(with phase delayed)"
    mais j ai enlevé le sous vi "counters start triggers "
    j'ai voulu synchronisé mon signal via un generateur externe dont j ai definie les parametres dans le diagramme de mon vi (numero de PFI).Puis j'ai décomposer mon signal en 2(voir attached files).Une fois que je suis arrivé a visionné mes signaux sur l'oscilloscope,
    j ai relier mes 2 signaux a une "porte ou" à 2 entrées.
    soit S
    la sortie de la porte logique on obtient donc:
    S = compteurs 0 ou compteur 1
    merci"
    Attachments:
    chronogramme_des_signaux.doc ‏22 KB

    Je ne parle plus le francais. Il y a 20 ans depuis je l'etudie. Je pense que je peux vous aider, mais seulement en englais.
    S'il vous plait, trouvez quelqu'un qui peut lire l'englais et expliquer mon reponse ici:
    http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=50650000000800000059CD0000&UCATEGORY_0=_32_%24_12_&UCATEGORY_S=0
    Bon chance!

  • PCI 6602 signal no periodic

    bonjour,
    je voudrais simuler un signal non périodique et synchrone sur une seul des sorties de compteur de la PCI-6602.
    Cependant j arrive a simuler mon signal mais j utilise deux compteurs :
    pour cela j ai utilisé un des sous VI de multiple pulse train c est a dire "configure and arm counters phase(NI-TIO)(with phase delayed)"
    mais j ai enlevé le sous vi "counters start triggers "
    j'ai voulu synchronisé mon signal via un generateur externe dont j ai definie les parametres dans le diagramme de mon vi (numero de PFI).Puis j'ai décomposer mon signal en 2(voir attached files).Une fois que je suis arrivé a visionné mes signaux sur l'oscilloscope,
    j ai relier mes 2 signaux a une "porte ou" à 2 entrées.
    soit S la sortie de la porte l
    ogique on obtient donc:
    S = compteurs 0 ou compteur 1
    merci""
    Attachments:
    chronogramme_des_signaux.doc ‏22 KB

    With this setting, the edges of the internal 20MHz timebase of the PCI-6602 are counted !
    Change Edge Source to /Dev1/PFI39 (--> CTR 0 source --> signal A of the encoder with your wiring) and try again.
    See page 3-7 of the user manual for the PFI numbers.
    Some examples ship with LabVIEW.
    Message Edité par JB le 03-13-2008 08:44 AM

  • Generate two different pulses or more continuous​ly with a PCI -6602

    I have a PCI-6602 and Labview 8.0. I need to create a complex wavefrom output  and I don't know how to create this waveform with the 6602, I know that I can create this pulse format by using the Agilent Pulse Generator  but I would like to use the National Instruments. If somebody has an idea about how many counters and the physical connections that I need, also about how can I use labview to generate a complex waveform output.
    I've attached the waveform that I need to generate continously and I hope that I can use the PCI-6602 for this purpose.
    Attachments:
    Pulse format.doc ‏24 KB

    This is a duplicate post, for the main post please see:
    NI Discussion Forums: How to generate two diferent pulses and re-trigger such pulses continously
    Regards,
    Dan King

  • Triggering the reading of counter totals (PCI 6602)

    Hi,
    thanks for reading these lines,
    for a special application I need to read the totals of multiple counters
    simoltanouesly. The inputs of the counters are connected to quadrature encoders.
    Is there a way to reroute the gate to another input pin?
    Thanks for taking the time to support me.
    live long and prosper
    Michael

    Dear Jochen,
    (1) Principally, I'd like to use PCI-6602 to be a motion encoder also be a counter (Is it possible? Due to the manual, it is possible). I expect to have all information, such as position, time, velocity, etc. from that motion encoder (or at least the position and time). It is also expected of using PCI-6602 to do all measurements that I mentioned before . My meaning is, after having a signal from the counter, that 'count' will be converted to desire units under other programs. So, in this case, PCI-6602 is only used to get the 'count'.
    Simplified, the voltage command will send to the system (linear motor) through PCI-6052E (-10V to 10V). The actual position or other actual information will be catched (read) by using PCI-6602 (as a motion encoder, also as a counter). Then, this actual position will be used as a feedback, that will be compared to desired position.
    Is that also possible to use PCI-6602 be a motion controller + a counter + a frequency measurement in a same time parallely?
    I don't decide yet (I don't know) which acquisition rate will be needed/required, higher is better.
    (2) I'd like to apply an adaptive robust controller (yes, it is a closed loop system) under matlab with their feature called Real-Time-Workshop instead of using LV.
    (3) Power drive for the linear system will be driven by AC servo drive.
    Thanks for your help before,
    Warmly regards,
    hendro

Maybe you are looking for