蔡一天,奚学程,赵万生(上海交通大学机械与动力工程学院,上海200240)
基于simulink-realtime的数控系统仿真与实验平台研究
蔡一天,奚学程,赵万生
(上海交通大学机械与动力工程学院,上海200240)
提出一种采用simulink-realtime构建数控系统仿真实验平台的方法。首先,介绍了simulink-realtime的硬件部分结构及其软件部分原理与设置。然后,详述了基于simulink-realtime应用程序的开发流程,并以一个单轴PID控制器的程序开发为例。最后,以对轮廓误差控制中典型的交叉耦合控制器研究证明了所搭建的仿真实验平台对于研究数控技术的实用性。
simulink-realtime;数控系统;实验平台
数控系统作为数控机床的核心部分,其性能对于机床的加工精度和效率有着至关重要的影响。因此,研究先进的数控技术对于打破国外垄断、提高装备制造业水平有着重要意义。
但是,一般的商用数控系统往往是封闭的,这也意味着用户无法知道其具体原理,也不能对其进行修改。因此,部分学者采用由PMAC运动控制卡来实现底层运动控制、而自己开发上层软件的方法,这虽然部分地解决了数控系统开放性不足的问题,但当需要研究底层运动控制功能时,采用运动控制卡的方法仍使研究受到局限[1]。此外,部分研究人员采用自己开发数控系统的方法,但耗时较长,且需把过多精力投入到非核心技术的开发上[2-3]。也有其他学者采用开源数控系统(如LinuxCNC),在此基础上进行修改以符合自身要求[4]。但这种方法需先对开源数控系统有一个较好的了解,前期耗费时间长,且所有算法功能都用C++语言实现,在算法实现上也需花费很多精力。
本文利用Matlab软件中的simulink-realtime实现从模型设计仿真到算法实现的无缝对接。利用simulink-realtime由仿真模型自动生成C语言代码的功能,使原来最费时的算法实现阶段时间几乎缩短为0。并以此为基础,集成数控系统中常用的功能模块,搭建一个开放的数控技术仿真实验平台。
从核心功能上讲,simulink-realtime是一组Matlab提供的帮助用户从simulink模型快速创建实时程序,并自动下载到目标控制机的工具集。同时,它也包括了众多的I/O硬件驱动,比如:模拟信号I/ O、数字信号I/O、脉冲产生与接收、CAN总线、网络通信等。
1.1 硬件系统结构
Simulink-realtime具体实现时的硬件体系结构见图1。开发机(development computer)负责Matlab程序、simulink仿真模型的搭建,通过simulink-realtime提供的编译器编译后下载到目标机中运行,之后开发机可实时调整程序中的参数,并监测和记录程序运行的信号。开发机一般为装有Windows系统并有Matlab程序的PC机。目标机往往也是PC机,当然也可以是如PC/104、CompactPCI形式的工控机。而I/O硬件通常指通过PCI扩展槽连接到目标机上的各种I/O板卡,最后通过这些I/O板卡控制真实的物理部件。
图1 simulink-realtime系统架构图
在开发机和目标机之间可采用2种通信方式:RS-232和ethernet。RS-232方式只能以一台开发机对应一台目标机,但Ethernet方式可支持一台开发机对应多台目标机,这是因为此时目标机和开发机之间是通过TCP/IP协议通信,两者之间不是必须通过网线直接连接,完全可通过路由器接通。因此,ethernet的连接方式提供了更好的扩展性,且ethernet相对于RS-232通信更加不易受干扰,可支持长距离传输,数据传输速率快。因此,本文选用ethernet连接方式。
此处的硬件I/O板卡需为Matlab公司支持的型号,因为只有这部分板卡Matlab里的I/O驱动库才提供simulink block形式的驱动。否则,需要用户自己编写硬件驱动,这会相当繁琐。
1.2 软件设置
从图1可看出,如果要在目标机运行实时程序,需在目标机有一个实时操作系统。但这个实时操作系统并不是平时常见的如VxWorks、uc-os等,它是一个Matlab公司提供的名为 “simulink realtime kernel”的微型实时内核。因此,在目标机中不需由用户预装Windows或Linux等任何其他系统。
要在目标机启动simulink real-time kernel,有以下4种方法:
(1)从光盘设备启动。从CD/DVD启动,需用户自己刻录光盘,成本较高且不方便。
(2)从移动盘启动。从移动U盘或移动硬盘启动,这时只需通过Matlab提供的工具制作启动盘,然后通过USB接入目标机即可。
(3)DOS loader启动。这要求目标机有DOS启动系统,且有其他诸多限制。
(4)网络启动。把实时操作系统放在一个开发机上,当开发机检测到目标机启动时,通过网络把操作系统相关数据传输到目标机,然后启动系统。该方法要求目标机的BIOS支持从网络启动。
上述方法中,从移动盘启动系统最为方便快捷且限制较小。因此,本文选取这种方法。
制作装有simulink real-time kernel微型实时内核的U盘可通过Matlab提供的 “simulink real-time explorer”工具实现。只需在Matlab命令行中输入“slrtexplr”;在Target面板中设置如下3个方面的属性:
(1)开发机到目标机的连接属性(Host-to-Target communication)。本文采用开发机和目标机用网线直接相连的方式,故连接方式选择“TCP/IP”。目标机的相关网络设置必须保证和开发机在同一个局域网中,即目标机的IP地址和开发机前3段必须相同,仅最后一段不同。且需注意开发机设为固定IP。
(2)目标机属性(Target settings)。主要是设置目标机相关的属性,如目标机是否为多核、是否为386/486体系架构等。
(3)启动配置(Boot configuration)。由于本文选用从U盘启动系统,所以boot mode可选择Removable Disk,然后就能创建启动盘。同时需特别注意设置目标机的BIOS为优先从U盘启动系统,否则一般都默认从硬盘启动系统。
1.3 应用程序开发
基于simulink-realtime开发实时应用程序都是采用“基于模型的设计”思想,即一切以系统模型为基础,用户只需建立相应的算法模型,而不需关心具体的算法转化为实时程序的细节。其开发过程见图2。如本文的运动控制系统,需对这个轴设计PID控制器以改善各轴的跟踪性能。若交流伺服电机简化为二阶模型,则带PID控制器的系统模型见图3。
现在要设计PID控制器,并在目标机中实现,因此需对上述模型进行实时化。首先,实时程序并不支持一般的Scope模块,必须用simulink-realtime库中专用的Scope。它支持实时数据显示,或记录数据到文件;另一方面,此时的传递函数1/(s2+3s+2)已用真实的物理系统代替,即交流伺服电机,所以传递函数模块可删去。控制系统信号和反馈信号需通过I/O板卡采集,因此还需添加相应的硬件驱动模块。同时,由于采集到的反馈信号为脉冲信号,需经过单位转换才能接入闭环,故在反馈处还需加入一个增益环节。假设此处采用的I/O板卡为NI公司的PCI-6221,则系统模型经实时化改造后变为如图4所示。
图2 simulink-realtime应用程序开发流程
图3 单轴PID控制器模型
图4 实时化改造后的单轴PID控制器模型
接下来,只要接通开发机和目标机,编译经过实时化改造的模型,下载到目标机就能在目标机运行这个PID控制器。这个编译、下载、运行的过程只需简单调用Matlab提供的命令或直接在GUI中操作即可。
最后,如需读取记录的数据,可调用相应命令把记录的数据文件从目标机复制到开发机,然后读取到相应变量中。比如下列函数就可完成这个任务,其中tg为包含目标机的对象,filename为需要复制到开发机的数据记录文件:
function scope_core_data=get_target_scope_data (tg,filename)
SimulinkRealTime,copyFileToHost(tg,filename);
scope_data=SimulinkRealTime.utils.get-FileScopeData(filename);
scope_core_data=scope_data.data(:,1);
end
由此可看出,所有工作都是围绕系统模型展开,且用户只需集中精力于算法开发就好。
本文基于simulink-realtime搭建的数控系统实验平台的硬件系统见图5。其电控部分就是基于图1所述的结构,I/O板卡选用NI公司的PCI6221,它包含两路模拟输出可控制电机,还自带32位计数器可作为电机编码器的反馈。机械部分为一个由滚珠丝杠传动的两轴X-Y交流伺服平台。由于该平台把一个轴置于另一个轴之上,这样两轴驱动的质量不同,从而保证两轴的动态特性不匹配较明显,更好地模拟了真实机床的情况。
图5 实验平台硬件系统示意图
在软件方面,可划分为如图6所示的几个模块,各部分的功能如下:
(1)参数曲线生成模块。目前高级的数控系统多用NURBS曲线来表示参数曲线,此模块完成NURBS曲线相关的操作。
(2)插补算法模块。从参数曲线生成一系列的插补点,可根据需要采用不同的插补算法。
(3)速度规划模块。合理规划运动速度,可采用S型加减速等方法。
(4)模型辨识模块。这主要是为了仿真方便,如上所述,simulink-realtime是以模型为核心的。若能辨识出系统模型,就能很方便地仿真相应的算法。
(5)基于继电反馈的PID自整定模块。单轴的PID控制器是最基本的控制器,而继电反馈法又是整定PID参数的优秀方法。
(6)轮廓误差离线精确计算脚本。这主要是为了研究轮廓误差控制等时验证算法的效果。
(7)数据提取与存储模块。存储数据,方便以后进一步处理。
图6 实验平台软件部分模块划分
至此,数控系统实验平台完成,可用该平台方便地进行数控技术各方面的研究。
本文以研究数控技术中的轮廓误差控制技术为例,选用其中最经典的交叉耦合控制器来证明所搭建实验平台的实用性。交叉耦合控制的思想是把轮廓误差看作一个整体来控制,即意味着每个轴不但受本轴的影响,也接收其他轴的误差信息。这样,多轴之间能更好地协同,共同达到减小轮廓误差的目的。
根据算法思想建立对于一个圆形轨迹的控制器模型(图7)。其中,curve_data是用参数曲线生成、插补、速度规划模块一步步生成的参考指令点,两个轴的系统模型可用系统辨识模块获得,单轴PID参数可通过继电反馈法整定,而中间的PID控制器参数可通过建立如图7所示模型后,用Matlab提供的PID参数整定工具自动整定,最后可用轮廓误差离线精确计算脚本来估计控制器的效果。在确定算法后,将上述模型进行实时化改造(图8),再调用系统相关工具编译下载到目标机即可运行。
图7 一个圆形轮廓的交叉耦合控制器模型
图8 实时化后的交叉耦合控制器模型
在本实验中,圆的半径为40 mm,线速度为20 mm/s,有和没有交叉耦合控制器时的轮廓误差见图9。可见,交叉耦合控制器显著减小了轮廓误差,同时也证明本文搭建的实验平台能很好地满足数控技术中的轮廓误差控制技术研究的需要。
图9 是否加入交叉耦合控制器的轮廓误差对比
本文设计了基于simulink-realtime的数控系统仿真与实验系统。相对于传统的实验平台,它提供了极大的便利性,可大大减少通常算法实现时花费的大量时间。同时,该平台以模型为核心的特点,很好地整合了从算法仿真到实现的过程。本文搭建的实验平台集成了数控技术中常用的各种模块,具有很好的开放性,适于研究数控技术的各个方面。
[1] 陈昊,陈默,奚学程,等.六轴联动电火花加工数控系统及机床[J].电加工与模具,2013(6):70-73.
[2] 邵昌旭,陈默,赵万生.嵌入式电火花线切割加工数控系统原型[J].电加工与模具,2012(2):17-20.
[3] 吴文君,顾琳,徐笠云,等.基于ARM及嵌入式Linux的线切割数控系统开发 [J].制造业自动化,2009,31(2):75-78.
[4] 豆尚成,陈成细,奚学程,等.基于Linux的线切割加工全软数控系统[C]//第14届全国特种加工学术会议论文集.苏州,2011:199-205.
Study on a Simulation and Experiment Platform for CNC System Based on Simulink-realtime
Cai Yitian,Xi Xuecheng,Zhao Wanshen
(School of Mechanical Engineering,Shanghai Jiao Tong University,Shanghai 200240,China)
A simulation and experiment platform for CNC system is designed,in which simulinkrealtime is adopted as basic technology.First,the hardware requirement is introduced and the software specification is described in detail.Then the process of designing application program is presented and an example of designing PID controller for a single axis is given.Finally,the typical algorithm named‘cross couple controller’applied in contour control is selected to be realized in the proposed platform,which prove the platform′s practicability in researching CNC technology.
simulink-realtime;CNC system;experiment platform
TG659
A
1009-279X(2016)05-0024-04
2016-05-09
蔡一天,男,1989年生,硕士研究生。