The value of Zmotion is to bring customers more success!
教学视频可点击→【机器视觉运动控制一体机小课堂】三分钟实现相机的相关采集操作查看。
(一)VPLC516E构架图
(四)相机网口
IP设置操作说明
至此,相机的网口IP设置就完成了,设置完IP后再将相机连接到机器视觉运动控制一体机上的LAN2口即可正常采集图像。 (后续在不改动相机的IP情况下,无需重复操作)
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
4.效果演示视频可点击→三分钟实现相机的相关采集操作的操作演示部分查看。
本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟实现相机的相关采集操作,就分享到这里。
更多精彩内容请关注“ 正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。