『7x24小时有问必答』
EthernetKRL是一种用于KUKA机器人的通信软件包,它支持通过以太网进行的双向数据交换。该技术利用TCP/IP协议进行数据传输,并采用XML作为数据交换格式,从而允许机器人控制器与外部系统之间的高效通信。《KUKA机器人TCP/IP通信程序解读程序分享》和《KUKA机器人EthernetKRL通信程序解读程序分享》对应的解读文章中分享了KUKA机器人程序在进行EthernetKRL通信时的配置过程,在测试的时候都是使用的TCP/IP调试助手进行辅助机器人程序进行测试。在实际应用中往往需要软件人员进行上位机程序的编写,本文介绍基于C#编程的上位机Demo的使用。
1 编程环境
Visual Studio Community 2022 - 17.4.0
Microsoft .NET Framework 4.8.04084
「.NET 桌面开发」工作负荷
KUKA.WorkVisual 6.0
KUKA.Ethernet KRL 3.1
2 准备工作
2.1 网络配置
(1). 首先,需要确保上位机所在的计算机网口与机器人控制柜网口已经通过网线建立了物理上的连接。
(2). 在机器人示教器上,在确保权限足够的情况下前往【主菜单】-【投入运行】-【网络配置】以查看机器人控制柜的 IP 地址:
> 以图片中为例:控制柜的IP地址为:`172.31.1.147`
(3). 回到上位机所在的计算机,前往【打开“网络和 Internet 设置”】-【更改适配器选项】,找到刚刚建立的以太网连接。右击后点击【属性】-【Internet 协议版本 4 (TCP/IPv4)】-【属性】,修改计算机的IP地址和子网掩码以确保计算机和机器人控制柜处于同一网段。
> 以图片中为例:计算机的 IP地址为:`173.31.1.160`,子网掩码与机器人控制柜保持一致。可以使用 `ping` 命令诊断连接,

2.2  机器人控制系统声明全局变量
> 在 Demo 中,为了方便调试,将会使用全局变量查看机器人控制系统收到的数据。所以在那之前,需要先声明全局变量。
(1). 在机器人示教器上,前往如下位置找到系统文件 `$CONFIG.DAT`,点击下方的“打开”:
(2). 找到第 6 行 `USER GLOBALS` 折合代码,点击下方的“打开/关闭折合”:
(3). 来到 `Userdefined Variables`,在其中使用 `DECL CHARreceivedStr[12]` 语句声明一个名为 `receivedStr` 的全局字符数组变量:
2.3  显示和更改一个变量的值

>以 Demo 为例,需要在KRL程序运行过程中显示 `receivedStr` 全局变量的值,那么在【名称】框中需要输入变量的名称:`receivedStr[]`。
3  通讯Demo测试
(1). 首先前往`KUKA_TCP_Server` 和 `TCPClient` 项目文件夹下的 *bin/debug* 目录下启动应用程序:
>提供的Demo源码不会有可执行应用程序,需要在 Visual Studio 中打开解决方案并自行构建。
(2). 配置服务端IP地址与端口号,客户端设置的主机IP地址和端口号需要与服务端配置的 IP地址和端口号一致:
> 这里只是检测通信功能是否正常,双方应用程序在同一主机上运行,故服务端配置IP地址为[环回地址]即可。
> 服务器端IP地址和端口号在未开始监听的情况下可双击修改,修改后按 Enter 确认(***必须按Enter 确认键后才算修改成功***),开始监听后不再能修改
(3). `KUKA_TCP_Server` 作为 TCP 服务端监听连接,开始监听后可在客户端点击连接,连接成功后日志框弹出提示:
(4). 双方可以任意编辑文本并发送,双方的日志栏都会有相应提示:
(5). 以上是通过 Demo 中自带的客户端测试程序来测试库卡机械臂通讯上位机。如果测试没有问题的话,您就可以尝试使用 [`KUKA_TCP_Server`] 或者 [`TCPClient`] 与KUKA机械臂进行通信了。
(6). 记住一点:上位机发的始终只是XML字符串(纯文本格式)!比如上位机想发整数10,实际上发过去的也只是字符"1"和"0"过去。至于机械臂那边想怎么解析它完全是看xml配置文件里是如何配置的。
4  外部程序为服务端 机器人控制系统为客户端
(1). 前往【机械臂作为客户端】文件夹,拷贝该目录下的三个文件至机器人控制系统:
> xml 配置文件存放目录:`C:\KRC\ROBOTER\Config\User\Common\EtherKRL`
> src 和 dat 文件存放目录:`C:\KRC\ROBOTER\Program`
(2). 运行`KUKA_TCP_Server` 程序,配置服务端 IP 地址为 `172.31.1.160`,端口号为 `59152`。点击“开启监听”:
(3). 机器人示教器【选定】`ClientDemo.src`程序,打开【单项变量显示窗口】以[查看`receivedStr[]` 全局变量的值],随后点击示教器左侧的[**启动键**]以启动程序,必须要在服务端开始监听后再启动。

