While we are waiting for a new host computer to come in, I am running into the trouble of maxing out the network utilization on our computer using a basler Ace aCA2040-35gc camera running gigE. Our use is not critical for high speed.
Is there a way to limit the bandwidth of data sent to the host computer? Looking through the examples, I was able to find an attribute (desiredBandwidth, advancedEthernet) but this does not seem to be compatible with my camera. I'd like to reduce the frame rate (while holding width,heith) just so that I don't end up slowing down the rest of my program. However, the only frame rate options I see are attached to the width/heighth, and still get me to drawing around 900Mbps. Any advice?
Happy to provide code, but it shouldn't be critical to this question.
Solved! Go to Solution.
I believe you found the correct attribute with (Acquisition Attributes -> Advanced Ethernet -> Bandwidth Control ->) Desired Peak Bandwidth. Why do you say it doesn't seem to be compatible with your camera? What happens when you try to set this?
This attribute is a driver attribute, so it should be present on all GigE cameras. It translates your desired bandwidth into a specified inter-packet delay to limit the bandwidth of the camera. All GigE cameras are required to implement this stream channel packet delay register, so in a perfect world this should always work. If you set the value to your desired maximum Mbps of throughput, the driver will tell the camera to slow down the frame rate not to exceed this while keeping other things (width, height) constant. I tested with a GigE camera I had laying around and it seemed to work (see attached screenshots).
It's worth mentioning that this is the preferred way to limit bandwidth in this type of situation. If you limit the frame rate in another way, you could have your acquisition in bursts that still can crowd out the bandwidth at a given point.
Hope this helps,
Thanks for your response Katie.
I have attached a simple. VI and the associated error (see png) that I get when trying to use this attribute.
I have also provided images of the attributes that I can find in Max for my cameras, and my current IMAQdx gigE driver. It seems the problem arises in that the attributes supported by my driver do not reflect yours. What version of the driver are you using (could it be a compatibility issue)?
I also noted that my camera (-35gc) does not show up on NI's Industrial Camera Advisor List. The -25gc does.
So overall, it seems that using this attribute is the correct method. I just cant figure out how to get it working.
Thanks for the screenshots -- it all makes a lot more sense now. If you look in the MAX image towards the bottom you should see BusType == DirectShow.
Are you using some sort of DirectShow filter that translates from GigE Vision to a DirectShow interface? I'm not sure how these types of things work, so I'm not sure if the device can simultaneously be enumerated as both a DirectShow device and a GigE device. You might need to disable this DirectShow thing to make GigE enumeration possible. GigE Vision devices should show up under "Network Devices" in MAX.
IMAQdx can interact with both DirectShow cameras and GigE Vision cameras, but the GigE Vision experience is going to be much better. The DesiredPeakBandwidth attribute is GigE Vision only, so it makes sense you'd error out if this is a DirectShow session.
Regarding the industrial camera advisor, unfortunately this page is out of date. Generally it's pretty tough to keep up with all the new models from all GenICam-compatible vendors. As a general rule of thumb, if the camera documentation says it supports GigE Vision or USB3 Vision, it should work well with IMAQdx. If anyone finds one that doesn't, please let us know. We are always in contact with vendors who sell compatible devices to resolve any issues that arise. We're working on a better way to communicate camera support to clear up any confusion there and also provide guidance as to the levels of testing we've done with devices from various vendors. As far as that particular model goes, we actually resell it. For cameras we resell, you can be confident that those are tested thoroughly to ensure compatibility.
Hope this helps,
That solves the problem! Under network devices, the camera can be selected as "cam4" and it now appears as an "ethernet bus type" with the attributes that your camera has showed. As you said, cam4 shows up under network devices
A quick note: I only have one attached basler cam, so cam0, 1, 2, and 4 I believe reference the same physical camera. I had erroneously chosen cam0 without thinking about it. Is there a reason that I was populated with 4 separate cams for 1 physical camera (or rather 4 sources)? It appears that the first 3 are under the DirectShow bus type.
Glad this works for you now!
I'm assuming you have pylon installed as well, and something in your python install enabled this DirectShow enumeration. I would imagine that this is optional and you could disable it via pylon. On the IMAQdx side we're just enumerating whatever is on the system, so toggling that functionality would be something Basler support would have to help with.