基于C#的机器人自主编程控制系统

2021-05-06 09:29吴毅文
重型机械 2021年2期
关键词:下位上位编程

吴毅文,刘 博

(宝山钢铁股份有限公司,上海 201900)

0 前言

机器人的研发、应用是衡量国家科技创新和高端制造业水平的重要标准,工业机器人作为《中国制造2025》重要内容之一,是解决日益严峻的劳动力供需矛盾[1],推动从“中国制造”走向“中国智造”的关键设备。

当前,工业机器人主要有示教编程、离线编程和自主编程三类编程技术[2],因为在线示教编程具有易于学习、操作简便等优势,所以目前国内工业机器人大多采用在线示教编程[3]。然而示教编程需要人工参与,机器人的位置精度完全依靠人眼判断,因此对操作人员的技术要求很高。此外,每次编程都需要在生产线停工的状态下进行,因此其过程不仅繁琐而且耗费时间和资源;如果机器人的运动轨迹是复杂的三维轨迹,采用示教编程不但费时费力而且不能保障精度。随着人工智能、图像识别等技术不断涌现,部分研究学者提出机器人的自主编程技术。机器人自主编程技术就是能够依靠传感器(视觉、超声、相机等)获取周围环境的信息,通过内部的模型算法可以识别目标位置,并计算出轨迹路线,同时将轨迹路线处理为机器人的动作指令。自主编程技术具有不停机、无人员干预、适用范围广、工作效率高等诸多优点。因此工业机器人的自主编程取代在线示教编程将成为未来的发展趋势[4,5]。

本文针对ABB工业机器人,基于C#语言开发机器人自主编程的上位机软件,同时搭建了由上位机、下位机和ABB机器人构成的机器人自主编程控制系统,并对该系统进行了仿真和试验验证。

1 机器人自主编程控制系统

本文设计的机器人自主编程控制系统主要分为上位机软件、下位机程序、ABB的IRC5标准柜控制器和IRB6700通用工业机器人三部分组成。该系统运行时,上位机从硬件设备、数据库获取数据;对获取到的数据进行算法处理,得到控制机器人所用的数据,并处理成目标格式,然后上位机通过有线局域网络连接机器人;在上位机获取机器人的控制权限之后,把控制数据和指令发送到下位机程序中,并运行下位机程序,完成工业机器人的自主编程控制。系统整体结构如图1所示。

图1 自主编程控制系统整体结构

上位机软件运行于工控机等终端上,在系统中起主控作用,在VisualStudio2015平台中使用C#语言进行开发。软件可依据获取的数据进行自主编程,并对机器人进行基础控制操作;显示界面简单,软件预留接口,方便针对具体工况二次开发。

下位机中运行机器人的控制指令中,ABB官方仿真软件RobotStudio中用RAPID语言开发。在下位机程序中封装了ABB机器人常用的控制指令,无特殊需求的应用场景下无需对下位机中指令模块进行修改;使用时只需把相应的程序模块导入控制器中即可。

为了验证该软件的功能,使用上位机处理的数据作为系统的数据源,以ABBIRC5标准柜控制器作为下位机,运行下位机程序,控制、驱动ABBIRB6700通用工业机器人,完成整个系统的硬件设备搭建。

2 机器人自主编程控制软件设计

2.1 开发环境

C#语言是基于C语言和.NET平台开发的面向对象的编程语言。使用C#可以提高开发效率[6],同时消除编程中可能导致严重结果的错误;使C/C++开发者可以快速进行网络开发,同时保持功能强大性和使用灵活性。

VisualStudio提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。

该软件开发、试验的计算机平台为64位Windows10,Intel Corei7-8550U CPU@1.80GHz,8GB。

2.2 通信原理

上位机运行在PC或工控机等Windows设备上,上位机通过修改和监控下位机程序变量实现对机器人的编程控制,故上、下位机的通信非常重要。机器人自主编程控制软件在有线局域网中与下位机连接,并以TCP/IP的方式,借助ABB官方提供的二次开发工具包PCSDK实现上、下位机之间数据、指令的通信[7]。通信过程中需要机器人开通PC Interface选项;此时上位机作为服务机,下位机作为客户机,上位机可以同时控制多台下位机,并通过IP地址、机器编码、机器名等字段标识下位机。

根据ABB机器人的下位机编程原理,通过同步上、下位机变量实现对机器人控制。即上位机把获取的数据进行处理,并把自动生成的动作指令保存到上位机设定的变量中;上位机通过软件模块将变量处理成特定格式,上位机在获取机器人控制器的控制权限后,把变量同步到控制器中;下位机程序会依据变量的更新,重新确定目标的坐标位置和机器人的动作指令运行顺序,最终实现对机器人的控制。其流程如图2所示。

图2 上、下位机通信原理示意图

本文所使用的通信数据的种类如表1所示,开发者可根据具体工况进行修改或补充。其中各类通信数据的作用如下所示:①坐标信息变量:定义机器人运行所需的坐标系信息。②过程数据变量:用于下位机根据上位机的指示对程序运行顺序、流程等进行决策。③控制数据变量:定义控制机器人运行的目标轨迹点、运行速度、到达空间、轴配置、外轴控制等。

表1 通信数据

2.3 软件功能设计

通过分析焊接、装配、搬运、喷涂和打磨等应用中机器人的常用控制需求,本文所设计的机器人自主编程控制软件可实现的功能如图3所示。