> 当外部系统配置为服务器,EKI 配置为客户端时,`EKI_Open()` 会中断程序运行,直至与外部系统的连接激活为止。`EKI_Close()`关闭与外部服务器的连接。

(4). `KUKA_TCP_Server` 编辑发送符合配置文件中 XML 结构的消息给机器人控制系统,随后将会收到机器人控制系统回复的消息:
> 在`ClientDemo.src` 中,程序在回复了消息后会关闭并删除通道,所以服务端会收到客户端断开连接的提示。

(5). 在机械臂示教器上,可以查看`KUKA_TCP_Server` 发来的数据:
5  外部程序为客户端-机器人控制系统为服务端
(1). 前往【机械臂作为服务端】文件夹,拷贝该目录下的三个文件至机器人控制系统:
> xml 配置文件存放目录:`C:\KRC\ROBOTER\Config\User\Common\EtherKRL`

> src 和 dat 文件存放目录:`C:\KRC\ROBOTER\Program`
(2). 机器人示教器【选定】`ServerDemo.src`程序,打开【单项变量显示窗口】以[查看`receivedStr[]` 全局变量的值],随后点击示教器左侧的[启动键]以启动程序,程序应该会卡在`WAIT FOR ( FLAG 1 '' )` 语句处等待客户端连接。
> 当外部系统配置为客户端,EKI配置为服务器时,`EKI_Open()` 会将 EKI 置于监听状态。服务器等待客户端的连接问询,但不中断 KRL 程序运行。如果配置文件中未描述元素 \<timeoutconnection="..." \="">,服务器将一直等待,直至客户端请求连接为止。客户端的连接问询通过访问EKI或者事件信息表示,例如通过元素 \<aliveset_out="..." \="">。如果在服务器等待连接问询的过程中要中断程序运行,则必须编程设定一个事件旗标或输出端,例如 `WAIT FOR $OUT[...]`。
(3). 运行 `TCPClient`程序,设置主机的IP地址为 `172.31.1.147`,端口号为 `54600`,点击“连接”:
(4). 连接成功后,`ServerDemo.src`程序会卡在 `WAIT FOR ( FLAG 2 '' )` 语句处等待客户端发送数据:
(5). `TCPClient` 编辑发送符合配置文件中XML 结构的消息给机器人控制系统,随后将会收到机器人控制系统回复的消息:
>   建议EKI配置为服务器时不要使用 `EKI_Close()`。这是因为服务器运行模式下机器人控制系统通信通道由外部客户端关闭,收到机器人控制系统的回复后,可以点击“断开连接”按钮以断开连接。
(6). 在机器人示教器上,可以查看`TCPClient` 发来的数据:
6  注意事项
下载Demo后打开解决方案,可能会发现错误列表栏弹出一些错误信息:CS0246 未能找到类型或命名空间名为"STTech"(是否缺少 using 指令或程序集引用?) 等。这是因为解决方案中那两个基于 BytesIO TCP 通讯库的服务端和客户端测试程序项目中还未正确引用 BytesIO TCP 通讯库,有两项解决办法:
i 右击报出错误信息的那个项目的"引用",选择"管理 NuGet 程序包(N)",根据上面弹出的提示点击"还原(R)":
ii如果上面的方法没有弹出提示信息,可以选择重新安装 BytesIO TCP 通讯库:
(1)首先在 NuGet 包管理器中卸载已安装的三个包(三个包之间存在依赖关系,所以需要按顺序卸载。卸载顺序:STTech.BytesIO.TCP ==> STTech.BytesIO.Core ==> STTech.CodePlus):
(2)三个包卸载完之后,搜索 "bytesIO" ,找到 STTech.BytesIO.Tcp 并安装:
(3)完成!重新生成解决方案看看,应该就没有错误信息了。
注:第二个方法卸载是三个包全都卸载了,但安装只用安装 STTech.BytesIO.Tcp 就可以了。  
              
         

</aliveset_out="..."></timeoutconnection="...">

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

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

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码