韩 江 吴 涛 夏 链 田晓青 吴路路
(合肥工业大学机械与汽车工程学院CIMS 研究所,安徽 合肥 230009)
插削加工是齿轮加工成型的重要方法之一,在加工前对编制的NC 代码程序或自动生成的NC 程序进行模拟仿真,以验证程序的正确性[1];在加工过程中对刀具和工件的情况进行实时仿真显示[2],便于用户掌握加工状态;加工过程中对误差进行监测有利于用户了解控制参数是否合适,所以对加工过程进行动态仿真具有重要的现实意义和实用价值。本文研究的采用OpenGL ES 开发的加工仿真模块能够从加工程序中获取刀具的轨迹坐标[3],对其进行实时建模,并对跟随误差进行实时监测,对于实际生产具有重要意义。
为了能够在现有的平台上进行OpenGL ES 图形开发,应用设备中应用程序所在的路径必须包含有支持OpenGL ES 的库文件,以用于在程序开发时进行函数调用。本系统所需要的库文件有libGLES_CM.dll和libGLES_CM.lib。这两个库文件中包含了利用OpenGL ES 开发时绘制直线、颜色设置、顶点数组设置等一系列函数文件,其中libGLES_CM.lib 库文件会在程序编译时加载到内存中,而libGLES_CM.dll 文件只有在链接的时候才会调用其函数,不会占用内存。将这两个文件拷贝到嵌入式设备的应用程序所在的路径NorFlash 下。但是,由于程序是在上位机上开发的,若进行上下位机联调时,程序是从Windows 下进行启动的,所以必须将上述的两个文件放在下位机的Windows 文件夹下,以备联调时程序调用。上位机与下位机是通过网线进行通讯,其原理图如图1 所示。
在利用VS2005 进行开发前,需对上位机的开发环境进行配置,将支持OpenGL ES 的头文件和库文件分别放置在应用设备的SDK 安装目录的头文件夹和库文件夹下,然后对VS 的编程环境进行相关的设置。由于链接时需要用到头文件(与OpenGL ES 相关的头文件)中声明的函数的执行代码,故需将函数代码所在的库文件添加到项目中。可通过如下两种方法实现:
(1)代码实现:
#pragma comment(lib,”codegen.lib”);
#pragma comment(lib,”libGLES_CM.lib”);//告诉编译器与DLL 相对应的.lib 文件所在的路径及文件名。
(2)配置实现:将codegen.lib 和ibGLES_CM.lib两个库文件添加到“项目属性链接器输入附加依赖项”中。
本文中采用第2 种方法实现,所有配置工作完成后就可进行嵌入式设备的图形开发工作。
OpenGL ES 的工作原理是将要绘制的图形的一系列点写成数组的形式,然后对数组进行着色、装配等操作,在缓冲内存中完成绘制,然后将其交换到实际的窗口系统上[4-5],其工作过程如图2 所示。故在利用OpenGL ES 绘图之前,还需对OpenGL ES 进行初始化操作:在图形界面对话框中的适当位置添加一个适当大小的静态文本框(ID 为IDC_RENDER),以用作图形的显示区域。具体的操作过程如图3 所示。
初始化完成后,就可进行图形的绘制工作。
本系统是基于ARM+DSP+FPGA 的硬件平台实现的[6-7],其中ARM 主要用来完成人机交互、显示与管理功能,而DSP 主要用来实现底层运动控制的实时计算,而两者间的通讯通过HPI(host port lnterface)来实现,底层(DSP)将电动机的实时位置、报警信息以及机床的I/O 状态实时反馈给上层(ARM),而上层则将接收的信息进行显示,同时,上层将编制的数控代码经编译后下发给DSP,经DSP 处理后控制电动机的运行;FPGA 用来采集机床信号,并将这些信号反馈给DSP 进行处理。硬件平台图如图4 所示。
由于从DSP 中读取的机床坐标和程序坐标都是编写NC 加工代码时的数值,将其用于图形绘制时会出现数值过大,超出屏幕范围的情况。为了解决这个问题,可以将获得的坐标数值映射成为用于图形绘制的纹理坐标,即需要建立坐标系。以工作台的中心位置为图形坐标系原点,根据设备屏幕上的图形显示范围恰当地选择机床零点的位置,并计算出零点在图形坐标系中的纹理坐标(XW,YW)。开启机床,并将机床进行回零,机床回零后如图5 所示,将机床上的工作台中心到机床零点的距离L0测量出来,并将这个距离与零点的纹理坐标对应起来,把工作台的中心位置与图形坐标系的原点对应起来,再利用线性插值的方法将刀具的轨迹坐标(X,Y)转化成为相应的纹理坐标(XM,YM),如式(1)所示。这样当程序坐标变化时,就可根据(XM,YM)在屏幕上显示出刀具的轨迹。
图形仿真的实质就是将从底层(DSP)中读取的坐标值在实际的窗口系统上绘制出来。具体的可以设置一定时器,保证实时从DSP 存储机床坐标和程序坐标的地址空间中读取数值,将获得的机床坐标和程序坐标赋给相应坐标显示控件的关联变量,并将刷新坐标显示的代码放在定时器的实现函数中,这样当加工程序在执行过程中,图形界面的相对坐标和绝对坐标(图6)就会不断刷新,给用户辨别加工代码的正确性提供参考,同时根据读取的数值也可在特定的窗口上绘制出图形。
在实际加工过程中,根据输入的刀具齿数和模数计算刀具外径,得到刀具形体的顶点数组,然后在图形显示窗口处对刀具的形体进行建模,当执行到S 指令时则将刀具形体的顶点数组的数值根据S 的数值进行关联进而实现不同速度的上下往复运动;而执行到G00、G01 等直线运动指令时,则将刀具形体的顶点数组进行相应的增减,从而实现刀具的进给运动,刀具的运动过程实现如图7 所示。
对于工件而言,可根据编程时输入的齿轮模数、齿数等参数计算工件齿坯的外径,由此建立工件的顶点数组,进而利用API 函数来实现工件的建模。在插削加工中,需实时判断刀具的轨迹坐标与工件的最大外径尺寸是否相交,以判定刀具是否开始切削到工件,若未切到,则对工件毛坯和刀具轨迹分别进行建模;若二者相交,则说明已经开始切削加工,需要根据刀具的轨迹坐标来调整工件毛坯的顶点数组,实现对工件未切除部分的建模,而对待加工部分进行消隐。具体的流程图如图8 所示。
为了全面并友好地反映加工时的部分信息,对加工轨迹监控界面进行详细地设计,合理分配有关功能的显示区域和比例,其布置图如图6 所示。
在数控加工中,往往对加工精度有较高的要求,这就需要掌握加工误差的实际变化情况,据此来调整合适的控制参数(PID 参数)来减小误差。本论文中首先是建立示波器模型,用于显示每个轴的跟随误差;然后每隔一定的时间(可设置一定时时间为0.01 s 的定时器实现)便从DSP 中读取各轴的跟随误差值(在DSP中完成每个轴的实际坐标和指令坐标的差),并将其转化成纹理坐标,设置一数组Error[13](大小可根据需要选择,本文中为13),用来保存每一周期的误差值;最后将当前周期的值绘制在当前时间处,并在下一周期时,将其赋值给前一周期,不断地循环执行(其绘制过程图如图9 所示),即可实现跟随误差的实时监测以及观察跟随误差的变化情况。在监测过程中,可通过操作面板上的按键来设置需要显示的轴的跟随误差曲线,主要是通过定义标志变量g_AxisErrorChose 来实现,当选择不同的轴时,其值会跟着变化,根据变化的值来读取相应轴的跟随误差值进行仿真。跟随误差的监测实现如图10 所示。
将开发的功能模块嵌入插齿数控系统中,并带电动机进行调试。首先编制插削加工数控程序,并对其进行编译处理,然后下发给DSP 进行执行,进入图形界面,进行相关的操作,操作流程如图11 所示,观察操作结果,与预期效果进行比较。设置比例因子时,从操作面板上输入需要放大或者缩小的倍数,然后按下“输入”即可实现图形按比例缩放。而“设置坐标系”和“设置轴号”都是由操作面板上的上下左右键来控制,同时也要按“输入”进行确认。通过不同操作者进行操作,验证了开发的功能模块能够实现加工过程的实时仿真显示,每个数控轴跟随误差的实时监测,图形的缩放,不同坐标系的设置等功能。测试实验效果如图12 所示。
本文基于ARM+DSP+FPGA 硬件平台,利用OpenGL ES 开发出插齿加工的运动轨迹监控和跟随误差监测模块。首先,对编程环境进行配置,并对Open-GL ES 进行初始化操作,以满足开发需求;然后建立图形坐标系并读取坐标值进行仿真,实现插齿加工的刀具运动轨迹监控;最后建立示波器模型,并读取各轴跟随误差值进行仿真监测。通过程序的执行即可实现插削加工的仿真。实验表明,加工轨迹的实时监控仿真显示对防止工件的过切、少切和错切有着较好的现实意义;跟随误差的监测仿真对掌握误差变化,选择合适的控制参数具有较好的指导意义。
[1]徐建国,张友良,张谞,等.加工过程的可视化仿真[J].中国机械工程,2005,17(12):1265-1269.
[2]侯磊,王培俊,李国良,等.基于OpenGL 与VC++的虚拟数控车床加工仿真研究[J].机械工程与自动化,2011,167(4):4-6,10.
[3]蒋勇敏,许明恒.数控加工轨迹运动控制建模及仿真研究[J].中国机械工程,2006,17(21):2220-2224.
[4]Aaftab Munshi,Dan Ginsburg,Dave Shreiner.OpenGL ES 2.0 programming guide[M].Stoughton:The United States on Recycled Paper,2008.
[5]刘俊,唐善斌,刘洁,等.基于OpenGL ES 的嵌入式数控雕刻系统加工仿真设计[J].制造技术与机床,2011:67-69
[6]Han Jiang,Tian Xiao qing,Li Fu gen,et al.Key technologies of embedded gear machining CNC system[C].The 8th ASME 2013 Manufacturing Science and Engineering Conference(MSEC2013),Madison,Wisconsin.
[7]段业广,韩江,田晓青,等.基于WinCE 的数控插齿系统多线程设计[J].组合机床及自动化加工技术,2013(7):54-57.