I am trying to take a continuous acquisition for real-time processing of images in Labview but have been running into a timeout error; specifically Error -1074360293 at IMAQdx Get Image2.vi with the possible reason being Timeout. I am able to get a continuous acquisition in NI-MAX with no timeouts or errors, but when I try in Labview it always times out. I've used the Acquire Every Image.vi in the examples with the same issue. The camera I'm using is a Sentech STC-SBS500POE which is a GigE camera. It seems to be that after 5 seconds it times out. I've set the timeout in the camera attributes and the IMAQdx SubVIs to something higher than 5 seconds and still see it timing out at around 5 seconds.
Solved! Go to Solution.
What your video shows looks clearly like a network bandwidth problem and packet loss.
I would be surprised if you have good behaviour in MAX with the same packet size (1500). What is the packet size set in MAX ?
Some suggestions :
Hope this helps
The packet size was set to 1500 in MAX, the same as in Labview. MAX wouldn't allow me to change the packet size to greater than 1500 even though my NIC does support Jumbo Packets (I have an Intel I219-LM NIC). I just found out that it was due to the dock for my laptop. It seems that when the laptop is docked, it uses the dock ethernet port and disables the ethernet port on the laptop itself. So after undocking my laptop, I am able to use a packet size of 9000 which allows the camera to capture at the intended frame rate of 21 fps. However, I'm experiencing the same issue in Labview that I've been experiencing; the camera times out at around 5 seconds. While I am taking a continuous acquisition in MAX I checked to see if there were any lost packets, and there were none. In my Labview code, I added an indicator to display the Lost Packet Count attribute and didn't see any lost packets until the camera timed out. I have attached another video of me using the camera in MAX and Labview but using a packet size of 9000.
I figured out a solution to the problem; if I place an Enumerate Attributes VI in the acquisition loop, it doesn't time out. I noticed that some attributes that show up in MAX were not available in the property nodes for IMAQdx, but they do show up if I use the Enumerate Attributes VI during run-time. One of the attributes that wouldn't populate in the IMAQdx property node in particular was Firewall Traversal which did show up in the Enumerate Attributes VI. Coincidentally enough when I placed that VI in the acquisition loop with the Grab VI, I didn't get any timeouts. It seems as though this attribute (along with others) are only accessible during run-time (reference: https://forums.ni.com/t5/Machine-Vision/IMAQdx-timestamp-off-by-one/m-p/1966557/highlight/true#M3528... ). I had a hunch that the timeouts were being caused by my firewall which I can't turn off as it is controlled by my company's IT department, but at least this "fix" can work around it easily enough.
This is a very tricky one !
Do you confirm you solved the issue just by including an enumerate atrribute vi ? Or did you set the firewall traversal to true ?
Well, I had set firewall traversal to true in MAX and saved the configuration to the camera. But yes, all I did in Labview was include an enumerate attribute vi and it works. I'm not sure why that is.