基于PC的全软件雕铣机数控系统设计及实现

2022-09-16 13:04方远东刘建群梁学胜高伟强
机床与液压 2022年6期
关键词:数控系统内核界面

方远东,刘建群,梁学胜,高伟强

(广东工业大学,广东省微纳加工技术与装备重点实验室,广东广州 510006)

0 前言

目前雕铣机数控系统多采用PC加运动控制卡或者嵌入式控制器等方案,其系统软硬件专用、结构较复杂、可拓展性低、硬件成本高、难以适应机床功能多变的需求。随着数控系统技术的日益成熟,基于PC的全软件数控系统成为发展主流,它凭借结构简单、平台资源强大、灵活性强等特点,成为目前性价比很高的数控系统之一。

国内外针对全软件数控系统的研究,主要有基于Windows系统的开发和基于Linux系统的开发。石永华和华磊采用PC+FPGA的方式,在Windows平台上开发出一种全软件多轴运动控制器。毕俊喜等基于ServoWorks SDK在Windows平台上开发出一种全软件四轴联动数控系统。杨啸等人基于IntervalZero的RTX工具在Windows平台上开发一种全软件运动控制器,具有通用运动控制平台的高性能特点。WANG等采用RTLinux系统作为开发平台,设计了一种实时全软件数控系统,实现了数控系统线性、圆弧插补等功能。

以上研究中,基于Windows开发的数控系统,由于借助了其他厂商的产品进行二次开发,具有一定的封闭性。而基于RTLinux开发的数控系统,具有用户态响应不足的缺点,难以满足数控系统的定制化需求。

本文作者提出一种基于PC的全软件雕铣机数控系统的实现方案。在硬件上,以PC为控制器,采用EtherCAT工业以太网总线的控制方式,直接控制硬件,无须控制卡协助,从而简化硬件结构。在软件上,以Linux+Xenomai双内核方式构建实时系统,运用模块化设计方法,在Linux域中使用Qt、OpenGL开发雕铣机数控系统软件,在Xenomai域中使用IgH EtherCAT协议栈开发硬件驱动程序。

1 雕铣机数控平台硬件结构

雕铣机硬件结构如图1所示。图中PC机、伺服驱动器和I/O从站通过千兆网线串连。伺服驱动器采用台达ASD-A2-0221E驱动器、I/O从站采用倍福的EK1100模块,均支持EtherCAT协议。主轴电机采用翰琪GDZ系列高速主轴电机,搭配爱德利ATL-AS2-115R变频器,主轴转速可达20 000 r/min,适用于无冷却液加工。

图1 雕铣机硬件结构

为满足系统运算速度和内存需要,PC机搭载英特尔I5 2400@3.0 GHz处理器和4 GB的DDR3内存。同时,为充分发挥EtherCAT通信的性能以及IgH协议栈对Intel网卡驱动的优化支持,PC机的网口选用英特尔82574L千兆网卡,该网卡传输速率可达1 200 Mb/s。

2 数控系统软件结构

数控系统基于Linux系统开发,采用Xenomai实时拓展对Linux进行实时化改造。Xenomai是一种以Adeos为基础的强实时扩展,它和Linux内核共同建立在Adeos环境上,并由Adeos管理硬件中断。Adeos根据内核域的优先级执行相应域的中断服务程序,从而使Xenomai内核获得实时性。这种方式与RTLinux通过截获所有硬件中断控制来获得实时性的方式相比,Adeos的中断管理机制可使Xenomai支持更完全的、性能更优异的用户态实时性,同时可让Xenomai兼容多种常见的商业实时操作系统。

经改造后的Linux系统,需要在Linux域和Xenomai域两个系统域中分别进行软件开发。数控系统软件结构如图2所示。Linux域中使用Qt Creator进行软件开发,软件结构划分为UI界面模块、逻辑处理模块、运动控制模块和功能接口模块。Xenomai域中使用由Xenomai内核提供的实时函数库进行软件开发,软件结构划分为进程通信模块和定时驱动模块。

图2 数控系统软件结构

2.1 Linux域程序设计

Linux域程序架构如图3所示。本文作者运用面向对象的思想设计各个模块,减少各模块间的耦合,增强程序的可重用性和拓展性。

图3 Linux域程序架构

UI界面模块负责人机交互的功能,运用Qt Designer制作各个界面。为增强灵活性,逻辑功能不在UI界面中实现,而是直接从UI界面发出信号,让逻辑处理模块根据接收到的信号调度各项工作。模块中的各子界面由CUIWidget基类派生,CUIWidget基类负责与逻辑处理模块中的任务调度器CDispatcher建立信号和槽的连接。利用Qt信号和槽的特殊机制,各子界面通过基类发出的信号都会得到相应的处理。通过这种“分散触发,集中处理”的方式,可将UI空界面和其界面功能独立开来,分别进行开发。因此,系统可随意更换和升级UI界面而不影响系统的基本功能,这大大增加了系统的灵活性和重用性。

