Multiple, simultanouos, asynchron acquisition

Hi
I'm using LV6.1 and want to do a programm for multiple, simultanouos acquisition. that means I have five similar processes with acquisition, saving and digital IO. and I want to let to run all five processes asynchronouos. one process can be in the saving loop while another can be in the acquisition loop while a third one is waiting for restart occurence.
how can I do this? of course I could do 5 similar indepent loops but isn't there any other way which doesn't need so much processor capacity.
thanks for your help.
any explample would be welcome.

The big strategic choice is to decide which "event driving / processing"
level should care for which task. Levels available may be (lower to
higher / faster to heavier): acq card integrated (sync with onboard
clock/watchdog) / acq bus integrated (trigger lines...) / low level
driver / user process (diagram coded).
From what you say, it is hard to give an advice on how you should
structure the upper level (diagram processes) because it mostly has to
be optimized to manage the immediate lower processing level (which
again, may rely on quite different acquisition strategies).
Anyhow, if your are going to drive five tasks that are not, idealy,
synchronous, then having them coded in five parallel loops is a better
solution in terms of code clarity be
cause it makes the code closer to
the idea from which it is designed. What you get will just be closer to
what you want to see. Be sure that all sub-tasks are designed for
asynchronous operation.
oz
Yves a écrit:
>Hi
>I'm using LV6.1 and want to do a programm for multiple, simultanouos
>acquisition. that means I have five similar processes with
>acquisition, saving and digital IO. and I want to let to run all five
>processes asynchronouos. one process can be in the saving loop while
>another can be in the acquisition loop while a third one is waiting
>for restart occurence.
>how can I do this? of course I could do 5 similar indepent loops but
>isn't there any other way which doesn't need so much processor
>capacity.
>thanks for your help.
>any explample would be welcome.
>
>

