The value of Zmotion is to bring customers more success!
一、背景
机器视觉方案实施的目的是通过图像处理算法对产品目标进行自动化检测并输出判断状态和数据结果,因此图像采集是机器视觉方案实施的基础。
图像采集的方法有两种:一是从相机中获取图像数据,二是从本地文件中获取图片进行脱机调试。
在上期课程中,我们讲述了如何使用VPLC系列视觉运控一体机三分钟读取本地图像的课程。本期课程正运动小助手给大家分享一下VPLC系列视觉运控一体机实现相机采集和图像保存的课程。
教学视频可点击→【视觉运控一体机小课堂】三分钟实现相机采集和图像保存查看。
二、VPLC控制器
(一)VPLC516E构架图
(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E一台
3.24V直流电源一个
4.网线一根
5.WinSCP软件
6.电线若干
三、课程知识点
1.扫描相机:使用CAM_SCAN指令扫描出现与控制器连接的相机。
2.获取扫描到的相机数量:使用CAM_COUNT指令扫描与控制器连接的相机数量。
3.选择采集设备:使用CAM_SEL指令选择进行采集操作的相机序号。
4.设置相机触发模式:使用CAM_SETMODE指令选择进行设置相机的触发模式。
5.开始采集图像:使用CAM_START指令选择进行设置相机开始采集图像。
6.发送触发指令给相机拍照:使用CAM_SETPARAM指令选择进行触发相机拍照,每触发一次拍照一次。
7.获取图像:使用CAM_GET指令在相对应触发模式下,获取一帧图像。
8.保存图像:使用ZV_WRITEIMAGE指令将图像保存在默认路径下。
四、软件实现
1.打开ZDevelop软件:新建名称为“相机采集和保存图像例程.zpj”项目→新建HMI文件→新建main.bas文件(用于编写界面响应函数、并开启HMI自动运行任务)→文件添加到项目。
2.设计HMI主界面。
3.编写HMI界面按下扫描相机按钮响应的函数,并去关联它的动作函数名。
'*******************定义全局变量区**********************
GLOBAL DIM cam_num '定义并初始化相机数量
cam_num = 0
GLOBAL DIM set_mode '选择采集模式,0-自由采集,1-软件触发,2硬件触发
GLOBAL DIM cur_mode '当前选择模式
GLOBAL ZVOBJECT image '定义获取的图片变量
'*******************定义全局变量区**********************
'HMI界面初始化函数
GLOBAL SUB init_hmi()
ZV_LATCHCLEAR(0) '清空锁存通道0
set_mode=1 '采集模式默认为软件触发模式
END SUB
'HMI界面按下扫描相机按钮响应的函数,扫描相机函数一般作为相机初始化函数,扫描到相机后不需要重复执行
GLOBAL SUB scan_all_cams()
CAM_SCAN("zmotion") '扫描正运动自品牌相机
cam_num = CAM_COUNT() '获取扫描相机的数量
if (0 = cam_num) then '如果数量=0则提示未找到相机
? "未找到相机"
return '退出子函数不再往下执行
endif
?"相机数量:" cam_num '数量!=0则提示扫描相机的数量
set_mode=1 '选择软件触发,设置采集模式并开启相机
CAM_SEL(0) '选择相机id
CAM_SETMODE(0) '设置相机为软件触发采集模式
CAM_START(0) '开启相机
cur_mode=set_mode '将当前设置的采集模式赋值给当前模式变量
DIM tmp(32)
CAM_GETPARAM("ResultingFrameRate",32,0) '相机帧率
DMCPY tmp(0), TABLE(0), 32
?"cam_get_param:cam_ResultingFrameRate = "tmp
END SUB
4.编写HMI界面按下相机采集按钮时响应的函数,并去关联它的动作函数名。
'HMI界面按下相机采集按钮时响应的函数
GLOBAL SUB btn_grab()
if (0 = cam_num) then '如果数量=0则提示扫描相机
? "请先扫描相机!"
return '退出子函数不再往下执行
endif '数量!=0继续往下执行
if (set_mode=1) then
CAM_SETPARAM("TriggerSoftware", 0)'发送软触发信号
CAM_GET(image, 0) '获取相机缓存中指定id序号为0的图像
endif
ZV_LATCH(image, 0) '显示image图像到锁存通道0中
END SUB
5.编写HMI界面按下保存图像按钮时响应的函数,并去关联它的动作函数名。
'HMI界面按下保存图像按钮时响应的函数
GLOBAL SUB btn_saveImg()
ZV_WRITEIMAGE(image,"SAVE.bmp",0)
?"保存成功"
END SUB
注意:如果项目运行在仿真器,默认情况下文件路径对应ZDevelop软件下的flash目录。
如果项目运行在控制器,默认情况下文件路径对应...zmc/flash/目录,且可使用ZV_SETSYSSTR("DataDir","")指令设置成自己想要的路径。同时如果需要在PC上查看图像,可以通过WinSCP软件连接控制器到相应目录下取出图像。
6.效果演示视频可点击→【视觉运控一体机小课堂】三分钟实现相机采集和图像保存操作演示部分查看。
本次,正运动技术【视觉运控一体机小课堂】三分钟实现相机采集和图像保存,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。