Application Note - 60 mvBlueFOX
Application Note - 60 mvBlueFOX-MLC used in one system
1 Description
1.1 Reason
Evaluate the possiblity to use 60 mvBlueFOX-MLC cameras in one PC. Further question: Is it possible that each
camera acquires one image with a resolution of one megapixel in 2 seconds?
1.2 System
Host
Manufacturer
Dell
System
OptiPlex 7010
CPU
Intel Core i5-3470 CPU @ 3.20GHz
RAM
4GB
Operating System Windows 7 64-Bit
USB connection
Controller
Type
U3X8-PCIE8XE102
Host Bus
PCIe x8 Gen 2 (40.0 Gb/s)
USB Data Transfer Rate Super-speed (5.0 Gbps)
(max)
USB Data Transfer Rate Low-speed (1.5 Mbps)
(min)
Number of Ports
8 USB 3.0 (Standard A-type
Receptacle)
(Source: IOI Corporation)
MATRIX VISION GmbH
02.10.2014 10:23
1/8
Application Note - 60 mvBlueFOX-MLC used in one system
USB3 hubs
Typ
QU3-32U3BC01
USB Upstream
4 upstream ports (USB B)
USB Downstream
32 downstream ports (USB
A)
Downstream USB Bus
2A per port
Power
(Source: IOI Corporation)
Cameras
60 mvBlueFOX-MLC205C with color CMOS sensor and a resolution of 2592 x 1944 pixels.
1.3 Setup
The host PC is equipped with a 8-lane USB3.0 PCI Express board (U3X8-PCIE8XE102), which provides the
USB3.0 ports via 5.25" port replicator. Four of the eight ports of the replicator are connected to one of the USB3.0
hub upstream port (QU3-32U3BC01). Each upstream port supplied eight downstream ports.
Each hub was equipped with 30 mvBlueFOX-MLC205C.
MATRIX VISION GmbH
02.10.2014 10:23
2/8
Application Note - 60 mvBlueFOX-MLC used in one system
MATRIX VISION GmbH
02.10.2014 10:23
3/8
Application Note - 60 mvBlueFOX-MLC used in one system
1.4 Software
A Python script was used to open the found devices and to acquire images in a loop.
Previously the following properties were set.
Property
Value
Exposure 1000µs
Width
1200px
Height
800px
60MLC-Test.py
import mv
import time
import numpy as np
def OpenResultList():
fobj_out = open("results.txt","a")
return fobj_out
def InitDev(dev):
result = 0
dev.Setting.Base.Camera.Expose_us = 1000
dev.Setting.Base.Camera.Aoi.W = 1200
dev.Setting.Base.Camera.Aoi.H = 800
dev.Setting.Base.Camera.ImageRequestTimeout_ms = 3000
print "Exposure: ", dev.Setting.Base.Camera.Expose_us, "Width: ", dev.Setting.Base.Camera.Aoi.W,
"Height: ", dev.Setting.Base.Camera.Aoi.H
return result
def _SwitchDevToGenICam(dev):
result = 0
try:
choices = dev.InterfaceLayout.get_dict()
if layout and layout != dev.InterfaceLayout.value:
try:
dev.InterfaceLayout = layout
result = 1
except mv.MVError, e:
print 'error changing interface layout', e
except:
print 'camera ', dev.name, ' does not support interfaces'
return result
def CreateDevList(family):
devices = []
root = mv.List(0)
for name in root.Devices.children:
dev = root.Devices.get_object_by_name(name)
dev_family = str(dev.Family)
del dev
if dev_family == family:
print "Device serial="+name+" family="+family
MATRIX VISION GmbH
02.10.2014 10:23
4/8
Application Note - 60 mvBlueFOX-MLC used in one system
devices.append(name)
return devices
def OpenDevices(namelist):
devlist = []
for name in namelist:
#open the device
dev = mv.dmg.get_device(name)
print "Device serial="+name+" opened dev=",dev
devlist.append(dev)
return devlist
def CheckDevState(dev):
devstate = dev.Info.State.get()
if devstate != 1:
print "Error: dev=",dev,"state = ",devstate
def RequestAndGetImage(dev,time_out):
image_result = None
try:
nr_requested = dev.image_request()
image_result = dev.get_image(timeout = time_out)
except Exception as e:
CheckDevState(dev)
if image_result == None:
print "Snap Error"
return image_result
def SnapAllSerial(devlist):
images = 0
index =0
start_time = time.time()
for dev in devlist:
index+=1
print "Device: ", index, "snapping"
image_result = RequestAndGetImage(dev,1)
if image_result != None:
images += 1
del image_result
end_time = time.time()
diff_time = end_time - start_time
print "Snaploop serial: ",images," in ",diff_time," seconds FPS=",images/diff_time
def SnapAllOptimized(devlist):
images = 0
image_result = None
time_out = 2.0
start_time = time.time()
for dev in devlist:
try:
nr_requested = dev.image_request()
except Exception as e:
CheckDevState(dev)
print "Error, cannot request ",dev," Error:",e
# return images
for dev in devlist:
image_result = None
try:
image_result = dev.get_image(timeout = time_out)
MATRIX VISION GmbH
02.10.2014 10:23
5/8
Application Note - 60 mvBlueFOX-MLC used in one system
except Exception as e:
CheckDevState(dev)
print "Error, cannot snap ",dev," Error:",e
if image_result != None:
images += 1
del image_result
end_time = time.time()
diff_time = end_time - start_time
fps = images/diff_time
#print "Snaploop optimized: ",images," in ",diff_time," seconds FPS=",fps
out = "Images captured: " + str(images) + " in " + str("%.2f" % diff_time) + " seconds - FPS="+
str("%.2f" % fps) + "\n"
return out
fobj_out = OpenResultList()
namelist = CreateDevList("mvBlueFOX")
print len(namelist), " devices found"
devlist = OpenDevices(namelist)
print devlist
for i in range(0,10):
#SnapAllSerial(devlist)
out = SnapAllOptimized(devlist)
fobj_out.write("Loop number - " + str(i) + " - "+ out)
fobj_out.close()
MATRIX VISION GmbH
02.10.2014 10:23
6/8
Application Note - 60 mvBlueFOX-MLC used in one system
2 Implementation
2.1 Conditions
First, Ubuntu 14.04 64-bit was used. It was found that Ubuntu was slower than Windows although the USB buffer
was adapted. For this reason the test results are based on a Windows system.
A standard PC was used with installed Anaconda package in 32-bit. Additionally, the Python wrapper MVAcquire (
https://github.com/geggo/MVacquire) for mvIMPACT Acquire by Gregor Talhammer was installed, too.
2.2 Test time
June, 3rd 2014 / 10:00 - 10:30 am
2.3 Description
The test program ran 1000 times. Each loop acquired and transferred one image from every camera.
MATRIX VISION GmbH
02.10.2014 10:23
7/8
Application Note - 60 mvBlueFOX-MLC used in one system
3 Result
I nd eed, it is possible to use 60 mvBlueFOX-MLC at one PC without any problems. The first run of the
RequestLoop which acquires and transfers images, however, needs twice as long as the following runs.
After initializing and starting (with a RequestQueue of 4 images), a single camera allocates approx. 11.4 MB
memory, which leads to 684 MB allocated memory with all 60 cameras.
Edit Document
No. of runs Frames per run Duration per run [s]
min
1000
60
Frames per second
max Average min
0.43 1.09 0.50
max
Average per camera
55.30 139.53 119.50
1.99
3.1 Conclusion
It is possible to use 60 mvBlueFOX-MLC cameras at one PC. The goal of the test was to achieve a frame rate of
0.5 frames per second and camera. With 1.99 frames per second and camera this goal was clearly exceeded.
MATRIX VISION GmbH
02.10.2014 10:23
8/8
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising