07-31-2006 09:26 AM
I am developing an application that will combine data acquisition, analog output and vision acquisition on a RT target. I am new to machine vision and am having trouble determining how best to implement vision acquisition and transfer. I am currently using IMAQ Flatten Image to String and passing this to a shared variable. In a standalone VI, I can acquire images at ~62 FPS (400x300 color), but with processing (IMAQ Overlay Text, JPEG compression, quality 500), the processed frame rate is ~27 FPS. The current prototype system is consists of:
LabVIEW 8.0.1; IMAQ-1394 2.0.2
PXI-8184 RT 8.0.1; IMAQ-1394 RT 2.0.2
PXI-8252; Prosilica EC-655C (Firewire)
PXI-6704; PXI-6602; PXI-6224; SCXI-1102C; SCXI-1520
Acq at 100 or 500 S/s; AO at 10 S/s; vision 50 FPS, triggered at sub-multiple of the acquisition rate. The intent is to pass data to the host for processing and storage. Are these performance targets achievable?
08-01-2006 12:10 PM
Good morning Phillip,
First, flattening the image to a string is the most efficient way of transferring images from RT targets to the host computer. Howver, using the shared variable is not going to be your fastest mode of transfer. Using TCP/IP transfer protocol across the ethernet will be your best bet. The use of the shared variable allows for more robust options; however, the trade-off is the speed.
As far as the capabilities of the system as a whole, we could talk theoreticals all day; but, each processor will run different systems at different speeds. I can only speak intelligently about the capabilities of the imaging portion of this system. I would say that you should be able to obtain the transfer rates that you are looking for.
Here is a link to an Developer Zone article about streaming images to disk. The same concepts and fallbacks can be applied to your application. I hope that this information is helpful!
Respectfully,
08-01-2006 01:14 PM
Jeffrey,
Thanks for your reply. I don't see your link, however. Are you talking about setting up a TCP/IP comm loop similar to what the RT wizard would build?
08-01-2006 01:21 PM
08-02-2006 08:39 AM
Jeffrey,
I put together an image server and client with TCP/IP communication. It seems to work reasonably well. It would appear that the big bottleneck is the 8184 controller. I can acquire images fast enough (over 60FPS), but it takes so long to process that many frames are dropped and the processor is pegged at 100%. I set the camera parameters such that a processor load of ~80% is maintained. I can acquire and process 400x300 color images at ~30 FPS with occasional dropped frames. The image size, after compression is about 10 to 14 KB. As mentioned in at least one article, the compression speed and output size are highly dependant on image content. I've attached the two VI's for you to review. Is this the method that you mentioned previously?
08-03-2006 10:21 AM
08-04-2006 10:33 AM
Jeffrey,
I spent some time this morning adding a queue to my grab VI. I saw the possible value and expected some improvement. I was disappointed, however. It would appear that the 8184 controller is the bottleneck. I can easily acquire 60+ FPS at 400x300 color, but the max images being retrieved is about 30. The processor is pegged at 100%. The Get Image VI can't seem to get images out of the buffer fast enough. Anyway, I've included my grab VI for you to look at. Maybe there is still something I need to do. In any case, thank you for your time and suggestions.
08-07-2006 08:57 AM
08-07-2006 10:15 AM
07-24-2014 09:31 AM
Hi
I am searching for solution to my problem and luckily found this. I am sure my issue will be only a pieace of case for you two. Hope you can give some suggestions.
What i am now trying to do is to get image data from computer and send it to RT vi, then i use FIFO to transfer it to FPGA vi and send out to a port which is connetced to a wire. This is the sending part. For the receiving part, I get the data from another port connected to that wire. Then send the data from FPGA vi to RT vi. Finally send from RT vi to computer vi and display it.
For now i am able to do the data communication between the RT and FPGA level. However, for the computer to RT and RT back to computer, i still have problems. I tried to use network stream but it didn't work. For now, i would like to use TCP/IP for speed issue. Would you please give me some suggestions? Cause I need also a hand shaking for this. I haven't used TCP/IP before, so please give some instructions.Thank you!