由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下。

除了直接与机器人通信外,有一种方式是通过PLC间接通信,附上我的另一篇文章,讲c#与三菱PLC通信的:C#与三菱PLC通信

首先假设一个简单的应用情况,有一台带相机的工业机器人,需要在机器人移动到某位置时,发出信号,然后视觉系统拍照并处理,最后将返回信号发送回机器人。这个程序就是以这个应用为基础写的。下图是机器人示教器上的程序:移动到P1点后,给计算机发送拍照信号photo=1,然后计算机处理后返回over=1,机器人收到后移动到P2点。

图片2

机器人示教器上面的程序十分简单,然后说明计算机上的程序。

首先是建立计算机与机器人的TCP链接,这里以计算机为客户端,机器人为服务端。

[csharp] view plain copy
  1. public void ConnectRobot()//链接tcp
  2. {
  3. byte[] data = new byte[1024];
  4. newclient_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  5. string ipadd = "192.168.30.238";//机器人IP地址
  6. int port = Convert.ToInt32("23");//端口号
  7. IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);
  8. try
  9. {
  10. newclient_Client.Connect(ie);//建立连接
  11. Connected_Client = true;//连接标志位
  12. btnConn.Enabled = false;
  13. sendToRobot("as\r\n");//建立连接后,首先发送as,则可以通过计算机发送as语言指令
  14. SetTishi("机器人链接成功...");//显示
  15. }
  16. catch (SocketException e)
  17. {
  18. SetTishi("连接机器人失败  " + e.Message);
  19. return;
  20. }
  21. <span style="white-space:pre;">     </span>//用于监听机器人是否发送数据
  22. ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
  23. myThread_client = new Thread(myThreaddelegate);
  24. myThread_client.Start();
  25. }

TCP通信的基本知识不在这里讲,这里要说明的是connect后为什么有一句向机器人发送“as”。在川崎机器人E系列TCP/IP通信手册中,有如下内容:

即,在connect后首先向机器人发送"as"后,可以直接从计算机发送机器人的AS语言指令。这样,就可以实现从计算机上对机器人程序进行控制。

建立连接后,要做的就是收发信息了。计算机向机器人发信息很简单,因为计算机可以向机器人发送as语言指令,所以就是简单的TCP发送消息就可以了,如直接发送“over=1”,机器人就可以获取得到了。需要说的是机器人向计算机发送消息,在本程序中没有采用在机器人中建立TCP服务器然后监听的方法,而是在计算机中实现该功能。本方法利用的是川崎机器人as语言中的list指令,list指令的功能是显示所有程序步骤和变量,而要查询变量photo的值,只需要向机器人发送“list/r photo”,这样就可以得到变量photo的值。这样就可以通过计算机端不断查询,达到了机器人发送数据的效果,从而简化了机器人程序,复杂性降低。以下是监听代码:

[csharp] view plain copy
  1. public void ReceiveMsg()//监听tcp
  2. {
  3. int thelastData = 999;
  4. while (true)
  5. {
  6. try
  7. {
  8. byte[] data = new byte[1024];
  9. int recv = newclient_Client.Receive(data);//接收消息
  10. string stringdata = Encoding.UTF8.GetString(data, 0, recv);//将bytes转换为字符
  11. //string stringdata = Encoding.Unicode.GetString(data, 0, recv);
  12. if (stringdata == "")//判断是否断开连接
  13. {
  14. SetTishi("服务器已退出");
  15. newclient_Client.Close();
  16. Connected_Client = false;
  17. break;
  18. }
  19. //利用AS语言的检测变量的指令list实现监听功能
  20. //因为发送‘list/r photo’监测变量photo的值返回的还有其它字符,所以要去掉这些字符
  21. stringdata = stringdata.Trim();
  22. string strTemp = "photo    =";
  23. int iCount = stringdata.IndexOf(strTemp);//得到多余字符的长度
  24. if (iCount > 0)
  25. {
  26. string read = stringdata.Substring(strTemp.Length + iCount + 1, 2);//去掉多余字符以及photo
  27. int kk = int.Parse(read);//得到变量photo的值
  28. if (kk != 0)
  29. {
  30. if (thelastData != kk)//信号从0->1才认为收到信号
  31. {
  32. SetTishi("接收到机器人拍照信号...");
  33. sendToRobot("over=1\r\n");//给机器人完成信号
  34. SetTishi("接收到消息:" + stringdata);
  35. }
  36. }
  37. thelastData = kk;
  38. }
  39. }
  40. catch
  41. {
  42. }
  43. sendToRobot("list/R photo\r\n");//向机器人发送as语言的指令,查询photo的值
  44. Thread.Sleep(100);
  45. }
  46. }

通过不断向机器人获取变量photo的值,当检测到photo=1时,就可以向机器人发送完成信号over=1,然后机器人程序往下执行。

转载于:https://www.cnblogs.com/bile/p/8939996.html

