How to count time precisely?

I was trying to count time using a VI like the one attached.
My trouble is that this is not couting correctly. There is a possible reason I observed. 
Maybe the computer is not able to process the VI as fast as necessary. 
I thought about this because, when in edition mode the time counting was very wrong, and, when I created an aplication and installed it, it was running ok, as it got "light". But today, when I tryed to use this aplication with an old computer it didn't work. The clock is delaying.
Is it possible to count the time correctly? 
I'm using a DAQ6009 to do my works, my VI is pretty big, and I need an iteration at each 1 ms (milisecond) as I'm using digital inputs to count 5 encoders events (I know that this is not the correct way to count encoders, but this is the only way I can do that, and it's working).
Thank you all in advace! hope you can help me!
hugs!
Solved!
Go to Solution.
Attachments:
teste.vi ‏6 KB

OK.  Let me try to help you understand a few things.
The Tick Count and Wait (and Wait Until Next ms Multiple) functions all use a 1 kHz clock that is derived from the processor clock. The accuracy of these clocks is not great, although probably comparable to your stopwatch accuracy.  Any timing generated by these functions will show some differences from the time of day clock as it is derived from a different oscillator.
The front panel updates are timed both by LabVIEW and the OS. Most screens are updated 60-80 times per second, maximum. Depending on what else the OS is doing, a screen update could be delayed 10s of milliseconds or longer.  It is certain that not every value at the output of the Add function will be displayed.
The Wait Until Next ms Multiple will wait more than 1 ms if the other code in the loop takes longer than 1 ms.  I am not sure, but I think the indicator is buffered so that any delays by the OS in updating the display should not slow the loop. I tried removing the indicator and it did not seem to make much difference.
I modified your VI to provide several indications of performance. First, I added the three-frame sequence structure to allow timing of the loop. Second, I changed to a for loop which will run a preset number of iterations. Third, I connected the output of the Wait Until Next ms Multiple timer to an autoindexing tunnel so that a record of the time of each iteration appears in the Ticks array. I calculated the differences between successive times and displayed that on a graph so that you can see the performance.
I did not mean to sound critical of your use of English.  You write in English much better than I could in your language!  The point I was trying to make is that general descriptions such as "is not counting correctly" without quantitative results or evidence to support the claim do not have enough information to help us help you.
Lynn
Attachments:
teste.2.vi ‏13 KB

Similar Messages

  • How to count time between two pulses

    Hello everyone,
    I want to count time between two boolean pulses?  Can anyone give me an advice? Thank you in advance!

    Hello Michael78,
    You've right. I have a DAQ board and i want to acquire torque and angle (from a torque transducer). I already done that, but sometimes it doesn't work properly. To acquire this, i count sign changing of the torque to acquire exactly one period (3 sign changing). Torque have a noise, and when passes through zero, count more than 3 sign changing at a time, and this stop my acquisition (figure 2). I want to set a time between 2 counting sign . I tried something with tick count...but i made something wrong . I hope you understand me....
    Attachments:
    Capture.PNG ‏51 KB
    Capture2.PNG ‏47 KB
    Capture3.PNG ‏123 KB

  • How to use Counter/timer PWM Pulse as a trigger to aquire data??

    (1) I'm using the NI DAQpad 6015 multi-function card with the new DAQmx Driver. I'm using the counter/timer (counter 0, and counter 1) to generate 2 different PWM pulses to supply my sensor circuit. each pulse is a 1 second in duration. The pulse with 5m.sec duty cycle is the supply for my sensor. In addition to that, I'd like to use the 5 m.sec as a trigger to aquire the sensor reading. The DETECTIN POINT should be the middle of the HIGH State of the 5m.sec pulse (i.e just at the 2.5 m.sec point of the high state).  
    (2) another point is: how to display the counter/timer pwm output pulses on the front pannel?? 
    Attached is the VI i'm using (Complete PWM.vi)
    regards,
    Attachments:
    Complete PWM.vi ‏49 KB

    Hello alaali,
    It sounds like what you need is a trigger delay property node.  This property node specifies an amount of time to wait after the Start Trigger is received before acquiring or generating the first sample. This value is in the units you specify with Start.DelayUnits.  This way you can still acquire using the trigger, and you can specify the delay to be 2.5 ms so that the point that you actually acquire will be 2.5 ms after the trigger.
    Hope this helps.
    Regards,Message Edited by Raajit L on 04-23-2007 04:34 PM
    Raajit L
    National Instruments
    Attachments:
    DAQmx Trigger Delay.jpg ‏6 KB

  • How can I count time with labview7?

    Hi
    How can I count time with labview 7 and NI-DAQmx like I did with labview 6.1 and "count time-easy.vi" (count event or Time.vi).
    I have a 6025E and labview 7.0
    Thanks

    I am not sure what you want to do or why..
    ... but here goes (some suggestions)
    If you want to count the time between two events, you have a choice, you may use the Tick Count. Inisitalize it first by getting a timestamp and then do a difference within a loop. The difference will give you the time elapsed in ms.
    You can also use the Get Date/Time String or Get Date / Time in seconds and once again take a snapshot when a first even occurs and another snapshot at the next even (at a point where you want to measure elasped time). This method is particularly useful if you want to timestamp an event.
    If I didn't answer your question, can you elaborate what you mean by "How can I count time".
    Best of luck..
    JLV

  • How to count how many times the caller calls by using UCCX script?

    Hi there,
    My customer wants to do a few changes for their script as below:
    At the beginning of the script they are planning to add a new menu item, it will announce their new privacy policies and to continue the user must press the number one to continue to the Welcome.  If they do not press 1 then the message should repeat itself and if they again do not press 1 they should be transferred over to a live operator who will explain things and then be able to transfer them back to the message so that they can press 1 and continue.
    I modified their script as attached file, but i don't know how to count how many times the caller calls in "Get Reporting Statistic".
    Any helps would be appreciated.
    Thanks.

    Hi Aaron,
    At beginning, i want to use a variable to get number of mistake for the same caller, then we will send the call to right place to fulfill the customers' needs. 
    Do you have any suggestion for the new posted script?
    Thanks.

  • How to control time with great precision

    Hello everybody.I know Timer could control time.But it uses thread.sleep(),isn't it.That means it is not guaranteed.So,does anybody know some approach to control time precisely?
    thanks in advance!

    Hello everybody.I know Timer could control time.But it
    uses thread.sleep(),isn't it.That means it is not
    guaranteed.What do you mean by "not guaranteed". How can you expect a non-realtime multitasking OS that uses virtual memory (i suppose you are using a system like windows or linux) to guarantee anything? Some systems are better in this regard, but in addition to this you aslo have the garbage collection. Of course there might be ways to implement soemthing more precise in Java , but without a special VM on a special OS there is no guarantee that it will really work imho.

  • How to count " How many times the ' commit work ' Statement is executed.

    Hi all sap Champions,
    One of the client requirement, That is
    How to count " How many times the ' commit work ' Statement is executed.
    It's urgent.
    Please can anybody help me for this.
    Thanks
    Basu

    hi,
    when report try like this.
    declare a variable as
    data: counter type i value 0.
    COMMIT.
    counter = counter + 1.
    write:/10 counter 'NO. OF TIMES COMMIT WORKED'.

  • How to count number of autoextents that had took place between a period.

    urgent question
    Hi all
    how to provide me a report for getting the result of the Disk Drive Space usage (drive letter) that shows how quickly the space is being used up by the database(dbf files).
    Or how to count the number of autoextents that had took place between a certain period of time.
    either by cmd promt or OEM would be fine
    Oracle database 10g(single instance)
    OS:Windows 2003 server
    thanks
    Anto

    hi justin and Pavan
    First Thanks for your immediate responce,
    Secoundly client has asked for the growth report at the OS level and not at the database level. but the growth is with respect to the autoextent feature that oracle has over the datafiles.
    I was thinking that i could get a view or some history log to get this data retrieved from the past may be of a months data.I normally manually check the data base growth with the following script
    SELECT total_space,free_space,
    (NVL(total_space,2)-NVL(free_space,2) ) used_space
    FROM (select round(SUM(Bytes/1024/1024/1024),2) Total_space
    from DBA_data_files
    (select round(SUM(Bytes/1024/1024/1024),2) free_space
    from DBA_free_space
    but this is Oracle DB level.
    Any ideas for the report.like a query or somewhere in OEM
    Thanks
    Anto

  • How to count number of lines in a file?

    I am using a BufferedReader to read my file, but I like to know how to count the number of lines in a file is there a way to do that in Buffered Reader or do I have to use FileInputLineStream?

    Well, if you know how to read one line with a Buffered reader, and you know how to keep reading lines until you run out, then all you have to to is initialize a counter to zero before you start reading, add 1 to it each time you read a line, and then examine its value when you're done.
    Try that, and post again if you get stuck.
    Just be careful how you construct your loop. "Off by one" errors are a common way to get bitten. It could happen if you count what you think is the last line, but you've actually already counted all the lines and you end up counting one extra for "there are no more lines".

  • Counter/Timer Waveform

    I would like to convert period measurements (RPM data) received from my counter/timer board into waveform data type so that I would be able to conduct frequency analysis on the data (e.g. FFT). Have tried with limited success interpolation & decimation techniques. Would be grateful for any suggestions.

    Malfesto,
    I had a look and can offer up a few comments:
    1. I don't understand your comment about "truncation error" in the slow speed pulses case. Perhaps your are remarking about the "glitches" in the slow data embedded in the block diagram array? More on this a bit later...
    2. At least at a quick glance, the interpolation seems a little funky. I didn't spend a ton of time wrapping my head around it so maybe it's actually ok, but I saw a finite difference that would act like a derivative of the period, and a scaling factor based on the average period -- things that make me go hmmmm.
    Also, if you zoom on the graphs for the Slow Data, you can kinda see that the "Post Processing Graph" looks like a derivative of the "Pre Processing Graph". I suspect you need to rework your interpolation method.
    3. When I did a similar project, I think I first converted all the periods to frequencies and also generated a "sample time" array that was the cumulative sum of the periods. (I toyed with tweaking the time array so that the timestamp would correspond to the midpoint of the interval that I had converted to a frequency. I don't recall now whether that tweak proved useful enough to bother with).
    Once I had laid out arrays for frequencies and (unequally-spaced) sample times for those frequencies, I could generate an equally-spaced time array at a desired "virtual sampling rate" and interpolate to create new "virtual frequency" values. Since I was merely post-processing data, I think I also used the native LabVIEW array functions 'Threshold 1D Array' and 'Interpolate 1D Array' in the interpolation process.
    Now, before going into an FFT you'll want to remove the huge DC offset. This may be as simple as subtracting the mean or median frequency from all entries if you are nominally at constant speed.
    4. Your raw dataset for Slow Data has suspiciously periodic glitches in the periods. There is a very strong and dominating pattern that repeats every 16 intervals. Your typical period is registering about 10 million timebase cycles. However, in every set of 16 periods, you get one period around 27 million and another around 35 million.
    I don't know how you gathered your "Slow Data" values, but there seems to be a systemic error in the measurement. That sort of one-sample discrepancy looks very suspicious. I'd urge you to determine the source of those glitches and try to eliminate them. They don't appear to be telling the truth about the motion you wish to characterize. The device you measure doesn't by chance start and stop or go back-and-forth during your measurement, does it?
    Hope this helps.
    -Kevin P.

  • How to count no. of tokens in a string?

    hello everybody?
    I am using StringToknizer to read a csv file line by line.
    My problem is:
    i want to know how many tokens are there in a particular row. How to count it at a streatch?
    i am using
    <%
    if (st.hasMoreTokens())
         a3=st.nextToken().trim();
    %>i thought of using String.split(), but, i don't know how to use it?(what class to import)
    Anyguidence will be appreciated
    Thanks for your time.
    Regards,
    Ashvini

    StringTokenizer will do it for you!
    int numberOfTokens = st.countTokens();m

  • How to count the number of lines dynamically,

    In the below code am trying to read the lines which are selected using a check box, also am categorizing the contents depending on the follow up material.
    after displaying one category contents am displaying a line
    which also counts to a line in the internal table.
    My question is how to count the number of lines(ULINE) displayed dynamically.
    FORM GET_LINES .
      DATA: LV_LINES TYPE I,
            LV_TIMES TYPE I,
            LV_TABIX TYPE SY-TABIX.
      DESCRIBE TABLE IT_REC LINES LV_LINES.
      DO LV_LINES TIMES.
        LV_TIMES = SY-INDEX .
        READ LINE LV_TIMES FIELD VALUE IT_REC-CHECK INTO GV_CHECK.
        IF SY-SUBRC EQ 0 AND GV_CHECK IS NOT INITIAL.
          LV_TABIX =  LV_TIMES.
          READ TABLE IT_REC INDEX LV_TABIX INTO GWA_UPDATE.
          IF SY-SUBRC EQ 0.
            APPEND GWA_UPDATE TO GT_UPDATE.
          ENDIF.
        ENDIF.
      ENDDO.
    ENDFORM.                    " GET_LINES

    In the below code am trying to read the lines which are selected using a check box, also am categorizing the contents depending on the follow up material.
    after displaying one category contents am displaying a line
    which also counts to a line in the internal table.
    My question is how to count the number of lines(ULINE) displayed dynamically.
    FORM GET_LINES .
      DATA: LV_LINES TYPE I,
            LV_TIMES TYPE I,
            LV_TABIX TYPE SY-TABIX.
      DESCRIBE TABLE IT_REC LINES LV_LINES.
      DO LV_LINES TIMES.
        LV_TIMES = SY-INDEX .
        READ LINE LV_TIMES FIELD VALUE IT_REC-CHECK INTO GV_CHECK.
        IF SY-SUBRC EQ 0 AND GV_CHECK IS NOT INITIAL.
          LV_TABIX =  LV_TIMES.
          READ TABLE IT_REC INDEX LV_TABIX INTO GWA_UPDATE.
          IF SY-SUBRC EQ 0.
            APPEND GWA_UPDATE TO GT_UPDATE.
          ENDIF.
        ENDIF.
      ENDDO.
    ENDFORM.                    " GET_LINES
    The display function is:
    FORM DISPLAY_DATA .
      ULINE.
      WRITE :  /1 SY-VLINE, 'check',
                10 SY-VLINE, 'Plant',
               20 SY-VLINE, 'Material number',
               50 SY-VLINE, 'Follow up material',
               70 SY-VLINE, 'Safety stock',
              100 SY-VLINE, 'Partc'.
      ULINE.
      LOOP AT IT_MARC.
        MOVE: IT_MARC-WERKS TO IT_REC-WERKS,
              IT_MARC-MATNR TO IT_REC-MATNR,
              IT_MARC-NFMAT TO IT_REC-NFMAT,
              IT_MARC-EISBE TO IT_REC-EISBE,
              IT_MARC-PARTC TO IT_REC-PARTC .
        APPEND IT_REC.
        CLEAR IT_MARC.
      ENDLOOP.
      DATA: GV_TABIX TYPE SY-TABIX.
      LOOP AT IT_REC.
        GV_TABIX = SY-TABIX.
        READ TABLE GT_TOTAL WITH KEY WERKS = IT_REC-WERKS
                                     NFMAT = IT_REC-NFMAT.
        IF SY-SUBRC EQ 0.
          IT_REC-PARTC = GT_TOTAL-PARTC.
          MODIFY IT_REC INDEX GV_TABIX TRANSPORTING PARTC.
        ENDIF.
      ENDLOOP.
      LOOP AT IT_REC.
        WRITE : /1 SY-VLINE, IT_REC-CHECK AS CHECKBOX,
                10 SY-VLINE, IT_REC-WERKS,
                20 SY-VLINE, IT_REC-MATNR,
                50 SY-VLINE, IT_REC-NFMAT,
                70 SY-VLINE, IT_REC-EISBE,
               100 SY-VLINE, IT_REC-PARTC.
        AT END OF NFMAT.
          ULINE.
        ENDAT.
      ENDLOOP.
      ULINE.
    ENDFORM.                    " DISPLAY_DATA
    Solved

  • Saving a waveform with time precision

    I am trying to save a waveform with 3 digits of precision. ex HH:MMS.SSS.

    Hello,
    Irrespective of the labview version, if you place a waveform graph on your front panel, right click and go to the scale you want, there will be a formatting option available and you can select that and set your time precision to 3 digits.
    You can also check out this following knowledge base to read about the Properties of waveform Chart. There is also another link within this knowlege base which talks about how to programmatically autoscale waveform chart and graphs.
    Hope that helps. If not, please email back with further questions.
    Good luck and have a great day!
    Koninika
    National Instruments.

  • How to create timer in Flash Lite 2.0

    Hai
    In Flash Lite 2.0 I need to create session(ie)When i enter
    into a scene i will set the time to 60 secs and the time starts
    counting from 0 when it reached 60 secs it has to exit the
    application.
    I have no idea about how to create timer in Falsh Lite
    2.0.Can anyone please help me.

    I have solved my problem.
    should be:
    fscommand("launch","\\windows\\wmplayer.exe");

  • How to count the number of wins?

    I have a tic tac toe simulator that simulates a game of tic tac toe (obviously). I press the 'play' button, and 1 random X and O is placed in 9 of the labels. Then the application says if X or O wins, or if the game was a tie/no winner.  So,
    what I want to do is when I click the 'exit' button, I want a message box telling the user how many times X won, O won, and how many ties there were.  I am not too sure how to count the number of wins.
    -Thanks

    Thanks for the reply.  I could be wrong, but I do not think that is exactly what I am looking for.  Here is the code that I have that determines the winner:
    switch (checkWinner())
    case 'T':
    winnerLabel.Text = "It was a tie!";
    break;
    case 'O':
    winnerLabel.Text = "O Wins!";
    break;
    case 'X':
    winnerLabel.Text = "X Wins!";
    break;
    private char checkWinner()
    char WinnerChar = ' ';
    int winning_line = 0;
    if (GameBoardCellChar[0].Equals(GameBoardCellChar[1]) && GameBoardCellChar[0].Equals(GameBoardCellChar[2]))
    WinnerChar = GameBoardCellChar[0];
    winning_line++;
    if (GameBoardCellChar[3].Equals(GameBoardCellChar[4]) && GameBoardCellChar[3].Equals(GameBoardCellChar[5]))
    WinnerChar = GameBoardCellChar[3];
    winning_line++;
    if (GameBoardCellChar[6].Equals(GameBoardCellChar[7]) && GameBoardCellChar[6].Equals(GameBoardCellChar[8]))
    WinnerChar = GameBoardCellChar[6];
    winning_line++;
    if (GameBoardCellChar[0].Equals(GameBoardCellChar[3]) && GameBoardCellChar[0].Equals(GameBoardCellChar[6]))
    WinnerChar = GameBoardCellChar[0];
    winning_line++;
    if (GameBoardCellChar[1].Equals(GameBoardCellChar[4]) && GameBoardCellChar[1].Equals(GameBoardCellChar[7]))
    WinnerChar = GameBoardCellChar[1];
    winning_line++;
    if (GameBoardCellChar[2].Equals(GameBoardCellChar[5]) && GameBoardCellChar[2].Equals(GameBoardCellChar[8]))
    WinnerChar = GameBoardCellChar[2];
    winning_line++;
    if (GameBoardCellChar[0].Equals(GameBoardCellChar[4]) && GameBoardCellChar[0].Equals(GameBoardCellChar[8]))
    WinnerChar = GameBoardCellChar[0];
    winning_line++;
    if (GameBoardCellChar[2].Equals(GameBoardCellChar[4]) && GameBoardCellChar[2].Equals(GameBoardCellChar[6]))
    WinnerChar = GameBoardCellChar[2];
    winning_line++;
    if (winning_line == 0 || winning_line > 1)
    WinnerChar = 'T';
    return WinnerChar;
    Do I have to include something extra in here to get the count or no?
    The code I posted is the coding in my play button.

Maybe you are looking for

  • How to get IDOC #, If I know the sales order #? I tried in SE37 with*NEIGH*

    Hi Experts, I hv a sales order #, say, my_order.........its created from a IDOC via FM of IDOC_INPUT_ORDERS and message is ORDERS. So, let me know that, If I know the slaes order #, my_order, How to get its associated IDOC #? In SE37, I searched with

  • How do you enable the built-in predictive text feature?

    Built-in predictive text appears in the new features list, but I don't see an obvious way to access it.  Help?

  • Playing video through frontrow onto HDTV

    I am wondering if I use frontrow to play a video, and I connect my computer to my HDTV with an HDMI cable, will it play show the same quality over the HDTV or can I expect some loss in quality? If there is loss, is there some better way to play video

  • Date format formula

    simple question (sometimes you forget the basics!!!) how do i format a date in a formula basically i want to say if country <>'US" then date(),'YYYY-MMM-DD') i keep getting to many arguments thanks

  • Error: ORA-12560 TNS : Protocol Error help need urgently

    HI i m working on win 2k adv server i installed orcale 8i and then i started sql plus and entered us id and pass : scott / tiger and also tried :system / manager but i m having this error plz tellme how can i solve it Error: ORA-12560 TNS : Protocol