康耐视相机与发那科机器人通过Ethernet I/P直连与程序编写

news2024/9/22 21:21:37

配置TCP/IP:按MENU—SETUP—NEXT—HOSTCOMM,选择TCP/IP—按ENTER或者F3[DETAIL]

Port#1 IP addr:输入机器人IP地址,按ENTER后输入,如192.168.1.11;如果控制柜有2个网络端口,则按F3[PORT]进行切换Port#1或者Port#2。

Subnet Mask:子网掩码,默认为255.255.255.0;

Router IP addr:路由IP地址,可不设置;

Host Name:输入主机(plc)名称,按ENTER后输入,如PLC;

Internet Address:输入主机(plc)IP,按ENTER后输入,如192.168.1.10前三位与机器人IP必须一致。

上述设定完毕后,机器人重启。重启后置光标在Host Name下的CAMERA所在行,按下F4 [PING],确认该IP地址已被识别。

 Ethernet I/P设置

 机器人侧Ethernet I/P 参数

MENU――I/O――NEXT――选择EtherNet/IP

首先确认Enable状态为FALSE,然后将光标移至TYP列,按F4键切换成SCN。再将光标移至Connection1列,按F4 [CONFIG]

Name/IP address:192.168.1.10,即前面设定的相机地址;

Vendor Id:厂商ID,参见相机软件的eds文件;

Device Type:设备类型,参见相机软件的eds文件;

Product code:产品代码,参见相机软件的eds文件;

Input size:输入容量;

Output size:输出容量;

RPI(ms):32;

Assembly instance(input):输入Assembly实例,参见相机软件的eds文件;

Assembly instance(output):输出Assembly实例,参见相机软件的eds文件;

Configuration instance:配置容量。

按PREV返回上层菜单,Status变为PENDING,同时置Enable为True,重新启动机器人,重启后如Status显示为RUNNING,表示已联机。

GI_X_Position:X方向偏移值

GI_Y_Position:Y方向偏移值

GI_Angle:r方向偏移值

GI_X_Negative:X方向偏移值的正负(默认X方向偏移值为负时,此信号置ON;也可取反)

GI_Y_Negative:Y方向偏移值的正负(默认Y方向偏移值为负时,此信号置ON;也可取反)

GI_A_Negative:r方向偏移值的正负(默认r方向偏移值为负时,此信号置ON;也可取反)

GI_X_Position为DI[97-112],GI_Y_Position为DI[113-128],GI_Angle为DI[129-144],GI_X_Negative为DI[145],GI_Y_Negative为 DI[146],GI_A_Negative为DI[147]。由于后三组信号都是一个独立的信号,所以可以不用分配到GI中,直接在程序中调用DI即可。

相机校准

1设定坐标系。

设定机器人的用户坐标系和工具坐标系。

​2 相机校准

1)找一张白纸,并在纸上画4个以上的清晰点。或者由康耐视工程师提供标定板。

2)用建立好的TCP寻找纸上点的并在相应用户坐标系下记录这些点的坐标。点位的顺序要确定。

3)让相机拍照,并且让相机找出所有点的像素坐标。(只拍一次照,拍全所有的点)

4)相机把像素坐标和用户坐标按顺序对应起来并计算好。接下来相机就可以把像素坐标转换成空间坐标了。

3 计算偏移(康耐视相机内部处理)

1)找出视野的尺寸。

2)用数学公式求出每个像素的宽度:

3)每个像素宽度=视野的长(或宽)除以视野的的长的个数(宽的个数)

4)相机做一个基准位。

5)求出后面拍照得出的点位和基准位的偏差,其偏差乘以每个像素的宽度,得出的最终数据传回给机器人。

7. 编写程序

DO[30]对应DO_Trig_Enable(相机使能),DI[30]对应DI_Trig_Ready(相机使能反馈),DO[31]对应DO_Trigger(相机拍照),DI[31]对应DI_Trig_Ack(相机拍照)。DI[39] 对应DI_Inspect_Comp(获取到数据并检查完成)。

编写拍照程序如下:

1: DO[30:TRIG ENABLE]=ON ;                    相机使能

2: WAIT DI[30:TRIGGER READY]=ON    ;          相机使能确认

3: DO[31:TRIGGER]=ON ;                       相机拍照

4: WAIT DI[31:TRIGGER ACK]=ON    ;            相机拍照完成确认

5: DO[31:TRIGGER]=OFF ;                      关闭相机拍照

6:  IF DI[39:INSPECT COMPLETE]=OFF,JMP LBL[2] ;检查确认

7:   ;

8: LBL[1] ;

