返回首页 hi, 欢迎来到机器人在线 请登录/ 免费注册 扫码关注

手把手教你用PCSDK开发机器人应用程序

时间:2020-04-07 来源:机器人在线 阅读:17890

为了达到最好的学习效果,前期需要准备的事宜列举如下:

预备知识

·        基础C#编程语言

·        VisualStuidio的基础操作

·        ABB机器人的基本了解

·        RobotStudio的基本操作

小贴士:只要了解最基本的C#语法就可以,这个网上满满的都是教程,简单学一下。我接触机器人系统应用方面也有一定年头了,虽说编程只是我的一小部分,但是我的感悟是编程语言永远只是工具,不管Rapid、C#还是Python,编程的核心在于逻辑,就是我们一直说的算法。所以不要纠结是C#还是python,只要精通一门另一样很快能上手。

 

软件工具

·        VisualStudio2019社区版

·        RoobtStudio6.08.01或以上

·        PCSDK6.08.01

·        RobotWare6.08或以上

小贴士:对于以上版本没有硬性要求,比如用VS2015或2017都可以,社区版现在都是免费的。另外,PCSDK向下兼容,就是说建议PCSDK的版本要高于RobotWare的版本。RobotStudio用于虚拟控制器的创建来调试程序。

上述建议的版本是本次课程要用到的版本。

 

说到这里,我们一起看看通过本次课程我们要做一个什么东东出来,

我将其命名为“ABB Robot GUI Tool”,并且程序图标也用了5400的logo。

我选取了一些VS的最常用的控件,包括列表窗口、按钮、单选框、文本框、标签、GroupBox和数据列表窗口。功能方面实现机器人最基本的功能如扫描网络中的控制器(自动扫描+手动更新)、重启控制器,重置程序指针,启动/停止Rapid程序,故障复位,马达上/下电,设置/获取Rapid变量。还有常用的监控功能如系统操作模式、机器人状态、程序执行状态、连接状态、信号变化和Rapid变量变化等。还有专设了虚拟控制器的控制面板,设计有切换手自动模式,使能打开/关闭和备份等功能。

 

初步设计想法是:ListView用于扫描控制器并且调用双击事件双击控制器可以登录,GroupBox用于分块管理,清晰地把类似的功能放在一起。

我们首先要在Visual Studio中创建基于C#的Windows窗体应用。

创建完成后,我们可以对窗体的设计窗口进行布局,单击左侧工具箱你可以看到所有的控件,我们将所需要的列表窗口,按钮,标签,文本框,单选框,数据列表和Group Inbox按照自己的想法进行设计布局(直接将控件拖至窗体),本例仅为参考(见上一篇的展示图例)。布局完成后,我们还需要对各控件的显示文本进行设置。举个例子,如果你新建一个按钮,默认它的名字叫”Button1”,请根据需要将其名称改成可标识的文本。又比如列表窗口,你需要对各列的名称作定义。列表中我们要显示的是机器人控制器的IP地址,控制器ID,系统ID,可达性,系统类型,系统名称,RobotWare版本,控制器名称和Web Service端口。

在列表窗口下面,我设计了四个功能区分别为”Operation”、“Rapid”、“System Status”、”I/O Windows“,实现基本操作、Rapid设置、”系统状态监控“、”输入输出信号监控”。另外也有用数据列表窗口来显示信号,并且专门设置了针对虚拟控制器的手自动切换和示教器的使能功能。

在窗体设计完成之后,我们可以准备开始写程序了。在这之前还要干一件事,那就是添加机器人通讯接口的动态链接库文件,要是没了它,PCSDK中函数的就无法被识别。

 

右击“引用”选择添加引用,

浏览定位至PCSDK安装目录,本例是在

“C:\Program Files (x86)\ABB Industrial IT\Robotics IT\SDK\PCSDK 6.08”,选择“ABB.Robotics.Controller.PC.dll”并添加。

添加完成后终于可以写程序了!

 

首先针对列表显示窗口,我要实现的是窗口自动扫描网络中的控制器,一旦搜索到立即添加至窗口,如果连接断开,那么提示用户相关信息。另外,双击某个控制器实现登陆操作。

 

我们在默认的Form1_Load事件中,添加如下代码,

private void Form1_Load(object sender, EventArgs e)

        {

//在Form加载过程中扫描第一遍,并且时刻扫描网络中的控制器。

            this.scanner = new NetworkScanner();

            this.scanner.Scan();

            this.listView1.Items.Clear();

            ControllerInfoCollection controllers = scanner.Controllers;

            ListViewItem item = null;

            foreach (ControllerInfo controllerInfo in controllers)

            {

                item = new ListViewItem(controllerInfo.IPAddress.ToString());

                item.SubItems.Add(controllerInfo.Id);

                item.SubItems.Add(controllerInfo.SystemId.ToString());

                item.SubItems.Add(controllerInfo.Availability.ToString());

                item.SubItems.Add(controllerInfo.IsVirtual.ToString());

                item.SubItems.Add(controllerInfo.SystemName);

                item.SubItems.Add(controllerInfo.VersionName);

                item.SubItems.Add(controllerInfo.ControllerName);

                item.SubItems.Add(controllerInfo.WebServicesPort.ToString());

                this.listView1.Items.Add(item);

                item.Tag = controllerInfo;

            }


            this.networkwatcher = new NetworkWatcher(scanner.Controllers);

            this.networkwatcher.Found += new EventHandler

            //networkwatcher.Found += HandleFoundEvent;

            this.networkwatcher.Lost += new EventHandler

            this.networkwatcher.EnableRaisingEvents = true;


        }

双击登录功能我们需要添加ListVew.DoubleClick事件,代码如下,

private void listView1_DoubleClick(object sender, EventArgs e)

        {

            ListViewItem item = this.listView1.SelectedItems[0];

            if (item.Tag != null)

            {

                ControllerInfo controllerInfo = (ControllerInfo)item.Tag;

                if

                (controllerInfo.Availability == Availability.Available)

                {

                    if (this.controller != null)

                    {

                        this.controller.Logoff();

                        this.controller.Dispose();

                        this.controller = null;

                    }

                    this.controller = ControllerFactory.CreateFrom(controllerInfo);

                    this.controller.Logon(UserInfo.DefaultUser);

                    MessageBox.Show(this.controller.Name.ToString()+ ": Login Successfully","Login");

                }

                else

                {

                    MessageBox.Show("Selected controller not available.","Login");

                }

            }

            

下面就看下仿真演示,观察下当有新的控制器启动后,界面有什么变化吧。

ABB机器人 机器人编程 技术干货

好的文章,需要您的鼓励

9

  • 最新资讯
  • 最新问答
推荐