手把手教你用PCSDK开发机器人应用程序
为了达到最好的学习效果,前期需要准备的事宜列举如下:
预备知识
· 基础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");
}
}
下面就看下仿真演示,观察下当有新的控制器启动后,界面有什么变化吧。
好的文章,需要您的鼓励
9
- 最新资讯
- 最新问答
-
单轴机器人工作原理及结构
关键字: 单轴机器人 工作原理 结构 2024-09-27 -
发那科机器人多少钱一台?有什么优势?
关键字: 发那科机器人 多少钱 2024-09-26 -
发那科搬运机器人多少钱?有什么优势?
关键字: 发那科 机器人 多少钱 2024-09-23 -
复合机器人品牌有哪些?产品及特点
关键字: 复合机器人 产品特点 2024-09-20 -
机器人结构组成及功能
关键字: 机器人结构 组成 2024-09-18
-
amr机器人是什么意思
标签: amr机器人,什么意思 提问:HYN 2024-09-18 11:16:05 -
上海视觉设备厂家有哪些?
标签: 视觉设备,视觉设备厂家 提问:GIGI 2024-09-13 10:16:02 -
搬运机器人多少钱一台?
标签: 搬运机器人,多少钱 提问:小仙 2024-09-10 11:28:02 -
配天机器人价格怎么样?
标签: 配天,机器人,价格 提问:SOSO 2024-09-09 10:48:02 -
场景感知技术包括哪些
标签: 场景感知,技术 提问:YUMI 2024-09-03 10:30:05
- 2021-06-10 10:45:45
- 2021-06-11 13:34:28
- 2020-05-29 10:03:22
- 2019-09-24 11:19:01
- 2020-01-16 13:27:13
- 2019-03-22 15:42:15
- 2022-08-30 20:16:22
- 2022-12-15 13:41:05
- 2022-12-25 00:00:00
- 2018-09-11 11:35:11
- 2022-12-04 08:18:03
- 2022-08-03 10:20:40
- 2024-09-27
- 2024-09-26
- 2024-09-23
- 2024-09-20
- 2024-09-18
- 2024-09-14
- 2024-09-14
- 2024-09-14
- 2024-09-12
- 2024-09-11