9: WAIT DI[39:INSPECT COMPLETE]=OFF   ;

10: JMP LBL[3] ;

11:   ;

12: LBL[2] ;

13:  WAIT DI[39:INSPECT COMPLETE]=ON    ;

14:   ;

15: LBL[3] ;

/END

注:程序从第六行到最后的意思是:相机获取到数据并检查完成后DI[39]会改变一次状态。也就是说第一次拍照成功DI[39]=ON,第二次拍照成功DI[39]=OFF,依次交替,并不是每次拍照成功DI[39]都会变成ON。

编写获取偏移值程序如下:

1: PR[8:COGNEX OFFSET]=PR[7:ZERO]    ;    初始化(Z、w、p值为0)

2:  IF (DI[497:-X]=OFF) THEN ;          如果偏移值为正

3: R[21:X]=GI[1:X OFFSET]/1000    ;    因为组信号时二进制转换成十进制,所以只能接收整数,因此除以100还是1000取决于相机把偏移值乘以100还是乘以1000发给机器人

4:  ELSE ;                              如果偏移值为负

5: R[21:X]=GI[1:X OFFSET]/(-1000)   ; 除以(-1000),值为负数

6: ENDIF ;

7:   ;                                  下同

8:  IF (DI[498:-Y]=OFF) THEN ;

9: R[22:Y]=GI[2:Y OFFSET]/1000    ;

10: ELSE ;

11: R[22:Y]=GI[2:Y OFFSET]/(-1000)   ;

12: ENDIF ;

13:   ;

14:  IF (DI[499:-r]=OFF) THEN ;

 15: R[23:r]=GI[3:r OFFSET]/1000    ;

16: ELSE ;

17: R[23:r]=GI[3:r OFFSET]/(-1000)   ;

18: ENDIF ;

19:   ;

20: PR[8,1:COGNEX OFFSET]=R[21:X]    ;   把X偏移值赋值到PR[8]的X

21: PR[8,2:COGNEX OFFSET]=R[22:Y]    ;   把Y偏移值赋值到PR[8]的Y

22: PR[8,6:COGNEX OFFSET]=R[23:r]    ;   把r偏移值赋值到PR[8]的r

23:   ;

24: PR[13:PICK ACTUAL]=PR[27:PICK REF]+PR[8:COGNEX OFFSET]    ; 实际抓取位置=基准抓取位置+偏移

/END

8. 注意事项

在配置Ethernet I/P时, Input/Output size要和相机对应上,确认是以Words为单位还是以Bytes为单位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2054215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科创中心“核”动力|趋动科技:AI算力界的领跑者

近日,趋动科技与深信服正式推出联合解决方案。联合解决方案将深信服EDS的高性能存储与趋动科技OrionX AI算力资源池化软件、以及GeminiAI训练平台有机结合,整合存力与算力资源的同时,帮助用户建好AI平台、管好AI资源、用好AI服务。 双方已完成…

监控zabbix的安装与使用

文章目录 1.zabbix的安装步骤2.zabbix的主动模式和被动模式简介及实现3.zabbix proxy主动及被动4.自定义监控,监控linux和连接状态,创建email进行基础报警5.部署zabbix agent脚本,适配rocky和ubuntu系统6.使用脚本,基于zabbix api…

yolov8旋转框+关键点检测

一、Yolov8obb_kpt -----------------------------------现已在v8官方库上更新旋转框分割算法和旋转框关键点检测算法-------------------------- ------------------------------------------- https://github.com/yzqxy/ultralytics-obb_segment---------------------------…

每天五分钟深度学习框架pytorch:自动求导机制

本文重点 深度学习框架pytorch拥有自动求导的机制,自动求导是 PyTorch 中非常重要的特性,能够让我们避免手动去计算非常复杂的导数,这能够极大地减少了我们构建模型的时间。本文学习的是第10步反向传播,学习路线参考前面一篇文章。 pytorch0.4版本 在pytorch的0.4版本中…

YOLO知识点总结:

分类: 即是将图像结构化为某一类别的信息,用事先确定好的类别(category)或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。其中,ImageNet是最权威的评测集&…

C语言刷题日记(附详解)(1)

一、选择判断部分 第一题&#xff1a; 如下代码是否存在风险&#xff0c;并说明原因和修改方案 #include<stdio.h> int main() {char* str "hello world";*str a;return 0; }思路提示&#xff1a;这种形式的字符串存储在什么区域呢&#xff1f;是否真的有…

【个人笔记公司项目】vue项目配置代理解决跨域问题

