基于EtherCAT总线的工业机器人控制系统设计*

2017-11-07 01:50王力宇曹其新
组合机床与自动化加工技术 2017年10期
关键词:主站驱动器内核

王力宇,曹其新,董 忠

(上海交通大学 机械系统与振动国家重点实验室,上海 200240)

1001-2265(2017)10-0074-03

10.13462/j.cnki.mmtamt.2017.10.018

2016-11-30;

2017-01-09

国家自然科学基金资助项目(61673261)

王力宇(1991—),男,江苏苏州人,上海交通大学硕士研究生,研究方向为机器人运动控制,(E-mail)wangliyu@sjtu.edu.cn。

基于EtherCAT总线的工业机器人控制系统设计*

王力宇,曹其新,董 忠

(上海交通大学 机械系统与振动国家重点实验室,上海 200240)

为了简化工业机器人控制系统结构,降低工业机器人运动控制器硬件成本,提出了一种基于x86平台和EtherCAT总线的实时工业机器人运动控制器设计。借助Windows可扩展内核的特性,使用RTX64作为控制系统的实时内核,并使用Kingstar Motion作为EtherCAT主站,搭建了一个工业机器人的实时控制系统。使用共享内存实现实时系统和Windows内核的数据交换,实现了在Windows内核中对实时内核程序的指令下达和状态查看,在RTX内核中使用多线程方式实现了对驱动器多种不同类型数据的处理。实验表明,该控制系统具有良好的实时响应性能,能够满足工业机器人的控制要求。

EtherCAT;机器人控制系统;实时系统

0 引言

控制器是工业机器人的核心部件之一。在工业机器人发展早期,由于通用处理器性能较差,通常在使用通用处理器+运动控制卡的架构,在通用处理器上实现HMI功能,在运动控制卡上实现多轴插补和运动控制功能[1]。而随着通用处理器性能的加强,尤其是多核CPU的广泛应用,现在使用普通工控PC也可以实现很好的实时性[2],尤其是随着EtherCAT总线的使用和大量支持EtherCAT协议的驱动器的推出,使用工控机+普通网线即可实现对机器人电机的控制,省略了以往控制系统中的PCI卡和数/模转化模块,大大简化了系统的结构,也有助于提高系统的稳定性[3]。

EtherCAT是最初由德国Beckhoff公司研发的一款实时工业以太网技术。它使用了“飞速传输”(Processing on the Fly)技术[4]来解决工业以太网中数据帧较短,数据频率较高导致的带宽利用率低的问题。它具有传输速率快,传输延时小,系统结构简单清晰等特点。

EtherCAT控制系统由主站和从站两部分组成,EtherCAT主站可以使用普通工控机和以太网卡,从站使用专门的芯片实现数据处理。为了保证主站响应速度,EtherCAT主站通常运行在实时内核之上。

本文主要介绍基于RTX64[6]和Kingstar Motion[7]EtherCAT主站的实时系统搭建。在同一台工控机上实现了HMI程序和实时控制程序,降低了硬件成本。同时使用多线程方式处理实时程序,提高实时系统的响应性能。

1 控制系统结构

我们的控制对象为一台四轴码垛机器人,它包含四个SANMOTION三相伺服电机及其配套的SANMOTION Advanced R系列驱动器。我们使用一台处理器为Intel Celeron J1900的工控机作为其运动控制器。由于使用了EtherCAT总线控制,因此控制器与各驱动器之间可以直接通过网线连接。其硬件结构如图1所示。

图1 控制系统硬件结构

我们使用IntervalZero公司的Kingstar Motion作为我们的EtherCAT主站,该EtherCAT主站运行于该公司的RTX64实时系统中。RTX64使用内核扩展技术在硬件抽象层实现对Windows内核的扩展,从而可以使实时系统和Windows系统运行于同一台工控机上[8]。

控制系统软件部分由HMI(Human Machine Interface,人机接口)和实时控制程序两部分组成, HMI运行于Windows 7 Embedded Standard系统中,实时控制程序运行于RTX64内核中,程序结构如图2所示。

图2 控制系统软件结构

通过内核扩展技术,对于多核处理器,我们可以让RTX64程序和Windows程序分别运行在不同的CPU核心上,两者之间互不影响。我们使用的Celeron J1900共有4个CPU核心,我们将其中两个核心分配给Windows,两个核心分配给RTX64,使用共享内存来交换数据。

我们在共享空间中分配了控制变量和状态变量两块区域,HMI程序将控制指令写入到控制变量内存空间,然后实时控制程序根据这些控制指令进行相应的控制。同时,实时控制程序将当前的各轴运动状态写入到状态变内存空间,HMI程序可以通过读取该状态变量实现对当前机器人运动状态的监控。

