海康⼯业相机功能模块-IO输⼊输出控制
海康⼯业相机功能模块sdk调⽤介绍
IO输⼊输出控制
前⾔
机器视觉⾏业⾥⾯,相机作为最重要的图像传感器,除了主要的拍摄功能外,它也承担了⼀部分信号控制功能.
⼀⽅⾯能够接受外部的触发信号例如PLC、光电传感器等,进⾏指定时刻拍照;另外⼀⽅⾯,能够输出IO信号,控制外围机构进⾏机械运动;韩语学习方法
wspc海康标准⼯业相机,⽀持1路GPIO输⼊,1路GPIO输出,⼀路可配置的IO输出(⾮光耦),本⽂主要讲⼀下如何使⽤SDK进⾏IO配置以及注意事项
平面设计理念IO输⼊
psychosomatic
IO输⼊的主要作⽤就是,相机通过IO管脚,收到1个IO信号,相机就⽴即拍摄⼀帧图像;
通⽤的使⽤⽅法如下代码依次设置:
触发模式:TriggerMode设置为1,开启触发模式
触发源选择:TriggerSource设置为0,选择line0,也可以选择line2,或者选择anyway;line0、line2取决于硬件电路接
线,anyway⽀持软触发、硬触发同时使⽤,需要看相机是否⽀持
沿信号TriggerActivation:默认上升沿触发(可以不设置)
触发缓存TriggerCacheEnable:默认不开启。当相机同时收到两个触发信号时,不开启此功能,相机只会响应1个信号,出⼀张图;
开启后,相机会⾃动缓存第⼆个信号,上个信号处理完毕后,⽴即处理缓存信号
触发延时TriggerDelay:收到信号后,固定延迟⼀段时间再曝光
滤波设置 LineDebouncerTime:去除信号⽑刺抖动,根据实际情况进⾏调节
faint//C语⾔代码段:硬触发模式初始化配置
//参数值,仅针对海康⼯业相机,其他品牌相机需根据对应节点微调
nRet =MV_CC_SetEnumValue(handle,"AcquisitionMode",2);
//0:SingleFrame 1:MultiFrame 2:Continuous
nRet =MV_CC_SetEnumValue(handle,"TriggerMode",1);//0:off 1:on
nRet =MV_CC_SetEnumValue(handle,"TriggerSource",0);//line2也可做输⼊源,⾮光耦
//0:Line0 1:Line1 2:Line2 7:Software 8:FrequencyConverter 13:anyway
nRet =MV_CC_SetEnumValue(handle,"TriggerActivation",0);//0:Rising Edge 1:Falling Edge 2:LevelHigh 3:LevelLow
nRet =MV_CC_SetFloatValue(handle,"TriggerDelay",0);//根据实际情况设置,默认0 us
nRet =MV_CC_SetBoolValue(handle,"TriggerCacheEnable",TRUE);//开启后会默认缓存1个信号
//滤波设置
nRet =MV_CC_SetEnumValue(handle,"LineSelector",0);//0:Line0 2:Line2
nRet =MV_CC_SetIntValue(handle,"LineDebouncerTime",10);//硬件滤波时间,可加⼤此参数防抖us
触发配置:
滤波:
IO输出
IO输出,参考⽤法主要分为两类
strobe输出,配合频闪光源拍摄,IO输出跟随曝光,输出周期与曝光周期同步
software输出,⽤户⾃定义时刻输出,⽤户⾃主控制,必要时刻输出OK或NG信号
1. strobe输出配合频闪光源,IO输出与曝光同步
这⾥需要注意StrobeLineDuration、StrobeLineDelay、StrobeLinePreDelay三个参数,⽤于调节与光源同步;光源的LED从灭到亮有个响应时间,那么我们就需要适当的去调节StrobeLineDelay/StrobeLinePreDelay这两个值去做匹配,StrobeLineDuration 是持续时间,可以不配置,也可以根据需要配置
figureskating
//Strobe输出
nRet =MV_CC_SetEnumValue(handle,"LineSelector",1);
//0:Line0 1:Line1 2:Line2
nRet =MV_CC_SetEnumValue(handle,"LineMode",8);//仅LineSelector为line2时需要特意设置,其他输出不需要
//0:Input 1:Output 8:Strobe
int DurationValue=0,DelayValue=0,PreDelayValue=0;//us
nRet =MV_CC_SetIntValue(handle,"StrobeLineDuration",DurationValue);
law of closure//strobe持续时间,设置为0,持续时间就是曝光时间,设置其他值,就是其他值时间
nRet =MV_CC_SetIntValue(handle,"StrobeLineDelay",DelayValue);//strobe延时,从曝光开始,延时多久输出
nRet =MV_CC_SetIntValue(handle,"StrobeLinePreDelay",PreDelayValue);//strobe提前输出,曝光延后开始
//--------------------------------------------------------------------------------------------------
nRet =MV_CC_SetBoolValue(handle,"StrobeEnable",TRUE);//Strobe输出使能,使能之后,上⾯配置参数⽣效,IO输出与曝光同步
//Strobe输出,多⽤作点亮频闪光源,nsor快门类型为Global相机都⽀持,rolling需注意相机是否⽀持
2. Software输出,IO输出与LineSource同步
//IO输出做NG信号⽤
//参数初始化
nRet =MV_CC_SetEnumValue(handle,"LineSelector",2);
//0:Line0 1:Line1 2:Line2
nRet =MV_CC_SetEnumValue(handle,"LineMode",8);//仅line2需要设置
//0:Input 1:Output 8:Strobe
nRet =MV_CC_SetEnumValue(handle,"LineSource",5);
//0:ExposureStartActive 5:SoftTriggerActive 6:HardTriggerActive
int DurationValue=1000,DelayValue=0,PreDelayValue=0;//us
nRet =MV_CC_SetIntValue(handle,"StrobeLineDuration",DurationValue);
全国建造师查询
nRet =MV_CC_SetIntValue(handle,"StrobeLineDelay",DelayValue);//strobe延时,从曝光开始,延时多久输出
nRet =MV_CC_SetIntValue(handle,"StrobeLinePreDelay",PreDelayValue);//strobe提前输出,曝光延后开始
nRet =MV_CC_SetBoolValue(handle,"StrobeEnable",TRUE);
//Strobe输出使能,使能之后,上⾯配置参数⽣效,IO输出与LineSource同步
//-------------------------------------------------------------------------------------
//输出IO信号命令
nRet =MV_CC_SetCommandValue(m_handle,"LineTriggerSoftware");
这⾥会存在⼀个问题就是,海康部分相机,LineSource没有SoftTriggerActive的参数选项,那么就必须使⽤另外⼀种⽅法实现
3. 电平反转,通过快速反转电平状态,来模拟⼀个信号输出
土耳其语翻译
当然这种控制电平变化时间做不到精确控制,只能适⽤于那种不太严格要求信号质量的场景
tiffany意思
//电平反转
//IO输出做NG信号⽤
//参数初始化
nRet =MV_CC_SetEnumValue(handle,"LineSelector",2);
//0:Line0 1:Line1 2:Line2
nRet =MV_CC_SetEnumValue(handle,"LineMode",8);//仅line2需要设置
//0:Input 1:Output 8:Strobe
//信号输出----------------------------------------------------
nRet =MV_CC_SetBoolValue(handle,"LineInverter",TRUE);//电平反转,也可⽤作IO输出,连续两次翻转可以输出⼀个IO信号Sleep(10);//延时就相当于电平持续时间,也可以不设置
nRet =MV_CC_SetBoolValue(handle,"LineInverter",fal);