前后端分离模式势必会遇到跨域问题&#xff0c;比如我是10.106.46.169:8080要去请求10.114.46.108:9191。下面讲下代理详细步骤。 本文步骤基于本人的项目结构 一般项目结构已支持代理 // 部署时需要将改开关置为false window.isDev trueif (window.isDev) { // Devwindow.l…

计算机网络速成(二)

计算机网络面试&#xff08;二&#xff09;-CSDN博客 OSI七层体系架构 OSI七层模型是什么&#xff1f;每层的功能是什么&#xff1f; OSI七层模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;它从上到下分别是&am…

揭秘“商业园区综合管理平台”的无代码开发流程!

本文中的素材来自我在某国资投资集团朋友小赵的“有偿”投稿&#xff0c;要知道现在的商业园区也正在经历数字化改造&#xff0c;面对多商场、多店铺的复杂管理需求&#xff0c;各类商管集团纷纷进行线上互联网管理模式的转型。 这份素材有何不同之处呢&#xff1f;因为他们走了…

EthernetIP IO从站设备数据 转IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集ETHERNETIP IO数据 2 5 用IEC61850协议转发数据 4 6 网关使用多个逻辑设备和逻辑节点的方法 6 7 从设备的的EDS文件获取参数信息 8 8 案例总结 10 1 案例说明 设置网关采集EthernetIP IO设备数据把采集的数据…

成功解决:el-popconfirm组件来确认删除、修改等操作无效

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

深入理解java web分层架构的高内聚低耦合

​ 在软件开发中&#xff0c;构建一个高效、可维护且可扩展的应用系统一直是开发者追求的目标。分层架构和依赖注入&#xff08;IOC&#xff09;是实现这一目标的重要策略。本文将深入探讨三层架构的高内聚特性、低耦合的设计原则&#xff0c;以及如何通过IOC&#xff08;控制反…

前端宝典之五:React源码解析之深度剖析Diff算法

本文主要针对React源码进行解析&#xff0c;内容有&#xff1a; 1、Diff算法原理、两次遍历 2、Diff瓶颈及限制 3、Diff更新之单节点和多节点原理 一、Diff源码解析 以下是关于 React Diff 算法的详细解析及实例&#xff1a; 1、React Diff 算法的基本概念和重要性 1.1 概念…

非专业人员该学什么程序语言

编程&#xff0c;一度被认为和驾驶一样是一项现代社会的基本技能&#xff0c;非专业人员也该有所掌握&#xff0c;中小学也在教。但实际上&#xff0c;它的普及程度远比驾驶差&#xff0c;掌握这个技能的人很少&#xff0c;在学校学过的知识&#xff0c;因为工作中用不上也都忘…

一文弄懂评分卡是什么

在最开始的信用审批过程中,客户的信用等级主要由专家进行主观评判。随着数据分析工具的发展和数据收集、存储越来越容易,各大机构逐渐使用统计模型将专家的评判标准量化为评分卡模型。从而更有利于客观评价客户风险,和批量高效对客户进行风险分级。随着技术的发展,机器学习…

力扣经典题目~快乐数~零基础也能看懂哦

202. 快乐数https://leetcode.cn/problems/happy-number/ 题目描述&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&…

MyBatisX逆向工程

目录 逆向工程 准备好数据库、表 安装MyBatisX插件 项目连接数据库 引入依赖pom.xml 生成实体类、映射文件、接口 逆向工程 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。 逆向工程&#xff1a;先创…

晶体管电路设计学习(一)放大电路的工作

我们这里学习晶体管电路设计&#xff0c;会从晶体管到场效应管直到复杂的运放器件&#xff0c;主要是进行体系化的深入学习&#xff0c;只是一个学习和记录的过程。 放大电路的作用是将小信号放大为大信号。例如,将0.1V的信号提高为1V 信号----即是放大。 1.首先,用晶体管组成一…

TinyC编译器4—编译器基本流程

1.什么是编译器&#xff0c;为什么要开发编译器 编译器&#xff1a;将一种程序语言翻译为另一种程序语言的计算机程序。一般来说&#xff0c;源程序为高级语言&#xff0c;而目标语言则是汇编语言或者机器码。 一开始的程序员是用机器码写程序&#xff0c;非常容易出错&#…

UE5中制作箭头滑动转场

通过程序化的方式&#xff0c;可以制作一些特殊的转场效果&#xff0c;如箭头划过的转场&#xff1a; 1.制作思路 我们知道向量点积可以拿来做投影&#xff0c;因此可以把UV空间想象成向量坐标&#xff0c;绘制结果就是在某个向量上的投影&#xff1a; 绘制结果似乎是倾斜方…