基于RTX64的软运动控制器设计与实现
2019-05-27松2王世勇
杨 啸,李 迪,李 松2,王世勇
(1.华南理工大学 机械与汽车工程学院,广东 广州 510640;2.深圳市旗众智能科技有限公司 运动控制研发中心,广东 深圳 518100)
0 引言
“中国制造2025”对制造业提出了“数字化、网络化、智能化”的新要求[1],运动控制器作为制造业的核心技术之一,已从封闭式逐步发展为开放式[2]。开放式运动控制器主要有三种架构:PC嵌入NC、NC嵌入PC、软控制器[3]。在智能制造的新时期,软控制器能充分利用PC机的性能优势,以模块化软件实现实时控制功能,具有可重构、可扩展、柔性化等特点,发展前景良好,成为当前的研究热点之一,Brecher等[4]以典型厂商、研究项目为例详细地介绍了开放式控制系统的发展与现状;朱达宇等[5]在Linux平台下采用RTLinux实时扩展,构建全软件数控系统;王普等[6]研究了基于RTX的全软件数控系统,分析测试了系统的实时性能,并构建原型系统;Yu等[7]分析了传统数控系统的体系架构与现场总线的特点,采用组件技术设计了基于现场总线的开放式数控系统;宋利利等[8]以三轴仿真转台为实际应用背景,针对实时性、稳定性的系统需求,设计了基于RTX的实时控制软件;毕鲁雁等[9]设计了基于RTX的工业机器人控制系统,为机器人控制算法与功能扩展提供了基础平台;Wu等[10]通过“PC+Windows实时扩展”的方式探究了开放式软数控系统的实施方案,并验证了系统的实时性与功能。
以上研究主要集中在32位平台下的专用控制,对非标设备控制研究较少。然而随着控制需求的不断提高,定制化产品、个性化设备需求的不断出现,研究基于高性能64位平台的通用软控制器具有一定的现实意义。
本文提出以“Windows7 + RTX64”为主控单元,结合EtherCAT (Ethernet for Control Automation Technology)总线协议,设计并实现了64位平台下的通用开放式软运动控制平台,并提供软件开发工具包(Software Development Kit, SDK),可适用于不同的解决方案,为促进控制器实时性、扩展性、柔性化可配置的发展提供参考。
1 软运动控制器系统设计
如图1所示,软运动控制器是由实时任务与非实时任务组成的多任务混合系统,采用“Windows 7 + RTX64 3.0”设计方案,在Windows下运行非实时任务,在RTX实时子系统(Real-time Subsystem,RTSS)中运行实时任务。采用EtherCAT总线协议实现工控机与驱动器从站、I/O从站等硬件设备的通讯。
图1 软运动控制器系统方案
作为通用运动控制平台,软运动控制器的模块化功能主要包括:参数配置模块、运动控制模块、安全控制模块、从站控制模块、反馈功能模块。在不同的工艺需求中,可基于软运动控制器设计个性化的解决方案,实现运动逻辑自定义,具有可配置、可重构、可扩展的优点,如图2所示。
图2 软运动控制器功能模块图
2 软运动控制器软件实现
2.1 RTX64系统简介
RTX64是Interval Zero公司开发的运行在64位平台下的实时子系统。RTX64通过扩展Windows硬件抽象层(Hardware Abstraction Layer, HAL)实现从Windows隔离系统资源,独占处理器,保证RTSS和Windows之间的中断隔离,确保了实时指令、RTSS调度任务等只能在RTSS独占的处理器上运行[11]。
RTSS提供了基于优先级的抢占式调度,线程优先级可设置为0-127,共128个等级,其中127为最高优先级。RTX线程的优先级始终高于Windows线程[9]。同时,RTX拥有自己的时钟和定时器服务,时钟精度为100 ns,确保实时任务的可靠性。RTSS可通过IPC对象实现与Windows系统间的数据交互,通过内核同步机制保证数据同步与通讯。
RTX64作为Windows系统实时扩展的首选方案,可充分利用Microsoft Visual Studio强大的开发、调试功能,降低开发难度、提高开发效率。
2.2 分层架构设计
根据运动控制器混合多任务的特性,采用模块化设计思想,将事件触发、对实时性要求较低的人机交互界面(Human Machine Interface, HMI)运行在Windows应用层,将周期性执行、对实时性要求较高的运动控制内核、EtherCAT主站等运行RTSS中。
如图3所示,软运动控制器分层架构从上至下依次为应用层、数据交互层、实时控制层、设备层。
图3 软运动控制器分层架构方案
1)应用层包含HMI与应用程序接口(Application Programming Interface, API)。通过HMI可将API指令信息传递至数据交互层。
2)数据交互层包含动态链接库(Dynamic Link Library, DLL)与三块共享内存空间:普通指令区、紧急指令区、反馈信息区。根据执行指令的紧急与否设计了快慢双缓冲的环形队列方案:普通指令区存放非紧急指令,如参数设置、直线插补;紧急指令区存放紧急指令,如急停、在线改变目标位置;紧急指令区优先级高于普通指令区。此外通过反馈信息区,可监控运动控制器的状态,如实际位置、实际速度、IO状态等。
3)实时控制层包含运动内核、EtherCAT主站、网卡驱动。运动内核的主要功能为轨迹规划;EtherCAT主站负责运动内核与EtherCAT从站间的数据运输,如:驱动器从站的过程数据对象(Process Data Object, PDO)。具体流程为:运动内核将应用层的运动指令通过解析、预处理、插补计算等处理后,交由EtherCAT主站。主站将运动内核输出数据打包,通过网卡发送下行数据帧至各个从站模块。同时,主站也将从站上行数据帧反馈至运动内核。
4)设备层由网卡与从站模块组成,在设计的运动控制器中采用了总线型拓扑结构,从站模块包括:Driver从站、Box从站、I/O从站、D/A从站等。
2.3 进程间通讯
分层架构表明软运动控制器是由人机交互界面、运动内核、EtherCAT主站三个进程组成。其中,人机交互界面运行在windows系统中,运动内核、EtherCAT主站运行在RTSS中。三者协同工作,通过使用共享内存实现进程间通讯,以互斥体确保进程间交互数据的正确性,避免竞争条件的产生。
1)人机交互界面与运动内核间的通讯:
HMI根据指令时效性高低发送至不同的指令共享内存。在运动内核解析任务中,紧急指令优先于基本指令被解析。同时运动内核周期性地将实时运动数据更新至反馈共享内存,HMI采用循环扫描的方式获取反馈信息,并对变动信息进行更新显示。
2)运动内核与EtherCAT主站间的通讯:
以数据结构体的形式实现交互,在结构体内部设计两块环形缓冲区。运动内核将指令发送至环形缓冲区rbSend,同时将标记bMCtoMaster置为真,EtherCAT主站收到标记为真的消息后,取出运动内核指令,并将标记还原。同样的,运动内核收到EtherCAT主站反馈数据标记后,从环形缓冲区rbRece中获取反馈数据,并将反馈标记清零,如图4所示。
图4 通讯结构体设计
2.4 线程间通讯
环形缓冲区具有先进先出(First In First Out, FIFO)的特点,在多线程异步协作或生产者消费者模型中被广泛使用[12]。采用环形缓冲机制能有效解决数据生产与消费速度不匹配的问题、增强多线程的并行性能[13]、减少“数据饥饿”、避免“内存碎片”的产生。模板是C++泛型编程的重要思想,具有灵活性强、代码复用的优势。采用模板类设计环形缓冲区,在构造函数内进行成员变量的初始化,在析构函数内清理成员变量,确保资源的自动管理。
软运动控制器将基于模板类的环形缓冲区与临界资源结合使用,确保多线程间的数据保护与通讯,如图5所示,CRingBuffer类实现了存放不同数据类型的环形缓冲区,可从缓冲区内添加、获取一组或多组数据,并根据实际需求更改缓冲区大小。
图5 基于模板类的环形缓冲区UML类图
软运动控制器采用了多线程流水线设计模式。由于控制器具有点位运动与连续轨迹运动两种模式,故采用多生产者单消费者模型,在该模型中,当前线程既作为上游线程的消费者,又作为下游线程的生产者。若当前线程判断存在以下情况之一:(1)上游生产者缓冲区为空;(2)下游消费者缓冲区空间不足;(3)插补计算轴的引用计数非0,则放弃当前线程执行权。否则,当前线程获取上游缓冲区数据,经过解析、计算、封装处理后,打包发送至下游缓冲区。此时本次线程调度完成,由运行状态切换至休眠状态,等待下一次被唤醒。
2.5 运动内核多线程调度方案
软运动控制器在实时内核层采用多线程并行工作方式实现强实时任务的设计。运动内核作为控制器的核心,主要包括以下线程:主函数线程、上位机指令解析线程、连续轨迹预处理线程、插补计算线程、主站通讯线程、状态反馈线程。根据各线程任务的紧急程度与重要性,设置了不同的调度周期与线程优先级。此外,为保证下游数据冗余、避免数据饥饿,将线程在运行状态下设置为执行不同的次数。如表1所示为运动内核线程调度方案。
表1 运动内核线程调度方案设计
主函数线程作为第一个被创建和最后一个退出的线程,负责启动时软控制器的初始化工作与退出时软控制器的清理工作;上位机指令解析线程以动态的从站数量作为每周期扫描次数,避免HMI指令流量过高造成指令阻塞。并将解析后的点位运动发送至插补计算线程、连续轨迹运动发送到预处理线程;连续轨迹预处理线程负责前瞻与小线段平滑过渡,将处理后的指令发送至插补计算线程;插补计算线程采用S型算法计算出每个周期内的路径规划位置,并发送至主站通讯线程;主站通讯线程负责运动控制内核与EtherCAT主站间的数据交互。
2.6 EtherCAT通讯
EtherCAT是德国倍福自动化有限公司推出的实时工业以太网协议,具有实时性强、拓扑结构灵活、有效数据率高的优点[14]。软运动控制器基于RTX64在Windows平台下开发了EtherCAT主站程序,采用CoE(CANOpen over EtherCAT)协议用于伺服驱动器应用层通讯,通讯周期为1ms,调度优先级为127,控制模式为周期性同步位置模式(Cyclic Synchronous Position Mode, CSP)。
EtherCAT主、从站通过状态机切换可进入运行(OP)状态[15]。对伺服驱动器还需通过控制字切换至使能状态。在运行过程中,运动内核的主站通讯线程通过共享内存实现与主站的通讯,如将接收过程数据对象(Receive Process Data Object, RxPDO)、IO输出、模拟量输出等指令信息发送给主站,并从主站获取发送过程数据对象(Transport Process Data Object, TxPDO)、IO输入、手摇脉冲发生器(Manual Pulse Generator, MPG)位置等。
3 软运动控制器流程设计
控制器在运行过程中事件流的执行与数据流的传递过程,如图6所示。具体工作流程可描述为:(1)启动在windows系统下运行的HMI后,HMI创建其与运动内核交互的共享内存,并启动运行在RTX64系统下的运动内核;(2)运动内核创建其与EtherCAT主站通讯的共享内存后,启动运行在RTX64系统下的EtherCAT主站,并进行参数初始化;(3)在运动内核中,根据事件流的执行顺序依次创建指令解析线程、连续轨迹预处理线程、插补计算线程、主站通讯线程、反馈线程,并根据线程优先级设定、扫描周期进行线程调度;(4)进入自动加工模式后,HMI根据加工工艺需求将指令发送至指令共享内存。运动内核从指令共享内存中获取指令信息,并将轨迹规划信息发送至EtherCAT主站。同时,运动内核也从EtherCAT主站获取实时运动信息发送至反馈共享内存。HMI根据反馈共享内存中的数据进行状态显示;(5)自动加工完成后,依次关闭运动内核、EtherCAT主站、HMI,并完成必要的资源清理。
图6 软运动控制器流程图
4 实验结果与分析
为验证基于RTX64的软运动控制器的性能,设计了如图7所示的硬件测试平台,该平台由占美GK1037工控机、高创CDHD-0032A系列高性能伺服驱动器与电机(共12组)、深圳市旗众智能科技有限公司的I/O从站与box从站组成。图8为基于软运动控制器开发的手机外壳3D打磨系统的上位机界面。使用该上位机进行实验一与实验二的测试。
图7 硬件测试平台
图8 手机外壳3D打磨系统的上位机界面
实验一:使用S型算法进行单轴定长运动,位移长度为6 000 pluse,起始速度、停止速度为0 pluse/ms,目标速度为50 pluse/ms,加速度、减速度为1 pluse/ms2,加加速度、减加速度为0.01 pluse/ms3。
每个通讯周期内的位置数据,如图9所示。可见位置曲线的变化较为平滑,且运动控制内核路径规划位置与伺服驱动器反馈的实际运行位置偏差较小,均保持在两个周期的指令位置内,位置偏差控制在±0.01 mm以内。表明软运动控制器具有较好的稳定性,较高的位置控制精度。
图9 路径规划位置与实际运行位置信息
实验二:本实验通过在上位机的自动加工界面中编写磨削加工文件进行测试,实现手机外壳3D打磨系统的模拟效果。控制XYZ轴进行三轴联动插补,并以X轴、Y轴为主轴,分别实现对X0至X3轴、Y0至Y3轴的轴组控制;同时进行一维直线运动,即同时控制12个驱动器从站工作。
使用RTX64提供的Tracealyzer工具,可以监控实时子系统中多线程切换、调度时序等,有助于分析程序中的资源冲突、性能瓶颈,提高系统的实时响应,如图10所示。
图10 线程调度时序图
其中,PID-1015表示运动内核当前进程ID,T-64、T-69至T-73分别表示主函数线程、上位机指令解析线程、连续轨迹预处理线程、插补计算线程、主站通讯线程、状态反馈线程的ID。11:36.317.000表示当前时间为11分36秒317毫秒0微秒。
由图10可知,各线程在运行态的时间均在设定的调度周期内,且均有90%以上的时间冗余,证明软运动控制器具有较好的实时性与扩展性。
5 结束语
本文采用“Windows7+RTX64”的设计方案,充分利用Windows系统资源丰富、界面友好的特性与RTX子系统强大的实时性能,设计并实现了开放性强、扩展性高的通用软运动控制器。通过软控制器控制所有的控制任务,并通过测试平台进行验证,实验结果表明:
1)基于RTX64的软运动控制器具有较高的稳定性与实时性,满足同步精度与位置误差精度的要求。
2)多线程调度时序符合设定的运动控制任务拓扑序列,满足了运动控制功能与实时控制性能的需求,具有较好的开放性与拓展性。