川崎机器人c#通讯(转)
由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下。
除了直接与机器人通信外,有一种方式是通过PLC间接通信,附上我的另一篇文章,讲c#与三菱PLC通信的:C#与三菱PLC通信
首先假设一个简单的应用情况,有一台带相机的工业机器人,需要在机器人移动到某位置时,发出信号,然后视觉系统拍照并处理,最后将返回信号发送回机器人。这个程序就是以这个应用为基础写的。下图是机器人示教器上的程序:移动到P1点后,给计算机发送拍照信号photo=1,然后计算机处理后返回over=1,机器人收到后移动到P2点。
图片2
机器人示教器上面的程序十分简单,然后说明计算机上的程序。
首先是建立计算机与机器人的TCP链接,这里以计算机为客户端,机器人为服务端。
- public void ConnectRobot()//链接tcp
- {
- byte[] data = new byte[1024];
- newclient_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- string ipadd = "192.168.30.238";//机器人IP地址
- int port = Convert.ToInt32("23");//端口号
- IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);
- try
- {
- newclient_Client.Connect(ie);//建立连接
- Connected_Client = true;//连接标志位
- btnConn.Enabled = false;
- sendToRobot("as\r\n");//建立连接后,首先发送as,则可以通过计算机发送as语言指令
- SetTishi("机器人链接成功...");//显示
- }
- catch (SocketException e)
- {
- SetTishi("连接机器人失败 " + e.Message);
- return;
- }
- <span style="white-space:pre;"> </span>//用于监听机器人是否发送数据
- ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
- myThread_client = new Thread(myThreaddelegate);
- myThread_client.Start();
- }
TCP通信的基本知识不在这里讲,这里要说明的是connect后为什么有一句向机器人发送“as”。在川崎机器人E系列TCP/IP通信手册中,有如下内容:
即,在connect后首先向机器人发送"as"后,可以直接从计算机发送机器人的AS语言指令。这样,就可以实现从计算机上对机器人程序进行控制。
建立连接后,要做的就是收发信息了。计算机向机器人发信息很简单,因为计算机可以向机器人发送as语言指令,所以就是简单的TCP发送消息就可以了,如直接发送“over=1”,机器人就可以获取得到了。需要说的是机器人向计算机发送消息,在本程序中没有采用在机器人中建立TCP服务器然后监听的方法,而是在计算机中实现该功能。本方法利用的是川崎机器人as语言中的list指令,list指令的功能是显示所有程序步骤和变量,而要查询变量photo的值,只需要向机器人发送“list/r photo”,这样就可以得到变量photo的值。这样就可以通过计算机端不断查询,达到了机器人发送数据的效果,从而简化了机器人程序,复杂性降低。以下是监听代码:
- public void ReceiveMsg()//监听tcp
- {
- int thelastData = 999;
- while (true)
- {
- try
- {
- byte[] data = new byte[1024];
- int recv = newclient_Client.Receive(data);//接收消息
- string stringdata = Encoding.UTF8.GetString(data, 0, recv);//将bytes转换为字符
- //string stringdata = Encoding.Unicode.GetString(data, 0, recv);
- if (stringdata == "")//判断是否断开连接
- {
- SetTishi("服务器已退出");
- newclient_Client.Close();
- Connected_Client = false;
- break;
- }
- //利用AS语言的检测变量的指令list实现监听功能
- //因为发送‘list/r photo’监测变量photo的值返回的还有其它字符,所以要去掉这些字符
- stringdata = stringdata.Trim();
- string strTemp = "photo =";
- int iCount = stringdata.IndexOf(strTemp);//得到多余字符的长度
- if (iCount > 0)
- {
- string read = stringdata.Substring(strTemp.Length + iCount + 1, 2);//去掉多余字符以及photo
- int kk = int.Parse(read);//得到变量photo的值
- if (kk != 0)
- {
- if (thelastData != kk)//信号从0->1才认为收到信号
- {
- SetTishi("接收到机器人拍照信号...");
- sendToRobot("over=1\r\n");//给机器人完成信号
- SetTishi("接收到消息:" + stringdata);
- }
- }
- thelastData = kk;
- }
- }
- catch
- {
- }
- sendToRobot("list/R photo\r\n");//向机器人发送as语言的指令,查询photo的值
- Thread.Sleep(100);
- }
- }
通过不断向机器人获取变量photo的值,当检测到photo=1时,就可以向机器人发送完成信号over=1,然后机器人程序往下执行。
转载于:https://www.cnblogs.com/bile/p/8939996.html
川崎机器人c#通讯(转)相关推荐
- 记录一下川崎机器人实现FINS TCP 通讯
这里写自定义目录标题 记录下项目上使用的通讯 川崎机器人套接字编程 FINS TCP报文分析 握手 读取 写入 川崎机器人通讯源码 记录下项目上使用的通讯 开个坑,在项目中利用川崎机器人自带的TCP实 ...
- 川崎机器人总线通信_川崎机器人:PLC有那些功能?能实现机器人哪些通讯?
川崎机器人:PLC有那些功能?能实现机器人哪些通讯? (一)运算功能 简单PLC的运算功能包括逻辑运算.计时和计数功能:普通PLC的运算功能还包括数据移位.比较等运算功能:较复杂运算功能有代数运算.数 ...
- 川崎机器人总线通信_川崎机器人 | EtherNet/IP安装使用说明
川崎机器人 | EtherNet/IP安装使用说明 注:本文章文字.图片部分来自网络 版权归原作者,侵删. 您是否对将工业自动化集成到您的设施中感兴趣?如果是这样,那么您应该致电工业自动化和集成领域的 ...
- 川崎机器人与1200PLCTCP通信实例分享
最近研究川崎机器人编程,涉及到TCP通讯接收数据. 思路使用1200作服务器,川崎机器人作客户端,建立和PLC连接并接收PLC点位数据到数组,解析转换成点位数据,达到外部通讯完成控制机器人点位数据的目 ...
- 库卡机器人外部紧急关断已按_茂名市维修川崎机器人示教器中心
茂名市维修川崎机器人示教器中心 " 驱动器出现奇偶错误,库卡机器人异常无法工作解决措施 简介一.故障现象及原因分析 机器人运行中,提示驱动模块**奇偶错误,原因为在读驱动模块寄存器时,连续出 ...
- fanuc机器人提示暂停_川崎机器人故障排除参考方法
川崎机器人故障排除参考方法 首先,第一时间做好系统数据备份工作.了解故障现象,通过现场一些设备的基本现象和现场技术人员的描述进行判断,会比较有效率,. 例如,根据一位现场工程师的描述 ...
- 川崎焊接机器人编程实例_机器人现场编程-川崎机器人示教-综合命令.pptx
川崎工业机器人示教 综合命令一 .综合命令示教一 .综合命令示教综合命令示教(又称一体化示教)编程,程序由"综合命令"来编辑.命令要素显示行程序行命令要素参数显示行二. 综合命令的 ...
- 川崎机器人总线通信_【川崎】川崎机器人PROFINET 总线通信图文教程(上)
本文介绍西门子 S1200/S1500 系列 PLC 通过 TIA Portal 软件平台与川崎机器人进行 PROFINET 总线通信的配制方法. 所需工具: 1. 十字螺丝刀一把(中号) 2. 1T ...
- 妲己机器人怎么升级固件_OnRobot新增爱普生川崎机器人套件、HEX固件升级
作为一家全球化技术驱动型企业,产品和技术是OnRobot全球业务拓展的基石,是企业保持活力的创新密码.在原有UR.ABB.Fanuc等工业机器人品牌的基础上,OnRobot持续投入探索行业技术发展方向 ...
最新文章
- docker官方文档中文版_Docker官方文档翻译5
- 在VmWare Workstation 6.5上安装Esx 3.5 U3之二
- 数据科学家需要了解的5大聚类算法
- BestCoder Round #84
- html不读取缓存,如何让前端浏览器不进行缓存
- JAVA面试-HIBERNATE与 MYBATIS的对比
- 【报告分享】2019年12月郭广昌混沌课程ppt(附下载链接)
- C/C++二维数组的用法
- CJOJ 1070 【Uva】嵌套矩形(动态规划 图论)
- PHP算法之斗牛游戏牛型判断
- 计算机毕业设计java+jsp报刊订阅信息网站(源码+系统+mysql数据库+Lw文档)
- mysql的双机热备软件_如何规范使用数据库双机热备软件
- java实现第39级台阶(三十九级台阶)
- 怎么压缩pdf文件大小?
- 九段刀客:vue组件通讯
- 【电机】使用Simulink建立BLDC反电动势测量的简单模型
- 深大uooc大学生心理健康章节答案第四章
- easy_sanic更便捷实用sanic,支持orm、restful
- 数模笔记(五):变异系数法
- 【原创】从AutoCAD中提取明细栏和标题栏中的数据
热门文章
- java虚拟机_一文彻底读懂Java虚拟机!(JVM)
- 筒灯智能驱动芯片作用_魅族携8款智能照明新品进军智能家居,剑指行业前三...
- 【TensorFlow-windows】keras接口学习——线性回归与简单的分类
- [论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search
- 关于Mysql java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)的问题...
- Ubuntu16.04用源安装Nginx+PHP5.6+MySQL5.6
- Hibernate创建hqll时报错
- 用node-webkit(NW.js)创建桌面程序
- 自制Unity小游戏TankHero-2D(3)开始玩起来
- SQL Server 2008安装配置说明书+简单使用 亲测可用