Sample clock vs sample per channel per second

Referring to this link http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/dbe7ac32661bcf9b86256ac000682154?OpenDocument
What's the difference between sample clock and sample per channel per second? Looks the same to me.

The sample clock is the clock that sets the timebase for channel operations on the board.  The samples per channel per second is the actual rate at which data can be transferred on a particular channel.
Alex A.
Applications Engineer

Similar Messages

  • Daqmx Sample clock

    Hello,
    I am using Daqmx Sample clock function and I am a little confused about the input " rate" of this function.
    In Labview Help, this inut is defined as below:
    "rate" specifies the sampling rate in samples per channel per second.
    Now I set this " rate" to be 8000 and I have 8 channels, Does this mean that the sampling rate of the whole device is 64000? The samples per channel is 1000, what is the buffer size allocated by labview? Is it 8000?
    Thanks in advance, I am looking forward to the replies.

    Below is another knowledge base article.
    http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/dbe7ac32661bcf9b86256ac000682154?OpenDocument
    You said that you have eight channels. Are these channels setup in MAX and if so are they global channels or just one Task? Or are you creating a Task in LabVIEW?
    If you are reading these channels as a single Task, then each channel is being sampled at "sample rate". Then the buffer size is dependent on "sample mode". If it is continuous then use the chart, but if "Sample Mode" is finite then, NI-DAQmx allocates a buffer equal in size to the value of samples per channel.
    When doing finite, "sample rate" is the rate at which the channel will be sampled and "samples per channel" is the number of samples to return. So if sample rate = 1000 and number of samples to return = 100, then 100mSeconds of data will be returned ("number of samples to return/"sample rate"). In other words the channel will be sampled at 1000 until a total of 100 samples has been received.
    Chad

  • Can I use a substitute for the Sample Clock?

    I have three different analog inputs coming from one device (PCI-6221).  Two inputs are running at the same sample rate while the third needs a faster sample rate and a trigger.  I have these seperated as two seperate tasks but my problem is they both use the sample clock.  Can I use a substitute for the sample clock on the third channel?
    I am running LabVIEW 8.2 on Windows XP.
    Thanks in advance for your help.
    Ron Deavers, CLD

    Hi programmindragon,
    I understand you are trying to
    configure your PCI-6221 to sample on multiple channels, while having
    different rates and triggers for the channels. Unfortunately, you can
    only configure one analog input task to run at once and all the channels in
    the task must share the same configurations, including the sample clock
    and trigger. This is due to the fact that all the channels are
    multiplexed to a single amplifier and ADC on the device. Thus, you will
    not be able to configure the two inputs at one rate and use a different
    clock rate and trigger for the third input. Is it possible to sample at the
    maximum rate on all channels and decimate the data that you don't need on the certain
    channels, as well as share the same type of triggering? Hopefully you will be able to run your application with the same configuration across multiple channels, otherwise you may need multiple DAQ devices. Please let me know if you have any further questions related to this issue.
    Regards,
    Daniel S.
    National Instruments

  • Buffer size and samples per channel

    I have a question regarding the allocation of the output buffer. I have
    a digital I/O card PCI-6534 and I use the driver NI-DAQmx 7.4.0f0. I
    would like to generate a digital output using different clock rates.
    For example, I need to write 500 samples at 1000 samples per second and
    other 500 samples at a rate of 10000 samples per second. the simplest
    solution is to prepare two different waveforms, write the first one on
    the buffer and generate the output. Then I can load the second waveform
    on the buffer and generate the second output. In order to minimize the
    delay between the two output sequences, I would like instead to write
    the buffer once. I tried to set the buffer size to 1000, and the number
    of samples per second to 500, but it doesn't work. There is a way to
    set independently the buffer dimension and the number of samples which
    have to be generated?

    I can post the whole thing but I'll talk a little about it. It's a producer consumer loop with a continuous analog input sample from external clock program in the producer loop. Right now the consumer loop has a simple write to spreadsheet VI in it but eventually I want to average each revolution (well, two since it's a four stroke but that's neither here nor there) of pressure traces and spit out a single curve.
    The wiring is simple. I have a voltage supply feeding the encoder and the quadrature A input on PFI 8 of the 6212 DAQ. I also have the Z index plugged in but nothing else to it. The analog input is a BNC right to AI 0. I can make a diagram if you want one. I've scoped the rotary encoder output and it looks great, very square with small relative rise times.
    Attachments:
    Yanmar Program V2.vi ‏46 KB

  • Samples Per Channel Matter when Taking Continous Samples?

    So noob question of the day. I have been playing around with the lightbulb feature. Anyways, I notice my array size is greater than my samples per channel input. Does the DAQmx sample clock even look at the samples per channel input when set to continous?

    Did you check the help file for the DAQmx sample clock function?
    "samples per channel specifies the number of samples to acquire or generate for each channel in the task if sample mode is Finite Samples. If sample mode is Continuous Samples, NI-DAQmx uses this value to determine the buffer size."

  • Multiple channels acquisition and Number of samples per channel

    Hi,
    I'm a new labview user and I need some help in trasposing an old traditional NI-DAQ acquisition software in a NI-DAQ-mx one.
    I followed the tutorial (#4342) but I found a problem with Analogue 2D DBL Multiple Channels Multiple Samples DAQmx Read Vi.
    I'm trying to acquire 8 voltage signals from a NI-USB-6341 device. When the Number Of Samples Per Channel I set is below the number of channels (8), the software acquires only a number of channels equal to the number of samples per channel I set.
    Is that a normal behaviour?
    Thank you
    Daniele

    This is my code. The problem is the same with or without the code for the scan backlog indexing.
    Tomorrow I will try with the code from the example.
    Thank you
    Daniele
    Attachments:
    acq code.jpg ‏119 KB

  • How to use ni-6008 and build a four channel data acquisition at a rate of 250 samples per channel and display all the data in a waveform chart

    how to use ni-6008 and build a four channel data acquisition at a rate of 250 samples per channel and display all the data in a waveform chart 

    Hi kdm,
    please stick in one thread for the same topic!
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

  • Sample per channel and sample to read

    Hello everybody
    I am new in LABVIEW and I have some difficulties with something.
    I don t know exactly what is the difference between the sample per channel et the sample to read. I believe knowing that the sample per channel is the size of the buffer which is more big than the sample rate but I don t know what is the sample to read.
    I ve tested with different sample per channel and sample to read. Sometimes I have an error and sometimes know and I would like to know why. If you have any example for I understand better, it will be great.
    I really need to understand this part for my project
    Thank for your help
    Romaric GIBERT
    Solved!
    Go to Solution.

    Hi Roro,
    As you mentioned, when acquiring continuous samples you can specify the sample buffer size by placing a value at the input "samples per channel" on the timing vi. The "number of samples per channel" input on the read vi which automatically names a control/constant with "samples to read" specifies the number of samples you wish to pull out of the buffer in one go when reading multiple (N) samples. This link may provide a bit more clarification. I have also attached a good example from the NI example finder which you may find useful to explore. I'm assuming you are using the DAQmx driver set so please let me know if this is not the case, but the same principles should apply either way.  
    This therefore means when sampling at a given rate, you need to ensure you are pulling data out in big enough 'chunks' to prevent the buffer from overflowing (which may well be causing the error you are seeing). Conversely if your sampling rate is slow and your read vi is having to wait for the number of samples to read you specified to be available, it may throw a timeout error. You can avoid this by either increasing your sampling rate, reducing your samples to read or increasing the timeout specified at the read vi input (-1 means it will wait indefinitely).
    Let me know if this helps and how you get on.
    All the best.
    Paul
    http://www.paulharris.engineering
    Attachments:
    Cont Acq&Graph Voltage-Int Clk.vi ‏27 KB

  • NI PCIe-6351 Count Edges Channel error on fast TTL - Multiple Sample Clock pulses were detected

    Hello,
    I am trying to use a PCIe-6351 to record the arrival times of a fast TTL pulse stream (generated by an Excilitas/Elmer Perkin APD). The TTL pulses are 2.5 volt amplitude, 20 ns duration, with a gauranteed dead time of 50 ns between pulses. I am trying to use the the Count Edges function, with the  100MhzTimebase as the input terminal and the input to counter 0 (PFI8) as the sample clock. After a few seconds of acquiring data at 100 Mhz, the application throws the following error (-201314):
    "Multiple Sample Clock pulses were detected within one period of the input signal"
    I had thought that because there is 50 ns dead time between pulses, multiple pulses would never arrive within a single clock cycle of the 100 Mhz timebase. Is there any way this might not be the case? Alternatively, is it possible that the counter is triggering on some jitter around the edges of the pulses? If so, is there any way to filter such high frequencies without losing the 20 ns pulses?
    I have read through the forums for similar problems with photon detectors, but have not been able to resolve this issue. Thank you for the help.
    Matthew Bakalar

    It sounds like the input signal is being detected as multiple edges.
    The PFI filtering feature on the X Series card likely isn't going to be suitable for you.  The minimum setting is actually exactly 20 ns, which should in theory guarantee a 20 ns pulse passing through.  However, if the signal is high for anything less than that there wouldn't be a guarantee (depending on the phase of the timebase relative to the rising edge of the signal)--considering rise times and that there is evidently a glitch in the signal itself, it probably isn't actually a continuous 20 ns high time by the time the DAQ card sees it.
    What you should do instead:
    Configure a second counter as a retriggerable counter output (single pulse).
    Use your external signal as the start trigger for this counter output task.
    Set the initial delay, high time, and low time for the counter output task all to 20 ns (the minimum).
    Use the internal output of the counter output task as the sample clock source for the original edge count task.
    The counter output will be triggered when it sees the external signal, wait 10-20 ns, then generate a 20 ns pulse.  If there is a glitch on the trigger line during this 30-40 ns that the output is generating, it will be ignored.  The counter output will be re-armed in time for the next pulse given the minimum dead time of 50 ns between pulses.
    Best Regards,
    John Passiak

  • Digital external sample clock (C#)

    I am using the PCI-6225 card and trying to generate a pair of pulses using the digital lines and internal clock, but I am getting some odd/unexpected results.  Can someone explain?
    Basically what I want to do is generate a regular pulse over a (configured) set of lines.  The pulse will, typically, be 10ms wide at intervals between 900ms and 1,100ms.  The interval will only change occasionally and is usually 1 second (1,000).
    After looking at the various C# examples I created something like the following
            private DigitalWaveform[] m_digitalWaveform = null;
            private DigitalWaveform m_positiveDigitalWaveform = null;
            m_digitalTask = new Task;
            m_digitalTask.DOChannels.CreateChannel(
                "Dev1/port0/line0", "", ChannelLineGrouping.OneChannelForEachLine);
            m_digitalTask.DOChannels.CreateChannel(
                "Dev1/port0/line1", "", ChannelLineGrouping.OneChannelForEachLine);
            m_digitalTask.DOChannels.CreateChannel(
                "Dev1/port0/line2", "", ChannelLineGrouping.OneChannelForEachLine);
            // etc. ...
            // Repeat for each configured line
            double pulseSampleRate = 1000;
            int numberPulseOfSamples = 1000; // This varies between 900 and 1,100.
            int pulseWidth = numberPulseOfSamples / 100;
            int numberOfChannels = m_digitalTask.DOChannels.Count;
            m_digitalTask.Timing.ConfigureSampleClock(
                "/Dev1/Ctr1Source",
                pulseSampleRate, // 1,000 or anything!
                SampleClockActiveEdge.Rising,
                SampleQuantityMode.ContinuousSamples,
                numberPulseOfSamples);
            m_digitalTask.Control(TaskAction.Verify);
            // m_digitalTask.Done += new TaskDoneEventHandler(OnDigitalTaskDone);
            // m_digitalTask.SampleClock += new SampleClockEventHandler(OnClockSamplePulse);
            m_digitalWriter = new DigitalMultiChannelWriter(m_digitalTask.Stream);
            // Create an array of waveforms (1 per channel/line).  Each waveform being the same with the 1st 1%
            // being up and the other 99% being down.  Set the Timing interval at 1ms.
            m_digitalWaveform = new DigitalWaveform[numberOfChannels];
            m_positiveDigitalWaveform = new DigitalWaveform(numberOfSamples, 1, DigitalState.ForceDown);
            for (int sample=0; sample < pulseWidth; sample++)
                m_positiveDigitalWaveform.Signals[0].States[sampl​e] = DigitalState.ForceUp;
            m_positiveDigitalWaveform.Timing = WaveformTiming.CreateWithRegularInterval(
                                                    new TimeSpan(0, 0, 0, 0, 1));
            for (int channel=0; channel < numberOfChannels; channel++)
                m_digitalWaveform[channel] = m_positiveDigitalWaveform;
            m_digitalWriter.WriteWaveform(false,m_digitalWave​form);
            m_digitalTask.Start();
    1. First of all this only did something if the selected clock source was /Dev1/Ctr1Source.  No other clock would do, even though there are 2 clocks on the board (e.g. /Dev1/Ctr0Source did nothing).
    2. Secondly the waveform timing seemed to be ignored, e.g. leave it out or setting to something other than 1ms made no difference.
    3. Thirdly the pulse sample rate also seemed to be ignored, e.g. set it to 1 or 1,000 made no difference.
    4. Fourthly the pulse seemed to be spread over odd intervals.  Set the integer numberPulseOfSamples as follows
    NumberPulseOfSamples    Interval
    ========================================
    1,000                                9 (ish) seconds
    2,000                                18 (ish) seconds
    4,000                                36 (ish) seconds
    1,500                                6½ (ish) seconds
    3,000                                8½ (ish) seconds
    800                                   7 (ish) seconds
    Setting the number of pulse samples to a low value (500) threw an error (-200016, "device memory underflow") when stopping the task.
    Can someone shed some light on what is going on and how I can get what I want?

    I only seem able to select Ctr1Source, but this may be because (?) I have some clocked analogue input going on at the same time, so perhaps Ctr0Source is busy with this.  Unfortunately, the 2 examples of clocked digital wave forms doing a write use PipelinedSampleClock or BurstHandshake, although there are reads using a "SampleClock".  If you try to run the 2 examples you get an error
    Property: NationalInstruments.DAQmx.Timing.SampleTimingType
    You Have Requested: NationalInstruments.DAQmx.SampleTimingType.Pipelin​edSampleClock (or SampleTimingType.BurstHandshake)
    You Can Select: NationalInstruments.DAQmx.SampleTimingType.SampleC​lock, NationalInstruments.DAQmx.SampleTimingType.OnDeman​d, NationalInstruments.DAQmx.SampleTimingType.ChangeD​etection
    Task Name: _unnamedTask<0>
    Status Code: -200077
    So I guess the PCI-6225 board doesn't support them.

  • 6251 AO sample clock

    Hello All,
    I am using a M6251 board for analog output. However, I have the problem that the board only allows discrete increments in the frequency of the Analog Output sample clock. The frequency step-size varies, depending on the sample-clock frequency, and reaches around 10kSa/s when the sample clock is running at 1MSa/s. Am I doing something really stupid, or is this a limitation of the board? The digital pulse-train generation does not seem to have this limitation. If this *is* a limitation of the board, is there some way of overcoming it? I have tried to re-route one of the counters into the AO sample clock, but, when I do so, I get an error message saying that resource is already in use.
    Any help will be greatly appreciated.

    There are two things that I can think of that could be causing the behavior that you're seeing. The first is that you are using the onboard Frequency Generator to generate the AO Sample Clock. If this is the case, you will notice that the Frequency Generator has limited capabilities in the frequencies it can generate. If this is the case, use the default AO Sample Clock as the clock for your AO application. M Series devices have a dedicated timing engine for AO applicatins, hence, no onboard subsystem (i.e. counters, PFI lines, etc.) will be used up if you use the AO Sample Clock default selection for timing your AO applications.
    The second guess that I have is that you are not specifying your AO application correctly in order to get the generated waveform frequency you're expecting. Their are several parameters that you need to set in order to get an expected frequency with AO - rate and samples per channel. Have a look at How Can I Calculate the Output Frequency of my Analog Output. This knowledgebase might currently be written with Traditional NI-DAQ terminology, but it should still help. Also, remember that even though you specify a certain update rate on your analog output, the actual update rate will be slightly different because of limited resolution of the divide down.
    Jared Aho

  • Using a Counter to error-check External Sample Clock

    Hi all,
    I am newish to labview and am working on a data acquisition project. I've managed to get the basics under control, but here's my situation and question...
    -- I am using the S-6123 card to capture and record data on two or more AI channels.  I am using a rotary encoder to generate a pulsetrain that I am using via PFI0 as the sample clock for recording the AI data.
    -- This rotary encoder gives 720 pulses per revolution and an index pulse once per revolution.
    -- In my data acquisition, I am pulling 1440 samples at a time with the DAQmx "read" function.
    I have been experimenting with counters and can get the RPM out of the pulse trains well enough, however I was wondering...
    Is there some way to use the 2 counters on the card (and signal routing of the two pulse trains) to double-check that the 1440 samples I take correspond to two exact revolutions, and that I'm not getting ahead of or behind the rotation of the encoder due to missing clock pulses or reading false pulses. I have a couple of ideas on how to attempt to do it, but to me they don't seem very reliable or efficient, so I thought I'd put it to the experts to point out of there is a more obvious way of doing it.
    I have attached a pdf of the specifications of the encoder family, the pulses that will be output are on the right hand side of page 2.
    With many thanks in advance,
    Peter
    Message Edited by mumech on 07-22-2008 01:05 AM
    Attachments:
    REncoder Specs.pdf ‏312 KB

    Thanks very much for your reply. I had come across the use of counters with angular encoders but hadn't quite thought of the concept in this way.
    I will have to experiment a bit over the next day or to see what this is capable of, the examples seem quite comprehensive, however I'm not sure if I will run into issues due to the fact that I am using the rotary encoder as the sample clock for my analogue data.
    Would I indeed be able to compare these values (ideally check the position of the encoder after each set of data acquisition) without a "third party" sample clock common to both? (which isn't appropriate for this application)
    If I was only running at low speeds, I might be able to implement this by simply checking the position of the encoder after each read of the data. However, at higher speeds there might be synchronization issues due to the buffering of the analogue data. So when getting the measurement from the encoder counter chances are the analogue data was acquired at an earlier time.
    I know I haven't worded this very well, but how might I synchronise this error checking method?

  • Can buffered digital edge detection only be performed using an external sample clock?

    I am working on an application where I need to measure the speed (rpm) of a motor as it starts up using the output of its built in hall effect sensor.  The sensor should output 2 pulses per revolution of the motor.  My plan is to count the pulses from when the counter (counter 1) is armed to when it is up to speed. Looking at the M series manual, the CVI (v8.5.1) help, and the examples it appears that this can only be done using an external sample clock.  Is there a way to route an internal sample clock to the appropriate terminal on the counter so that I do not need to add additional hardware?
    I am currently using a PCI-6289, but the final application will use a CDaq-9188 chassis (using one of the the built in 32-bit counters).
    Thank you for your assistance.

    Thank you for your input.
    However, I did forget to mention one detail of the application.  I need to buffer the edge counts so that I can graph the speed of the motor as it starts up.  I need to be able to acquire the edge counts at reqular intervals so that I can determine how fast the motor was rotating at each point.  So far I have not been able to find an example of doing this without and external sample clock.  As I mentioned, in the final application I will be using the 32-bit counters on a CDAQ-9188 chassis.  The only thing I can think of at this point is to generate a pulse out of the second counter and use that as the sample clock.  Will this work?

  • Sample Clock problems

    Ever since I put a sample clock, my counter is going haywire...any suggestions?
    Attachments:
    sample rate.vi ‏196 KB

    I can read code but not minds; could you try a bit harder?  You have a graph labeled "Horizontal Displacement."  When I follow back the wire going to that graph, it comes from an analog input task.  That task does not have a sample clock associated with it, that I see.  The only sample clock I see is on the Horizontal Load channel.  As for the cycle count, do you mean the Cycle indicator?  Can you be more specific than "counting sporadically"?  Do you mean there are conditions under which you expect it to count an additional cycle, but it does not do so?
    It looks to me like you're try to count transitions where your input goes from less than to greater than some value.  You're reading multiple data points (don't know how many) on each cycle of the while loop.  However, you only process one point per loop cycle, discarding the rest (but still graphing them), so you could easily miss a transition.

  • NI6602 pulse width measurement: Do I have to use an external sample clock?

    Hi
    In the .NET 4 example 'MeasPulseWidthBuf_SmplClk_Cont' it is stated in the comments that:
    An external sample clock must be used. 
    Counters do not have an internal sample clock available.  You can use
    the Gen Dig Pulse Train-Continuous example to generate a pulse train on
    another counter and connect it to the Sample Clock Source you are using
    in this example.
    I have an application running without specifying an external clock. The applications is running, but I'm not sure I can trust the recorded data. Here is the channel creation code:
                    task.CIChannels.CreatePulseWidthChannel(readTaskCounter,
                                                            "ReadPulswidthTask", 25e-9, 20e-6,
                                                            CIPulseWidthStartingEdge.Rising,
    CIPulseWidthUnits.Seconds);
    task.CIChannels.All.DataTransferMechanism = CIDataTransferMechanism.Dma;
                    task.Stream.Timeout = callbackTimeoutInMilliSeconds;
    task.Stream.Buffer.InputBufferSize = 50000;
                    task.SynchronizeCallbacks = true;
                    task.Timing.ConfigureImplicit(SampleQuantityMode.ContinuousSamples);
                    task.Control(TaskAction.Verify);
    Note that I'm not specifying any external clock.
    1) Which clock is the daq using? -It is obviously using some clock since I can collect data via this task.
    2) Do I need to change the configuration to use an external clock to achieve reliable readings - as mentioned in the 'MeasPulseWidthBuf_SmplClk_Cont' example?
    /mola
    Solved!
    Go to Solution.

    Hi mola,
    That specific example is for sample-clocked pulse width measurements.  This type of measurement is only supported on newer hardware such as X Series boards and will not run on the 6602.
    Your application that you linked uses Implicit timing, meaning that the signal itself serves as the sample clock.  That is, at the end of each pulse width that you measure, the sample is deterministically latched in.  So, you end up with a buffered array of every pulse width that is seen by the counter.
    Best Regards,
    John Passiak

Maybe you are looking for

  • Vendor

    hi, i need to create an report for of list customer which displays the customer no. customer name, credit limit given to the customer and opening and closing balance of the customer. I need to generate the report based on the  cno. give me a select s

  • IPod Touch Gen 1 Stopped Working

    I have an iPod touch generation 1 and it just stopped working. It was working and I plugged it in to finish charging and when I woke up a few hours later it wouldn't turn on. It still won't turn on and doesn't appear in my iTunes. What do I do?

  • Customer payment history - KNB4 table

    Hello everybody, I am facing the followig situation in a production system of one of my clients: - the report S_ALR_87012177 (reading the table KNB4) outputs an amount (let's say x) as payments for a certain customer - report FBL5N shows a different

  • About visualizer,how can i make it stay full screen when it switched from a video

    play mp3 in itunes,and using its visualizer,if the next song is a music video,it will play the video automatically,but when the video ended,it will not return to the visualizer,how can i solve the problem?thanks(and please excuse for my poor english)

  • Convert SQL 2012 standalone to Always on

    Hi, I have a production SQL 2012 server with one database. Is it possible to convert that to two node always on cluster? What will happen to the existing database residing in that server? Please advise. Thanks.