基于C#语言的ABB机器人工作站的设计与实现

2023-04-14 17:40钱新
电脑知识与技术 2023年6期
关键词:二次开发语言

钱新

摘要:近几年,越来越多的公司采购并使用工业机器人,使得生产效率大幅提高。但是,传统的“示教器+控制柜+机器人本体”的组合在界面可视化、数据再处理部分有很大不足。基于此,文章依托ABB工业机器人设计了一种基于C#语言的工作站,可以实现工业机器人的基础控制、状态监测和数据读写与展示。

关键词:C#语言;ABB工业机器人;二次开发;工作站设计;工业应用

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2023)06-0012-03

开放科学(资源服务)标识码(OSID)

0 引言

在新一轮科技革命和产业变革背景下,越来越多的公司引入了工业机器人来优化产业结构,尤其在装配、码垛、搬运产线上,工业机器人得到了越来越多的应用[1-2]。作为机电一体化技术的集大成者,现有的工业机器人正随着数字化和人工智能的浪潮,朝着数字化、柔性化、智能化的方向发展,文献[3]指出了几条细分路径:1)以深度学习为代表的工业机器人技术来完成更高精度的人机协作任务;2)以多机器人协作为手段的工业机器人技术来应对复杂化的任务,值得指出的是,多机器人协作的方式已经在许多行业中有所应用;3)可模块重构的技术来增加工业机器人的柔性制造本领;4)多传感器融合的工业机器人技术来补充非结构化机器人的缺陷;5)基于软件的工业机器人技术来扩展同一型号机器人的应用场景。

虽然工业机器人诞生至今已有多年,但是,我国工业机器人技能培训和人才培养制度尚不完善,导致工业机器人应用型工程技术人员非常短缺,同时,传统工业机器人的示教器界面在数据可视化和数据再处理部分有一定短板,因此需要开发一款便捷的操作软件,既能减小工程技术人员使用工业机器人的难度,又能实现一定的数据可视化处理和安全操作。

文献[4]针对现有机器人工程教育体系和行业痛点为着手点,提出了一整套理论与实践一体化的线上线下教育体系,力求以一款多模块、多功能、多层次的可以适配多种厂家型号的软件来辅助教学,可见针对现有职校课程,也需要一款通用软件作为工业机器人专业的辅助工具,来减小职校教育与企业培训之间的隔阂。

基于此,笔者使用Visual Studio 2022开发软件,依托ABB工业机器人和相关PCSDK开发包开发了一款PC端的机器人工作站,该工作站功能齐全而且操作便捷,界面友好,易于拓展,且软件有一定通用性,适合日常工作需要。

1 软件需求分析

1.1 WinForm与WPF

WinForm是.Net开发平台中对Windows Form的一种称谓,和WPF一样,都适合用于桌面程序的开发和设计[5],但是這两种技术有一定的区别。第一点:界面的编写。WinForm采用拖动控件的方式进行界面编写,其本身集成了大量的封装控件,可以极大简化工作人员代码编写,从而把主要设计精力置于功能的实现上;而WPF则使用专门构建用户界面的XAML语言,从而可以更加容易制作出精美的页面,采取了前后端分离的方式,实现了代码的功能解耦。第二点:两者的驱动方式不同。WinForm由于使用了封装控件,其驱动方式多为“事件驱动”,通过按钮的点击或事件订阅进行动作;而WPF则是使用“数据驱动”的方式,当数据源变动时,进行主界面的数据更新,与此同时,用户操作界面时是直接对数据进行修改的,而数据和界面不进行直接接触[6-8]。综合考虑:由于此次设计的工业机器人工作站对界面要求不高,因此采用WinForm来实现工业机器人的控制和数据再处理,同时,为了稍微美化传统的WinForm界面,此次设计引入了开源控件HZHControl。

1.2 可扩展控制界面

工业机器人工作站除了常规的连接控制、速度设置、状态显示、数据读写外,还应该有针对特定产线或者功能的界面,因此需要一种便于拓展的、易于区分内容的界面设计,同时,在代码编写过程当中要考虑到工业机器人的数据模型和关系模型。因此,本次设计参考了ABB的PCSDK工具包的命名空间划分,其主要命名空间为如表1所示:

表1  ABB工业机器人主要命名空间

[命名空间名称 主要内容 ABB.Robotics 工业机器人本体异常信息 ABB.Robotics.Controllers 工业机器人控制器信息 ABB.Robotics.Controllers.Configuration 工业机器人配置信息 ABB.Robotics.Controllers.Discovery 工业机器人连接信息 ABB.Robotics.Controllers.IOSystemDomain 工业机器人I/O信息 ABB.Robotics.Controllers.MotionDomain 工业机器人运动信息 ABB.Robotics.Controllers.Rapid.Domain 工业机器人Rapid信息 ]

