VBAI Performanc​e

Hi
we are using VBAI 2012 full version and we wrote an application on our computer using a Basler GigE cam. To see how fast our application is running we use from time to time the benchmark function. But the results are confusing. Sometimes we get only the performance to check 1 piece a second. After closing and restarting VBAI the same application gives us a speed of up to 4-5 pieces a second.
Is there an effect that the application gets slower by a longer use of VBAI? How can we avoid that our application gets to slow.
By comparing the results in details we see that some functions need 10 times the time when using VBAI for a long time in comparison to after a restart of VBAI.
How can this be?
greetings
Oliver

Hello Brad,
thanks for this idea we will try to uncheck the updating image box.
Meanwhile we changed the application that it will run on the VBAI Server and a CVI program controls the application. Today we made some measurements, the results are not so good as expected, we can only check three parts a second. It is enough for our application but there will be no more reserve. I attached the results to this message. You can see the different results of five measurement. The most different value is the time the inspect needs.
Is there any possibility to give the server a higher priority that it will run faster?
best regards
Oliver
Attachments:
Mappe1.zip ‏51 KB

Similar Messages

  • Can I use a camera for application in Labview and VBAI at the same time ?

    Dear all,
    I'm trying to save an AVI file with Labview and make an image process with VBAI at the same time, in one machine.
    The error : "Camera already in use" displayed.
    My Camera is a GIGE and I work with Imaqdx. I've test the multicast mode but it only operate with several machines.
    How can I do this ?
    Thank's to help me,
    Yoann B

    I'm not necessarily saying that.  It's been a while since I've used VBAI, so I don't remember all of the capabilities, but if VBAI can do the inspection and recording at the same time, you should be fine.
    The trick is that only one program can access the camera at the same time.  That application reserves the camera, thus making it unavailable to others.
    Chris
    Certified LabVIEW Architect
    Certified TestStand Architect

  • Multiple instances of VBAI

    I know that we can now acquire from multiple cameras in VBAI (thanks!).  However, I feel that doing so leads to very complex inspection sequences.  It does not look like VBAI has fully embraced parallelism for things other than FTP transfer.  What do I do if I have 5 GigE cameras that each must be triggered, and where it is possible that two could be triggered at the same time?  Can I run multiple instances of VBAI on a single PC (hey, it's multicore)?  I predict that the current answer is to just use LabVIEW, but VBAI is mostly LabVIEW.... right?
    I would like to maintain only the simple, single-camera, inspections on the PC.  Running multiple VBAI instances would allow me to dedicate an instance to each camera without worrying about what is going on wth the other 4 (or more).
    No, I haven't tried to do this yet.  Currently, I am out of town and away from my vision lab.  I figured that if this is possible, it is worth mentioning to the public, and if it is not then it is worth mentioning to R&D.  The system I am picturing would be a future version of a system we just completed where we had 4 NI Smart Cameras and one GigE camera.  The question came up about what to do if all 5 cameras were GigE.  Don't worry, we still love the SmartCams!
    On a posting streak,
    Dan Press
    PrimeTest Automation
    Solved!
    Go to Solution.

    FYI, feedback to Marketing / Product Development from an industrial user of several brands of vision systems...
    I agree that it would be very useful to be able to run multiple instances of the VBAI application!   Since each one would run in it's own process space, you could:
    - Shut down individual inspections for program adjustments without affecting others that may be in the same program on different cameras.
    - Make the programs simpler and easier to understand without as much branching logic.
    - Make the NI software a better value, by allowing people to use 1 piece of generic hardware instead of multiple dedicated processors. (PC, CVS, SmartCamera, etc)  This would make the NI software a more attractive choice for applications where we currently buy lower cost Banner, DVT, or Cognex units or if more power is needed-- an easier to maintain Keyence unit.
    Currently IMO, because of the difficulties and expense involved with licensing, software version dependencies, and working with the NI hardware in general, I only consider NI where the additional functionality/flexibility is required.  I have had good luck with PC-based applications of VBAI.  If I could use an off-the-shelf industrial PC and run inspections in parallel-- making it easier to maintain and lowering the average cost per inspection, I probably would reconsider.
    Thanks,
    Mike 

  • How can I write to a Siemens S7-300 PLC tag from OPC Server.vbai page by using a Knob object ?

    I am using NI OPC Server and I can read Siemens S7-300 PLC tags such as thermocouple values from the PLC. Additonally I can write manually a constant value to that tag by selecting it in the NI Distributed System Manager. And I can read the written value from NI Distributed System Manager or from NI OPC Server. But I can not write any value to the S7300 PLC tags such as by using a knob object at the NI Vision Builder AI Inpection (.vbai) page.
    Any help is welcomed. Thanks in advance.
    Attachments:
    manual_writing_to_plc.png ‏298 KB

    The tutorial at the following location explains how to use Vision Builder AI as a OPC server.
    https://decibel.ni.com/content/docs/DOC-18647
    http://www.ni.com/white-paper/13574/en
    To allow VBAI to connect to an OPC Server (i.e. act as an OPC client), you need to purchase and install the DSC Run-time System.
    Once installed, you can create an OPC I/O client using the Distributed System Manager, create variables bound to OPC tags, then create VBAI network variables that are bound to these variables.
    Another possible technical solution to connect to OPC Servers supporting Data Access 2.0 is to use the datasocket API in a Run LabVIEW step.
    http://forums.ni.com/t5/Machine-Vision/Read-and-Write-with-OPC-through-NI-Vision/m-p/2048278/highlig...
    Hope this helps.
    -Christophe

  • Creating custom interface panels in LabVIEW for use in VBAI.

    Greetings everyone,
    I hope that someone can give me some insight with the following problem. I have on my bench a 1742 Smart Camera and a computer loaded with VBAI 3.6 and LabVIEW 8.6 Pro (all the latest and greatest stuff). Up to this point, everything was going along smoothly until I attempted to use my own custom inspection interface panel in VBAI.
    I first created a simple test panel in LabVIEW with a few controls/indicators and saved it in version 8.5 (as required by VBAI 3.6). But when I tried to select this panel in the Configure Inspection Interface dialog in VBAI, I get the message "There is no VI at the path you specified" (even though the VI is clearly there). Perplexed, I visited this website and found others that have run into a similar problems, but apparently no solutions were found.
    Looking into this further, I did the following:
    1) I downloaded the image_with_switch_control.vi from here. NOTE: File size is 51,732 bytes.
    2) I opened VBAI, verified that I could select this VI in VBAI's Configure Inspection Interface panel with no problems, then closed VBAI.
    3) I opened this "known good" VI in LabView 8.6, verified that it was saved in LabView 8.5, and then saved it to LabVIEW 8.5 using "Save for Previous Version...". NOTE: File size is 50,500 bytes.
    4) I tried to load this new/same Ver 8.5 VI in VBAI's Configure Inspection Interface panel again and got the message "There is no VI at the path you specified".
    Now if I open a known good Ver 8.5 VI in LabVIEW 8.6, make no changes, and save the very same VI back in Ver 8.5, I should have no issues choosing it as an interface panel in VBAI. But this is not the case. Am I missing something or is there is a wrench in the works somewhere?
    I was really expecting to have the ability to create my own custom interface between the computer and camera (as cited in the documentation), so if anyone can point out a solution, I'd greatly appreciate it.
    Dallin Katt
    Message Edited by And.Pkg on 10-16-2008 09:00 AM

    In the Breakpoint forum is an ongoing thread "Monthly Bugs" that lists bugs posted in the forum. It is maintained by the forum users for the forum users.
    I have already submitted yours. Its no garantee that it is a bug or that it is spotted by NI. You could always contact your local NI application engineers and have them report it as a bug, if they think it is you will receive a CAR ID.
    If so please post it as a reply on your forum post, so people that see this can look at the solved issues in the next LV release to see this particular bug has been solved.
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

  • How do I count parts with a fiber optic sensor using the NI-1772 and VBAI 2011?

    I'm inspecting parts using the NI-1772.  Just after the camera, bad parts are ejected when they pass by a fiberoptic sensor.  I want to use another sensor after that to verify the number of good parts, so that I can be sure the bad parts have been ejected? 
    I've tried using the READ/WRITE I/O step to read falling edges in sequence with a calculator step to increment the counts for each inspection iteration.  I get a few counts at start up, and then the counts stop.  It's as if the inspection has looped back to the Acquire Image step before or after the cap is present at the sensor.  
    Once this is figured out, I want to reset the count when a preset is reached.  
    Thanks,
    Rob

    Hi Brad,
    It seems that the ISO Input is reading all of the falling and rising edges based on the LED, and that the Read/Write I/O step counts all of the falling edges when in configuration mode.  I believe the signal stays low for about 10ms. (It might be important to clarify that I'm not using the camera trigger input for this.  It is a subsequent sensor downstream of the camera.)  I've attempted to attach a section of my inspection. 
    Thanks,
    Rob
    Attachments:
    Section of RS38_3JAN13.vbai ‏96 KB

  • How to extract the red layer from BayerRG8 file with VBAI?

    Dear readers,
    We're currentely trying to build a inspection program using a CVS and two cameras.
    A first question to help us: How can we extract the red layer from a Bayer RG8 image?
    To illustrate a lit bit more: lets take a picture of chilis and tomatoes plants. We would like to extract the red color of the picture to know where the vegetable are and if they are eatable.
    So, in a first time, we just want to see the red layer of the picture.
    On a second step, we would like to extract the poistion of the red areas and rank them according to intensities and store all the relevant data in a .txt file.
    Thank in advance for the time you will spend on that topic.
    Regards

    Maybe including a picture with the info you want would help. It sounds like you could use a detect object step (which works with color images), and you could get the position of all red objects. I would also recommend using the Hue plane instead of the Red plane to look for color since this is more robust to lighting changes. Once you have the bounding box for each red object, you can create a programmatic ROI around it and use the Measure Color step to get detailed color information about your reb objects. Here's a sample inspection that uses colored candy to give you an example of what I'm suggesting. Let us know if more specifically what you are looking for if this doesn't help. The example is in VBAI 2012. Let us know what version of VBAI you are using because this may affect what functionality you can use.
    Thanks,
    Brad
    Attachments:
    Color Example.zip ‏358 KB

  • How to add Basler acA2040-180km/kc as a target in VBAI?

    I am a newbie to Labview and VBAI, having a basler ACE model acA2040-180km/kc, how could I add it as a target in VBAI?
    I'm also having a IEEE1394 interface(AVT Guppy F-033B) camera, how could I add it as a target too?
    I'm using my own PC system, connecting both IEEE1394 and camera link camera to my PC's grabber.
    Does it work?
    I couldn't see any device detected in MAX.... Or do I need any extra configuration?
    Solved!
    Go to Solution.

    It doesn't look like the cameras are detected in MAX. They shouldn't be under the Serial and Parallel ports, but under the NI-IMAQ Devices and NI-IMAQdx Devices section. Here's a screenshot of what that looks like and you will see a Snap and Grab button in MAX to make sure your acquisition works well. Once you can acquire here, then VBAI will have no problems either.
    Here'ws a general link on installation/configuration troubleshooting.
    http://digital.ni.com/public.nsf/allkb/1452D2B3B565F62A862576F2005668B2
    Hope that helps,
    Brad
    Attachments:
    MAX View with Cameras.jpg ‏74 KB

  • VBAI: Fire a pulse every N msec based on inspection status

    The VBAI Delay function seems to have the functionality I am looking for, but it is too coarse in that the time lapse is 1 second minimum.
    I have a Smart Camera (1772). I am doing an OCR inspection that could take a somewhat varying amount of time. I would like to fire a rejector if the inspection fails. The rejector must fire at a fixed amount of time after the camera is triggered. If I cannot reliably do that, then I need another controller in the system which I should not need because the Smart Camera shoulkd be more than adequate. I know it can be done in RT, but I would like to keep things in VBAI for ease of Customer training.
    Sequence of operations:
    1. Parts travel under 1772 on a conveyor
    2. Sensor triggers 1772 when a part is present
    3. Image is acquired and processed. OCR inspection performed
    4. If OCR inspection fails, fire output pulse exactly 100 (for example) milliseconds after the trigger from step 2
    5. Repeat from step 2 
    Any idea how to achieve that in VBAI?
    Thanks,
    Dan
    Solved!
    Go to Solution.

    You could have a Generate Pulse step before your acquisition where the pulse is configured to generate a pulse based on a trigger (so configure a continuous pulse and wire you acquisition trigger to an ISO Input line as well that will trigger the output). Now this is the important part...you need to make sure your processing is done before the 100ms or whatever delay you specify or the pulse will begin. If you determine that you don't need to pulse based on your processing, transition to a state where you stop pulse generation on that line to stop it before it happens. In either case, transition to the End state and then the inspection can start again with the state that has the Generate Pulse/Acquire/Process and so the pulse will be reconfigured again for the next part.
    If this doesn't work for you, then you could try a SW timed approach. You could have a Run LabVIEW step that gets an accurate timer value when the acquisition step completes, and another VI call that will wait for a user specified amount of time (millisecond resolution) before it continues.
    I would recommend the first option since it will be hardware timed (but requires some extra wiring), and if that doesn't work, I can help you with a VI that will do the SW timed behavior you want.
    Hope that help,
    Brad

  • How to Convert FLIR Gray Scale Image to a Temperatur​e Map in NI VBAI

    I have been working with a FLIR A315 Infra-Red camera and NI's VBAI software.  I need to determine the presence and continuity of a hot mastic foam that has been injected into the hollow bulb of a rubber weatherstrip seal in 4 adjacent locations that flow together inside the weatherstrip bulb to form a continuous foamed mastic plug.
    So far, I have been able to trigger image acquistions in VBAI from a FLIR IR camera by monitoring an Allen-Bradley PLC's status bit.   The communication with the FLIR A315 camera is via the IMAQdx GigE driver.  However, I haven't figured out how to detemine the temperatures from the gray scale images I receive from the FLIR camera.  I wonder if someone could give me some pointers on how to do this.
    I have attached some images below to illustrate what I am working with and how far I've gotten.
    iPhone_Photo.jpg - shows a photograph of the weatherstrip section that the FLIR IR camera is "looking" at.
    FLIR_IR_Monitor.jpg - a screen capture of a FLIR IR monitor utility that shows temperatures measured at a number of points and areas (showing it can be done)
    NI_VBAI.jpg - part of my VBAI 2010 project which shows the image I've acquired from the FLIR A315 IR Camera
    So, I am part of the way there, but so far have not found a way to map the gray scale image that VBAI is acquiring from the FLIR IR camera into a heat map from which I can determine temperatures - and would appreciate some help on how to do this.
    Kind regards,
    Nick
    Solved!
    Go to Solution.
    Attachments:
    iPhone_Photo.jpg ‏239 KB
    FLIR_IR_Monitor.jpg ‏113 KB
    NI_VBAI.jpg ‏205 KB

    Hello,
    Image provided by FLIR camera are unsigned 16bit.
    Depending on the FLIR temperature scale you selected (10mK or 100mK), you will have to divide by a 10 or 100 factor to get K values. Don't select radiometric output.
    So if your object is cold, the population of the histogram of your image will be on the left part of it and if the object is hot, the population of the histogram will be on the right part.
    If you want your temperature values in Celcius, just add 273,15 to the Kelvin Value.
    Then you can add a color palette in VBAI (FLIR iron is available)
    Hope this helps

  • VBAI vs LabView/Vision?

    I am designing a machine vision system that will use 16 GigE cameras, run on a dedicated PC, and will use standard edge and blob tools to perform a fairly routine set of inspection tasks.  I will not need to code any new special-purpose image algorithms.
    Because of the large number of cameras, I am interested in using parallel processes/threads as much as possible.
    Also, I need to trigger inspections via Ethernet/IP from a Allen Bradley/Rockwell PLC.
    Would there be any obvious advantages to using the Labview Vision Development Module rather than VBAI?

    Here are some things to consider (in addition to what Christophe said).
    1. You had asked about 32 vs. 64 bit OS..even if you're running a 32-bit application, I would always recommend a 64-bit OS. This allows multiple 32-bit applications to each have up to ~4GB of memory, and if you're talking about 16 instances of VBAI running, they can each get up to this limit instead of on a 32-bit OS being limited to the total memory available being 4GB shared between all applications.
    2. Because VBAI only allows 1 instance to run the Ethernet/IP Server, you could use LabVIEW to do the communication over Ethernet/IP and manage triggering/acquiring images in parallel and then use the VBAI API to send the images to the VBAI engines with a set image variable call so the VBAI only has to process the image and send the results back to your LV program. I really liked Christophe's idea of using a network trigger that the PLC controls, but I don't know if your cameras support network triggers or if your PLC would support sending a action command to trigger them...maybe the PLC can just trigger them directly with I/O lines...I assume this isn't an option since you're wanting to use Ethernet/IP to tell another application when to trigger them.
    3. If all your inspections are exactly the same (except for which camera they use), VBAI unfortunately has a restriction that only one engine can open an inspection at a time, so you'd have to make 16 copies of the same inspection and have each VBAI instance load a unique copy of the same inspection.
    4. If this is the case (all your processing is the same), and the inspection is straight forward, I think using LabVIEW to run everything in parallel with a rentrant VI that does the acquisition and vision algorithm might be the simpliest and fastest approach, but it might take longer to develop the code.
    Hope this helps give you some more ideas, and let us know if you have more follow-up questions.
    Brad

  • Handling variable number of detected ojects in VBAI calculator

    I have an inspection that searches for bright objects (holes) in a product, and typically it does not find any (good), but when it does I need to know the locations of each hole, to determine xy-boundaries of the region of holes, i.e., the mins and maxes of the xy-coordinates of each hole. To do this, I'd like to use a caclulator step and interate through all the holes found.....but I don't believe the calculator can handle a variable number of holes..or can it?
    Thanks,
    Eric
    Solved!
    Go to Solution.

    It can if you put it in a loop with the index step indexing through each detected object and getting the center X, Y for hole[i], passing these results to caluclator, incrementing i, and using index step to get coordinates for next hole, and leave this state when no holes left.
    Hope that  helps,
    Brad
    Attachments:
    Looping Sample.vbai ‏15 KB

  • VBAI - LabView interface error - "The selected inspection could not be loaded", "Inspection File Error"

    I have been programming/interfacing VBAI2012 and LV2011 for two years already.
    There is one very frustrating problem:
    - Sometimes after changing some codes in VBAI, and I switch to Inspection Interface (by clicking File->Switch to Inspection Interface), there would be error saying "The selected inspection could not be loaded"
    - and then there is NO WAY to know what is going on. It does not tell you where the error is. Its so frustrating, you changed a couple of things, and the you have error switching to Inspection Interface, but then you don't know what is causing the error.
    Is there any log file which I can check?

    Guys,
    I have resolved this issue and successfully installed and configured jive forums on my laptop.
    I have documented high level steps on my blog http://orafusionmiddleware.blogspot.com (Non revenue generating, only for knowledge sharing)
    Cheers,
    Sandeep

  • Which stage the Prompt will be performanced?

    When I set a Prompt with a default value, is the Prompt will be performanced at database side? Or it will be performaced at BIEE Server side after the SQL results have been loaded here?
    Due to the tuning of BIEE is a big issue now, and I can't find any useful infomation on it, Could anyone tell me some Document Name or any blod address to learn more tuning BIEE?
    Thanks,
    Satine

    Thank you for your reply.
    I have noticed the Prompt is executed at BIEE Server side. If I am right, then I am very curious how to tune the application like this: when the first time open dashboard with no default value (All) as Prompt is very slow, then I choose any values in Prompt, they are all really fast.
    Satine

  • Send serial command in VBAI based off of calculation

    I am attempting to send serial commands through VBAI based off of a previous calculation step. For instance, my application will determine an objects mass center and then determine if it is to the left or right of my origin. From here, I would like to be able to send a serial command based on the left/right result. The command will be sent to an arduino which will controll a servo left or right based on the command it recieves. I think I have everything but linking to serial command to the calculation result figured out here. Any feedback or help with this would be greatly appreciated.

    In the Serial step, when you are sending a command (i.e. you press the "Send Command" button), you can press the "Insert Result" button to have the serial command you send out conatin a result from a previous step. There are even formatting options so you can have numeric previous measurements formatting into the string as you want. If you need to send results from other states, you can use variables to pass data between states since the Serial step doesn't currently support accessing results from other states.
    Hope this helps,
    Brad

Maybe you are looking for