图3 共享内存结构

2 系统控制流程

2.1 实时系统控制流程

我们使用的驱动器使用CoE(CANopen over EtherCAT)的通讯指令格式。CoE是对EtherCAT总线命令的一层封装,它以类似CANopen的方式通过EtherCAT总线发送和接收PDO(Process Data Object,过程数据对象)和SDO(Service Data Object,服务数据对象)数据[4]。因此,在控制系统中,针对这两种数据类型的不同特点,我们需要使用不同的数据处理方式。

在实时系统中,我们建立了三个线程,一个主线程,一个SDO服务程序和一个PDO定时中断程序,如图4所示。除此之外,EtherCAT主站还会建立一个EtherCAT通讯进程,它运行于RTX64的实时TCP/IP栈上。

图4 实时系统程序执行流程

主线程首先配置、启动EtherCAT,从共享内存空间中读入HMI设置的参数并同时反馈状态变量到HMI程序显示,同时它也是另外两个RTX64线程的入口程序。

SDO数据是那些需要给驱动器发送读取指令它才返回值的数据,通常,SDO数据读取比较慢。并且SDO查询指令发送后需要等待驱动器返回,而等待的时间是不确定的,所以SDO查询指令不能严格保证实时性。因此,我们创建了一个循环线程来处理SDO数据,该线程使用轮询的方式不停地查询SDO数据状态。为了防止SDO查询数据占据太多EtherCAT总线带宽,我们在每次循环最后等待10ms。对于我们采用的驱动器,驱动器的IO值需要使用SDO方式来读取和写入,驱动器的一些参数,例如驱动器的PID参数等,也可以使用SDO方式配置。另外,也可以使用SDO指令查看驱动器的状态,如是否已完成使能,是否有错误,驱动器错误代号等。

PDO数据是驱动器定时会向上位机发送以及上位机需要定时向驱动器发送的数据。它包含驱动器反馈的电机编码器信息,电机力矩值以及上位机向驱动器发送的输出力矩值等信息。PDO数据具有很强的实时性和周期性,因此,我们创建了一个定时中断线程来处理PDO数据。除了获取电机的位置和力矩等PDO数据外,该线程同时会根据目标位置以及期望估计进行运动插补,并根据当前驱动器反馈的位置和力矩信息,使用PID算法计算出需要给驱动器发送的力矩值,下发给驱动器。

EtherCAT主站通讯进程通过和实时TCP/IP栈交互,实现对网络的实时控制。我们的PDO和SDO程序的指令都是通过该进程与驱动器进行数据交换的。

在该系统中,我们给RTX64内核分配了两个CPU核心,因此我们可以将不同的线程分配给不同的CPU来执行。由于RTX64不支持根据CPU负载进行自动CPU调度,因此我们需要手动为各线程分配CPU并调整各线程的优先级。

在我们的程序中,运动插补、PID计算、驱动器PDO数据读写都是由PDO定时中断线程来处理,因此该线程计算量最大;主线程在初始化EtherCAT主站之后,主要负责与HMI线程之间的数据交换,因此工作量较小;SDO线程主要负责读写SDO数据,因此工作量也较小,但是SDO读写指令不能保证实时性;EtherCAT通讯进程为后台服务进程,我们的SDO线程和PDO线程的正常执行都需要依赖该进程的数据。

我们将PDO线程和主线程放在同一个CPU上,虽然在程序中这两个线程运算量较大,但由于这两个线程的每个指令都能保证确定的执行时间,具有很好的实时性,因此我们将这两个线程放在同一个CPU上执行。SDO线程和EtherCAT主站通讯进程放在另一个CPU上,EtherCAT主站通讯进程的优先级高于SDO线程优先级,因此SDO服务线程能被EtherCAT主站通讯线程中断。主线程、PDO线程和SDO线程之间的数据使用互斥锁来防止数据冲突。在EtherCAT主站初始化完成之后,我们设置主程序的更新周期设置为10ms,PDO定时中断线程的更新周期设置成1ms,SDO线程在每次读写完之后的等待时间为10ms。因为伺服运算由PDO线程完成,因此机器人的伺服周期为1ms,机器人的指令更新周期为10ms。

2.2 HMI程序控制流程

HMI程序运行于Windows内核中,用户通过该程序设置EtherCAT参数,并给下位机发送运动指令,一些上层的轨迹规划等任务也在Windows内核程序中完成,然后发送到RTX64程序中进行进一步的插补和控制。该程序同时也显示一些机器人的当前状态供操作人员查看。其程序框图如图5所示。

图5 HMI程序执行流程

3 控制系统性能测试

