开源IgH EtherCAT主站在LinuxCNC开放式数控系统中的应用研究**
2018-07-20张克华马佳航田林晓朱苗苗
张克华 马佳航 田林晓 朱苗苗
(浙江师范大学工学院,浙江金华321014)
计算机数字控制技术(computer numerical control,CNC)是一种能够将具有控制编码或其他符号指令规定的程序有逻辑地处理,并在对其译码后控制自动运行的控制技术。传统的数控系统大多采用专用独立控制器[1]。随着工业自动化的发展,以工业PC机为基础的低成本开放式数控系统发展迅猛。相比有独立控制器的传统CNC系统,采用带有实时操作系统的PC机作为上位机的开放式CNC系统架构由于不需要专用硬件,可以有效地降低成本并且具备较好的灵活性[2]。开放式数控系统中可应用多种通信总线架构,其中 EtherCAT[3-5](ethernet control automation technology)以实时以太网标准,适用性广,具备高性能、低成本、应用简易等优点,可以有效的降低成本和应用难度,在现代控制领域中得到了广泛的应用。目前主要应用的EtherCAT框架有:德国倍福的TwinCAT主站,德国IgH公司的在Linux下的EtherCAT主站协议栈IgH EtherCAT Master for Linux以及德国Acontis公司的基于ARM9架构的 Linux嵌入式主站EC-Master等,其中IgH EtherCAT Master for Linux是一个开源的框架,已经被集成在Linux内核上。
开源数控系统 LinuxCNC,是一款构建于实时Linux操作系统之上的开源的纯软件数控系统,用于数控系统和机器人系统控制,可以控制多达9轴系统,设计便捷、灵活、易扩展[3]。用户可以根据特定的数控系统应用要求,通过定制相应的配置文件、HAL模块连接以及操作界面来完成控制系统的开发。其主要由两大部分组成:用户空间和RTAI(realtime application interface)内核空间[6]。用户空间模块是普通的Linux程序且不具备实时性,含有为应用程序提供人机界面(human machine interface,HMI)的模块,RTAI内核空间模块是实时运行的,其内核架构不允许低优先级的进程抢占[7]。RTAI内核空间中还包括含有轨迹生成和插值算法的运动控制实时模块MOTMOD[8]和用来连接RTAI的硬件抽象层(HAL)模块。使用该软件CNC系统,可以与市售的伺服驱动器搭配使用且广泛支持的标准化工业以太网,从而实现用工业标准的以太网现场总线进行通信来提高灵活性并降低成本[9]。即通过采用开源IgH EtherCAT master集成在PC机中搭建EtherCAT主站,采用伺服驱动器搭建EtherCAT从站的方式,来实现PC机与伺服驱动器的通讯[10-11]。
数控系统的实时性是衡量控制系统优劣的一项关键的指标,主要体现在数控系统对数据进行快速而准确的处理并及时作出响应。在实际工况中,根据控制任务的不同,将实时性划分为对应响应时间为100 ms及以上,5~10 ms,小于1 ms,以及100节点下的伺服运动控制小于1 ms的4个级别。其中CNC的实时性要求在第三级和第四级,也就是响应时间在1 ms及以下[12-13]。CNC需要解决实时性问题是如何同步地向伺服驱动器发送位置指令。理想情况下,所有伺服驱动器都应在同一时间接收并执行各自的位置指令。此外,连续位置命令之间的周期应该始终是常量。
本文所构建的CNC系统采用PC机实时操作系统(real time operating system,RTOS)安装开源的IgH EtherCAT主站,EtherCAT伺服驱动器作为从站。该数控系统为纯软件解决方案无需任何扩展卡或外部控制器,灵活性高,可以通过扩展PC实现的数控内核和HMI来增加新功能,并且易于实施的特点。本文采用Linux RTAI作为CNC控制器的实时操作系统,通过测试其抖动和延迟,测试满足了数控机床对控制系统的1 ms及以下的实时性要求。拟提供开源、低成本和扩展性好的满足工业上实时要求的数控系统。
1 多轴数控实时性测试系统的构成
本文整合EtherCAT主站于LinuxCNC中的多轴纯软件数控系统。系统是基于EtherCAT搭建的,以作为主站的工控机为第一节点,通过网线将作为从站的伺服驱动器依次相连,形成一个完整的EtherCAT主从站现场总线系统。该数控系统的基本构成,如图1所示,整个系统的硬件主要包括作为主站的工控电脑(gk1037u/i5-3317u),作为从站的交流伺服驱动器(英威腾SV-DA200),与伺服驱动器配套的电动机等。系统的软件部分主要是LinuxCNC软件和IgH EtherCAT Master for Linux框架。通过修改Linux RTAI中的HAL模块实现LinuxCNC和EtherCAT的通信。作为从站的伺服驱动器,在接收到主站发来的EtherCAT帧报文后,可以控制电动机和其他辅助设备运转。
2 LinuxCNC环境中EtherCAT主站搭建
EtherCAT只定义了标准以太网结构的七层 OSI模型中的物理层、数据链路层和应用层这三层协议[9]。EtherCAT工作采用主从模式,一个主站可以控制多个从站。根据伺服驱动器技术指南手册,将所提出的系统中应用的伺服驱动器的时间同步周期设置为4 ms[14]。开始通信时,主站将 EtherCAT帧发送信号给第一个从站,当第一个从站收到主站发送的EtherCAT帧后,第一个从站下载需要的数据并插入需要传送的数据后传送给下一个从站,一直循环至最后一个从站完成上述操作后将数据包返回主站,如图2所示。
EtherCAT主站系统是模块化构成的,主要分为三大模块:设备驱动模块、主站模块和应用层模块。其中设备驱动模块能够进行以太网卡驱动的配置,并通过以太网口使得主站模块可以收发到EtherCAT帧。本文中主站模块是指集成在Linux内核中的 IgH EtherCAT Master主站内核模块,通常包含了一个或者是多个的EtherCAT主站对象。设备以及应用层接口一般也集成在主站模块中。应用层模块是开发者编写的能够控制主站模块的关键模块。程序在调用应用层接口后,才能去控制主站模块。
EtherCAT从站系统是安装在从站轴伺服驱动器中的。本文使用英威腾EtherCAT伺服驱动器(型号DA200),其内部的EtherCAT网络模型如图3所示。EtherCAT(CoE)网络参考模型包括两部分:数据链路层和应用层。数据链路层主要负责 EtherCAT通信协议,应用层嵌入了 CANopen drive Profile(DS402)通信规约。CoE中的对象字典包括了参数、应用数据以及PDO映射配置信息。过程数据对象(PDO)由对象字典中能够进行PDO映射的对象构成,PDO映射定义了PDO数据中的内容。由于PDO数据是周期性进行读写的,所以不需要查找对象字典;而邮箱通信(SDO)的通信是非周期性的,在读写时需要查找对象字典[4]。
EtherCAT是主从式的结构,由于采用工业PC机作为控制主站,伺服驱动器作为控制从站,首先需要完成EtherCAT主从站的搭建。下载安装开源的IgH EtherCAT Master for Linux作为CNC系统的EtherCAT框架;在工控机中安装EtherCAT主站代码;测试EtherCAT的运行情况。如图4所示,EtherCAT成功安装并运行良好。
通过EtherCAT现场总线系统,实现了LinuxCNC和伺服驱动器之间的通讯,具体通讯方式,如图5所示。在用户将 G代码输入到 LinuxCNC中后,LinuxCNC中的RS-274/NGC解释器会将G代码解释成数控系统能够识别的数据块;这些数据块会通过LinuxCNC中的硬件抽象层(HAL)传递到EtherCAT主站系统;之后EtherCAT主站将数据块以EtherCAT帧的形式发送至EtherCAT从站并最终驱动执行元件。
3 EtherCAT通信的试验平台搭建与测试
为测试集成EtherCAT现场总线的开源数控系统的实时性能,搭建了试验平台,如图6所示。测试工具是采用网络截包软件Wireshark进行实时性抓包测试,作为EtherCAT现场总线系统主站的工控机与作为EtherCAT从站系统的轴伺服驱动器以及安装有Wire-Shark软件的PC机通过工业交互机连接在一起。利用WireShark截取EtherCAT主从站系统通讯过程中交换的实时 EtherCAT帧报文的方式,统计通过EtherCAT现场总线系统进行通讯的数据信息,然后据此计算该EtherCAT通讯过程的抖动和延时时间,最后与数控系统的实时性要求进行比较,判断EtherCAT通讯系统的实时性是否符合要求。
EtherCAT运行测试的G代码所需总的运行时间为200.260 9 s,如图7所示,主站发送报文的时间间隔(主站地址00:b4:0d:1e:00:66发送的相邻报文的统计时间之差,如主站地址发送的No.2的报文统计时间为0.003 261 s,No.4则为0.007 260 s,两者时间之差为0.003 999 s,也就是这两个报文的发送时间间隔为 3 999 μs。平均为 4 ms,最大时间为 4 041 μs,最小为3 957 μs,波动在±1.5%以内,如图8所示。在相对时间增量一栏中可以看出从站接收报文所需的时间,也就是报文的传输时间。每一个从站报文(地址为02:b4:0d:1e:00:66)相对主站发出的时间增量即为报文的传输时间,为了消除误差,取每5个报文的平均传输时间计算,最大 779 μs,最小 0.2 μs。整体平均传输时间为 47.7 μs。
根据所截得的EtherCAT帧在WireShark中显示的IO图中也可以看出,如图9所示,在X轴表示的截包时间刻度间隔为0.001 s,Y轴表示截包个数时,报文主站运行平稳,具有较高的可靠性。通过计算发现报文从站接收报文的整体平均传输时间约为47.7 μs,其中99.7%的EtherCAT帧传输时间在0~3 μs,0.3%以下的传输时间在700~800 μs。通过统计计算,所得的通讯时间测试结果符合EtherCAT的微秒(μs)级刷新时间。表明EtherCAT通讯总线系统已经很好的整合进了LinuxCNC中。与数控系统的实时性要求(小于1 ms)相比,测试结果为微秒级别符合数控系统要求,这表明本文提出的基于Linux RTAI和IgH EtherCAT主站的开放式数控系统具备良好的实时性以及控制性能。
4 结语
本文基于PC的集成EtherCAT于LinuxCNC的开放式数控系统。该CNC系统拥有如下特点:(1)开源的Linux RTAI系统和LinuxCNC实现了纯软件CNC系统,用户可以自行修改、复制以及再分发该数控系统。(2)使用PC机为上位机,无需专用硬件,降低了硬件成本。同时,EtherCAT现场总线具有微秒(μs)级刷新时间,而且可以搭载不同厂家生产的EtherCAT伺服驱动器配合使用提高通用性和降低设备成本。(3)系统功能灵活。纯软件性质使得该数控系统能够充分地利用PC机具备的大量计算资源实现数控系统各功能,并且可以按需求编写软件模块,轻松地添加系统新功能。同时,用户可通过修改配置文件参数实现驱动不同数目的轴伺服驱动器和电动机,使得该数控系统的灵活性极大地增强。通过该数控系统集成并进行了实时性测试,试验结果表明:应用EtherCAT现场总线,系统数据平均传输时间约为47.7 μs,说明EtherCAT主从站系统较好的整合在了该数控系统中,该数控系统的实时响应时间在微秒级别,也就满足数控系统实时性要求的响应时间在1 ms级及以下,所以集成IgH EtherCAT主站与LinuxCNC纯软件数控系统可以很好地满足工业机器人与通用数控机床等的要求。