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

Similar Messages

  • Are there known problems with using the PCI-8430/8 with windows 7?

    Hello,
    I have several PCI-8430/8 cards (8 serial port cards) that were originally purchased to be used in Windows XP computers for the purpose of calibrating proprietary serial devices (using 9600 baud.). When my company transitioned to Windows 7 PCs (Dell Optiplex), I discovered that the PCI cards now collect data from our devices at a noticeably slower rate than previously experienced, with our calibration process taking nearly twice as long as it used to. It almost seems as if the ports can no longer be accessed asychronously. I have tried using several different versions of the Ni-Serial driver to resolve the problem, all to no avail. Has anyone heard of this problem, or know of a potential solution to speed up the serial communications with this data card?

    You are correct that VISA is used in LabVIEW, but it can also be used from other programming environments.
    I actually thought about what may be causing the performance difference. The ports on this board have 128 byte receive buffers for each port. By default they will wait until 64 bytes arrives before sending a batch of data to the computer. If you have less than 64 bytes received by the port, it will wait for a period of 4 bytes before deciding to go ahead and send the data to the computer.
    The trigger point at which they decide to send data to the host is configurable, either through the advanced properties of the port in Device Manager, or through Measurement & Automation Explorer (NI-MAX). Configuring the receive buffer trigger point to a lower number can help decrease latency from your hardware, at the expense of increasing CPU usage. The best latency (and also the highest CPU usage) will be achieved by setting this value to 1, since it will always send the data back to the computer as soon as it arrives, and never incur the 4-byte-time delay before transmitting data back to your application.
    I would suggest you look at the receive buffer settings on your XP machines which run quickly. If they are not set to 64, they have been customized for your application, and you will want to ensure you configure them the same way on your Windows 7 machines.

  • Resistance measurement using PCI-6602

    Hello,
    I would like to measure the resistance between 2 points using my PCI-6602 counter/timer card while using LabVIEW. The resistance values to be measured will vary between 10 ohms and 1000 ohms approximately.
    I found three examples in LabVIEW example finder for measuring resistance but am not sure which one to use. Moreover, which pins of the PCI-6602 would be used for measuring the resistance?
    Please advise me how I could use this PCI-6602 card for measuring resistance values and what the pin configuration would be.
    Thank you,
    Viktoriya.

    As you have written, the PCI-6602 is a counter/timer board. It has no analog input and is not suited for analog measurements !

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

  • Continuous pulse train generation on my PCI 6602 takes up too much of my system resources.

    I am using a PCI 6602 to generate a clock signal that is to synchronize pattern generation on two PCI 6534's. I have done this by generating a pulse train at a user defined frequency on the PCI 6602. My problem is when I generate this pulse train, the program uses all of the computer's CPU, and slows the rest of the processes down. Just to let you know, I have isolated this program to ensure it is the only thing running, and it still has the same result. The CPU usage soars to 100%(and remains constant) and the memory consumption increases (and remains constant) as well. Also, if it helps at all, the CPU consumption is completely independent of the frequency that is being gene
    rated, but the memory usage increases a little with an increase in frequency. Does anyone have any insite as to how to fix this, for I have noticed that all of the posted examples like this behave in the same manner.
    Thanks,
    Dave

    Russell,
    Thanks for the reply. Just about five minutes ago I came to the realization that the card itself was not causing this to happen. When I took a closer look, I found that my C program and all of the example programs were using the NIDAQWaitForKey() function to enable countinuous generation. So what was happening was that function was constantly polling the CPU to find a key to be pressed. So lets just say I found a way around this problem, and so everything is well. There are a handfull of things that i need to work on now, but at least I know my clock generation program is correct and I can stop banging my head against a wall trying to solve a problem that does not exist and for which there is no solution.
    Thanks Again,
    Dave

  • 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 

  • Synchronize PCI- 5421 and PCI-6602

    I am using a PCI 6602 to generate four pulse trains. I am also generating a signal with a PCI 5421 AWG. All signals are started at the same time by using a common start trigger. The problem I am having is that after they run for a while the 6602 and 5421 signal start drifting. I know in the past I had sync clocks in a PXI chassis but I am unsure how to syncronize the clocks using PCI card. I do have an RTSI cable linking the cards together so could someone please give me an example of how to sycronize these cards in Labview (8.2)

    Hello Kiebach,
    You seem to be connecting the signal correctly in your NI-DAQmx program. However, I do not see any NI-FGEN code where you import the signal to be used as an external clock. Have you added this code? I think you would benefit from examining the example program entitled "niFgen_DAQmx_Synchronization_Example.vi". This program shows how to synchronize an NI-DAQmx device and an SMC Arb device. You can find the example by opening the NI Example Finder utility; you can open this utility from LabVIEW by going to the Help menu and selecting Find Examples... Once you have opened the NI Example Finder, you can navigate to this example by selecting the Browse tab and going to Hardware Input and Output>>Modular Instruments>>NI-FGEN (Signal Generators)>>Synchronization. You will notice that this example uses the Export Signals VI rather than the Connect Terminals VI. To help understand the difference between these two, you may want to examine this document.
    Matt Anderson
    Hardware Services Marketing Manager
    National Instruments

  • 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

  • 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

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

  • I want to perform bidirectional i/o using a pci-6534.The problem is that i need to use the same lines for i/p and o/p. is that possible?

    I want to perform bidirectional i/o using a pci-6534.The problem is that i need to use the same lines for i/p and o/p. is that possible? And if it is how an i doing this?

    Hi I Pant,
    The idea that crossed my mind was to tie each of the lines coming from/going to "your device" to two of the DIO lines. Configure one these two ports as input, the other as output.
    When you want to read the state of the line, read from the line configured as input. Similarly, use the other port when it is time to write.
    Provided "your device" uses tri-state drivers/receivers, or can be used in a "wired-OR" configuration, this may work.
    What is "your device"?
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • 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

  • 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

  • Use PCI-6602 to produce synchronous different TTL singals

    I am using PCI-6602,if I want to use two line to producing two different TTL singals,and the two TTL singals must write to lines synchronously.How can I get it,Thank you !!

    Hi,
    You can generate two pulse trains, one on each counter. If this is what you need, you can do that easly with pulse generation VIs - you can look at the LabVIEW shipping examples - in particular, look at Generate Pulse Train (NI-TIO).vi
    Regards,
    RamziH.

  • Problem in edge separation measurement by using NI PCI 6251 card

    I am trying to measure time delay between two TTL pulses (rising edge of the first signal and falling edge of 2nd signal) generated by two Photo detectors (APD) . These pulses are random pulses. Pulse width is 20ns and height is 2.5 volt at 50 ohm termination. I am using NI PCI 6251 card (M series card) for this job. I have attached my program and DAQ assist settings using for this job to this mail. Problem is   6251 card couldn't detect the pulses from APD. Exactly error shown is
                                                             "Error 200474: specified operation did not complete because the specified timeout expired".
    I have tried by increasing the waiting time but it didn't solve the problem.  I have tested my program with 20ns pulse width TTL pulses which are generated by a function generator, in this case my program worked well and given expected result.[both the signals are from same  function generator and they are synchronized so edge separation measurement gives width of the pulse ] The height (voltage) of the TTL pulse generated by the function generator is 4v at 50 ohm termination. Is this height difference creating the problem? What can be the reason ? Can anyone suggest a better way to do this job.
                                                                                     Thanks in advance
                                                                                                                                                                                                                          Regards
                                                                                                                                                                                                                           surya
    Research student
    Attachments:
    daqassist.jpg ‏71 KB
    edgeseparatio.jpg ‏26 KB

    Hey JmBone,
    It's possible that you are just suppose to send a 32-bit integer to control the 32 valves. The 'byte offset' is probably just there to allow grouping of 8 valves (8 bits as 1 byte). So instead of sending an 8-bit number with some offset, you just send a 32-bit number and only change the bits corresponding to the valves you want to change. It would be easiest to just have a 32-bit binary array in your code for changine the individual valves and then cast that to a U32 integer before sending it to the Set Attributes VI. Maybe I am misunderstanding the manual, but I don't think 'byte offset' is a parameter you are suppose to specify, and is just there to indicate how the valves can be bundled into a single 32-bit value.
    Regards,
    Ryan

Maybe you are looking for

  • For site NUCL, article type FERT is not defined in Table T134W

    Dear All MM Guru, I have created one site  for intercompany process. while doing the PGI system showing one error "For site NUCL, article type FERT is not defined in Table T134W" . Please raed this error and update your input for resolve this issues

  • Photoshop CS4 crashing when opening a file (any file)

    I have the Adobe Master Collection.  Photoshop keeps crashing when I try to open a file.  I have tried several files and tried creating a new file. All other applications work fine.  Please help me as I urgently need to hand in an assignment. I have

  • Not going to sleep, overheating?

    Just recently my MBP stopped going to sleep when the lid is closed, or when left open but not used(my setting tell it to go to sleep after 5 mins of no use). The heartbeat light only dims but stays the same, or is bright and stays the same.I noticed

  • Spry validation textfield - required condition

    Can anyone help me with the Spry validation text field... I have a form for which I wish to be able to use for 1 to 4 users to fill in, if at the beginning of the form they select 2 users then I wish to then change the 'isRequired:false' to 'isRequir

  • OSB Error using Database JCA Adapter

    I had a project working with a business service in OSB using JCA Adapter Service, after i inactivated the datasource to do unit case testing, the following error started appearing. I have recreated the datasource, the database adapter config and the