对于搭建的实时系统,我们测试了它的任务切换延时和定时中断响应抖动[9],以及EtherCAT主站操作延时。

任务切换延时是指我们在同一CPU上运行多任务时,当任务A完成后,系统切换到任务B,该切换过程耗费的时间。我们通过创建任务A和任务B两个任务,采集任务A结束的时间和任务B开始的时间,计算这之间的时间差,即为任务切换延时。

定时中断响应抖动是指定时中断的周期误差。我们创建一个周期为1ms的定时中断,获取每次进入中断的时间,则两次进入中断的时间差即为实际定时中断执行时间,该时间与设定周期时间1ms之间的差值即为定时中断响应抖动。

而EtherCAT主站操作延时为数据从EtherCAT主站给出发送数据包指令到实际发出数据包之间的时间差。我们首先记录EtherCAT主站发送数据包的时间,然后使用Wiresharp截获EtherCAT主站发出的数据包,查看该数据包的时间戳,比较数据发出时间和截获时间,即为EtherCAT主站操作延时。

我们对以上三个主要参数均进行了2组,每组1000次的测试,测试结果如表 1所示。

表1 系统实时性测试结果

通过该测试结果可以看到该系统的这三个实时性参数的量级都是微秒级的,考虑到工业机器人的控制周期通常在1ms左右,因此这些延时完全可以满足工业机器人的控制要求。

4 结论

本文提出了一款基于x86工控机和EtherCAT总线的工业机器人运动控制器,得益于x86处理器的通用性和强大性能,以及EtherCAT总线的良好的实时性能,我们可以将HMI和实时控制系统放在同一台工控机上,简化了控制系统同时降低成本。测试表明,该系统具有良好的实时性,可以满足一般工业机器人的控制需求。

[1] 范永,谭民.机器人控制器的现状及展望[J]. 机器人,1999,21(1):75-78.

[2] 陈光明. 基于Windows/RTX的码垛机器人控制系统软件设计[D].上海:上海交通大学,2010.

[3] Fiebiger B, Munz H. KUKA KR C4 robot controller uses EtherCAT[J]. PC Control, 2014(1): 31-33.

[4] Beckhoff, G. EtherCAT: The Ethernet Fieldbus [Z]. EtherCAT Technology Group, 2006.

[5] 中华人民共和国国家质量监督检验检疫总局. GB/T 31230-2014 工业以太网现场总线EtherCAT [S]. 北京:中国标准出版社,2015.

[6] IntervalZero Inc. Overview RTOS: RTX64 and RTX[EB/OL]. https://www.intervalzero.com/products/rtx64-rtx/overview/,2016-11-29.

[7] Kingstar Inc. Soft motion control[EB/OL]. http://kingstar.com/products/soft-motion/,2016-11-29.

[8] 时未东,杜承烈,宋翠叶. Windows 实时扩展技术研究[J]. 计算机工程,2011,37(23):63-65,68.

[9] 张晓龙. 实时系统性能测试方法的研究及应用[D].北京:中国科学院大学,2014.

[10] Cena G, Bertolotti I C, Scanzio S, et al. Evaluation of EtherCAT distributed clock performance[J]. IEEE Transactions on Industrial Informatics, 2012, 8(1): 20-29.

TheDesignofaReal-TimeIndustryRobotControllerBasedonEtherCAT

WANG Li-yu, CAO Qi-xin, DONG Zhong

(State key Laboratory of Mechanical System and Vibration, Shanghai Jiao Tong University, Shanghai 200240, China)

In order to simplify the structure of industrial robot control systems and cut down the hardware cost of the robot controller, the design of a real-time industrial robot controller is proposed based on x86 platform and EtherCAT. Thanks to the extensible kernel of Windows, the RTX64 real-time kernel is used as the extended kernel of the control system, and Kingstar Motion is then installed on the real time kernel as the EtherCAT master. The robot control system is then established on the system. It uses shared memory to exchange data with Windows, which enables the control and status feedback in the Windows kernel. Different types of data is dealt with in the RTX kernel using a multi-thread technology. Experiments show that this control system has a good real time response quality, which satisfies the requirement of the industrial robot.

EtherCAT; robot controller; real-time systems

TH165;TG659

A

(编辑李秀敏)

猜你喜欢
主站驱动器内核
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
气动网络多腔室弯曲软体驱动器结构优化
活化非遗文化 承启设计内核
藏起驱动器号确保数据安全
基于S7-1200 PLC的DP总线通信技术在马里古伊那水电站泄洪冲沙孔门机上的应用
微软发布新Edge浏览器预览版下载换装Chrome内核
空间大载荷石蜡驱动器研制
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统