600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C# ABB机器人上位机控制 .net PC SDK开发全流程(通信 控制 日志 二次开发)--Chapter 1

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

时间:2020-03-01 01:23:06

相关推荐

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

目录

前言1. 项目启动配置安装环境机器人硬件连接虚拟机的配置2. 开始编程:与机器人连接扫描环境内的机器人一行代码完成连接

前言

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

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

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

1. 项目启动

配置安装环境

首先去ABB机器人的二次开发中心

下载PC SDK版本,在此示例当中使用的版本为PC SDK 6.08,同时需要安装Robot Studio(网络上资源很多,在此随便提供一个链接供参考 http://college.irobot-/community/ShowTopic-373.htm )。此时,当软件需要转移到其他设备上时,同样需要安装PC SDK。

ABB机器人SDK的语言框架是.NET框架,需要提前安装Visual Studio的C#支持库,在此使用的版本是Visual Studio Community版本和.NET 4.7.2版本。个人以为.Net 4.0以上框架均可,SDK会包含一个最低框架的说明,对于最新版.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。可以参考链接。

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 是一个数组,其每项中信息可能有用的是如下几类:

IP地址系统名称控制器名称版本标识码是否为虚拟机

大概扫描的结果如下图所示,删除了很多不必要的信息(其实显示也不太重要,大部分情况下,都没几个机器人选项,记住每个机器人标识码就行了)

一行代码完成连接

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

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);}}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。