图3 机器人自主编程控制软件功能结构图

2.3.1 数据获取

若要实现机器人的自主编程和无人化全自动控制,视觉图像数据等的获取是基础[8]。本文以保存在数据库中的图像数据作为数据源。考虑到在实际应用中需要接收外部硬件设备中数据,该软件提供了方便的手动操作输入接口和外部数据库读入接口,方便开发者根据具体的工况进行二次开发。

2.3.2 运动求解

上位机从数据库中加载目标的相关信息之后,利用内嵌模型建立空间坐标系,确定目标的空间位置。由于机器人自主编程生成的动作指令中需要机器人各个关节角数据,因此需要建立运动学方程对机器人的各个独立运动的连杆进行位姿求解,一般运动学方程的建立是通过获取机器人的VRML模型中的关键数据,在模型中需要对每个关节或连杆建立坐标系,在机器人移动或者旋转过程中,通过平移矢量确定节点下一次的空间坐标位置,以此建立机器人的末端姿态矩阵,通过机器人的逆向运动学方程求解每个关节角的值。在获取逆解结果之后,需要进行仿真运动,以检测机器人是否会发生碰撞。

2.3.3 通信

建立上、下位机连接需要在Windows平台上配置PCSDK工具包,并在代码中引用相关的动态库组件。声明Network Scanner类型的变量Scanner,用于实例化并保存扫描到的机器人控制器。在主窗口类中编写针对机器人控制器的扫描方法,当该方法被调用时,上位机将扫描所有可用的下位机并把相应的信息显示到待选框中。

2.3.4 自主编程

上、下位机联合实现自主编程控制的流程如下,首先在上、下位机中分别声明变量,例如在上位机中声明RapidData类型的变量Polishingtool,用于读取下位机中的工具坐标系变量;声明ToolData类型的变量Polishingtool,用于保存上位机根据获取到的数据计算出的工具坐标系变量,该数据最终会同步到下位机程序中。同时在下位机中定义ToolData类型的变量Polishingtool,用于定义工具坐标系[9]。其次建立上、下位机中变量的对应关系,最后进行变量同步,其实质就是上位机远程修改下位机程序。首先上位机需要把变量处理成特定格式,然后需要获取下位机的读写控制权限,最终实现变量同步。

2.3.5 显示

为方便使用,保证使用过程中机器人的运行安全,软件中声明了相应的变量用来反馈机器人的运行状态,并实时在界面显示出来,方便使用者进行观察、判断;为方便调试,上位机还把机器人运行错误时的错误信息获取并显示在界面上。

2.4 软件流程设计

机器人自主编程控制软件的工作需要上、下位机同步运行,相互配合实现机器人的自主编程控制,该软件的程序流程如图4所示。

图4 机器人自主编程控制软件程序流程

3 机器人自主编程系统仿真与试验

3.1 仿真

为确保试验人员和设备的安全,该软件开发完成后在RobotStudio平台进行了软件仿真[10],验证机器人自主编程生成动作指令的合理性。其仿真过程过程如下所示:

(1)在RobotStudio中搭建了IRB_6700_2.60 m机器人本体、IRC5_Singel控制器组成的虚拟机器人系统,如图5所示。

图5 仿真所用的机器人系统

(2)为机器人系统添加616-1PCInterface选项,该软件在应用于实体系统时也需要该选项的支持。

(3)启动虚拟控制器,并把写好的与上位机对应的下位机程序加载到虚拟控制器中。

(4)设置虚拟系统为自动模式,电机设置到上电状态。

(5)为确保安全,把系统程序运行指针PP到main函数并运行。

仿真环境搭建完成后,针对上位机的功能进行了仿真测试和优化,具体内容如下:

(1)上位机读取文件数据的测试。

(2)上位机扫描、连接下位机(此处指虚拟机器人系统)等通信功能的测试。其中,在测试扫描功能时,在环境中同时运行了两个下位机以完成多下位机场景的测试。

(3)上位机处理数据功能的测试。这里主要是通过上位机编译环境设置断点,在调试过程中分析上位机变量的值来判断该功能是否实现。

(4)上、下位机变量同步功能测试。

(5)上位机显示功能测试。

通过仿真后,又针对基于该软件实现的机器人TCP线性运动、TCP圆弧运动、单轴旋转和一键复位等功能进行了仿真测试和优化。仿真结果表明,机器人自主编程控制系统的功能均已实现,满足开展试验的要求。

3.2 上机试验

完成仿真后,根据仿真时的方法和步骤配置下位机(实体机器人系统),并把仿真时所做的工作在实体机器人系统上进行了试验,结果复现了仿真结果,达到了试验预期的控制效果。试验现场设备如图6所示。

图6 试验现场设备图

4 结束语

本文基于C#语言设计了机器人自主编程软件,并搭建了由上位机、下位机和ABB机器人构成的机器人自主编程系统,为了验证机器人自主编程功能的可靠性,在RobotStudio平台进行了模拟仿真,仿真结果显示机器人的自主编程功能可靠。除此之外,该系统在满足基础操作的应用之上,还预留多种接口,方便用于二次开发,具有较强的兼容性。机器人自主编程功能有助于机器人在复杂工业场景下的应用,推进工业机器人智能化发展。

猜你喜欢
下位上位编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”