在设计软件时,可以依照该命名空间设计相关内容,便于软件后期的功能增添和代码维护。

1.3 安全连接和控制界面

由于工业机器人通常被应用在搬运、喷涂、装配等工况复杂的环境,因此对于工业机器的启动和控制要求较高,需要在满足各种安全条件下进行,防止出现工艺问题或导致人员伤亡。同时,运行过程当中应能实时显示工业机器人的IP地址、系统ID、控制柜软件版本、运行速度等基础信息,便于工作人员进行观察和设定,此外,针对工业机器人的基础控制可以实现点动测试。

1.4 点位数据读写界面

在工业机器人的作业中,被记录最多的数据就是各种工作点位,因此在上位机开发过程中,应能实现关键点位/点数组的空间姿态数据读写,以便在后期调试过程当中能够实现上位机的远程操作修改,进行精密的点位修正。同时,在该界面应能实现部分数据的隐藏,易于操作人员观察。

1.5 通用数据监控界面

除了运动点位外,ABB工业机器人中还记录了bool、num、ExtJoint等类型的数据,因此这些数据也需要被操作人员读取并分析。同时针对工业机器人作业过程,应能实时显示机器人末端执行器的位置并图表展示以便观察,对于特定的工作任务,可以进行针对性的关键数据监控。

基于1.1~1.5小结分析,本次设计的机器人工作站系统功能分解视图如图1所示。

2 系统整体设计

2.1 界面设计

由于本文采取WinForm进行开发设计,因此主要考虑在界面设计部分进行窗口的生成和复用,其主要思想是:在主窗口界面左侧布置功能图片,图片被点击时,绑定窗口生成事件,将新的窗口覆盖于主窗口之上,同时隐藏掉除了点击按钮以外的所有窗口,从而完成窗口的复用,其实现效果如图2所示,左侧功能栏采取不同图标来展示不同功能。

从图2可以看出,在采用了HZHControl控件后,传统的WinForm窗口也能实现不错的界面显示,同时窗口复用的设计极大方便了后续的功能开发,可以根据实际的使用需求,再进行有针对性的开发。

2.2 安全连接和控制界面设计

现有的工业机器人都预留了网口作为主要通信,因此在此次工作站设计中采用有线网络进行通讯连接。ABB机器人的PCSDK包中主要通信函数在NetworkScanner类中,当PC在同一网段搜寻到机器人时,可以识别并读取机器人相应的硬件信息和软件版本号。

机器人的运行主要有两大部分,一个是电机及控制器的上电,一个是程序的正式运行,因此在基础控制部分应该能分别实现这两个内容的启动和停止。本次设计的控制部分有启动(程序运行),复位(程序复位),电机上电,电机下电,工业机器人运动暂停和工业机器人运动急停,而这一部分的控制函数主要在Controllers类中。

考虑到工业机器人的特殊工作环境,工业机器人启动时需要满足各种安全条件,此处设立了三个基本的安全要求:1)机器人控制状态应处于自动运行状态从而防止在人工操作时上位机误操作导致發生安全事故;2)机器人的启动I/O信号应满足启动要求,譬如安全栅栏信号应处于正常工作状态;3)机器人启动位置应该在原点位置。同时软件设计的时候也要考虑机器人连接成功与否,从而判断操作是否成功下达。图3展示了机器人连接控制界面的主要内容,图4展示了机器人安全动作的提示内容。

可以看出,该款上位机控制软件可以简化工作人员对机器人的操作,并且充分考虑到了实际工况中的安全问题。

2.3 点位数据读写界面设计

工业机器人运动过程当中,记录数据最多的就是各种点位数据。ABB中负责记录该数据的就是结构体RobTarget,在该结构体中操作人员更关注的是其中的位置和姿态数据。在这里位置X、Y、Z是工业机器人末端执行器相对坐标原点的距离,姿态数据Rx、Ry、Rz则反映了末端执行器相对于各基准面的姿态。考虑到,在常规控制当中,一个动作通常以数组形式进行存放,因此该界面应该能实现数组的读取和修改。为了保证写入数据的正确性,在覆盖数据前应有提示窗提示修改后的最终结果,防止数据的误写,同时,考虑到界面的简洁和美观,提供了数据隐藏功能,并针对组数据的数据类型进行了分类,这一部分的主要操作函数在Rapid类中。图5显示了单点的姿态修改界面,图6显示了数组的修改界面,可以看出,在覆盖旧数据前,提供了确认框供操作人员进行判断。