逻辑处理模块连接UI界面模块和运动控制模块,起到消息中转处理作用。由于运动控制模块运行在子线程中,并且采用死循环的运行方式,无法响应信号和槽,因此逻辑处理模块和运动控制模块之间采用双通道队列缓存机制进行数据交换。逻辑处理模块在接收到UI界面模块触发的动作信号后,将信号转译成运动控制模块的操作指令。这些指令保存在双通道队列缓存中,由读写队列接口类CCtrlInterface来管理和编写。运动控制模块查取队列中的指令,将执行结果写入读队列缓存,并发出完成信号。逻辑处理模块接收到信号后,读取反馈结果,并将它精准发回给特定UI界面,从而实现消息中转循环。

运动控制模块管理数控系统的各种数控任务,包括急停任务、读写I/O任务、点动任务、G代码解释任务、对刀任务、回零任务等,这些任务大部分都是长耗时任务,需要不断监听硬件状态,因此运动控制模块必须时刻保持运行,并且运行在子线程中。为使各项任务有序进行,并且实现对任务的模块化封装,将运动控制模块设计成如图4所示的运行模式。将每种任务封装成一个类,由CHanderBase基类派生,派生类需根据任务内容重实现基类中的初始化函数、就绪函数、启动函数、停止函数、重启函数以及结束函数,这些函数分别对应模块的初始化、就绪、启动、停止、重启、结束等6种状态。运动控制模块会根据任务的状态执行对应的函数,并且有序地切换状态。对于执行哪一类任务,由基类指针在运行时动态绑定派生类的方式来决定。通过这种机制,系统可以方便快捷地拓展新的数控任务以及修改任务内容,增强了系统的拓展性和灵活性。运动控制模块的运行模式如图4所示。

图4 运动控制模块的运行模式

功能接口模块提供了数控系统的基本功能接口,封装了Xenomai域程序的服务。它负责进行跨域通信,将指令和数据打包发送至Xenomai域程序,同时反馈Xenomai域程序的处理结果。功能接口模块实现了数控系统底层功能的封装。

2.2 Xenomai域程序设计

Xenomai域程序是数控系统设计的核心内容,负责实现系统的底层功能。它运用IgH EtherCAT协议栈实现了EtherCAT报文的收发,通过编程实现了系统自动识别和控制多种EtherCAT从站。

Xenomai域程序架构如图5所示。Xenomai域程序需要和Linux域程序进行跨域通信,为避免频繁的系统调用带来的花销影响实时性,本文作者将Xenomai程序设计成进程通信模块和定时驱动模块两个模块,每个模块单独建立一个线程,并将定时驱动模块设置为最高优先级,允许它优先抢占系统资源,确保主站的实时性。

图5 Xenomai域程序架构

进程通信模块通过Xenomai的XDDP协议与Linux域程序通信,其通信内容可保存在“/dev/rtp0”或“/dev/rtp1” 缓存设备中。为提高通信效率,该系统中将前者设置为只读、后者设置为只写,构成双通道缓存机制,读写互不影响。

为方便管理和拓展,本文作者将通信内容划分为写、读、控制三类指令。其中,写指令主要完成I/O置位、EtherCAT主从站配置、系统配置、系统状态转换、写插补缓存等操作;读指令主要完成扫描从站信息、读取各轴状态、读取伺服编码器位置、伺服速度信息和报警信息以及读取程序运行状态等操作;控制指令主要用于指示任务的启动、急停、暂停和重启工作。指令执行后会立即将反馈结果发送给Linux域程序,做到迅速响应。

定时驱动模块负责插补运算、EtherCAT报文收发和EtherCAT分布时钟同步等操作。此模块设置了1 ms的实时运行周期,定期不停地运行。为使各种数控任务有序执行,本文作者将此模块设置为有限状态机的工作模式。该有限状态机包括8种状态:空闲(IDLE)、初始化(INIT)、就绪(PREPARE)、运行(RUNNING)、暂停(PAUSE)、重启(RESTART)、急停(STOP)和结束(OVER)。模块依据不同的条件进行状态的有序切换,在不同状态下完成不同的任务,图6所示为模块在实际运行中历经的各种状态和切换条件。在长耗时任务的运行过程中,模块的状态切换由运行参数决定,在进程通信模块上可通过修改运行参数来控制定时驱动模块的状态,从而实现急停、暂停、重启等功能。

图6 定时驱动模块的有限状态机模型

3 数控加工流程

