Dear LabView community,
I am trying to run a Basler Sprint Mono spL-2048-70km with a NI PCIe-1433 frame grabber module. While the initial start-up was plug and play, running the camera at the maximum specified frame rate (300 kHz) turns out to be a challenge.
Up to know I am using the camera with a burst mode trigger (main trigger frequency 10Hz + burstmode up to 300 kHz) but the maximum reproducibly working burst mode rep rate is around 30 kHz. I tried various options to increase the overall frame rate over the last days but hit a wall.
The system is a Win 7 based office PC:
Win 7 Enterprise SP 1
Intel Core i5-2500 @ 3.3 GHz
8 gb of ram
64 bit System
I attached the sample code I am using below. Its the first time i tried to create high fram rate applications so I hope its just a very obvious mistake that can be fixed in a fast and elegant fashion.
Thanks alot in advance
Solved! Go to Solution.
I had a look at your VI and it looks fine to me on first sight (although you didn't include your subVI for configuring your camera).
But what I was wondering and what I didn't find on the Basler homepage is the size of the buffer of the camera. I mean with 30kHz your are producing 175MB/s. With a burst mode of 300kHz you would be close to 2GB/s. Are you using one or two Camera-Link cables? Can you increase the frame rate when you change from 12bit to 8bit image depth?
You were saying that you hit a wall, but what actually happens? Does the VI get too slow or are you loosing frames from the camera?
thank you very much for taking the time and having a look at my problem. Im also not sure how much memory the camera has by itself. In order to acchieve the high frame rates I have to use an area of interest smaler than 512 pixels.
The camera itself is only base configuration camera link, so only one cable connection. I realized yesterday afternoon, searching around in the forum and beeing lucky, that on standard triggered operation the frame grabber is triggered and not the camera directly.
From my understanding, after recieving a trigger the framegrabber sends a signal to the camera and waits for an image. This seems to have a latency of around 30 us (hence the 30 kHz max. frame rate).
By switching the Camera control line from default to external I was able to acchieve up to 100 kHz operation with the code above.
I attached the setup sub_vis to have everything complete.
To answer the rest of your questions:
The frame rate stays the same no matter if I have 8 bit or 12 bit. Trusting the basler frame rate calculator is is also expected.
When the rep rate (intraburst) is too high the camera is just skipping triggers and therefore loosing frames. This manifests itself when trying to read out the prealocated buffers. When you have a look in my Vi you will see that after starting the aquisition I calculate the time requeired to fill the prealocated buffers by the given rep rate from the trigger. In most cases for convinience I use a 10 Hz main frequency and 5 pulses each burst with a periode of e.g. 100 kHz, giving 50 Hz effective rep rate. Now the loop will wait for 1 second for the camera to aquire all images. If I increase the burst frequency the effective rep rate and overall time for the aquisition stays the same, but the camera start skipping triggers and creates empty buffers that can not be read. Ultimately giving dark lines in the reconstructed image.
In conclusion I managed to go a big step forward and up to 100 kHz. The question remaining now is how to get to more than 200 kHz from this point.
I am very open for ideas and more than grateful for tips
I just called Basler (+49 4102 463 500) and talked to them about your camera. I could not answer all the questions they had for me for your application, because there were quite some nessessities to grab as many frames as you do. So probably, if talk to one of their engineers, they can answer you the question if hardware-wise your setup is fine. Please let me know if you reach them and they can answer the question about the cable and if the triggering is fine.
thanks again for your involvement.
I found yet another entry in the forum that helped me a great deal.
Even though its a different camera and looks originally like a different issue it solved my problem. It seems one has to trigger the frame grabber in "Action: trigger start of aquisition" mode and the camera itself in "exposure control: triggered" in order to avoid long latencies and reach framerates above 100 kHz.
- use the Vi's posted
- set Framegrabber Action: Trigger start of aquisition
- set camera Exposure control: Triggered
- use 512 pixel AOI (via Basler CCT+)
- use NI-Max to set Camera control line source to External (routes the external trigger directly to camera)
--> Aquire burst mode with intraburst frequency up to 200 kHz (not sure if 200 kHz continuesly creates issues)
---> be happy
From the specification point of view the camera should be able to do even 300 kHz. As my goal frequency is 200 kHz I see this issue as solved.
Thanks alot for your help and I hope it helps the rest of the community aswell
Happy that I could give some (small) input and that it works now!