2.3 通用数据监控界面设计

正如1.5小节所描述的那样,普通操作工人使用点位数据读写界面就能完成日常工作所需,但是对于程序调试和后期维护而言,还需要更多数据进行辅助操作。在此设计界面,首先完成了类数据批量读取功能,可以实现当前工业机器人所用到的所有数据的读写,包括但不限于bool、num、pose、speeddata、ExtJoint。考虑到工业机器人的周期性维护,实现了工业机器人服务时间信息的读取,包括总运行时间、上次开机时间、本次服务总时间、校准时间等,这一部分的主要操作函数在MotionSystem类中。同时,实现了工业机器人的实时位置显示,并作出图表展示,方便操作人员的观察,在这里,图表部分采取了开源包HZHControl的Live Charts控件。图7和图8显示了通用数据监控界面的实现,其中左上角是机器人服务信息,左下角是类数据批量处理,右下角是机器人实时位置,右上角是曲线展示,可以看出,采用实时曲线显示的运动轨迹的方式可以极大方便工作人员的观察,并且相关报警信息进行了特殊颜色标记。

值得注意的是,在该界面中实现了虚拟机器人和实物机器人的种类判断,并依据这些判断来进行软件的不同动作。

3 结束语

笔者使用了Visual Studio 2022为开发环境,依托ABB工业机器人和配套PCSDK工具包完成了工业机器人的工作站设计,可以实现机器人搜寻、机器人硬软件版本显示、机器人实时速度读写,机器人启停控制、单个点位和数组点位的读取和修改,机器人服务信息读取,机器人类数据批量读取,机器人实时位置更新和曲线显示。该系统创新之处在于:

1)所有功能实现都充分考虑到了安全因素,保证了工业机器人数据安全和操作人员的人身安全;

2)系统有一定可拓展性,该系统在设计之初就考虑到了软件本身的功能拓展,方便后续应用的开发,同时本软件能适配大多数型号的ABB工业机器人;

3)应用了开源控件HZHcontrol,在不增加代码工作量的情况下实现了界面的美化。

随着我国现代化建设的发展,工业机器人从一开始依托外国技术,到现在逐步走出国产道路,这是一个值得欣慰的过程。但不可忽略的一点是,我国培养相关人才的产业链还未完善,依旧需要研究和突破。本文所做设计一方面对于工业机器人产业有极大帮助:缩短了操作人员的培养周期,优化了数据读写和显示,也为相关机器人工业软件开发做出参考;另一方面对职校的工业机器人教学做出了一定贡献:该软件能有效服务硬件+软件的混合式教学,能有机集成工业机器人课程体系,培养理实一体化的高技术人才。当然,本软件仍然有很大的改进空间,比如能增添上位机对工业机器人代码编写功能来减少对示教器的使用,增添运维功能来满足不同产线需要,增添机器人读取种类,来适配其他机器人厂家的设备等。

参考文献:

[1] 计时鸣,黄希欢.工业机器人技术的发展与应用综述[J].机电工程,2015,32(1):1-13.

[2] 樊泽明,余孝军,王鹏博,等.面向工业机器人专业的混合式教学系统[J].高等工程教育研究,2021(6):183-189.

[3] 韩峰涛.工业机器人技术研究与发展综述[J].机器人技术与应用,2021(5):23-26.

[4] 蒋正炎,檀祝平.高职工业机器人技术专业课程教学资源开发路径研究[J].中国职业技术教育,2018(11):47-52.

[5] 张宇廷,王宗彦,赵鹏宇,等.基于C#的桥式起重机数字化设计与云开发[J].机床与液压,2022,50(8):115-120.

[6] 王彬.基于C#的WinForm窗体传值方法探讨[J].电脑知识与技术,2013,9(17):3999-4000,4004.

[7] 姜拓,张剑平.基于C#的数据采集系统上位机软件设计与实现[J].电子测试,2009(9):58-61.

[8] 于同亚.用C#设计基于.NET框架的应用程序——ASP.NET购物网站的设计与实现[J].电脑知识与技术,2009,5(18):4907-4908.

【通联编辑:谢媛媛】

猜你喜欢
二次开发语言
浅谈基于Revit平台的二次开发
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
让语言描写摇曳多姿
多向度交往对语言磨蚀的补正之道
累积动态分析下的同声传译语言压缩
Micaps3.2 版本二次开发入门浅析
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
论语言的“得体”
基于Pro/E二次开发的推土铲参数化模块开发