石鑫华视觉 手机微信QQ:13450001061 / 18038383457

图像编程

AVT工业相机在LabVIEW中实现硬件触发

文章来源:石鑫华视觉网时间:2022-09-05 18:00:33 点击:235

AVT工业相机在LabVIEW中实现硬件触发

 

在LabVIEW中实现连续采集图像是很简单的一件事。连续采集中没太多难点,只要连续重复的执行采集Grab函数就可以。连续采集图像请查看帖子:

LabVIEW中如何连续采集图像_视觉开发模块NI Vision_图像处理|编程|机器视觉交流_机器视觉论坛_石鑫华视觉网_商城_方案_系统_光源_控制器_工业相机_镜头_石鑫华视觉网_华视自动化

http://labviewvision.com/thread-4897-1-1.html

 

而要实现硬件触发,则相对要复杂一些,需要操作相机的属性才可以。而且每款相机的触发属性操作时,其属性名称可能是不一样的,所以在LabVIEW中还要特别注意触发属性名称。

下面的使用的是工业相机是AVT的 Stingray F-125B相机,125万像素1/3’CCD 1394B接口相机。支持硬件触发。

image.png

触发关时进行连续采集,采集速度为25FPS

image.png

触发开(Mode 0模式)时没有触发信号则超时,这时采集速度为0

image.png

触发设置为Mode 0正常触发时,可以采集图像采集速度约为6FPS(与触发频率有关)

下面来看一下实现硬件触发的程序框图:

image.png

AVT Stingray F-125B工业相机在LabVIEW下的硬件触发基本原理-属性值变化时

image.png

AVT Stingray F-125B工业相机在LabVIEW下的硬件触发基本原理-属性值不变时

在设置硬件触发时,需要注意几个地方,一个是触发超时,即采集属性中的Timeout属性:

image.png

Acquisition Attributes采集属性中Timeout超时属性

这个属性不是必须要设置的,因为其有默认值5000(ms),即超时的默认时间为5秒钟。这个时间是非常长的。一般来讲,我们并不需要这么长的超时时间。因为如果设置这么长的超时时间,如果一直没有触信号时,程序则停留在采集图像等待触发信号的过程中,而对于程序中的其它事件的响应可能会很慢--要等5秒后才可以响应),所以一般来讲,这个超时时间设置我们需要设置的比较小一点,如200ms、100ms之类的。当然也不能太短了,如果太短了,短于触发的脉冲宽度,则可能读不到触发的边缘信号。

Timeout属性的设置,必须是在配置采集函数之前进行设置才OK的,即要在Configure Grab函数之前,一般来讲是就是一打开相机引用后就设置超时属性。而且这个属性在相机的实时运行中也是不能修改的。如果在程序中要想修改超时,则需要执行STOP函数,停止当前的配置,修改超时后,再重新执行配置函数;或者执行Close函数关闭当前相机引用,再重新打开相机、修改超时、配置、采集图像这样的流程才可以。

接下来的,则是最为核心的修改触发属性了。因为每个相机的触发属性名称不一定一样,所以NI的IMAQdx驱动也没有使用绝对名称。要进行触发设置,则需要使用激活属性功能,并且配合写入相应的值才可以完成相应的功能。一般来讲,在Camera Attributes属性下有一个Active Attribute属性和一个Value属性。前面一个属性用于控制具体要改变的属性,后一个则用于设置其值。关于属性名称、类型、读写等获取,请浏览:

LabVIEW Vision获取相机所有属性及所有视频模式_视觉开发模块NI Vision_图像处理|编程|机器视觉交流_机器视觉论坛_石鑫华视觉网_商城_方案_系统_光源_控制器_工业相机_镜头_石鑫华视觉网_华视自动化

http://labviewvision.com/thread-5690-1-10.html

 

image.png

设置触发属性

AVT Stingray F-125B的触发属性名称为CameraAttributes::Trigger::TriggerMode,这个可以通过上面的获取相机属性帖子中的方法得到,也可以直接查找相应相机的icd文件(WIN7系统一般在C:UsersPublicDocumentsNational InstrumentsNI-IMAQdxData文件夹下)。

属性名称一般是设置成常量,当然也可以设置成控件,不过因为不同的属性其值类型不一样,就造成了不能有太多的通用的。不过如果设置成控件模式,倒是不同相机的触发名称可以都通过控件来写,但是值的统一是一个比较麻烦的事情。就如AVT的相机,GUPPY Pro F-125B,就没有Mode15这样的属性,一般就只有Mode0、Off两种属性。

设置好触发属性的名称,则设置其值:

image.png

AVT Stingray F-125B的可用触发值

对于AVT Stingray F-125B来讲,因为此相机相对高级一些,其触发属性比较多,Mode 0是边缘触发(有电平变化时触发)、Mode 1是电平触发(高电平触发)、Mode 15触发连续采集模式(得到触发信号后,可以连续采集指定的图像数量)、Off关闭触发(连续采集)

一般来讲,我们可能会常用的是Off关闭和Mode0边缘触发模式。因为触发值是字符串,所以Value值中也是选择了String,在前面板中,则可以直接写String也可以做成枚举控件,然后再对应每个枚举值设置不同的字符串即可。

在实际应用程序中,触发属性不用每次采集图像时都写一次,一般都是做成值改变时,再写值。上面的示例就是利用的移位寄存器来比较值有无变化,再确定是不是需要写属性。

设置好这些属性后,其上就差不多了,最后再需要添加个功能就是对超时错误的判断。因为超时时,IMAQdx Grab函数是会输出一个错误的,一般错误代码是固定的-1074360293,因此可以对错误代码进行判断,如果有超时错误时,则可以使用清除错误函数,将错误清除掉,然后再设置一个超时布尔量,来显示是否超时。

image.png

超时的程序

image.png

未超时的程序

通过上面的这样的方法,就可以简单的完成相机的硬件触发方法。其它相机,基本上大同小异,只是属性名称和值可能会有不同,需要对应上相应的相机的值即可满足其它的相机属性。

首页
84162741QQ
联系