川崎机器人c#通讯(转)相关推荐

  1. 记录一下川崎机器人实现FINS TCP 通讯

    这里写自定义目录标题 记录下项目上使用的通讯 川崎机器人套接字编程 FINS TCP报文分析 握手 读取 写入 川崎机器人通讯源码 记录下项目上使用的通讯 开个坑,在项目中利用川崎机器人自带的TCP实 ...

  2. 川崎机器人总线通信_川崎机器人:PLC有那些功能?能实现机器人哪些通讯?

    川崎机器人:PLC有那些功能?能实现机器人哪些通讯? (一)运算功能 简单PLC的运算功能包括逻辑运算.计时和计数功能:普通PLC的运算功能还包括数据移位.比较等运算功能:较复杂运算功能有代数运算.数 ...

  3. 川崎机器人总线通信_川崎机器人 | EtherNet/IP安装使用说明

    川崎机器人 | EtherNet/IP安装使用说明 注:本文章文字.图片部分来自网络 版权归原作者,侵删. 您是否对将工业自动化集成到您的设施中感兴趣?如果是这样,那么您应该致电工业自动化和集成领域的 ...

  4. 川崎机器人与1200PLCTCP通信实例分享

    最近研究川崎机器人编程,涉及到TCP通讯接收数据. 思路使用1200作服务器,川崎机器人作客户端,建立和PLC连接并接收PLC点位数据到数组,解析转换成点位数据,达到外部通讯完成控制机器人点位数据的目 ...

  5. 库卡机器人外部紧急关断已按_茂名市维修川崎机器人示教器中心

    茂名市维修川崎机器人示教器中心 " 驱动器出现奇偶错误,库卡机器人异常无法工作解决措施 简介一.故障现象及原因分析 机器人运行中,提示驱动模块**奇偶错误,原因为在读驱动模块寄存器时,连续出 ...

  6. fanuc机器人提示暂停_川崎机器人故障排除参考方法

    川崎机器人故障排除参考方法        首先,第一时间做好系统数据备份工作.了解故障现象,通过现场一些设备的基本现象和现场技术人员的描述进行判断,会比较有效率,. 例如,根据一位现场工程师的描述  ...

  7. 川崎焊接机器人编程实例_机器人现场编程-川崎机器人示教-综合命令.pptx

    川崎工业机器人示教 综合命令一 .综合命令示教一 .综合命令示教综合命令示教(又称一体化示教)编程,程序由"综合命令"来编辑.命令要素显示行程序行命令要素参数显示行二. 综合命令的 ...

  8. 川崎机器人总线通信_【川崎】川崎机器人PROFINET 总线通信图文教程(上)

    本文介绍西门子 S1200/S1500 系列 PLC 通过 TIA Portal 软件平台与川崎机器人进行 PROFINET 总线通信的配制方法. 所需工具: 1. 十字螺丝刀一把(中号) 2. 1T ...

  9. 妲己机器人怎么升级固件_OnRobot新增爱普生川崎机器人套件、HEX固件升级

    作为一家全球化技术驱动型企业,产品和技术是OnRobot全球业务拓展的基石,是企业保持活力的创新密码.在原有UR.ABB.Fanuc等工业机器人品牌的基础上,OnRobot持续投入探索行业技术发展方向 ...

最新文章

  1. docker官方文档中文版_Docker官方文档翻译5
  2. 在VmWare Workstation 6.5上安装Esx 3.5 U3之二
  3. 数据科学家需要了解的5大聚类算法
  4. BestCoder Round #84
  5. html不读取缓存,如何让前端浏览器不进行缓存
  6. JAVA面试-HIBERNATE与 MYBATIS的对比
  7. 【报告分享】2019年12月郭广昌混沌课程ppt(附下载链接)
  8. C/C++二维数组的用法
  9. CJOJ 1070 【Uva】嵌套矩形(动态规划 图论)
  10. PHP算法之斗牛游戏牛型判断
  11. 计算机毕业设计java+jsp报刊订阅信息网站(源码+系统+mysql数据库+Lw文档)
  12. mysql的双机热备软件_如何规范使用数据库双机热备软件
  13. java实现第39级台阶(三十九级台阶)
  14. 怎么压缩pdf文件大小?
  15. 九段刀客:vue组件通讯
  16. 【电机】使用Simulink建立BLDC反电动势测量的简单模型
  17. 深大uooc大学生心理健康章节答案第四章
  18. easy_sanic更便捷实用sanic,支持orm、restful
  19. 数模笔记(五):变异系数法
  20. 【原创】从AutoCAD中提取明细栏和标题栏中的数据

热门文章

  1. java虚拟机_一文彻底读懂Java虚拟机!(JVM)
  2. 筒灯智能驱动芯片作用_魅族携8款智能照明新品进军智能家居,剑指行业前三...
  3. 【TensorFlow-windows】keras接口学习——线性回归与简单的分类
  4. [论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search
  5. 关于Mysql java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)的问题...
  6. Ubuntu16.04用源安装Nginx+PHP5.6+MySQL5.6
  7. Hibernate创建hqll时报错
  8. 用node-webkit(NW.js)创建桌面程序
  9. 自制Unity小游戏TankHero-2D(3)开始玩起来
  10. SQL Server 2008安装配置说明书+简单使用 亲测可用