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

Similar Messages

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

  • Counter using PCI-6602 for multi output

    Hi guys,
    currently I tried to control a linearmotor using PCI-6052E and PCI-6602.
    The questions is, how to use PCI-6602 to be a counter which will be converted to several output (multioutput):
    (1) converted to position >> 1count = ...[mm] --> position measurement
    (2) converted to voltage >> 1count = ...[mV] or [V] --> voltage measurement
    (3) converted to current >> 1count = ...[mA] or [A] --> current measurement
    (4) converted to velocity >> 1count = ...[mm/s] --> velocity measurement
    (5) converted to acceleration >> 1count = ...[mm/s^2] --> acceleration measurement
    (6) converted to force >> 1count = ...[N] or [kg.mm/s^2] --> force/load measurement
    (7) converted to frequency >> 1count=...[Hz] --> frequency measurement
    (i) Please assist me how to connect the driver's encoder (Ch. A A/ B B/ Z Z/) with PCI-6602, so I can get all informations above (7 measurements). What/which port of PCI-6602 connect to where from the driver.
    (ii) Please assist me how to connect the feedback signal to the PC. What/which port of PCI-6602 connect to PC.
    (iii) How to test those 7 measurements above using Measuremant and Automation Explorer (MAX) ver.4.4.1?
    Thank you for your kindly help and assistance.
    Best wishes,
    hendro

    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

  • How do I control the sampling rate of a PCI-6602 counter

    Labview version: 7.1
    Processor: Pentium 4 1.8 GHz
    Hello All,
    I have two avalanche photo diodes connected to two counter entrances on a 6602 (ctr 0 and ctr 1).
    As can be seen in the attached VI, I'm generating a signal on ctr2 and using that as an external clock for the counters.
    My objective is to accurately read the counter values at a rate of ~100KHz (i.e. 0.01 ms between measurements) and to be able to control the rate via the front panel. This should be possible (80MHz timebase), however when I run the program it is only able to actually sample at ~5 ms intervals. Also I'm encountering error 200141 even though I set the rate in the counter to 1M, which should buffer enough.
    What am I doing wrong? Any help would be greatly appreciated.
    Thanks a lot,
    Attachments:
    FRET_ver_14.vi ‏456 KB

    Hello Aadam,
    After looking at your code, I would not use the DAQ assistants to implement this. The DAQ assistant are best to be used for simple acquistion and since you are looking to use more lower level properties of you card, I would suggest to move to use the lower level VIs. It will be easier to understand where the problem is occurring at and will run better than using the DAQ assistant.
    I have done some initial research for you to implement this design. I have described each of them below and how they will assist you.
    The first example I have found is the Change Counter Output Frequency While the Task is Running. In this example, it will show you how to change the frequency and duty cycle of a counter output frequency task. One thing to remember about these counters are that the frequency will not change until the period has finished. For example, if you changed the frequency in the middle of a period of frequency of 1 Hz, it has to complete the 1Hz period before changing it to the next frequency.
    The next example I would investgate is in the NI Example Finder called Correlated Dig Write With Counter.vi. The NI Example Finder can be found in Help » Find Examples... This VI will explain how to use the counter as a clock for another task. You will need to combine the concepts of the first example with this to make sure that you can vary the sample clock.
    Finally, in the NI Example Finder, there is an example how to count digital events with an external clock called Count Digital Events-Buffered-Continuous-Ext Clk.vi. With this example, I first suggest to add the counter task and make sure you can get the external clock to work. After this, I would then implement changing clock.
    Jim St
    National Instruments
    RF Product Support Engineer

  • How can I display the read messages count and total size of a folder?

    Extra Folder Columns 1.1.5 is not compatible with Thunderbird 31.3.0.

    Log into your account and to the right of the phone photo you will see usage details in blue then on the next screen pick the phone on the account you want to see the details for and under that you can click to see eveyrthing in detail.  Mary

  • Comment faire pour que mon "finite pulse train" commence par COUNT 2 plutôt que COUNT 1 (pci-6602)?

    Bonjour,
    je génère un train de pulses fini (j'utilise donc 2 compteurs : un pour générer la gate, un autre pour générer le train de pulses).
    Concernant le compteur générant le "finite pulse train", la polarité de mon signal de sortie est négative : ND_COUNT_1 correspond donc à la portion "high" de mon signal, et ND_COUNT_2 à la portion "low".
    Je voudrais que, lorsque la gate démarre, le compteur commence par générer la portion "low" du signal (qui correspond donc à ND_COUNT_2). Comment dois-je m'y prendre ?
    Merci de votre aide.
    Julien

    Bonjour,
    je me suis probablement mal exprimé, l'inversion de polarité n'était pas l'objet de ma question. Mais j'ai réussi à régler mon problème seul, finalement.
    Il n'en reste pas moins que je vous remercie pour votre aide.
    Bonne continuation à vous aussi.
    Julien

  • PCI-6602 Triggered event counting DAQmx

    Hi
    I'd like to use simple event counting using PCI-6602 (DAQmx) with an internally generated trigger pulse.
    But I don't know how to figure out the error message when I use DAQmx Start Trigger.vi
    Thanks
    Kyu Young
    Attachments:
    EventCountingTrig.vi ‏21 KB

    I'm sorry. I've solved it.

  • How to visualise continues Data aquisition from a PCI 6602 with 2121 BNC connector board in C++ ?

    Hello everyone,
    We are trying to get on the screen the aquired pulses from our  PCI 6602 with a 2121 BNC connector board, from several devices. We are able to read the data and save without problem, but we cannot look at it while we are measuring. Anybody has an idea to how program this in C++ ? Any suggestion is welcome!
    Thanks for the help

    Hi,
    try to look for some example programs and Tutorials:
    Examples Results
    http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/en/pg/1/sn/catnav:ex/q/DAQmx%20C%2B%2B/...
    Tutorials Results
    http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/en/pg/1/sn/catnav:tu/q/DAQmx%20C%2B%2B/...
    You should also have a look at the "C Reference Help" which is installed with the NI DAQmx driver.
    Acquire N Scans (Visual C++ 6.0, CW++, NI-DAQ)
    http://zone.ni.com/devzone/cda/epd/p/id/207
    Continuous Analog Acquisition with Producer Consumer Architecture in C#
    https://decibel.ni.com/content/docs/DOC-4253
    Good Luck!
    Matteo

  • Rating - Play count totals question ...

    Hi,
    I'd like to transfer the Rating & Play count totals to another computer (that has hopefully the same play list).
    How do I do this?
    Thanks.

    As you probably know, the rating and playcount are not stored in the song file itself; they are stored in the library and will be lost if you move the songs separately from the entire library.
    So, to preserve them, first consolidate your library (if it isn't already) using the command File > Library > Organize Library... > Consolidate Files, and then copy the entire iTunes folder to the new machine.

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

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

  • How to generate an Interupt for DMA transfer from Counter on NI-PCI-6602

    dear guys:
          how to generate an Interupt for DMA transfer from Counter on NI-PCI-6602,and I have set the DMA and DMA_INT, and also the global interrupt register.
    but there is no Interupt generated in the Interupt callback function.And when I have set the DMA_INT and global interrupt register ,and then read the relevant register,the relevant bit is also 0.
         I suspect there is an Interupt register contral, like the MITE, you must write the value to 0xc4 for opening .
         there is some codes In my enclosure .What can I do?
    Attachments:
    TEST.C ‏21 KB

    dear Steven_T:
            the registers are In my enclosure ,if you have some ideas,please reply me  first time.thank you !
    Attachments:
    PCI6602.pdf ‏818 KB

  • PCI-6254 DIO Read - Need to know how to trigger the Read operation??

    Hi,
    Can anyone help me with DIO Read operation using PCI-6254 (DAQmx)??
    here'e the breakdown of the issue i'm having:
    i'm doing a DIO Read using DAQmx drivers, and am using "one channel for each line" on the Port 0.
    i'm using another line for DIO Write at the same time...infact the DIO write sends the bit pattern
    and inturn triggers an external device, and am trying to capture the response of ext. device on
    other line thro' DIO READ...
    now, i do see the bit pattern on the Oscope, but am not reading the bit pattern using DAQmx Read?
    (i'm reading all ZEROS)
    Currently, i'm not using DAQmx Trigger? i tried using it, but was getting an error...
    i guess i need to trigger the read when the line goes high/low (for ex)
    can anyone help me with this?
    Regards,
    rkpat

    Hi rkphat,
    DIO operations on an M Series device cannot be configured for triggers. The source of the DIO sample clock must be set up for the trigger and the DIO operation should just be configured to receive that clock. You must provide an external clock or a clock generated by another subsystem, such as an analog input sample clock or a counter pulse train output, to clock digital operations. For example, if you were going to use the analog input sample clock to clock your digital measurements, you would configure your AI subsystem to receive a start trigger and to use an internal clock. Once the trigger arrives, the AI Sample clock is generated and passed to the DIO subsystem. Or if you wanted to use a counter to generate the clock, you would set the counter up for pulse train generation with a digital start trigger.
    If you post your code we can find out why the Digital Read is not returning the correct data.
    Cheers,
    Lesley Y.

  • Can I trigger the read of a buffer period measuremen​t with a external signal (PFI line) with my 6602 card? How can I do it?

    I am doing a buffered period measurement with a 6602 card, Labview real time. I want to measure the period of 6 rising edges of a TTL, but I want to do it exactly when an edge comes on other external signal (of course slowler than the previous one), that is to say that I want an external start trigger. Can anybody help me? I have hardly searched at the web and I have not found an example of code of what I am looking for.
    Another question:
    After reading the buffer, how does my program know that the data has been refreshed in a continuous measurement? I attach two VIs I am trying to make work and a quite explanatory bmp of what I
    want to do.
    Thanks.
    Attachments:
    rtc_regimen.zip ‏3 KB
    Buffered_Period_pulse_generation.vi ‏283 KB
    simgle_counter_pulse_generation.vi ‏177 KB

    Hello;
    I can't think of any way to accomplish that task. Once the counters have only two input pins, and both are in use when one configures the counter to do buffered measurements, there isn't a way to trigger that operation in hardware.
    I'm not sure if I understood your second question, however, the buffered operation on a counter is hardware controlled, meaning that a pulse on its gate input triggers the transfer of the count value from the counter register to the PC memory buffer. That is therefore a continuous measurement.
    Regards
    Filipe A.
    Applications Engineer
    National Instruments

  • DMA transfer rate for PCI-6602 counter/timer

    I'm strongly interested in raising the DMA transfer rate between the PCI-6602 counter and computer. At the moment, I've got a Pen-4 2.4GHz operating under Win98. I have to move an 80 Megaword array at an ~5 MHz speed. So far, I've been able to reach just 2 MHz. Would it be possible? What is the battleneck here - the soft- or hardware?

    Hello,
    I think the bottleneck you are seeing here is a limitation of the dma transfer capabilities that is dependant on the bus of your PC and not your 6602 card. Here is a link of a knowledgebase that you could try to use to see if that would improve your transfer rates. I still doubt you will be able to achieve approximately 5MHz.
    http://ae.natinst.com/operations/ae/public.nsf/fca7838c4500dc10862567a100753500/1b64310fae9007c086256a1d006d9bbf?OpenDocument
    Regards,
    Steven B.

Maybe you are looking for