上位机基于C#通过TCP/IP和库卡机器人通讯

[复制链接]
查看78656 | 回复0 | 2024-12-24 17:26:54 | 显示全部楼层 |阅读模式
写在面前

前面我们写了很多很多关于各种通讯的文章,具体可以参看:

S7-200/300/400/1200/1500全系列通信总结

也整理了工业网络、工业以太网等的一些文章:

工业通讯网络层级全解读,解析工业网络的自动化金字塔

工业网络、工业无线、工业识别RFID的实例汇总与分析

技术解读PROFINET、Ethernet/IP等7种主流工业以太网

今天我们来聊一聊用C#于kuka机器人通讯~

上位机要想和库卡机器人通讯,首先要给机器人安装“ETHERNETKRL”这个软件,ETHERNETKRL是KUKA提供的一个以太网通信功能的软件包,支持TCP和UDP协议.但具体软件的安装以及初步通讯测试就不多做介绍了。

如果你没有C#编程的相关基础,可以先参考:

从零开始基于西门子PLC用C#通过OPC编写一套简易车间能源信息系统(附代码)

因为本文不是介绍该软件的安装,所以就不多做解释,下面的内容默认已经能用自带的测试软件获取库卡机器人发送过来的数据。在此基础上,我来说一下c#利用tcp/ip是如何跟库卡机器人进行通讯的.如果你对TCP/IP或者网络协议还有疑问,可以先参考:

网络的OSI七层模型和TCP/IP五层模型 | 网络基础(三)

最全整理网络基础知识“全家桶”—入门工业网络必备(推荐收藏)

首先当然是TCP/IP的基础部分,服务器和客户端。这里将库卡机器人作为客户端,上位机作为服务器进行通讯。









通过按钮事件,创建后台线程用于TCP服务端,创建服务端并开启监听后,就可以等待机器人客户端发来的消息了。

库卡机器人TCP通讯存在三种数据发送格式:固定长度字节,任意长度字节,和xml格式。个人感觉xml格式比较好用,这里介绍xml的通讯。

xml的通讯,其实可以分解为几个步骤:

机器人发送到上位机:机器人程序将变量或者数值写入xml的元素中→机器人将xml发送通过服务端发送到上位机的服务端→服务端接受到数据,按照xml的格式解析其中元素。



上位机服务端获取到的数据是:

<Robot><Data><LastPos X="483.980011" Y="7.210000" Z="239.869995" A="0.000000" B="0.000000" C="0.000000"></LastPos><ActPos X="1000.119995"></ActPos></Data><Status>12345678</Status><Mode>ConnectSensor</Mode><RobotLamp><GrenLamp><LightOn>1</LightOn></GrenLamp></RobotLamp></Robot>

然后对数据进行逐个元素的解析就可以了。要增加变量,只要对应在mxl文件,机器人程序和上位机解析过程中添加就可以了。

上位机发送到机器人:上位机将变量写成xml格式,利用客户端发送到机器人中的xml文件→机器人读取xml文件中的元素值到程序中的变量

写成xml格式:

sendstr = sendstr + "<Sensor><Status><IsActive>FALSE</IsActive></Status></Sensor>";

sendstr = sendstr + "<Sensor><Read><xyzabc X='10.0' Y='20.0' Z='30.0' A='40.0' B='50.0' C='60.0'></xyzabc></Read</Sensor>";

然后是tcp发送





等发送完成之后,机器人再读取

机器人从xml元素中读取值或者属性并赋予创建的变量

  RET=EKI_GetString("XmlCallBack","Sensor/Message",valueChar[])

  RET=EKI_GetInt("XmlCallBack","Sensor/Nmb",valueInt)

  RET=EKI_GetBool("XmlCallBack","Sensor/Status/IsActive" ,valueBOOL)

  RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",valueFrame)

然后就可以在机器人程序中使用,或者通过查看变量值检测是否正确

本例中的xml文件和机器人程序文件src由ETHERNETKRL软件中自带的测试例子修改而来。不用原例子的原因是,原例子只有程序文件src而没有数据文件dat,程序里的变量都是临时变量,无法在示教器上查询变量的值。所以新建了一个程序,将原例子的变量定义放在dat数据文件中,处理过程放在src程序文件中。另外,对上位机发送到机器人的元素有做一些删改。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则