背景
在机器视觉项目应用中 图像采集是通过成像设备,也就是工业相机去获取实时的图像,这个部分就是构成信号分布信息的一个过程。
通俗一点讲就是将产品放在相机成像的视野范围内,通过相机获取产品的特征,比如产品的形状大小颜色位置等信息,将获取到的图像信息,输送给机器视觉运动控制一体机的过程。
在上期课程中,我们讲述了如何使用 机器视觉运动控制一体机 实现 图像 的几何变换 的课程 。 本期课程正运动小助手 给大家分享一下 机器视觉运动控制一体机使用相机进行相关采集操作的课程。
(一)VPLC516E构架图
(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E机器视觉运动控制一体机一台
3.24V直流电源一个
4.网线两根
5.正运动自品牌相机一台
6.电线若干
(三)相机连接机器视觉运动控制一体机前准备工作
(四)相机网口 IP设置操作说明
1.首先去PC上高级网络设置的更改适配器选项修改相机与电脑网口对应连接的网口IP,设置为192.168.1.10,之后再去添加巨型帧。
IP设置
打开巨型帧
2.接着去对应的相机品牌驱动软件上修改相机的IP地址在192.168.1.X网段下。
至此,相机的网口IP设置就完成了,设置完IP后再将相机连接到机器视觉运动控制一体机上的LAN2口即可正常采集图像。 (后续在不改动相机的IP情况下,无需重复操作)
(五) 控制器扫描相机注意事项
1.检查相机类型是否为VPLC516E机器视觉运动控制一体机支持的相机类型。 2.检查相机网段是否和控制器处于同一网段 (控制器和相机处于同一网段才能通信) ,并查看相机IP是否被占用,若被占用请先修改相机IP或机器视觉运动控制一体机IP并处于同一网段。3.检查相机是否已经被其他主机连接,若被连接请将相机断电重启。检查相机的接线是否松动,相机网口灯是否正常。
02课程主要使用的指令
03软件实现
1. 打开 ZDevelop软件:新建名称为“使用相机进行相关采集操作示例.zpj”项目→新建HMI文件→新建“Basic .bas”文件 (用于编写界面响应函数、并开启HMI自动运行 任务) →文件添加到项目。
2.设计HMI主界面和关联它的控件变量。
3.编写相机进行相关采集操作示例的响应函数。
ZVOBJECT Image '定义图像变量
GLOBAL CAMERA_TYPE '定义相机类型
GLOBAL cam_num '定义相机数量变量
GLOBAL gv_readimgmod '定义读取的图片模式
GLOBAL gv_index '定义图片索引变量
GLOBAL File_Name(30) '定义图片所在的路径名称
GLOBAL grab_switch '定义采集开关
GLOBAL CONST gc_grabtask_id=9 '定义采集线程任务号
cam_num=0
gv_readimgmod=0
gv_index=0
grab_switch=0
end
''''''''界面初始化函数''''''''''''
GLOBAL SUB hmi_init()
ZV_ENVINIT() 'ZVision运行环境初始化
ZV_SETSYSSTR("DataDir","")'设置默认数据目录
ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 1), HMI_CONTROLSIZEY(10, 1)) '设置锁存的大小
ZV_LATCHCLEAR(0) '将锁存通道 0 清零
END SUB
''''''''''''''''扫描相机'''''''''''''''''''
'HMI界面按下扫描相机按钮时响应的函数
GLOBAL SUB cam_scan_all()
local lv_i
if CAMERA_TYPE=0 THEN
CAM_SCAN("zmotion") '扫描正运动自品牌相机
ELSEIF CAMERA_TYPE=1 THEN
CAM_SCAN("basler") '扫描basler相机
ELSEIF CAMERA_TYPE=2 THEN
CAM_SCAN("huaray") '扫描大华相机
endif
cam_num = CAM_COUNT() '获取扫描到的相机数量
if (0 = cam_num) then '如果相机数量=0,打印提示信息
?"未找到相机"
return '退出子函数,不往下执行
endif
?"cam_num = " cam_num '如果扫描到相机,打印相机数量
for lv_i=0 to cam_num-1
CAM_SEL(lv_i) '选择扫描到的相机进行操作
CAM_SETEXPOSURE(5000) '设置相机曝光时间为5000us
CAM_SETMODE(0) '设置软件触发模式
CAM_START(1) '开启相机
next
END SUB
''''''''采集图像''''''
'HMI界面按下采集图像按钮时执行的子函数
GLOBAL SUB btn_read_img()
local lv_i
if gv_readimgmod=1 THEN
'循环图片索引
if(gv_index=11) then
gv_index=0
endif
File_Name="相机采集/" + TOSTR(gv_index,1,0) + ".bmp" '确定图片所在的路径
ZV_READIMAGE(Image,File_Name,0) '读取本地图片
ZV_LATCH(Image, 0) '将图像显示到锁存通道编号为0的锁存区域
gv_index=gv_index+1
RETURN
endif
if cam_num = 0 then
?"请先扫描相机!"
return
endif
for lv_i=0 to cam_num-1
CAM_SEL(lv_i)
CAM_SETPARAM("TriggerSoftware", 0) '发送触发指令
CAM_GET(Image, 0) '获取一帧图像存放到grabImg变量中
ZV_LATCH(Image, lv_i) '将图像显示到锁存通道0中
next
END SUB
''''''''连续采集'''''''''''''''
'HMI界面按下连续采集按钮响应的函数
GLOBAL SUB btn_cgrab()
if grab_switch =1 then '如果已经处于连续执行状态,打印提示信息并退出函数
?"正在连续运行中,请勿重复操作!"
return
endif
if( gv_readimgmod =0) then
if cam_num = 0 then '如果相机数量=0,打印提示信息并退出函数
?"请先扫描相机!"
return
endif
endif
grab_switch = 1 '采集任务开关置1
if (1 = grab_switch) then
if (0 = PROC_STATUS(gc_grabtask_id)) then
RUNTASK gc_grabtask_id, grab_task() '开启连续采集任务
endif
endif
END SUB
'''''''连续采集任务''''''''''''''
'采集任务实现函数
GLOBAL sub grab_task()
while(1)
if (0 = grab_switch) then '如果采集任务开关=0即停止采集按钮按下时
exit while '退出循环
endif
'重复执行以下操作
btn_read_img()
delay(20)
wend
ENDSUB
'''''停止任务''''''''''''''''''
'HMI界面按下停止采集按钮响应的函数
GLOBAL SUB btn_stopCgrab()
if grab_switch =0 then '如果已经处于停止采集状态,打印提示信息并退出函数
?"未开启连续采集!"
return
endif
grab_switch = 0 '将采集任务开关置0
END SUB
本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟实现相机的相关采集操作,就分享到这里。
审核编辑:汤梓红
发布评论请先 登录
相关推荐
评论