EtherCAT架构的PC型多机器人控制方案
2020-08-13刘聪俊何岭松
刘聪俊,何岭松
(华中科技大学 机械科学与工程学院,武汉 430074)
0 引言
随着德国工业4.0和《中国制造2025》的提出,机器人的应用逐步从机器人单机、制造单元智能化向多机器人组成的自动化生产线的全面自动化方向发展,其控制系统需要能够根据不同的应用集成不同的设备模块,并可以在不同的软硬件平台下进行移植[1]。因此,面对智能制造,机器人应用不仅要求控制系统具有较好的控制特性,还要有较强的扩展能力。
为了降低成本并提高系统的运行效率,一些制造厂商提出了基于PC的工业控制系统方案,这种控制系统可以很好地兼容PLC应用的同时,还可以提高系统的集成度。其中,德国Beckhoff公司是基于PC的自动化技术的先驱之一,其提出的一种实时以太网PC控制解决方案,将基于PC的控制技术、高速EtherCAT通讯和现代化驱动技术整合在一起,可以很好地满足在智能制造中灵活的工艺需求[2]。目前已经有很多公司采用了基于PC的控制方案,自2010年以来,库卡公司一直采用EtherCAT作为KR C4系列控制系统的系统总线,并以工业PC机作为机器人控制器以确保库卡机器人系统的高性能和开放性[3]。葡萄牙公司索德西亚(Sodecia)搭建了基于EtherCAT技术的生产和装配汽车零部件的全自动生产线,其生产单元由一台工业PC机和21台KUKA机器人组成,充分发挥了PC控制的优势,降低生产线结构冗余的同时还提高了系统的吞吐量。在国内,深圳市软赢科技有限公司(SoftServo)研发了基于EtherCAT总线的创新型多机器人协作控制系统RMX[4]。RMX可以实现在一个PC的多核CPU上对多台机器人进行独立或者同时的高效协同控制,无需多台的机器人硬件控制器,充分发挥出PC控制器的优势。
由于基于EtherCAT的PC控制方案在拓扑结构、时钟同步、数据传输和构建成本等方面均有着很大的优势,其在工业控制领域有着广泛的应用[5]。然而,目前大多数基于EtherCAT的方案均以Beckhoff公司的TwinCAT软件+工业PC机为基础。一方面,TwinCAT软件是商业EtherCAT主站软件,针对不同的应用,用户需要购买对应的软件模块,从而提高了系统的构建成本;另一方面,由于TwinCAT功能模块较多,应用的构建需要进行大量的配置,从而提高了用户的学习成本。
因此,本文提出一种Windows平台下EtherCAT架构的多机器人节点接入方案,其基于开源EtherCAT主站进行功能拓展,可以将任意一台支持标准网卡的PC机作为机器人控制器。该方案给出了从站的硬件结构和主站的软件设计,能够实现对多个机器人节点的快速接入与有效控制,进而实现智能生产线的快速部署,具有成本低,通用型好,控制精度高,便于拓展等优势。
1 基于EtherCAT的多机器人节点接入控制方案
1.1 EtherCAT实时以太网技术
EtherCAT是德国Beckhoff公司提出的一种实时以太网解决方案[6]。与其他以太网相比,在性能方面,EtherCAT主站采用常规的以太网卡,通过修改底层以太网协议,由实时MAC(Media Access Control)接管控制,并采用一主多从的方式,支持多种设备连接拓扑结构,彻底避免了报文冲突,增强了网络传输的带宽,同时其从站采用专门的从站控制芯片,保证主站软件和从站硬件的独立性,使其具有较高的实时性[7]。在成本方面,EtherCAT主站采用标准的以太网卡而无需特殊且昂贵的专用硬件组件,从而降低了成本并提高了操作简单性。
图1 EtherCAT总线组成
EtherCAT是一种一主多从结构的以太网体系,在目前的主流应用中,主站使用带一个数据收发端口的标准以太网控制器,从站使用分别带输入、输出数据收发端口的EtherCAT从控制器(EtherCAT Slave Controller,ESC),主站和从站间以及从站彼此间使用网线相连,以串行的方式进行从站的增减[8]。EtherCAT总线的结构组成如图1所示。
1.2 系统运行过程
本系统由PC机和各个从站设备组成,其中PC机以主站的方式作为机器人控制器,负责系统的决策与控制,从站设备是各个机器人节点的执行器,负责控制机器人各个关节的运动以及获取外部传感器信息,控制器与从站设备以及从站设备间通过EtherCAT总线进行通信。其框架结构如图2所示。
1.3 系统运行过程
为了保证机器人控制的通用性,系统软件实现了G代码解释器,其可以接受标准的G代码,使得弧形、圆形和螺旋的运动均可以像一些基本G代码命令一样受到支持,系统运行过程如图3所示。
在机器人控制应用中,用户通过扫描从站获取到硬件拓扑网络中存在的从站模块。其中,每个扫描到的从站模块按照拓扑顺序进行编号,方便接入层对硬件模块的统一管理。系统完成从站扫描后,会根据用户设置的类别配置信息对从站模块进行分类,生成接入节点信息表,其包含了被控机器人对象相关的从站模块编号与信息,然后将接入节点对象与接入层的接入槽进行连接,完成 “虚绑定”的过程。
机器人节点接入到主站后,便可以通过G代码对机器人进行控制。G代码解释器通过对加载的G代码文件进行解析,解析出机器人的关节运动速度、末端的位姿以及末端工具的工作状态,并将其封装成一个任务执行块加载到任务队列中。
当主站软件的EtherCAT状态机切换到运行态,控制任务执行块会被周期性地从任务队列中读取,然后根据不同的机器人参数进行运动学正反解,最后调用多轴运动插补接口转化为电机脉冲值,并以EtherCAT帧的形式发送到各个从站,进而控制机器人各个关节的运动。
2 EtherCAT主站架构的PC型机器人控制器
2.1 控制器软件框架
图2 系统总体框架
图3 系统运行过程
PC型机器人控制器以EtherCAT主站的形式被耦合到系统。在本系统中,主站软件系统是构建在Windows操作系统之上,同时要有标准网卡的支持,目前一般的个人PC机均可以满足需求。
EtherCAT协议栈是软件实现的基础,本系统采用荷兰科学家开发的SOEM协议栈[9]为基础,并扩展自己定义的机器人控制协议,以此为基础实现对机器人的控制[10]。同时,为了方便对系统进行功能拓展,主站软件以模块化、插件化的思想进行设计,将EtherCAT协议栈以及机器人运动模型编译成动态链接库被系统动态调用。EtherCAT主站架构下的机器人控制器软件框架如图4所示。
软件架构采用4层传输模型,分为用户层、控制层、接入层和硬件层。其中用户层、控制层和接入层均在PC机中实现,硬件层由各个从站模块组成,层与层之间采用低耦合的方式进行连接。
其中,用户层主要包括机器人控制的配置信息(包含机器人DH模型参数和关节限制参数等信息)以及自定义拓展功能,自定义拓展功能以模块的形式被相关应用接口调用。
控制层是整个机器人控制系统的关键部分,其包含了多个机器人控制任务和EtherCAT协议栈。机器人控制任务是对机器人关节运动的抽象接口,负责针对不同机器人的参数规划路径,进而控制关节运动;EtherCAT协议栈是对EtherCAT协议的封装,负责与各个从站模块进行通信。
接入层是对接入机器人硬件节点的抽象集合,主要负责控制层和硬件层的节点关系绑定与通信。该层提供了多个接入节点的槽位,在系统中,每个机器人可以看成是一个抽象节点,节点与槽位之间通过“虚绑定”的方式连接。同时,每个抽象节点保存了与该机器人控制相关的监测单元、I/O单元和驱动控制单元等从站信息,这些信息定义为接入节点信息。在机器人控制过程中,由于接入层与控制层之间通过“虚绑定”的关系进行通信,所以接入节点信息是动态更新的,信息的更新会受到用户的配置和从站的扫描过程而发生变化,这样用户可以很容易地将某个机器人节点从系统中删除或者通过配置信息将其控制模型重定向到新的机器人节点中,从而实现主站与多个机器人控制的软连接。
硬件层是提供控制机器人关节运动的驱动,主要是指各个从站模块。从站模块按功能主要分为监测单元、IO单元和驱动控制单元,主站和从站间,以及从站彼此间使用网线相连,便于以串行的方式进行从站的递减。
2.2 机器人节点接入过程
为了实现系统与机器人硬件的低耦合连接,系统在硬件层和控制层之间加入了接入层,并将机器人相关的从站模块抽象成一个节点,节点的信息配置通过从站的扫描过程进行动态更新与加载。
图4 系统运行过程
在从站扫描过程中,系统会首先生成从站地址映射表,其表示实际从站的I/O地址到计算机内存的映射,然后再根据扫描到的从站信息与用户配置信息生成接入节点信息表,完成被控对象与主站的“虚绑定”。在机器人控制过程中,主站软件通过访问机器人节点链表,获取到传感器等输入信息然后控制各个关节运动到目标位置。机器人节点接入的过程如图5所示。
图5 机器人节点接入过程
由于机器人节点是一系列从站模块的集合,因此对具有相同硬件结构的被控对象,可以在不更改硬件结构的情况下,通过将其接入节点重定向到新的节点槽位上,进而实现应用的快速切换。假设系统需要根据不同的应用在三自由度串联机器人和三自由度并联机器人之间切换,这两种机器人的电机参数以及相关外围设备参数兼容,系统只需要将相应机器人节点接入到新的机器人运动学模型即可完成应用的切换。
2.3 机器人指令解析
G代码是数控程序中的指令,通过解析G代码中的运动指令,可以实现数控机床的快速定位、直线插补以及圆弧插补等功能。为了实现机器人控制的通用性,系统集成了G代码指令解释器,可以通过G代码控制每个机器人的运动,保证了机床加工与机器人运动指令的一致性。
考虑在不同的机床使用的数控代码具有差异,系统集成的解释器仅仅实现了最基本的特性代码,用户可以根据应用需求,通过继承的方式添加自定义指令。从G代码的标识符来进行分类,其特性代码如下:
1)G功能代码;G00(快速移动)、G01(直线插补)等;
2)M辅助加工代码:M02(主轴顺时针转动)、M03(主轴逆时针转动)等;
3)加工参数:F(进给速度)、S(转速)等。
由于G代码在特性上均由数字和字母组成,字母表示其后面数字的类别,因此可以通过对特性字母进行解析并分类,生成语义信息树,然后再根据特征字母查询信息树,获取特征字母所对应的数字信息,完成代码解析。G代码解析流程如图6所示,其中G代码可以通过指令输入,也可以从G代码文件中获取。
2.4 机器人运动学模型
为了实现对机器人的精确控制,建立机器人的运动学模型是重要前提。机器人运动学求解包括正向求解和逆向求解两部分,前者是已知关节参数求取末端位姿的过程,后者是已知末端位姿求取关节参数的过程。
图6 G代码解析流程
在本系统的机器人应用中,采用改进DH方法[11]建立机器人连杆坐标系,得到连杆坐标系{i}相对于连杆坐标系{i-1}的变换i-1iT:
其中,ai-1表示连杆长度,ai-1表示连接的转角,di表示相邻连杆的偏移距离,θi表示相邻连杆长度方向的夹角。
在本系统中,机器人的多轴插补过程均在主站软件中完成,当主站软件的EtherCAT状态机切换到运行状态后,便会进入到分布式时钟同步模式与从站建立周期性过程数据通信,通常按1个插补周期的时间间隔发送EtherCAT帧。
系统获取到选定的机器人的运动学模型后,便可以根据其变换函数计算出当前机器人各个关节的参数,然后根据速度、硬件限位等信息得到各个关节电机的脉冲量,最后将其封装成EtherCAT帧发送到相应的从站中,进而控制机器人关节运动到达指定的位姿。
2.5 多机器人运动控制
为了实现对多个机器人节点的控制,系统采用信息流的方式对多个接入的机器人节点进行管理,这种方式使得接入的机器人节点与主站槽位是低耦合的,仅仅更改任务执行块的流的方向便可以实现节点信息流的重定向,其运动控制流程如图7所示。
图7 机器人运动控制流程
在主站与机器人连接过程中,主站会根据扫描到的机器人节点个数扩展出相同个数的接入节点槽位,每个槽位会根据用户的设定对应一种机器人运动学模型,在系统中定义为槽位模型。这种槽位模型以动态链接库的形式被系统加载,用户可以通过继承槽位模型的方式很容易地扩展出新的模型,从而实现对多种类型的机器人控制。
在机器人运动过程中,当系统检测到任务队列中存在任务,会对任务执行块进行信息解析,获取机器人节点编号、目标位姿等控制信息,然后通知相应机器人节点对应的主站槽位进行控制事件响应。主站的槽位会根据控制信息以及相应的槽位模型,计算出机器人各个关节电机的脉冲量,并以流的形式在槽位消息队列中循环。当新的插补周期来临的时候,系统从信息流中获取数据,并通过查询节点信息表和从站映射表得到机器人节点的实际I/O地址映射,进而更新这些地址的值,将控制信息发送到指定的从站模块中。
3 EtherCAT从站架构的嵌入式机器人执行器
3.1 执行器模块设计
机器人执行器主要负责主站与硬件的交互,包含监测单元、I/O单元和驱动控制单元,用于机器人关节电机的控制、I/O控制和相关传感器信息的采集。
在EtherCAT架构下,控制系统一般采用“一主多从”的工作模式,机器人的执行器以从站模块的方式被耦合到系统中。因此机器人执行器的设计主要以EtherCAT从站模块设计为主,其可以分为从站硬件设计和嵌入式软件设计。
从站硬件设计采用了模块化的设计思想,系统实现了以STM32F407为中心的微处理器模块和以LAN9252为中心的EtherCAT通信模块,两个模块采用SPI接口进行通信。在功能上,STM32通过PWM控制电机驱动机器人关节运动,I/O接口用于基本的输入输出功能,A/D通道可以连接传感器设备用于机器人的感知,USB主要用于开发过程中的调试。
从站软件设计主要围绕微处理器的软件设计展开。为了使软件设计更为清晰,从站设计采用层次化的设计方案,上层软件通过抽象函数访问下层软件资源,并通过接口向更上层软件提供服务。从站软件工作流程如图8所示。
图8 从站软件工作流程
硬件抽象层是对硬件设备的抽象,为上层应用提供硬件操作接口。在本系统中,主要是对普通I/O、PWM、A/D、D/A以及中断等外设的抽象。
EtherCAT协议栈是对EtherCAT协议解析的封装,其通过操作硬件抽象层获取服务。其主要包含三部分:EtherCAT状态机、SDO数据通信和PDO数据通信。
用户应用程序层是对应用的具体实现,其可以通过调用EtherCAT协议完成特定的功能,如EtherCAT周期数据处理,也可以直接调用硬件操作接口,处理硬件设备的消息。针对机器人控制应用,本系统实现了电机控制模块、数据采集模块和I/O模块等三种应用模块,主要负责对机器人关节电机的控制和相关传感器信号的采集。
3.2 多从站模块实时通讯
在本系统中,系统的通信是由主站发起并通过PDO通信控制从站设备的工作状态,继而完成系统任务,其中,网络数据的处理均在从站协议控制器内部由硬件完成。
在过程数据通信过程中,从站模块可以直接接受来自主站的网络数据报文,还能够从网络数据报文中提取主站设备发送给各个从站模块的控制信息,并插入待处理从站模块采集到的数据,然后在当前的从站模块完成信息交换后再将这个数据报文传输到下一个从站设备中并重复上一个从站模块的操作,充分利用以太网全双工处理网络数据的通讯特点。由于过程数据会在所有的从站设备中进行数据循环,因此主站与从站间、多个从站模块间的通讯变得非常容易,通过在循环的过程数据报文中插入或提取相关的信息子报文,便可以实现多个模块间的实时通讯,其交互的过程如图9所示。
图9 多从站模块实时通讯
4 EtherCAT架构的PC型多机器人控制系统应用案例
4.1 系统平台搭建
本系统的主站软件运行在Windows系统中,其软件界面如图10所示。软件界面包含了基本的UI交互、EtherCAT通信管理、系统模块管理以及机器人节点参数设置等信息。
图10 系统主站界面
系统基本操作流程为:
1)根据实际机器人参数,进行相关配置;
2)扫描从站,完成机器人节点与主站的节点接入;
3)输入机器人控制指令,将机器人运动到指定初始位置;
4)加载自定义G代码,系统会解析G代码信息从而控制机器人按照指定轨迹运动。
4.2 系统控制性能测试
为了验证本系统对机器人控制的准确性,这里采用如图11(a)所示的机器人进行测试。从图中可以看出,该机器人具有4个自由度,属于串联关节型机器人,其DH模型坐标图如图11(b)所示。
图11 串联关节机器人
为了测试该控制系统的控制性能,这里对上述的串联机器人进行写字实验,以“ROBOT”为例,其运行结果如图12所示。
图12 机器人写字实验
从图12可以看出,该控制系统能够控制机器人完成写字等控制任务,说明主站软件可以准确地解析出加载的G代码指令,并可以有效地行解析的控制指令,且控制具有较高的精确度。
4.3 系统扩展性能测试
当然,大多数控制系统往往是由多个机器人组成,这就要求系统不仅需要具有较好的控制特性,还要有较强的扩展能力。为了验证系统的扩展性能,以三个上述的串联关节型机器人为例,在系统中接入三个机器人节点,并通过扫描过程完成三个机器人节点与主站控制器的“虚绑定”,然后加载测试G代码,其运行过程如图13所示。
从图13可以看出,该控制系统能够实现对多个机器人节点的接入,并能够控制多个机器人运动到目标位置,具有一定的扩展能力。
图13 多机器人节点控制实验
5 结语
本文提出一种Windows平台下EtherCAT架构的多机器人节点接入方案,其可以将任意一台支持标准网卡的PC机作为机器人控制器,具有成本低、通用性好、控制精度高和便于拓展的优势。该方案能够充分发挥EtherCAT良好的可扩展性能,在机器人控制系统中可以快速地接入多个从站,实现对多个机器人的分布式控制,而无需花费大量的时间提升并配置系统的软硬件资源。这种方案在智能制造、机器人智能化等场合中,具有开阔的应用前景。