1.厂家需求:
如上图识别四个不同指示灯的状态,L1绿 L2绿 L3绿 L4红。
L1绿亮表示25%电量,L1和L2绿亮表示50%电量,L1L2L3绿亮表示100%电量,L4红亮表示故障。
出厂要求为100%电量,没有故障,检测结果如下
OK:
L1绿亮 L2绿亮 L3绿亮 L4红灭
NG:
L1绿灭 L2绿亮 L3绿亮 L4红灭
L1绿灭 L2绿灭 L3绿亮 L4红灭
L1绿灭 L2绿灭 L3绿灭 L4红灭
L1绿灭 L2绿灭 L3绿灭 L4红亮
L1绿亮 L2绿灭 L3绿亮 L4红灭
L1绿亮 L2绿亮 L3绿灭 L4红灭
L1绿亮 L2绿灭 L3绿灭 L4红灭
2.MV程序编写
(从厂家提供的照片可以看出指示灯是有颜色不同的,绿色为电量指示,红色为故障灯。可以从指示灯颜色上进行识别,但是由于其中一个灯亮会干扰到其他灯,所以我选择了更稳定的黑白识别方法)
L1灯亮时会干扰到L2和L3情况如下图
首先使用快速匹配建立特征模板,再添加位置修正。特征模板建立大家要注意,取点太多会影响速度,太少会影响精度,要手动调节。
放射变换,厂家要求横向或者纵向检测
二值化,BlOB分析如下图
红色方框为BLOB分析的区域,灯亮时BLOB面积和个数为0,亮时会出现BLOB面积和个数1。
以此来设置条件检测,分别对4个灯进行检测。下图为L1绿亮灯状态
3.数据传输
分别对4个灯的状态进行检测,用0和1表示出来如下格式:
0000 1000 1100 1110 1111 0100...
最后添加格式化和数据发送模块传输数据到PLC(注:数据进制可能需要转化)
如果有需要再按照要求编写操作界面,包含NG/OK显示框,开始按钮,重置数据,工作时间,操作权限设置等等
(这是我第一次用海康的Vision master做的项目,赶工期所以没怎么细研究,拿去测试厂家已经验收通过了,可能不够完善,如有错误或改进欢迎大家跟帖指正交流。)