图7展示了数控加工过程中,从G代码文件到具体的EtherCAT报文输出的流程,整个流程需要两个程序相互配合完成。加工开始后,Linux域程序首先会解释G代码文件,提取G代码数据并保存至缓存中;然后,对缓存中的运动数据进行S形曲线速度前瞻运算;最后,将完成前瞻的运动数据打包下发至Xenomai程序。为确保前瞻有数据可运算,程序需先解释一些G代码,确保缓存中有50条以上的数据才能开启速度前瞻运算。

图7 数控加工流程

Xenomai 域程序通过进程通信模块接收运动数据,并保存到插补缓存中。定时驱动模块取得运动数据,需先进行预处理运算:根据前瞻结果和S形速度曲线公式计算出线段的总运行时间,然后按插补周期取整,计算平摊量。完成插补的预处理计算后,再采用基于时间分割法的插补算法对直线或圆弧进行插补运算,算出各轴的位移量,然后将这个位移量转化为各轴编码器的绝对位置,最终通过EtherCAT报文发送到各个伺服从站中执行。

4 系统性能测试

4.1 内核实时性能测试

操作系统的实时性能主要取决于系统上下文切换所花费的延迟时间。Xenomai提供了cyclictest、latency等工具来测试用户态、内核态、内核定时器中断模式下的上下文切换延时。本文作者选用latency工具测试系统内核的实时性。考虑PC机系统实际运行负载可能会很高,为获得准确的性能评估,在Linux终端先执行stress-v-c 8-i 10-d 8命令使CPU进入满负载状态,然后在满负载状态下分别执行3次命令latency-tX-s-T600-h,3次命令中X值分别为0、1、2,代表用户态、内核态、内核定时器中断模式。测试时间为600 s、采样周期为100 μs,实验结果如表1所示。可看出:3种状态下平均延迟均低于3 μs、最大延迟低于15 μs,此延迟相对于1 ms的定时周期可忽略不计,由此说明内核实时性能上的延迟几乎不影响数控系统实时性能。

表1 3种模式下latency工具的600 s测试结果

4.2 主站抖动测试

主站抖动是指主站周期性连续发出数据时,相邻两个周期之间的时间间隔大小的变化。时间间隔越大,抖动越大,影响任务的实时性。测试主站抖动的方法主要有网络分析仪方法以及编程测试法。本文作者采用编程测试法测试主站抖动。编写测试程序,记录相邻两周期发送EtherCAT报文的时间间隔与1 ms周期的差值。经过多次加工实验,分析实验数据,得出主站的平均抖动为0.265 μs,最大抖动为24 μs,与文献[15]中测试得到的平均抖动0.25 μs接近,其性能满足工业运动控制应用的要求。

5 实验

在本文作者提出的全软件数控系统架构下,开发雕铣机数控系统,系统交互界面如图8所示。利用Qt支持OpenGL的特性,成功运用PC机的GPU资源,在雕铣机系统中开发刀路仿真的功能,可实现刀路的三维动画展示。

图8 系统交互界面

本文作者通过加工一个三维小海豚模型的G代码文件来检验数控系统运动控制算法的正确性及其实际加工性能。加工材料采用代木材料,设置机床加工速度为50 mm/s、加速度为500 mm/s、加加速度为5 000 mm/s、主轴转速为12 000 r/min。实验结果如图9所示,经过分析,加工出的模型轮廓分明、表面光滑,表明该数控系统具有良好的实时性和稳定性,其性能可以满足雕铣机加工的实际要求。

图9 小海豚模型加工实验

6 结论

EtherCAT工业以太网总线技术凭借其独特的运行原理,使通用PC机成为了真正的运动控制器,而无需控制卡协助,极大地简化了硬件结构,降低了硬件成本。基于EtherCAT技术在通用PC机上开发数控系统,凭借PC机强大的平台资源,大大增强了数控系统的拓展性和通用性,使开发出多功能、定制化、通用化的数控系统成为可能。本文作者基于Linux+Xenomai双内核实时系统,运用EtherCAT总线技术,在PC平台上开发了全软件雕铣机数控系统。实验结果表明:该数控系统实时性好,能满足实际加工要求,具有一定的应用价值和借鉴价值,同时有利于EtherCAT技术和全软件数控系统的推广。

猜你喜欢
数控系统内核界面
基于FMECA与FTA的数控磨床数控系统可靠性分析
共沉淀引发的溶解性有机质在水铁矿/水界面的分子分馏特性*
人民情怀:柳青为文为人的内核(评论)
从零开始学用智能手机
初春
微软发布新Edge浏览器预览版下载换装Chrome内核
华中数控在CIMT 2015上展示3C钻攻生产线
基于Windows的线接触加工数控系统实时性研究
具备DV解码功能的DVD编码器——数字视频刻录应用的理想选择