Similar Messages

  • Multiple channel data acquisition

    hi sir;
    i want to get the voice data from 8 channels in 8 different
    buffers.The acquisition should be continious.Please tell how this will
    be possible using daqmx API's and what procedure should be
    followed.Also specify what API's should use.Please donot say the
    tradition answer  "see the National instruments examples
    etc.etc".Please tell complete sequence of API's.
     I have installed 7.4 version.
    I want to acquire continue one minute data from 8 channels in 8
    buffer after the one minute all the data of 8 buffer should be
    transfered to other 8 buffer and the continous acquistion should be
    contineoued. I m using DAQ6025E.
    thanks
    ajmal

    Duplicate post.

  • Multiple receivers asynchronous interface

    HI,
    I have a scenario wherein a third party sends file to ECC and some validations are being done at the ECC and a count of the records that have errors, count of records that are processed and a count of the success records are being spit out of SAP as email. Also, a file with those error records are being sent out.
    Now, my question is....I will not be sending the file back if there are no error records but email notification will be sent no matter what so that it includes the total records processed, failed (0 in this case), and success.
    When I use the same outbound proxy, is that possible to accomplish ?
    I mean the situation wherein I will not be sending file but I will be sending email. I have the same outbound interface in both the cases i.e to send emails as well as to send the file back.
    That will be great if someone could shed some light on this. Also, is there anyway I can include the file name that is being sent to SAP in the mapping so that I can mention that in the email saying "Following is the file that was sent..and it has so and so error records...."
    Many thanks.

    Nothing much to think about. Create 180+ communication channels and same number of receiver agreements and interface determinations!
    If you feel that all the 50 FTP servers are part of the same business system, create 1 receiver determination and 180 interface determintions. It might look a bit less messy.
    I have worked in other middleware products. Frankly, this is not how others work!!!! They provide provisions for changing any parameter of a communication channel at runtime.
    All the best,
    kk

  • Again Multiple channel Data Acquisition

    Again help require
    I m using
    Config_DAQ_Event_Message with CallBack Functon
    Scan_SetUp
    Scan_Start
    to get data from single channel but the parameter in scan_setup is only Single ChannelNum But I want to get Data from 8 channels at the same time so how is it possible that i can get data from 8 channels using above DAQ API's Help with some VC++ code
    If I give total no of chanels in Scan_setup then it creates exception with Config_daq_event_message if I donot use Cofig_Daq_Event_Message then it all works correctly and data from 8 channels is acquired correctly in double buffer but i must use callback with config_daq_event_message,Scan_setup,and Scan_Start API to get double buffer mutiple channel data acqusition. thanks

    Hello,
    Please see the response to your original post:
    http://forums.ni.com/ni/board/message?board.id=231&message.id=3322#M3322
    Regards,
    Sean C.

  • How to use a multiple boards (6321/6323) analogical acquisition task with simultaneous analogical generation task using the same boards (Labwindows CVI10)

    Subject : it seems impossible to run a multiple boards analogical acquisition task with one or several analogical generation task using the same boards.
    NI Configuration : Dev1 = Dev2 = 6321 boards
    Development environnement : LabWindows CVI 10
    Source code for analogical acquisitino task :
           DAQmxCreateTask("",&AIRecordingtaskHandle);
           DAQmxCreateAIVoltageChan(AIRecordingtaskHandle,chan,"",DAQmx_Val_NRSE,min,max,DAQmx_Val_Volts,NULL);
           DAQmxCfgSampClkTiming (AIRecordingtaskHandle, "", rate, DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, sampsPerChan);
           DAQmxGetTaskAttribute(AIRecordingtaskHandle,DAQmx_Task_NumChans,&gNumChannels);
    Chan = "Dev1/ai0, Dev1/ai1, Dev1/ai2, Dev2/ai1"
    Source code for analogical generation taskS :
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C1_DAC0));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C1_DAC0, chan, "", min, max,DAQmx_Val_Volts, ""));  // chan vaut Dev1/ao0
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C1_DAC1));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C1_DAC1, chan, "", min, max,DAQmx_Val_Volts, "")); // chan vaut Dev1/ao1
           DAQmxErrChk (DAQmxCreateTask("",&AOtaskHandle_C2_DAC0));
           DAQmxErrChk (DAQmxCreateAOVoltageChan (AOtaskHandle_C2_DAC0, chan, "", min, max,DAQmx_Val_Volts, "")); // chan vaut Dev2/ao0
    At the first DAQmxReadBinary call attempt, the system shows an error (see attached document) 
    What we understand about that error : it is impossible to run the two set of tasks (ai and ao) using ressources from both Dev1 and Dev2 in the set of tasks because it is not allowed to use the same Reference Clock for that.
    The question is : is there a way to to that without having that kind of message?
    We tried different combinations :
    - Using only one ao task (on Dev1/Dac0) : same error
    - Not using any ao task (only the ai task) : no error
    - configuring the ai task with only channel from Dev1 : no error 
    - Using "/Dev1/ai/SampleClock" as internal clock for the ai task and "/Devk/ao/SampleClock" for each ao task (k standing for "1" or "2" depending of the ao task we consider) : error
    Thanks a lot.
    Pièces jointes :
    MsgErreur NIDAQmx.JPG ‏38 KB

    doublon
    Valentin
    Certified TestStand Architect
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Multiple applications on Same PC

    I am trying to run 2 applications which access different cards at the same time. One is doing a continuous analog input, the other is doing a finite analog acquisition. In that scenario, I am getting messages that either say "Acquisition already in progress" or "Unable to access Nidaq, load the driver".
    I tried making a simple program that did constant reads and running them against separate cards at the same time. That worked without error, but when I shut them down and went back to the original app., it gives me "transfer is already in progress for the specified resource, or the operation is not allowed because the device is in the process of performing transfers, possibly with differn"
    To answer the obvious question, yes, I
    did verify that each application ws talking to a separate card.
    Have you had any experience with different applications interfering with each other? This is going to be a major issue for me.
    My environment is: Windows 2000, Nidaq 6.9.2, ComponentWorks 3.01, VB 6.0

    Derek;
    That is happening because you are probably doing a synchronous acquisition. When setting up a synchronous acquisition, the execution of the VI get stuck inside the AI Read.vi till the buffer of data is ready to be read.
    The way to go about that is to set up two asynchronous acquisition tasks. You can get examples on that at Search Examples->I/O Interfaces->Data Acquisition->Analog Input->DAQ Occurrences.
    Hope this helps.
    Filipe

  • How I use 2 AI with 1 AO in the same program without hardware errors?

    I have a machine with a Motor (velocity controled with PWM), a Strain Gauge, and a Encoder (inner the motor). This machine is controled with a LabVIEW 6.1 program in a computer with Intel Celeron 1.5Gb 360 Mb RAM and DAQ 6024E.
    In my program I have two AI Adquisition Waveform blocks with AI different ranged Channel (the firts in my Strain Gauge ranged -9 to +9 V) and the second in my encoder ranged 0 to +5 V), and one AO Generate Waveform (the PWM signal ranged 0 to +5 V). When I put on the program, the motor Glitches an my computer turns slow. It´s cause me problems!
    Whats the problem?

    You would probably get more info on this in the DAQ Discussion Forums, but I can help you out a bit here. The VIs that you are using are very high level VIs so there is a lot going on behind the scenes that you do not see. More importantly, they are synchronous, meaning that you have to wait until they're finished to do anything else. This is probably why your computer is slowing down. The UI may even freeze until you have acquired all the points you requested. I would suggest using the more advanced DAQ VIs to control your system. There are many examples that ship with LabVIEW which demonstrate how to use these. They allow you to build an asynchronous acquisition system so that other tasks may operate while the DAQ board is acquiring data.
    J.R. Allen

  • How can I insert a code to switch between channels?

    I’ve got a HP4263A LCR meter which is being used with an ER-18 device to get multiple channel data acquisition, when I go to getting started to trigger the device, but this VI do not have an icon to change the channel how can I insert a code to switch between channels?

    I am just trying to use the drivers developed by NI for this device, but I don't know how to work on them to obtain data from three points, or three channels which I am using from an ER-16 device. So all what I have is the driver VI for the HP4263A.the only VI I can use is getting started, because whe I try to run any other one, this message appears:
    Error -1073807346 occurred at VISA Write in HP4263A Self-Test.vi.
    Possible reasons:
    VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.
    your help would be very helpful
    thanks

  • A solution for batch print PDF documents

    Dear,
       I use a command line to auto print some PDF documents as below:
       C:\>AcroRd32.exe /h /t PDF_file_name printer_name
       the printing is no problem.
       But when I use the command line to print a large number of PDF files, there are a problem, for example:
       There are 3 PDFs that I want to print, they are 1.pdf, 2.pdf and 3.pdf
       I sent command one by one like below.
      C:\>AcroRd32.exe /h /t 1.pdf printer_name
      C:\>AcroRd32.exe /h /t 2.pdf printer_name
      C:\>AcroRd32.exe /h /t 3.pdf printer_name
      But the hard copy from the print are:
      first print: 1.pdf
      2nd print: 3.pdf
      3rd print:  2.pdf
      what can I do for this case, I want to get the output seq. will be 1.pdf, 2.pdf, 3.pdf.
      Thanks.

    KingPool's snarky response notwithstanding (he appears to have some financial interest in “pushing” sales of PrimoPDF), your need is real and your observations do correspond to the reality of printing. The fact is that when you use spooling under Windows, the application program actually can complete spooling of the file to the printer before that spooled output is ready to be actually transmitted to the device. The print process is a multiple step, asynchronous process.
    To absolutely force printing in an exact order as per your scenario, go to the printer's Properties and select the Advanced tab. The printer is probably currently set to Spool print documents so program finishes printing faster with either the Start printing immediately or the Start printing after last page is spooled option selected. Change that to the Print directly to the printer option and then press OK. This will force printing in the order that you specify. Note however, that this forces Reader to wait as the document is fully printed and then terminate. You should reset that spooling option when you are done with this batch printing operation to regain system performance.
    Alternatively, another approach you could try would be to hold the particular print queue before running your commands. Then, after ascertaining that all the print jobs are on the queue and ready to be printed, release the queue. The jobs should print in the order queued. And finally, if there still is a mis-ordering of the jobs, after holding the entire queue, put a hold on all the jobs, release the printer queue, and then release the jobs in desired order.
              - Dov

  • ODI Scenario status

    Hi Guys,
    I am developing an ODI (11.1.1 on 11g R2) system to import and process flat files.
    I have a worker package 'compiled' into a scenario so that i can start multiple workers asynchronously. the worker package is designed such that it works on a continous loop - reading records from a table, fetching and processing the indicated files and then waiting for the next record to be present (in reality this will be working 24/7). So a worker will never complete unless under error conditions (or a forced stop).
    So i have a controller package which starts 5 of these workers, each with a different set of start up parameters.
    Everything works just great, but i need to build in more error handling, graceful restarting etc.
    The main requirment i have is that if any one of the workers falls over for whatever reason then i need to stop all the other workers, perform some clean up and then restart all the workers.
    My original controller had ODIWaitForChildSession step but this is insufficient as it waits for all the sessions to end. but with my design the workers which did not fall over will continue to run.
    So.
    My question is:
    How and what can i poll from within my controller flow to determine the status of a child session?
    My thinking was to replace the ODIWaitForChildSession step with something which polls the status of all child sessions and then send a stop command to all sessions if it's detects if one ended in error - then do some clean up and loop back to the section which starts the workers anew.
    I am assuming it is possible as what i want to do is only a little different from the in-built ODIWaitForChildSession step - or actually, maybe i am just missing something simple.
    Any help would be greatly appreciated.
    Regards
    Jay

    Since all the process are in asynchronous mode so odiwait for child option is good to handle this & only drawback is that it wait untill all the sessions have been finished.
    Since you need to track all the process there is a solution for it.
    let say you have worker process w1,w2,w3 etc ..
    1. create a log table which conatin column like scenario name, scn id , status i,e fail, suceess etc 0 ,1.
    1. create a proc eg proc1 which contain odiprevsteplog. It will determine previous step detail & insert this into log table log1 above step1
    2. Attach proc1 above to process w1,w2,w3
    w1-->proc1
    w2-->proc1
    w3-->proc1
    3. after 2 step, create a variable (v_chk) refresh mode to check status from log table & if any worker w1,w2,w4, if faill then exit
    w1-->proc1 -->v_chk
    w2-->proc1 -->v_chk
    w3-->proc1 -->v_chk

  • How to calculate the acceleration of a digitally measured distance

    Hello reader,
    I'll try to explain my problem. I'm using a laser displacement sensor in order to measure the movement of a vibrating table (approx. 20 Hz). The controller of the sensor is connected to my COM port and I read 213 distances per second. (maximum because of baudrate).
    With this signal I want to calculate the acceleration of the table. The problem is that the signal is not 'smooth' enough (about 10 data points per period) to derive it directly.
    I was thinking about applying some kind of curve fitting and use this signal as the input for the double derivation. I have however problems with creating a proper input for the General polynomial fit.vi. Another idea was to use the Extract si
    ngle tone information.vi. This however also fails to work (yet) also.
    So my questions are mainly if someone thinks there is a much better or easier way to solve this or that someone can provide help with building what I described above.
    Many thanks in advance for your answer!
    J-M

    Hello,
    First of all thanks for your fast answer.
    I'll try to provide you some additional information:
    I expect my signal to be almost a pure sine tone, although there might be some (small) noise. Where my main problem is, is that I'm reading data through my serial port after which I convert it to a number. The main difficulty (or at least the first) is to convert these numbers into the required input for these vi's.
    (a waveform for the FFT power spectrum.vi or an array for the power spectrum.vi)
    This includes your second question: I'm afraid I'm using the asynchronous acquisition. Any ideas to avoid this?
    I'm currently using Labview 6i. I attached my current vi (it does not show all the time I'm already trying!)
    Thanks in advance fo
    r your reaction,
    J-M
    Attachments:
    Distance_reading_8.vi ‏98 KB

  • Alerts in Xi

    Hi All,
    My scenario is IDOC XI File(Multiple recievrs,Asynchronous)using BPM.
    My Client requirement is once a message is sent to the Legacy systems the Notification has to be sent to the User(Good/Errors). 
    I have created the Alert Category in trnx ALRTCATDEF.
    I didn't selected as DYNAMIC TEXT,and container variable used is SXMS_TO_SERVICE.
    I gave my name as the Fixed Recepient for the created Alert Category(testing purpose).
    How to trigger the Alert to send Notification of success to the Alert Inbox?
    Thank you.

    Hi Joslyn,
    <i>
    My Client requirement is once a message is sent to the Legacy systems the Notification has to be sent to the User(Good/Errors</i>).
    >>You can make use of Transport Acknowledgement in BPM. Once it is positive, then you can send Mail to Recievers.
    Refer this -it is exaclty similar
    /people/michal.krawczyk2/blog/2006/06/22/xi-playing-with-the-file-adapters-acknowledgments
    Regards,
    Moorthy

  • Alter program execution structure based on input file

    I have a program that takes some parameters from an input file then runs a visual acquisition, using IMAQ, controlling some other hardware at the same time.  The parameters control the duration of various steps in this process. 
    There is a stacked sequence structure to control reading in the input file, initialisation of the hardware and then a while loop on the final frame to do the actual acquisition.
    The user of the program would now like the capability of having multiple sets of acquisition within the same run, possibly with different duration parameters.  This would mean various iterations of the final while loop, based upon the parameters in the input file.  There might be 5 acquisition sets on one occasion, 3 on another etc., within one run of the program.
    The VI structure already seems a little baroque and I don't want to make it even more complicated.
    I would welcome any advice as to the best way to proceed, as I'm very much a LabView novice.
    Solved!
    Go to Solution.

    Dear Verdurin
    With reference to Cory K's earlier post the most practical and efficient method to achieve acquistion would indeed be to use a Standard State Machine VI sequence structure. This structure executes set code (your own code) and determines which state to transition to. I agree with Cory K's 3 states within the sequence. Using the iterations loop you can define how many iterations of each acquistion you require. In LV, click File > New > From Template > Frameworks > Design Patterns > Standard State Machine. This automatically creates the VI for you to use where you can create the 3 states required.
    Within the 3 states input your code into the relevant states to achieve acquistion. Use timing to achieve different duration parameters within the case structure. After you have read from the input file, select the next state as initialisation, then after that is complete, select the next state as acquistion. Repeat this loop as many time as you need for each acquistion.
    I hope this clarifys your question. If you have any problems please do not hesitate to contact me and thanks for using the NI forums.
    Kind regards
    David
    Applications Engineer
    National Instruments UK
    Many thanks for using the NI forums and I look forward to your reply.
    Kind regards
    David
    Applications Engineer
    National Instruments UK

  • Do I have to synchronize when retrieve service detail one by one?

    am retrieving some service list and which need the service number,so I have to get the service detail object one service by another. And every service use its own si requester. At first I use a synchronized object to ensure the result can not be misunderstood,but later I found it may have low effeciency,and so that every service has its own requestor ,I think maybe every result should be propery understood,because ther requester can find the "father" who invoke it. Am I right?
    I still have such problem about event retrieving,can any one tell me the proper way about that??Thanks!
    tainy

    You can issue multiple requests asynchronously, provided that the event listener has enough information to tell which request it's processing. With the JavaTV SI API, this may not be very easy unless you use a separate listener for every request. The DVB SI API makes it a bit more straightforward because you can pass an application-specific parameter when making the request, and this can be used to tell which result corresponds to that request.
    You will probably still need some synchronization, depending what you want to do with the data you have. For instance, you may want to wait until you have the results from all your requests before doing futher processing, but at least you can avoid making every request synchronized.
    Steve.

  • Triggering an IMAQ-1408

    Hi. I want to use my IMAQ-1408 with a Sony XC-55 progressive camera for an asynchronous acquisition. I must use a function generator as trigger input, in order to acquire one shot at an exact time. Please, help me.

    There is an excellent document in Developer Zone to help set up the Sony XC-55 for asynchronous reset operations and also advice on writing a basic LabVIEW application.
    The following link takes you to this page:
    http://zone.ni.com/devzone/conceptd.nsf/2d17d611ef​b58b22862567a9006ffe76/b8dc31dedf4afaf086256a93007​8dd78?OpenDocument
    In this example, the image acquisition board is used to generate a trigger signal and then reset the camera. In your application this trigger pulse would be provided by your function generator. This will simplify the software that you need to write, but care will need to be taken over the cabling.
    This document also specifically discusses how to cable the camera to the PCI/PXI-1409 image acquisition board but the principles remai
    n the same when using the PCI/PXI-1408. Be aware that the external cabling on a PCI-1408 differs from that on the PCI-1409 - these use different edge connectors.
    Jeremy

Maybe you are looking for