正运动技术
正运动技术

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

【机器视觉运动控制一体机小课堂】三分钟实现相机的相关采集操作



1.jpg

背景


在机器视觉项目应用中 图像采集是通过成像设备,也就是工业相机去获取实时的图像,这个部分就是构成信号分布信息的一个过程。

通俗一点讲就是将产品放在相机成像的视野范围内,通过相机获取产品的特征,比如产品的形状大小颜色位置等信息,将获取到的图像信息,输送给机器视觉运动控制一体机的过程。

在上期课程中,我们讲述了如何使用 机器视觉运动控制一体机 实现 图像 的几何变换 的课程 本期课程正运动小助手 给大家分享一下 机器视觉运动控制一体机使用相机进行相关采集操作的课程。








01
VPLC控制器


(一)VPLC516E构架图

2.jpg

(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E机器视觉运动控制一体机一台
3.24V直流电源一个
4.网线两根
5.正运动自品牌相机一台
6.电线若干
(三)相机连接机器视觉运动控制一体机前准备工作

3.jpg

(四)相机网口 IP设置操作说明

1.首先去PC上高级网络设置的更改适配器选项修改相机与电脑网口对应连接的网口IP,设置为192.168.1.10,之后再去添加巨型帧。

4.jpg

IP设置

5.jpg

打开巨型帧
2.接着去对应的相机品牌驱动软件上修改相机的IP地址在192.168.1.X网段下。

6.jpg

至此,相机的网口IP设置就完成了,设置完IP后再将相机连接到机器视觉运动控制一体机上的LAN2口即可正常采集图像。 (后续在不改动相机的IP情况下,无需重复操作)

(五) 控制器扫描相机注意事项
1.检查相机类型是否为VPLC516E机器视觉运动控制一体机支持的相机类型。 
2.检查相机网段是否和控制器处于同一网段 (控制器和相机处于同一网段才能通信) ,并查看相机IP是否被占用,若被占用请先修改相机IP或机器视觉运动控制一体机IP并处于同一网段。
3.检查相机是否已经被其他主机连接,若被连接请将相机断电重启。检查相机的接线是否松动,相机网口灯是否正常。





02
课程主要使用的指令

7.jpg



03
软件实现


1. 打开 ZDevelop软件:新建名称为“使用相机进行相关采集操作示例.zpj”项目→新建HMI文件→新建“Basic .bas”文件 (用于编写界面响应函数、并开启HMI自动运行 任务) →文件添加到项目。

8.jpg

2.设计HMI主界面和关联它的控件变量。

9.jpg

      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.效果演示。

10.jpg


       本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟实现相机的相关采集操作,就分享到这里。


       更多精彩内容请关注“ 正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。


       本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。


邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询