Buffered DAQmxBaseCreateCICountEdgesChan, error -200141

Here I go again. Thanks to anyone with the intestinal fortitude to look at my problem!
Using NI-DAQmx 1.4.0f2 Base on OS X 10.3.7, with a PCI-6014 DAQ board.
I'm trying to do a finite buffered edge count, but get error -200141, "Data was overwritten before it could be read by the system." from my call to DAQmxBaseReadCounterU32. I'm trying to use a very basic testing program modified from the shipping example, cntBufCont.
My test uses counter 1 to produce a continuous pulse train so that I have something to count, and it counts edges on counter 0. The pulse train specifies no output terminal; the default is pin 40. I specify "/Dev1/PFI9" as the source terminal. I have connected pin 40 to pin 3.
I have an LED connected to pin 40 and pin 3 as well, and I see it come on and go off. Naturally, I can't see it blinking.
The output from the program is:
DAQmxBase Error -200141 on line 8: Data was overwritten before it could be read by the system.
Samples read: 100
0: 0
1: 0
2: 0
3: 0
and more lines like this up to 100.
I can't see anything wrong with the program, but of course that doesn't mean there isn't something wrong! Should I be able to do this on OS X with a PCI-6014? The Read Me for DAQmx Base seems to indicate that I should.
Here's the code:
int main(void)
// Task parameters
int32 error = 0;
TaskHandle taskHandle = 0;
char errBuff[2048]={'\0'};
time_t startTime;
// Channel parameters
char chan[] = "Dev1/ctr0";
// Timing parameters
#define bufferSize 100
char clockSource[] = "/Dev1/PFI9";
uInt64 samplesPerChan = bufferSize;
float64 sampleRate = 10.0;
// Data read parameters
uInt32 data[bufferSize];
int32 samplesToRead = 100;
float64 timeout = 20.0;
int32 read;
// parameters for pulse generation
TaskHandle PulseTaskH = 0;
float64 freq = 1000.0;
float64 duty = 0.5;
float64 delay = 0.0;
char pulsechan[] = "Dev1/ctr1";
int i;
int line = 0;
DAQmxErrChk (DAQmxBaseCreateTask("",&PulseTaskH));
line = 1;
DAQmxErrChk (DAQmxBaseCreateCOPulseChanFreq(PulseTaskH,pulsechan,"",DAQmx_Val_Hz,DAQmx_Val_Low,delay,freq,duty));
line = 2;
DAQmxErrChk (DAQmxBaseCfgImplicitTiming(PulseTaskH,DAQmx_Val_ContSamps,1000));
line = 3;
DAQmxErrChk (DAQmxBaseStartTask(PulseTaskH));
line = 4;
DAQmxErrChk (DAQmxBaseCreateTask("",&taskHandle));
line = 5;
DAQmxErrChk (DAQmxBaseCreateCICountEdgesChan(taskHandle,chan,"",DAQmx_Val_Rising,0,DAQmx_Val_CountUp));
line = 6;
DAQmxErrChk (DAQmxBaseCfgSampClkTiming(taskHandle,clockSource,sampleRate,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,samplesPerChan));
line = 7;
DAQmxErrChk (DAQmxBaseStartTask(taskHandle));
line = 8;
DAQmxErrChk (DAQmxBaseReadCounterU32(taskHandle,samplesToRead,timeout,data,samplesToRead,&read,NULL));
Error:
if( DAQmxFailed(error) )
DAQmxBaseGetExtendedErrorInfo(errBuff,2048);
if( taskHandle!=0 ) {
DAQmxBaseStopTask(taskHandle);
DAQmxBaseClearTask(taskHandle);
if (PulseTaskH)
DAQmxBaseStopTask(PulseTaskH);
DAQmxBaseClearTask(PulseTaskH);
if( DAQmxFailed(error) )
printf("DAQmxBase Error %d on line %d: %s\n", error, line, errBuff);
printf("Samples read: %d\n", read);
for (i = 0; i < read; i++)
printf("%d: %d\n", i, data[i]);
return 0;
John Weeks
WaveMetrics, Inc.
Phone (503) 620-3001
Fax (503) 620-6754
www.wavemetrics.com

Hi John-
I have a few suggestions for your app. First, in edge counting operations it isn't necessary to specify a sample clock. I would suggest simply creating the channel and then starting the task. You can then read the count register value at any time by calling the DAQmxBaseReadCounter function.
Also, in order to count edges your pulse train will need to be an input to the counter source rather than gate. For your device, the Ctr0 source is pin 37.
I am unsure why you are able to get readings by counting edges on the gate. I have been testing in LabVIEW and have seen good results by using the methods I have suggested here.
Please let us know if you have any luck with these suggestions.
Thanks-
Tom W
National Instruments

Similar Messages

  • Finite Measure with 2 boards 6602 and 6 DMA Channel Counter Buffered - error 200141

    Hi all,
    First .. I'm a beginner with LabView and I hope to explane myself in good way cause I'm italian..
    I red all the post about the error 200141 and check the suggested solutions (also the way to ignore the error), but I want try to ask for a differet one..
    What i'm trying to do is to aquire 6 encoder, 3 on the first board PCI 6602 and 3 encoder on the second board on DMA channels.
    The encoder generate 90000  X4 = 360000 pulses x revolution and the max speed rotaion is 4 RPs.
    Cause I need to store in a bin file all the pulses from the encoders, i generate a trigger of 1.5 MHz to get all the samples at the max system speed (360000 * 4 = 1440000 pulses  x sec).
    I think to have reached the limit, and maybe is not possible do better.. actually the 2 PCI 6602 works with 1,0 MHz of trigger and the system store in 6 files 4000000 of samples during
    the finite measure of the angular position on 6 channels.
    The trigger is not yet sync between the 2 PCI cause I'm waiting for a RTSI cable to put in the PC...
    In Your opinion is possible to find a alternative way to acquire these encoders ?..
    Thanks

    I also doubt if you need to capture every single increment from each encoder.  I'll discuss this more below.
    Further, many earlier discussions suggest that counter tasks can sustain data transfers merely in the 100's of kHz, with *maybe* a possibility under special circumstances to slightly exceed 1 MHz.  Your boards have very small hardware buffers (either 1 or 2 samples worth), causing the PCI bus usage to be very frequent and therefore less efficient.
    Now, let's go back to your sample rate.   You've got encoders which suggests that you're dealing with a physical system.  Physical systems have inertia, which limits their useful bandwidth.  In my experience, it's quite unusual to care about motion artifacts beyond the 10's of kHz.  The inertia just doesn't allow anything significant to happen at that rate.
    So, if the physical bandwidth of your motion system is, say, 5 kHz, there's a rule of thumb suggesting to measure at 10x when possible.  So that'd mean 50 kHz sampling.  50 kHz x 6 channels on the PCI bus may be possible.  Multi-MHz sampling won't be.
    Can you describe the physical system a bit?
    -Kevin P.

  • Error -200141 when doing buffered events with DAQmx and PCI-6602

    When doing buffered events with DAQmx and PCI-6602 I get error 200141 - Data was overwritten before it could be read by the system.
    This error is generated ONLY with random inputs >200/sec.
    My setup is :
    DAQmxCreateCIVCountEdges(taskhandle,"Dev1/ctr3"....
    DAQmxCG+FGSampClkTiming(taskhandle,"/Dev1/FPI35",...
    DAQmxSetCICountEgdesChan(taskhandlem,"", "/Dev1/80MHZTimeBase")
    DAQmxSetChanAttribute(taskhandlw,",",DAQmx_CI_DataXferMech,DAQmx_Val_DMA,0);
    Can somebody help ?

    i'm getting the same Error-200141, while reading semiperiods. (Meas_Buffered semiperiod continous)
    while loop ex.rate seems to be pulsewidth*no.Samples to read. in my case PW=60ms
    Input buffer size measured with Property node= 10000
    why this error happens?? i cant use any mode other than implicit timing for semi-period measurement right??
    more info: all the ai channels are used ~ 16 differencial.
    i found one solution which is _ reinitializing the whole task if an error occur. is this the right way??
    Kudos always welcome for helpful posts
    Attachments:
    Counter_1_Meas Buffered Semi-Period-Continuous_main_lv09.vi ‏34 KB
    SemiPeriod_Reconnect Counter on Error.vi ‏35 KB

  • CI Semi Period, Error -200141

    I try to measure the semi-period of the signal in attach with a CI semi period counter in Labview 7.0.
    I am using the example VI Meas Buffered Semi-period Continuous with a acquisition card PCI-MIO-16E-4.
    I can measure the semi-period of a signal of 50KHz with a duty cycle of 25% but when I try to measure the signal in attach, signal that the frequency is lower, I obtain this message.
    Error -200141 occurred at DAQmx Read (Counter 1D DBL 1Chan NSamp).vi
    Possible reason(s):
    Data was overwritten before it could be read by the system.
    If using interrupt data transfer, try using DMA. Otherwise, divide input signal before measuring.
    What can I do ??
    Marc Ducommun
    University of applied sciences
    Switzerland
    Attachments:
    Signal_Capteur_modified.bmp ‏38 KB

    Marc
    Do you get this error when measuring the lower frequency signal? Or do you only get this error when switching from one signal to another?
    How are you switching from one signal to another?
    Switching from one signal to another usually causes high frequency noise which can cause this problem.
    For example, if your program is running fine with a 50kHz signal, and then you flip a switch to measure a lower frequency signal, the switch could introduce high frequency which could overflow the counter.
    Russell G.
    Applications Engineering
    National Instruments

  • Buffer Overwrite Error -200141

    I am using an extension of the code called "Measure Buffered
    Semi-Period-Continuous.vi" from the example finder.  Inside the
    main while loop I have added some additional calculations before I
    return to DAQmx Read in the next iteration.  I am getting an error
    -200141 which states that "Data was overwritten before it could be read
    by the system."  Currently I have the "Number of Samples Per
    Channel" at 2 for the DAQmx Read input, but I am not sure if what I
    have done is correct for what I am trying to accomplish.  What I
    would like to do is pull only the first two points of the buffer each
    time I come to DAQmx Read.  The remainder of the buffer is not
    important and could be thrown away if possible.  When the next
    iteration of the while loop comes to DAQmx Read I would again like to
    read the first two points and so on.   Also I would like to
    know if there is a way that I could keep track of the size of the
    backlog of the data for future reference.
    Thanks,
    Nick

    See the producer consumer model of programming.  It is best to extend this program by adding a second loop(thread) and after reading your data send it to the analysis loop for processing with a queue.  The buffer overrun is due to the data not being raed from the buffer fast enough.  Your processing is slowing down your DAQ loop.
    Paul
    Paul Falkenstein
    Coleman Technologies Inc.
    CLA, CPI, AIA-Vision
    Labview 4.0- 2013, RT, Vision, FPGA

  • Error 200141 when trying to measure motor encoder's speed from PCI 6221 card,

    Hi,
             I was trying to measure angular speed of a motor from its encoder signal. I'm using Ctr pin from PCI 6221 card take signals from the encoders. The problem comes when I've got an Error-200141 saying "data was overwritten before it could be read". I have tried a few ways as follows to overcome this problem.
         - Use DMA
         - Get rid of the noise from the signal by shielding the wire from encoder to DAQ card and using a capacitor.
            None of those seemed to solve the problem completely. Even though the noise from the signal was removed, I could still see the mechanical glitter at the edge of all the pulses from the oscilloscope. Is that a possible cause of this problem (my technician told me we can do nothing with this glitter. In other words, we can't remove it)?
            Please suggest me how to solve this Error-200141. With this message, I have also attached VI.
            Thank you very much.
       Regards,
       Suksun
    Attachments:
    Meas Dig Period-Buffered-Continuous-Low Freq 1 Ctr_Angular speed from encoder.vi ‏72 KB

    Hi Suksun,
    Only had a quick glance at your code, but can you drop the samples to read to 100.
    I think what the problem is from what I can make of your code, is that
    you have a low frequency counter, that you measure on the rising edge,
    however if you don't get a 1000 pulses within 100 seconds, DAQmx will
    report an error. So by lowering the number of samples to read you
    should be able to get 100 samples in 100 seconds, you should not
    overwrite data as the buffer will be sized correctly.
    Hope this help
    Regards
    JamesC
    NIUK AE

  • Why can't it count edges-Error -200141

    I'm using a very precise shaft quadrature encoder with 400 pulses per revolution. I'm simply trying to test it before I incorporate it into my VI. I've been using the DAQassistant to try and configure it. I've got a PCI-6036E with a BNC-2120 accessory. To start I hav been just trying to read an edge count of one of the channels. In this case I'm reading from CTR 0 Gate. When I try to run the edge count test as soon as I move the shaft at all I get an error(Error -200141).
    It says I should try using DMA. I've looked into this and everything I have found appears to indicate that the  PCI-6036E has "dma", however I have been unable to identity if it is being used or not.
    Is my DAQ simply not capable of reading this fast of a signal?

    Hi Erik!
    How quickly are the counter events occurring? The counter source frequency of that card is 20MHz which should be able to keep up with a quick signal. 
    I see you found the knowledgebase article that references this particular error code (found here). The solutions mentioned there are worth looking at.
    The PCI-6036E only has one DMA channel available to it. So if you are only using one channel, DMA is being used by default. Any other channel that is being used at the same time is then defaulted to interrupts. 
    If you would like to be sure that your task is using DMA, you can include a property node to force the channel to use DMA (still, only 1 channel can use it at a time).  See the attached image on how to access that property.
    Also, be sure that you are not doing too many operations within the loop that is reading this data. That way the software can pull the data off the buffer as fast as possible.
    Peter E
    Applications Engineer
    National Instruments
    Attachments:
    DMA Counter.png ‏17 KB

  • Random 200141 and 200019 error messages -

    Hi,
    I have a new problem with an old code which is a random failing mid-run stating error 200141 or 200019. The code (in LabView 8.2) calculates engine speed from the pulses of an encoder, and takes pressure readings at each encoder point, with PCI-6143 board and SCB-68 connector block. A few weeks ago this would run fine for 10 minutes plus but has recently started coming up with these error codes mid run more and more frequently. The error messages seem to be related to too samples being processed with not enough time to do so - but does not occur with any relation to the frequency of acquisitions (engine speed), but to occur randomly. I have watched the CPU in task manager as the program runs, but it only uses about 2% of CPU (except for the start which uses about 10%).
    Because of the random nature of these errors, and the fact that this program used to work ok (at even higher acquisition rates), I can only think that there must be something wrong with the operating system which is limiting the access of the program to CPU - perhaps a virus that my antivirus software has not picked up. I have already tried re-installing LabView and DAQmax, but to no avail. Does anyone have any ideas as to what else may be causing this - a fault with the encoder perhaps? Or how I would be able to check this? - I am a bit unenthusiastic about wiping and re-installing the whole operating system, especially if it may not help, but I cannot think of any other options at the moment.
    Any help or suggestions would be most appreciated.
    Thanks

    Hi Henry,
    Error -200019 is a hardware error that occurs if two clock edges occur too quickly.  For example, the 6143 has a maximum clock rate of 250 kHz.  As you increase the sample clock rate higher than 250 kHz, you would eventually see this error message.
    Assuming your external clock rate is indeed under 250 kHz, the most likely cause of this error would be noise on your input line causing multiple clock edges to be picked up by the board in quick succession during a single transition.  The likely remedy would be to use an external Schmitt Trigger.  I should also point out that later generations of DAQ hardware have digital filtering available on the PFI lines that could also be used to solve the problem--unfortunately the feature is not present on the 6143.
    Error -200141 is also a hardware error, indicating that the data is overwritten on the board before it can be transferred to your computer.
    What is the rate that you are trying to sample your counter?  It's possible that noise on the clock line could cause this problem as well, especially if the behavior seems to occur randomly.  The other possibility is that your external sample clock is too fast, and a slight delay in the data transfer could cause the value that was previously sampled to be overwritten.  This is a fairly common error for high rate counter measurements on
    hardware released before on-board FIFOs were added for counters.  For example, X
    Series and 2nd Generation cDAQ both have on-board counter FIFOs.
    To summarize, it sounds like you probably need external conditioning to prevent duplicate edges from being detected by the DAQ board.
    Best Regards,
    John Passiak

  • How to re-route source & gate for Buffered Period in DAmx

    I am trying to write a DAQmx program that does the follow :
    (1) creates 1 PulseTrain task; this task routes is output to a requested pin with will be used as a SOURCE for a Buffered Period task.
    (2) if requested creates a second PulseTrain who's output will be used as the Buffered Period GATE.
    (3) the Buffered period task needs to assign ANY SOURCE,GATE and run till its stopped by the user.
    Note that this task needs to "sample/read" its data and show it to the user.
    My questions are :
    (a) is the PulseTrain "output" re-route done OK ?
    (b) how to re-route the Period source/gate - I used DAQmxSetChanAttribute, but I an not sure it is right
    ©) how to make the Period task write the data into "my program buffer" so I do not have to read it when "stop" is pressed.
    I try to run with simulated devices on a P4 3.2GHZ running XP :
    First TrainPulse - ctr0, out->RSTI0
    Second TrainPulse - ctr1, out->RSTI1
    Period - ctr2, source=RSTI1, gate=RSTI0
    Running this program with a SIMULATED device - OK (data = 0). with the real device - I get error -200141
    I included my code.
    Attachments:
    DaQmx test.zip ‏147 KB

    I have a new question
    I need to create an event buffered task when the source=80mhz internal card timebase, gate=source of other counter (e.q for counter 1 use 0, for 3 use 2)
    I know that with Traditional-DAQ it will look like )see attch file):
    Now the convertion to DAQmx :
    ++++++++++++++++++++++++++++++
    void SetupEvent(void)
    if ( Internal.P6602_ID == -1 ) return;
    sprintf(Chan,"Dev%d/ctr1",Internal.P6602_ID); // channel 1
    DAQmxErrChk (DAQmxCreateTask("EventChan1",&DaqmxTasks.PCI_6602[1]));
    DAQmxErrChk (DAQmxCreateCICountEdgesChan(DaqmxTasks.PCI_6602[1],Chan,"EventChan1",DAQmx_Val_Rising,0,
    DAQmx_Val_CountUp));
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[1], DAQmx_SampTimingType, DAQmx_Val_SampClk) );
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[1], DAQmx_SampQuant_SampMode,DAQmx_Val_ContSamps) );
    DAQmxErrChk(DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[1],DAQmx_SampQuant_SampPerChan, BUF_MAX));
    // set source
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[1], DAQmx_SampClk_Src, "/Dev1/80MHzTimebase"));
    // and gate
    sprintf(msg,"/Dev%d/ctr0Source",Internal.P6602_ID);
    DAQmxErrChk(DAQmxSetChanAttribute (DaqmxTasks.PCI_6602[1], Chan, DAQmx_CI_CountEdges_Term, msg,0));
    sprintf(Chan,"Dev%d/ctr3",Internal.P6602_ID); // channel 3
    DAQmxErrChk (DAQmxCreateTask("EventChan3",&DaqmxTasks.PCI_6602[3]));
    DAQmxErrChk (DAQmxCreateCICountEdgesChan(DaqmxTasks.PCI_6602[3],Chan,"EventChan3",DAQmx_Val_Rising,0,
    DAQmx_Val_CountUp));
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[3], DAQmx_SampTimingType, DAQmx_Val_SampClk) );
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[3], DAQmx_SampQuant_SampMode,DAQmx_Val_ContSamps) );
    DAQmxErrChk(DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[3],DAQmx_SampQuant_SampPerChan, BUF_MAX));
    DAQmxErrChk (DAQmxSetTimingAttribute (DaqmxTasks.PCI_6602[1], DAQmx_SampClk_Src, "/Dev1/80MHzTimebase"));
    sprintf(msg,"/Dev%d/ctr2Source",Internal.P6602_ID);
    DAQmxErrChk(DAQmxSetChanAttribute (DaqmxTasks.PCI_6602[3], Chan, DAQmx_CI_CountEdges_Term, msg,0));
    return;
    Error:
    Internal.StartStop = OFF;
    if ( DAQmxFailed(error) ) DAQmxGetExtendedErrorInfo(errBuff,1024);
    StopCallBack();
    MessagePopup ("SetupEvent Error", errBuff);
    return;
    I am not sure this is the way to do it .
    Can samebody help ?
    Thanks, Galia
    Attachments:
    AutoScannerDAQCards.c ‏20 KB

  • Why the Process is still in deadlock when i have exhaust its error stream.

    There is the code:
    import java.io.*;
    public class ProcessExec {
      public static void main(String[] args) {
         * Test the Process created by Runtime.exec().
        Runtime rt = Runtime.getRuntime();
        String s = new String();
        if(args.length < 1) {
          System.out.println("Usage: java ProcessExec executionName");
          System.exit(-2);
        try {
          Process process = rt.exec(args[0]);
           * Buffer the error stream and exhaust it.
          System.out.println("ErrorStream data of Porcess:");
          BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
          while( (s = br.readLine()) != null) {
            System.out.println(s);
          System.out.println("\n\n------------------------------------------------------------\n\n");
           * Buffer the input stream and exhaust it.
          br = new BufferedReader(new InputStreamReader(process.getInputStream()));
          System.out.println("InputStream data of Porcess:");
          while( (s = br.readLine()) != null) {
            System.out.println(s);
          System.out.println("Return num: " + process.waitFor());
        catch(Throwable t) {
          System.out.println(t);
    }When i run the "javac" as :
    C:\classses\lang\java ProcessExec javac
    The process run correctly and print the error stream.
    But when i run the "java" as:
    C:\classes\lang\java ProcessExec java
    The process was in deadlock?
    Why,in my code i have buffered the error stream and input stream using a BufferedReader and then exhausted them.
    And when i invoke the "javac" it ran correctly but why it couldnt run correctly when i invoked the "java" execution?

    A deadlock occurs when two locks are dependant on each other.
    This is unlikely to be the case here.
    With out your exact command line or what your output is or if you have a dealock we will need to see the thread dump which displays where the deadlock is.

  • Getting error as Buffer table not up to date

    Hi SRM gurus,
    We have one order which is created in the EBP side and the same is replicated in the backend also. Also confirmations and invoices are posted for this local PO. These confirmations and invoices are also carried over to backend. However very recently when we open this order in EBP and when we click either check button (or) change button we get the error indicating that Buffer table not up to date. I have pasted the error message below. We have also checked the ST22 and observed that exception occurred CX_BBP_PD_ABORT and is not caught any where. When do not have any issues with other orders. We have checked the recent changes and we could not observe any recent changes to the order.
    Note
    The following error text was processed in the system  : Buffer table not up to date
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Function: BBP_PD_ABORT of program SAPLBBP_PDH
    Form: ABORT of program SAPLBBP_PD
    Form: CHECK_VENDOR_ERS of program SAPLBBP_PD
    Form: HEADER_CROSS_CHECKS of program SAPLBBP_PD
    Form: PROCDOC_DB_CHECK of program SAPLBBP_PD
    Form: PROCDOC_CHECK of program SAPLBBP_PD
    Function: BBP_PROCDOC_CHECK of program SAPLBBP_PD
    Function: BBP_PD_PO_CHECK of program SAPLBBP_PD_PO
    Form: CHECK_PO of program SAPLBBP_PO_APP
    Form: PROCESS_EVENT of program SAPLBBP_PO_APP
    iN BBP_PD the status of this PO is as below.
    Stats:                                                          
                       Status            Description                             Inactiv
    HEADER     I1015          Awaiting Approval                      X      
    HEADER     I1021          Created                               
    HEADER     I1038          Complete                              
    HEADER     I1043          Ordered                               
    HEADER     I1080          In Transfer to Execution Syst.    X      
    HEADER     I1120          Change was Transmitted                
    HEADER     I1180          Document Completed                    
    0000000001 I1021          Created                               
    0000000002 I1021          Created      
    Please suggest / advice on this.              
    Thanks & Regards
    Psamp1

    Hi
    It is difficult to diagnoise the issue
    Note 1180477 - PO processing terminates with buffering table error
    see the symptoms in the note
    Symptom
    You have opened a purchase order using "Process Purchase Order" (BBP_POC). You change some data of this purchase order and then choose "Output" at header level. The system may display error message BBP_PD 001 "Buffer table not up to date", and an entry "UNCAUGHT_EXCEPTION" , "CX_BBP_PD_ABORT" is in transaction ST22
    Try to recreate the same issue in develpoment and make ensure that which data is causing this issue.
    What is the status of PO ? any archiving done recently on this PO or any data changes in the PO check history to know more information
    check SRM-EBP-POR for more related notes. you need to identify which data is causing thie issue
    Muthu

  • Some problems with 3 counters on PCI 6601

    Good afternoon,
    after a lot of time i'm here yet.
    The problem with the PCI 6601 aren't finished in sense that i have tried a lot of solution but my sistem crashed after some acquisition.
    The code that  had write on Visual Basic 6 are :
    'Inizializzo la scheda PCI-6601
    Public Sub init_6601(NumSens As Integer)
    Dim edge As DAQmxEdge1
    On Error GoTo ErrorHandler
        MyChannel(NumSens) = "My Channel" & NumSens            'Definisce il nome per il canale (optional)
        'Creo i tre task che servono per il funzionamento del programma
        DAQmxErrChk DAQmxCreateTask("", taskHandle(NumSens))
        'Questa funzione serve a creare il canale dalla quale poi viene effettuata la misura
        If (NumSens = 0) Then
            DAQmxErrChk DAQmxCreateCIPulseWidthChan(taskHandle(NumSens), "Dev1/ctr1", MyChannel(NumSens), 0.00001, _
            0.0009, DAQmx_Val_TimeUnits3_Seconds, DAQmx_Val_Edge1_Rising, "") ' DAQmx_Val_TimeUnits3_Ticks, DAQmx_Val_Edge1_Rising, "")
        ElseIf (NumSens = 1) Then
            DAQmxErrChk DAQmxCreateCIPulseWidthChan(taskHandle(NumSens), "Dev1/ctr2", MyChannel(NumSens), 0.00001, _
            0.0009, DAQmx_Val_TimeUnits3_Ticks, DAQmx_Val_Edge1_Rising, "") 'DAQmx_Val_TimeUnits3_Seconds, DAQmx_Val_Edge1_Rising, "")
        Else
            DAQmxErrChk DAQmxCreateCIPulseWidthChan(taskHandle(NumSens), "Dev1/ctr3", MyChannel(NumSens), 0.00001, _
            0.0009, DAQmx_Val_TimeUnits3_Seconds, DAQmx_Val_Edge1_Rising, "")
        End If
        DAQmxErrChk DAQmxSetReadReadAllAvailSamp(taskHandle(NumSens), False)
        'Con questa funzione si sincronizza il timebase della scheda con il segnale da leggere
        DAQmxErrChk DAQmxSetCIPulseWidthDigSyncEnable(taskHandle(NumSens), MyChannel(NumSens), True)
        'DAQmxErrChk DAQmxSetReadOverWrite(taskHandle(NumSens), DAQmx_Val_OverwriteMode1_OverwriteUnreadSamps)
        'DAQmxErrChk DAQmxCfgSampClkTiming(taskHandle(NumSens), "", 100000, DAQmx_Val_Rising, DAQmx_Val_AcquisitionType_ContSamps, 10000)
        'provare queste due funzioni per aspettare che il campione sia realmente disponibile.
        'La seconda èdovrebbe essere quella che da il migliore compromesso tra uso CPU e velocità.
        'DAQmxErrChk DAQmxSetReadWaitMode(taskHandle(NumSens), DAQmx_Val_WaitMode_WaitForInterrupt)
        'DAQmxErrChk DAQmxSetReadWaitMode(taskHandle(NumSens), DAQmx_Val_WaitMode_Yield)
        'Setta il numero di campioni da acquisire ogni volta che va in lettura e
        'il modo di lettura. Si è impostato "contsamps" per avere la lettura continua
        'La dimensione del buffer è determinata da quel 10000 che va messo così secondo le specifiche del daqmx
        DAQmxErrChk DAQmxCfgImplicitTiming(taskHandle(NumSens), DAQmx_Val_AcquisitionType_ContSamps, 10000) 'DAQmx_Val_AcquisitionType_ContSamps
        'La scheda NI PCI 6601 ha soltanto un canale per il DMA (Direct Memory Access) quindi non riesco a leggere
        'contemporaneamente tre task per volta. Quindi devo attivare un meccanismo diverso per la lettura
        'basato sugli interrupt, ogni volta che ho una lettura automaticamente leggo il dato
        DAQmxErrChk DAQmxSetCIDataXferMech(taskHandle(NumSens), MyChannel(NumSens), DAQmx_Val_DataTransferMechanism_Interrupts)
        'La funzione di seguito serve semplicemente per leggere il campione più recente generato
        DAQmxErrChk DAQmxSetReadRelativeTo(taskHandle(NumSens), DAQmx_Val_ReadRelativeTo_MostRecentSamp)
        'La seguente funzione è complementare ad una utilizzata nell'inizializzazione e serve per impostare la lettura
        'sull'ultimo campione generato
        DAQmxErrChk DAQmxSetReadOffset(taskHandle(NumSens), -1)
        DAQmxStartTask taskHandle(NumSens)
        taskIsRunning(NumSens) = True
    Exit Sub
    ErrorHandler:
        For i = 0 To 2
            If taskIsRunning(i) = True Then
                DAQmxStopTask taskHandle(i)
                DAQmxClearTask taskHandle(i)
                taskIsRunning(i) = False
            End If
        Next i
        MsgBox "Error: " & Err.number & " " & Err.Description, , "Error"
    End Sub
    For the reading i use :
            DAQmxErrChk DAQmxReadCounterF64(taskHandle(NumSens), -1, 0.5, temp(NumSens, 0), 10000, ReadSamp(NumSens), ByVal &O0)
    Well, my problem are very simple, I want an continuos acquisition on three channel and the input signal's frequency that i have to measure is 1 kHz .
    when i try to keep 2 channel after some cycles appears the error -200141 (buffer overwriting). Why?
    The read function is called some times every ms and evry time keep out an different value, even if that are impossible because the input signal is at 1 kHz, and why the buffer fill up? What is wrong in my code?
    Thanks in advance for your help
    Have a nice day!!
    Igor Piero Prato

    HI Igor84,
    Error 200141 occurs when the data acquisition device acquires data faster than the computer can read it from the FIFO (first-in-first-out) input buffer.
    You can see this document:
    Error 200141 Occurs When Doing Buffered Event Counting
    http://digital.ni.com/public.nsf/allkb/83656593DCF​1FB0F862570B6004D7222?OpenDocument
    and this forum :
    Buffer Overflow -200141
    http://forums.ni.com/t5/Measurement-Studio-for-VC/​Buffer-Overflow-200141/m-p/607234
    I hope that these links can help you.
    Regards

  • 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 do I use a counter to measure frequency and multiple analog signals in the same VI?

    I have a PCI-6071E, an SC-2345 with multiple modules, and a PXI-8184 (with a PXI-1002 Chassis).
    My goal is to monitor pressures, flows, temperatures, and speed in one VI.
    I am using Measurement and Automation Explorer version 3.1.1.3004 to manage my channels.
    My speed is a PWM signal which I recently rewired through the counter 0 of my board.
    I was hoping to configure this to read frequency directly in measurment
    and automation, have this scale the value to RPM, and then feed it
    directly in to my labView program.
    In labView, it will not except this signal though.
    I get error -200300 from the DAQmx Start Task.vi
    Possible reasons(s):
    Invalid timing type for this channel.
    Property: SampTimingType
    You Have Requested: Sample Clock
    You Can Select: Implicit, On Demand
    After doing some research, it seems that the counter wants "Implicit"
    selected for the DAQmx Start Task.vi, but then I cannot use my other
    channels. Also, counter is included in the "Sample Clock" option
    description, so I do not understand why it is not working.
    Does anyone know how to work around this problem or a way to configure the counter so that it will work in this way?
    All my other channels are Analog.
    Thank you.

    I am working on getting just the counter working by using
    the program posted previously, and I am running into issues. Periodically I get
    the error:
    Error -200141
    occurred at DAQmx Read (Counter DBL 1Chan 1Samp).vi
    Possible reason(s):
    Data was overwritten
    before it could be read by the system.
    If Data Transfer
    Mechanism is Interrupts, try using DMA. Otherwise, divide the input signal
    before taking the measurement.
    It seems to work better if I use cascaded counters, but I need timer 0 for
    analog channels when I run this code along with the program for the other
    measurements.
    I have tried averaging, and selecting different values for the millisecond
    timer, and these did not seem to have an effect.
    I tried different DAQms configurations and "Counter DBL 1Samp" seemed
    to work the best.
    The program will work for a while and then it will give me the above error
    message.
    If I use counter 0 as a cascaded counter input, the program runs fine. If I run
    this with other analog channels, it errors out because the analog channels use
    counter 0.
    If I use counter 1 as a cascaded counter input, it seems to work better than a
    single channel, but it will still error out with the above error.
    If I use only counter 1, I get the error above even faster.
    Also, none of the
    configurations give measurements outside the While Loop.
    The only place I can add a speed dial for the front panel is within the While
    Loop.
    Is there someway to get the signal to continuously send out of the while loop?
    I thought if I could get the signal out of the while loop, I could condition it
    anyway I wanted without the program erroring out.
    Any suggestions would be much appreciated.
    Thank you.
    Attachments:
    Counter_error.jpg ‏45 KB

  • How do I use multiple cameras to live stream through FME?

    I am looking to live stream pool tournaments from multiple angles but don't know what software or hardware I might need. Anybody have any good how to advice or links they might share? I stream through Ustream.tv if that makes a difference. Should I look for something different? Thanks

    I am working on getting just the counter working by using
    the program posted previously, and I am running into issues. Periodically I get
    the error:
    Error -200141
    occurred at DAQmx Read (Counter DBL 1Chan 1Samp).vi
    Possible reason(s):
    Data was overwritten
    before it could be read by the system.
    If Data Transfer
    Mechanism is Interrupts, try using DMA. Otherwise, divide the input signal
    before taking the measurement.
    It seems to work better if I use cascaded counters, but I need timer 0 for
    analog channels when I run this code along with the program for the other
    measurements.
    I have tried averaging, and selecting different values for the millisecond
    timer, and these did not seem to have an effect.
    I tried different DAQms configurations and "Counter DBL 1Samp" seemed
    to work the best.
    The program will work for a while and then it will give me the above error
    message.
    If I use counter 0 as a cascaded counter input, the program runs fine. If I run
    this with other analog channels, it errors out because the analog channels use
    counter 0.
    If I use counter 1 as a cascaded counter input, it seems to work better than a
    single channel, but it will still error out with the above error.
    If I use only counter 1, I get the error above even faster.
    Also, none of the
    configurations give measurements outside the While Loop.
    The only place I can add a speed dial for the front panel is within the While
    Loop.
    Is there someway to get the signal to continuously send out of the while loop?
    I thought if I could get the signal out of the while loop, I could condition it
    anyway I wanted without the program erroring out.
    Any suggestions would be much appreciated.
    Thank you.
    Attachments:
    Counter_error.jpg ‏45 KB

Maybe you are looking for

  • How to filter the data in a table UI/

    hi all, I have to put filter  and sort functions in my table UI.can ayone please help me how to do this with a code. regrads, Sharan

  • Providing WS in ABAP and consuming the WS in JAVA and vice-versa

    Hi Folks, Pls help me in creating  the below mentioned scenarios. 1) Providing Webservice in ABAP and Consuming in JAVA. 2) Providing Webservice in JAVA and consuming in ABAP. Also...pls let me know what are the system requirements for the above 2 sc

  • Is there a way to password protect the access options pannel, in particular the Connection Settings?

    Is there a way that access to the Options panel can be locked by an administrator. In particular I would like to block a user from being able to change the proxy server settings in Tools > Options > Advanced > Network > Connection Settings. I would l

  • How to install/add packages to org.apache

    hi everyone! i'm pretty new with Java and i wanted to know how to install a package i downloaded from "http://www.apache.org/dist/jakarta/". the package name is poi and i have no clue how to do it so i'll be able to import some classes from it in my

  • Mac Book Pro Battery after 1 year...

    Bought my Mac last year in march - used it sparingly then, and the long haul the battery would last for five hours. Now, I use it for almost every class I'm in, sometimes with the charger, sometimes without - and it only lasts for maybe a half hour b