data in different loop

Hi all

I'm working on an application where I need to acquire data to support him, treat, show on the graph, and the user can then make some changes (like changing the penetrating, speed of scanning or the filter values) on the returned data.

I use producer consumer architecture to implement my program.

In the loop of producer, I have a big event that has a time-out (10 ms) event where I acquire the data to support him in the loop of consumer I process data.

If all the data I receive from my H/W are treated and loops around the consumer in a loop.

And all penetrating filter change events, sweeping, producer loop. Where are these events took place, so I need to act on data that are lying in the loop of the consumer.

I just need to know how I can deal with data that are lying in another loop. What I need to use Variables, the values in the chart, or is it possible to efficeint more to exploit the data?

Thank you

Ritesh

In the producer/consumer having Labview design model, it uses a queue to transfer the data to the other loop.

So, there is only one answer. Use a queue.

You didn't say how big are your data or what kind are the ones. So I'll just say this: another solution, I usually use is to store the data in a global function (or the motor action)

All your actions should begin to read this and at the end to write the new return value to the overall function, so that it is ready to be read by the next action

Tags: NI Software

Similar Questions

  • Import ASCII dates with different format

    Hello

    I need to import data from a CSV of ASCII.

    The problem is the date format in this particular data file (.csv)

    The date format for day< 10="" and="" month="" from="" jan="" to="" sep="">

    AAAA/_M/_Dthe character '_' is a simple space, not an underscore literally

    The format of the date days > = 10 and Jan to Sep month is:

    _M/JJ/AAAA

    The format of the date days > = 10 and months of Oct to dec is:

    YYYY/MM/DD

    The date format for day< 10="" and="" months="" from="" oct="" to="" dec="">

    YYYY/MM/_D

    Possible solution:

    I already create a routine that recognizes the date in the title and one of the 4 (.stp) filter uses for data processing. These are the works.

    Next problem:

    The days are separated into 2 files, a file from 09:00 to 21:00 one day and the other from 21:00 to 09:00 on the following day. It's the way I've lost data when the day changes from 9th to the 10th of each month and the month change of Sept Oct and Dec to Jan.

    I just need to delete the blankspace unconfortable before the changes of dates 2-digit, but I do not know how to deal with the before CSV imported to tiara (10.2).

    My other idea is to recognize this file and any double (once with each please) but I need to exactly position the import is not the problem with the data of novalue. (Until know I got complicated for a simple mistake of blankspace).

    I hope that you have ideas...

    Thanks in advance...

    I don't know if I understand that measures are not clear. Here's what I think you want to do:

    (1) load data from different files in DIAdem

    To do this, you must use "DataFileLoad("E:\Customer_Requests\caracasnet\log(111231).csv","caracasnet_log","Load") call.

    You call DataFileLoad for each of the files.

    (2) you want to concatenate the groups.
    This should be no different than what you've done up to now

    (3) you want to store the data in a file (TDM).
    To do this, you must call DataFileSave (...)

    Let me know if you have any other questions...

  • Pass data to another loop event loop

    I'm trying to find a simple way to pass data to a loop of events for use elsewhere.  Could someone explain to me why my example below block (code attached)?  I feel that I must be missing something simple.  Also, I would rather avoid queues, if possible, because they seem unnecessarily complex.  Thanks for your help!

    The second loop will not run until the first is done. Use the performance highlighting and you can see. You can use a local or a vi to register the data in. Here's a quick example with the help of a local.

  • Two time of different loop and each FPGA implementation

    Hi, experts LV!

    I wondered that two different loops in the FPGA are possible to implement with the speed of each loop.

    Ex) SCTL and While loop in a same FPGA VI

    SCTL = 1 vs tick while loop graduations 43 (execution of the loop)

    Also, is it possible to transfer the T/F of SCTL signal any loop in a same FPGA VI via a local variable, even if they run different as loop above speeds?

    Yes you can.  Rather than ask, you might have just tried.  It would have been much faster for you.

  • Anyway to save the data in a loop without using shift register or feedback loop

    Hi all

    I've been thinking, is it possible to save data in a loop to the next iteration without the use of a shift register or a feedback loop?

    I need the possibility to reload the data within a loop from a file of lvm, but I want to use the same data until I have load some new.

    The reason why I don't want use the node registry or feedback shift is due to speed, although I don't know if the registry change

    in fact moves all the data of one register to another, or if it is stopped until a change data occur.

    I want to reuse data medium and large (6 measure of strength, pressure 2, 1 flow channels) of about 10 s data in each file with samplingsrate of 2 kHz...

    In my testing program, I have several CPU demanding computations and 3D graphics, so I want just to minimize the CPU loading as much as I can for each part of the

    software...

    I am enclosing a small VI to explain what I mean.

    I have now, I shouldn't use the express VI and I'll change that as well - it's just a proof of concept!

    Hope you guys can help me better understand this shift register...

    Thank you!

    -Tommy

    If the speed is the name of the game, go with the flow (data) and stick to a shift of registers or feedback node.  No data is moved, their job is to do pretty much exactly what you describe.  Any other solution, control/locals/globals will imply a copy of the data, and then you will have problems with speed.

  • Produce data of a loop with a structure of the event

    I'm relatively new to Labview programming (as discussed in my program below). I found a vi online which collects data from an analog USB card to 9237 bridge. The upper part of the vi is which collects the data. The original place the output into a chart, but I changed it to a digital indicator.

    The lower part, trying to get the operator to use the start, stop, buttons to interact with the system to reset. I used an event structure to do this. It all works well, except the event that the value of the load of data (from the loop above) cells. I want to follow up on the new value continuously, but is only once. All other features work fine. Can someone explain how I would best accomplish this?

    Any help would be apprciated.

    Why do you use a queue to pass data to a loop at the other?  The reason why it doesn't work once, it is the lower loop will wait until an event has occurred.

    I would eliminate the queue.  Wire the Total in a property for the total value (signalling) node.  That will trigger the occurrence for Total: change value event.

    Don't read property nodes in the upper loop when you have indicators and the son here to read from.

  • How to read the data with different XML schemas within the unique connection?

    • I have Oracle database 11g
    • I access it via JDBC: Slim, version 11.2.0.3, same as xdb.
    • I have several tables, each has an XMLType column, all based on patterns.
    • There are three XML schemas different registered in the DB
    • Maybe I need to read the XML data in multiple tables.
    • If all the XMLTypes have the same XML schema, there is no problem,
    • If patterns are different, the second reading will throw BindXMLException.
    • If I reset the connection between the readings of the XMLType column with different schemas, it works.

    The question is: How can I configure the driver, or the connection to be able to read the data with different XML schemas without resetting the connection (which is expensive).

    Code to get data from XMLType is the implementation of case study:

     1   ResultSet resultSet = statement.executeQuery( sql ) ; 
    2   String result = null ;
    3    while(resultSet.next()) {
    4   SQLXML sqlxml = resultSet.getSQLXML(1) ;
    5   result = sqlxml.getString() ;
    6   sqlxml.free();
    7   }
    8   resultSet.close();
    9    return result ;

    It turns out, that I needed to serialize the XML on the server and read it as BLOB. Like this:

     1    final Statement statement = connection.createStatement() ;  2    final String sql = String.format("select xmlserialize(content xml_content_column as blob encoding 'UTF-8') from %s where key='%s'", table, key ) ;  3   ResultSet resultSet = statement.executeQuery( sql ) ;  4   String result = null ;  5    while(resultSet.next()) {  6   Blob blob = resultSet.getBlob( 1 );  7   InputStream inputStream = blob.getBinaryStream();  8   result = new Scanner( inputStream ).useDelimiter( "\\A" ).next();  9   inputStream.close(); 10   blob.free(); 11   } 12   resultSet.close(); 13   statement.close(); 14  15   System.out.println( result ); 16    return result ; 17
    

    Then it works. Still, can't get it work with XMLType in resultset. On the customer XML unwrapping explodes trying to pass to another XML schema. JDBC/XDB problem?

  • How to display rows of data in different columns?

    I'm new to SQL and currently, that's what I try to do:

    Display multiple lines of data in different columns in the same row

    I have a table like this:

    CREATE TABLE TRIPLEG)

    T # NUMBER (10) NOT NULL,

    STEP # NUMBER (2) NOT NULL,

    DEPARTURE VARCHAR (30) NOT NULL,

    VARCHAR (30) DESTINATION NOT NULL,.

    CONSTRAINT TRIPLEG_PKEY PRIMARY KEY (T #, LEG #).

    TRIPLEG_UNIQUE UNIQUE CONSTRAINT (T #, DEPARTURE, DESTINATION).

    CONSTRAINT TRIPLEG_FKEY1 FOREIGN KEY (T #) REFERENCES TRIP(T#));

    INSERT INTO TRIPLEG VALUES (1, 1, 'Sydney', 'Melbourne');

    INSERT INTO TRIPLEG VALUES (1, 2, 'Melbourne', 'Adélaïde');

    The result should be something like this:

    > T # | ORIGIN | DESTINATION1 |  DESTINATION2

    > 1 | SYDNEY | MELBORUNE | ADELAIDE

    The request must include the ' COUNT(T#) < 3' since I only need to display the records of less than 3. How can I get the results I want to use relational views?

    Thank you!!!

    I replaced the syntax "where" with the syntax 'account '. The reason why I do this is because I want to only display records with a number of travel of less than 3. By defining where the legs #.<=3, the="" result="" will="" be="" all="" the="" records="" of="" the="" tripleg="" table="" since="" each="" record="" could="" also="" have="" leg#="" is="">

    The answer is:

    with t as (SELECT t #,)

    REGEXP_REPLACE)

    LISTAGG (start |) '->' || destination, ' ')

    THE Group (ORDER BY t #, leg #).

    '([^ ]+) \1+',

    "\1") str

    OF tripleg

    HAVING COUNT (T #)<>

    GROUP BY t #)

    Select T #, regexp_substr (str, ' [^->] +', 1, 1) departure

    , regexp_substr (str, ' [^->] +', 1, 2) destination_1

    , regexp_substr (str, ' [^->] +' 1, 3) destination_2

    , regexp_substr (str, ' [^->] +' 1, 4) destination_3

    Thanks to Marty and knani!

  • Import data from different DBs to HFM Application using FDQM

    Hi gurus

    1. how to import data from different databases to HFM Application using FDQM?
    Do we need to write scripts for integration in FDQM, or is there an alternative method, we need to do?

    concerning
    Dev

    Data import is long to explain,

    To be more precise,
    1. you would establish a connection with your source systems and destination where you pull the data.
    You can do this by registering adapters of integration for send_break_action source machines
    2. you would then upward some formats for importing, maps and tables of control.
    Please go through the Administrator's guide,

    One of the experts will help you better understand.

    Kind regards

    David Martin

  • How to save the data of different rates in a single VI?

    Hello

    I tried to acquire 2-channel measurement of voltage at 10 kHz and analyze data, finally to save the data to both 1 kHz and 1 Hz. What I did is this loop of producer/consumer use to do the work of recording at different rates. I have queued all the data in the main loop, and then removed the data and write it to the file in other loops. I added "wait = 1 ms' a consumer loop for recording data at 1 kHz (loop of fast logging) and added" wait = 1000ms' in another loop to get the slow 1 Hz (logging loop) data record.

    My problem is that the data record works fine in the case of 1 Hz, but it does not work for the case of 1 kHz. Although the time-out period defined as 1ms, the interval between two samples in the loop of fast data recording is about 100ms.  Subsequently, 1ms, 10ms, 100ms, 150ms tried in this loop to see what intervals are in these cases. I found that the intervals are same as assigned in the timeout greater than 100 ms, but if the time-out is set to 1ms or 10ms, the intervals are again around 100ms.

    My question is - why I can't reach data record 1 kHz using loop of consumers/producers, while the same way works for the case of 1 Hz?

    Thank you very much

    Hao

    You are sampling at 10 kHz and you want to back up your data "as if you sampled at 1 kHz and 1 Hz", if I understand correctly.  I also understand that you use the design of producer/consumer model to help with this (a good idea).

    I'm assuming that the producer 'product' a segment of data at a time, to say the value of a second of data or a 2 x 10000 I16 (assuming a 16-bit integer A/D) table you put into a queue and wait for the consumer.

    If you have data at 10 kHz, how do you get representations to 1 kHz or 1 Hz?  There are (at least) two possibilities - average data over the interval of proper time, or (re) sample data.  The good thing is that you can handle the situation 1 kHz and 1 Hz, essentially at the same time and in the same processing loop.  I'll discuss the case 1 kHz - with the assumptions I made, the case of 1 Hz becomes almost trivial.  I'll discuss treatment also just one channel, as it is similarly almost trivial to go from 1 to N-channel.

    If you have 1 second of data sampled at 10 kHz, and will "reduce" 1 second of data sampled at 1 kHz.  Note that you have 10 samples for each data point that you want in the end.  The "Averaging" method said "Replace all 10 points in the average of these 10 points", while "resampling" method said "replace 10 points with, say, the first point, ignoring the others.  An easy way to do this is to use the Reshape feature to transform an array of 10 x 1000 elements of your array of 10000 items 1-D 2D.  Now, you can use a loop FOR an average of 10 items or simply extract the first.  [This is where almost everyone, including me, a mistake - when you put a 10 x 1000 2D array in a loop, you get 10 iterations of 1000 items and we want 1000 iterations of 10 items.]  Oops, what to do?  [Simple - converts 2D array before sending in the loop FOR.]

    So when you have processed your 10,000 points and got both 1000 samples "1 kHz" and 1 "1 Hz" sample, you write each of them in their respective folder and wait for the next item in the queue of the consumer.  Consumer focus on the queue loop, it will automatically 'block', waiting for the producer of the 'feed' some data.  Note that the producer generates data once per second, producing 10000 points for the consumer in the process, but the time to deal with these points and perform the required disk i/o should take only a few milliseconds (certainly not more than 100, even if writing to a floppy!), so you don't have much time to do other interesting things (such as display data).

    Bob Schor

  • change the same variable in different loops

    Hi all

    I use an event producer/consumer-controlled architecture where the two loops run processes acting on a common variable.

    To be more precise, I intend to change a flag photo in the loops of consumer and producer. That's why I need to share this variable between the two loops.

    I thought that the best way to do this is to use the indicator of functional photo as part of a Global Variable:
    1 / FGV initialization, which is a cluster that contains the indicator image

    2 / in two loops, the image indicator last value is extracted from the FGV using an action of 'read '.

    3 / the value of the indicator of picture is wired through different processes that would change partially or totally

    4 / Finally, in two loops the photo update flag values are wired as input to the FGV.

    Above is the ideal case, I expected to work. However, this does not work, and is what I've actually implemented:

    (a) in the loop of the producer, the indicator of picture is updated via a shift register, and at the same time, the new value is stored in the FGV

    (b) in the loop of consumption, the indicator of the image is retrieved from the FGV, and its present value is stored in the FGV (as in the ideal case)

    Then I don't why it does not work. I use other FGVs in my VI and which are modified by two loops, but THEY work...

    My VI is really great, so I can't take a picture of him. Can I give you a diet simplified what is my current architecture, whose shot at him. I hope it helps.

    Thank you.

    Florian

    Hi Florian.

    Two FGV reads on the left side of your curls below will be a problem unless you use the data flow to control. The FGV bed (as shown) will occur at the start and then after the structure of each loop ends. When you really want to 'read' when Gets an element from the queue or in the loop of photo - when there are new values.

    The loop of consumption is fairly easy to treat. Just run the Dequeue 'error' error 'in' on your FGV. This will ensure that playback of the FGV happens when you get a new item.

    The photo event loop is a bit tricky. You could send a user of the consumption loop event (after your FGV write) to the photo event loop. In this case the user loop photo, put a reading of the FGV. This ensures that you will get the changes made in the loop of the consumer. The only downside to this approach is that the photo loop always runs once when a change is made in the loop of the consumer. You can use a Boolean value to prevent the image to be written (ensures also the image is always written after the end of the event Structure).

    Here is an example:

    Steve

  • How to extract a D 1 waveform data in different channels to use for calculations on a page of data in real time

    Hi all

    I am a fairly new user to Labview and am trying to create a program that: watching the entries in different modules (9213, 9217) CompactDAQ sensors check errors and then uses data from some final calculations like averaging etc.  I've set up a small piece of code that includes the main functions that I am trying to accomplish.  Now I'm rather uncomfortable with getting set up and assigned channels, then pass these data in a while loop that continuously pulls the data from these sensors.

    I have the vi calculations complete and complement the inputs of channel UI, now, I'm working on the side of data manipulation and reading things.  The waveform D 1 who comes to read function is currently divided into components I want (given String Name and Y).  He then transmit this information out of the loop via a queue which transmits to the parallel loop below that will perform the verification errors and calculations of average.  There are some things that make it difficult. I showed the 2 sensors in my example, but in the actual program, there may be up to 400 entries.  The problem is that not all of these sensors will be used on all the tests that the software is used for.  To use the entries in the VI test for example: if I'm trying to the average of these 2 entries to create a common value, but then on a test, sensor 2 is not there, it must be recognized that fact and not use it in the service average.

    So to get down to it, I want to create something that can look through the D 1 waveform data groups, determine what these values are, then perform the functions necessary for these numbers once they are identified, then pass on the calculations of VI where it displays then usable for user information.  I think I'm having a problem with the finding in sorting than what I thought at makes me think that there must be an easier way.

    If someone has encountered this?  What is my explanation of what I'm trying to make sense?  Let me know and I can clarify.

    In terms of features, I don't see anything wrong. with respect to the effectiveness we must remember some general indications. These issues that I bring to the top will not affect your code now since your stack sizes are very small but can start to create the fragmentation of memory and slow down the software if your stack sizes are much larger and the software runs for a long period of time.

    1. try not to use the table to build. Whenever you use a table built labview creates a copy in memory. Try to initilized your berries and replace subsets.

    2. as much as you can try not index tables or unbundle cluster several times. try to perform as many tasks as possbile in one shot. (what was obvious in your second loop)

    In addition, he's looking good.

    I made a few changes to your code and attached to it. I wanted to give you a different on her opinion as it relates to being able to control entry and exit of programitically, if you had a look up table. I do not have the same changes to your second loop but I can guide you through what to do if you do not want to go in that direction. Yet once your original code is well done for someone who is new to labview, so don't feel you need to follow the new design of VI. Just try to remove the table construction and multiple indexing as a good habbit programming.

  • Check the gaps on all data in a loop?

    I'm new with Teststand and attempt to alter a supplied client software.  I have a loop set VI 15 times and check that each reading is within a set of values.  What I do is to check all the 15 readings so that the gap to the highest reading and the lowest reading is a different set of values.  Is there an easy way to do it in the loop options?

    Example:

    Reading X 15 times and check that (X > 0 and X<>

    Check that all 15 readings in 0.01 to eachother.

    Thank you!

    Russ,

    I am attaching the simple code for you. As Eric had said that you can try to do this in two steps. I stored the Max and Min measures in two local sections, Locals.Max, and Locals.Min and set the Source of data in the next step to Locals.Max - Locals.Min.

    Thank you

  • out of digital data from parallel loops

    I created a state machine which will choose a case of 0-23 with a forward and back button.  in each case, I try out a 6-bit word that will be different for each case. However, the data in each case will be displayed in the function of digital writing once you press the stop button. I unde stand I have 2 parallel loops, but I'm not sure how to get around this problem. Ive set my vi

    LabVIEW follows the stream, then your second loop will be waiting for your data of your stop button. Look for the producer / event examples using queues consumer who is a much better way to solve your problem.

  • Photoshop CS2 date of birth loop

    The loop from birth date

    Hi, I am trying to install photoshop CS2 on a windows computer and understand that because server authentication no longer works, I need to download a different version, but I can't because the page to access this version wonder my date of birth every 5 seconds in a loop.  How can I make this?  I updated account details in Adobe separately and deleted cookies, without effect. Thank you

    Ask someone else to download the installation for you files and transfer on a usb key.

Maybe you are looking for