欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1

程序员文章站 2022-07-14 22:17:36
...

前言

ABB机器人相比于其他几个友商,硬件开放的水平较高,但仍然存在一定的问题,以我的理解,ABB机器人在ROS环境下才有最大的干涉权限。不过在Windows环境下,开发简单的上位控制系统的条件也是具备的。在此提供一套开发windows控制器的流程。具体操作流程为:

  1. RobotStudio创造对应硬件设备的虚拟机,配置好环境;
  2. 使用SDK提供的网络通信,与虚拟机建立Socket通信(TCP/IP协议);
  3. 网络通信读取机器人当前信息,并加以区分、显示;
  4. 网络通信读取日志,并整合进现有日志框架中
  5. 对机器人实现基本运动控制(三种移动方式);
  6. 对机器人实现坐标控制,包含:坐标系设置、标定信息设置、速度设置;
  7. 对机器人程序进行控制,包含程序下载上载,RAPID程序启动和停止、程序指针设置、信号状态设置;
  8. 将实现内容整合入现有框架当中;
  9. 将机器人坐标系设置信息整合进现有程序之中;
  10. 与虚拟机器人进行联调;
  11. 与实际机器人进行联调。

通过这组文章,目的是提供一个比原版官方文档更简单易懂而且好用地,贴近于工程应用实践的C# 傻瓜式应用范例,并提供最基础的启动代码。此处需要指出的是,这份档案只需要应用于一个机器人,所以很多地方想当然地觉得全世界只有这么一个机器人;多个机器人的复杂协作需要修改不少内容。(如需有偿人工帮助请联系)

1. 项目启动

配置安装环境

首先去ABB机器人的二次开发中心 https://developercenter.robotstudio.com
下载PC SDK版本,在此示例当中使用的版本为PC SDK 6.08 ,同时需要安装Robot Studio(网络上资源很多,在此随便提供一个链接供参考 http://college.irobot-edu.com/community/ShowTopic-373.htm )。此时,当软件需要转移到其他设备上时,同样需要安装PC SDK。
ABB机器人SDK的语言框架是.NET框架,需要提前安装Visual Studio的C#支持库,在此使用的版本是Visual Studio 2019 Community版本和.NET 4.7.2版本。个人以为.Net 4.0以上框架均可,SDK会包含一个最低框架的说明,对于最新版 2020.1 Vesion,必须是4.8以上。
ABB机器人的上位机通讯主要有两种方式,PC SDK与Web Service。PC SDK可通过ABB官网下载,Web Service使用HTTP GET/POST获取数据。这两种通讯无论使用哪一种,均需要机器人控制器具有616-1 PC Interface选项,选项可通过示教器系统信息查看。

机器人硬件连接

使用Robot Studio虚拟机无须任何操作,直接打开就行,但要注意RS端需要打开PC-Interface端,具体的操作方法如链接所示:
使用实际机器人操作时,具体操作参见最后一个章节的实操部分。

虚拟机的配置

虚拟机的操作对于熟悉RobotStudio的朋友是很简单的,如果这一点不太会请自行补课。创建一个打开的虚拟示教器即可。简要流程为:创建一个机器人→创建一个控制器→连接控制器→打开示教器→完工OK。可以参考链接
C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1

2. 开始编程:与机器人连接

接下来进入项目的启动环境,首先确保程序调用了需要的内容,在此预先罗列了一部分内容:

using ABB.Robotics.Controllers;
using ABB.Robotics.Controllers.FileSystemDomain;
using ABB.Robotics.Controllers.RapidDomain;
using ABB.Robotics.Controllers.MotionDomain;
using ABB.Robotics.Controllers.Discovery;
using System.Windows.Forms;
using System.Collections;
using ABB.Robotics.Controllers.EventLogDomain;

建议一个专门的类,用于储存机器人控制的方法(全部是静态变量,还不知道静态类的朋友需要补课了),我管他叫RC - Robot Controller

    class RC
    {
        //仅限单个机器人的操作
        static Controller controller;
        static ABB.Robotics.Controllers.RapidDomain.Task task = null;

就像这样提供两个静态变量就行。

扫描环境内的机器人

非常基本的内容,实现起来也很简单,阅读起来也很简单。调试模式下单独用这段程序跑一下,infos应该已经被赋值啦。

            NetworkScanner scanner = new NetworkScanner();
            try
            {
                scanner.Scan();

            }
            catch (ControllerNotFoundException e)
            {
                MessageBox.Show(e.Message);
            }
            ControllerInfoCollection infos = scanner.Controllers;

如果这一步没有什么结果,说明你当前环境完全没有配置好。请确保RobotStudio已经打开,并且虚拟示教器已经配置完毕。
这一步的结果比较复杂,但是大部分内容都是可以忽略的,ControllerInfoCollection 是一个数组,其每项中信息可能有用的是如下几类:

  1. IP地址
  2. 系统名称
  3. 控制器名称
  4. 版本
  5. 标识码
  6. 是否为虚拟机

C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1

大概扫描的结果如下图所示,删除了很多不必要的信息(其实显示也不太重要,大部分情况下,都没几个机器人选项,记住每个机器人标识码就行了)
C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1

一行代码完成连接

并不需要了解这些究竟是什么,如果你的控制器只有单独一个小可爱,甚至不需要显示这些杂七杂八的内容,盘他!选择一个控制器,不需要知道任何事情,直接连接就可以,像这样不需要挑挑拣拣:

controller = new Controller(infos[0]);
controller.Logon(UserInfo.DefaultUser);

好吧确实比较简单,我理解大家比较想看完整代码,如下:

        static public void Connect(ControllerInfo info)//连接函数,创建静态类需要优先调用
        {
            try
            {
                controller = new Controller(info);
                controller.Logon(UserInfo.DefaultUser);
                task = controller.Rapid.GetTask("T_ROB1");
            }
            catch (Exception e)
            {
                string T = e.Message;
                MessageBox.Show(T);
            }
        }

好的同样比较简单,至此第二步也就结束了,机器人连接上之后,下一步就是机器人状态的采集和操作了,还有问题吗?没有了?好的下章见。

相关标签: ABB机器人 c#