方文湛 吕彦明 沈子恒
(江南大学江苏省食品先进制造装备技术重点实验室 无锡 214122)
在航空航天领域,航空叶片作为航空发动机的重要零件,被形象地比喻成工业皇冠上的掌上明珠[1]。叶片形状复杂,其表面是一种复杂曲面,厚度薄,工艺性差,并且长期在高温、高压的恶劣工况下高速运动[2],这也对叶片的质量提出了较高的要求。叶片的生产经历了纯机加工到热模锻再到精锻的发展过程[3]。
近年来,国内外学者对锻造成形工艺进行了大量研究。D.S.Goryainv 等[4]基于涡轮叶片精锻模具的复杂性,提出了涡轮叶片精锻模具的设计准则和关键问题。Zbigniew等[5]用有限元法对精锻模具的磨损情况进行了分析,得出坯料与模具的接触时间与模具的磨损量成正相关。杨程[6]等通过实验发现减少接触高度可以降低模芯应力,从而提高爪极预锻模具的寿命。龙朋[7]等研究叶片径向锻坯成型过程,发现适当提高相对压下率能提高锻造成形精度。孙红镱[8]等分析了航空铝合金构件不同形状预制坯对填充、载荷等的影响。
在压力机上生产的复杂类锻件,为保证成型质量,需采用多次变形工步,使毛坯逐渐接近锻件形状[9]。而预锻作为其中一个重要过渡阶段,对成形质量有十分大的影响。在叶片预锻体设计过程中,最为复杂的就是生成叶片预锻型线,因此提高预锻型线设计效率,对提高产品设计效率有着重要意义。
UG 自身的功能虽然十分强大,但不论是何种先进CAD 软件,都难以满足各行各业形形色色的产品设计需求。为更好满足多方面的设计需求,UG 为用户提供了UG/Open 二次开发模块,主要由UG/Open Grip、UG/Open API、UG/Open UIStyle 以及UG/Open MenuScript 等四大功能模块组成[10]。其中UG/Open API 是面向高级语言的二次开发编程接口,支持包括C/C++、C#、JAVA 等在内的多种语言,API模块功能十分强大,拥有2000多个函数库,该方法对开发人员的编程水平要求较高。
在预锻件设计过程中,预锻体叶身曲面是通过多个截面的预锻型线生成的,因此预锻型线的快速生成是预锻件生成的基础。无锡某叶片厂叶片截面预锻型线生成过程如下:
1)作某档叶型中弧线;
2)作该档型线最大内切圆;3)根据终锻变形量,计算预锻型线厚度增量;4)分割终锻型线中弧线,将中弧线分为进汽侧出气侧,结果如图1(a)所示;
图1 预锻型线设计流程示意图
5)将上步所得的进、出汽侧两段中弧线等长分段,获得每段线段的终点;
6)以每段线端点为圆心作内切圆,做出内背弧半径连线,结果如图1(b)所示;
7)依据第三步计算方法,计算进出汽侧每个内切圆半径增量,各个直线端点即为预锻型线特征点;
8)用样条串联各特征点,形成最终预锻型线。最后结果如图1(c)所示。
预锻型线设计自动化软件所需的功能有:
1)中弧线自动生成;
2)最大内切圆的定位与进出汽边划分;
3)中弧线进出汽边两侧自动划分为若干段;
4)终锻变形量的交互输入;
5)设计过程中,中弧线局部调整功能。
根据预锻型线设计流程,以及对生成的型线局部调整的需求,通过UG 自带的块UI样式编辑器生成用户交互界面,并使用Visual Studio编译器,使用C++进行预锻型线自动生成模块的开发,最后生成可调用的dll程序,整个流程如图2所示。
图2 功能模块示意图
叶型中弧线为叶片型线内切圆圆心的连线,在前后缘圆心处按切线方向延伸到与前后缘相交的线。目前求解叶片中弧线的方法主要有内切圆法和等距线法两种求解方式。
内切圆法指的是在进行曲线拟合时,可以得出各节点的坐标和拟合曲线在此点的一阶导数,以此为基础,使用两条相切的圆弧逼近拟合样条曲线,最后可得一系列弧,由此将求内切圆的问题转化为过节点处做叶盆和叶背相应节点处两圆弧的公切圆[11~12]。
但对于利用内切圆法求解曲线模型的内切圆来讲,计算量大且使用二次开发实现较为困难,故从中弧线的定义出发,探索一条新的思路。内切圆即同时与叶背曲线和叶盆曲线相切,那么其内切圆圆心到两条曲线的交点即切点的距离应该相等,基于此思想,张力宁等[13]提出等距离曲线偏置的方法求中弧线,使用不同的偏置距离偏置曲线,使得叶背和叶盆曲线从没有交点到交点增加,一直到等距线没有交点为止,最后对所求得的交点进行筛选、排序和曲线插值等,从而求得中弧线。等距偏置法求中弧线的过程如图3所示。
图3 等距偏置法生成中弧线过程
中弧线自动生成功能依据等距偏置法进行开发,因此首先需同时将叶盆叶背曲线相向偏置相同距离,并获取两条曲线的交点,并重复以上步骤,生成若干特征点,连接特征点,产生一条光顺的样条曲线,以此作为叶片中弧线。在UG/Open API 提供的函数中,UF_CURVE_create_offset_curve 函数可以用于生成某条曲线的偏置曲线,首先根据该函数所要求的参数列表,输入需偏置的曲线的标签值与偏置的距离,即可实现曲线的偏置。同时可以通过UF_MODL_intersect_curve_to_curve 即可快速判断两条偏置曲线交点个数以及交点坐标。结合以上两个函数,即可实现本功能的开发。
根据偏置的距离r的不同,偏置得到的叶背叶盆曲线的交点个数也不尽相同:
1)当r从零开始逐渐增加,值偏小时,曲线的交点为零;
2)当r=r+Δ 时,利用等步长或者变步长的方式增加r的取值。随着迭代次数的增加,等距线的交点也随着增加,根据叶背叶盆曲线的特性分析可以得出,其交点的个数基本为1、2和3,最高不会超过3个交点;
3)当r增大到一定范围,也就是前后缘的曲率半径,偏置的等距线的相互交点个数会出现大于3个的现象。最为理想的状态是两条曲线的交点交于前后缘的某个圆心处,但是由于某些因素的影响,例如曲线光顺等会造成交点个数过多的现象,此时的交点由于不确定性,所以不保留这些交点;
4)当r增大到等距线超出截面曲线的范围时,交点应该为零,或者其交点的坐标值特别异常,很明显这些点不属于中弧线上的点。
由此可以确定中弧线生成中,叶盆叶背曲线偏置结束的条件为若本次产生交点数比上一次产生交点结果少,那说明以后的偏置不会再有交点,即可结束曲线偏置,实现逻辑如图4所示,图中fast表示本次偏置交点个数,slow表示上次偏置交点个数,r表示偏置距离。
图4 中弧线自动生成模块逻辑图
根据以上代码运行结果可产生一系列内切圆圆心的点集,结果如图5所示。
图5 生成内切圆圆心点集
最后调UF_CURVE_create_spline_thru_pts 函数即可根据以上点集创建光顺样条曲线,从而实现叶片中弧线的创建,最后结果如图6所示。
图6 根据内切圆圆心点集创建中弧线
在叶片生产加工过程中,通过获取最大厚度圆的信息可以确定叶型截面的最大厚度,用于保证叶片的厚度[14],同时最大厚度圆也是中弧线划分进气侧出气侧的划分依据。
根据中弧线的定义,可以得知最大内切圆圆心必定在中弧线上,在曲线偏置求交点的过程中,程序最后结束时只有两种情况,即两条偏置曲线无交点或者只有一个交点,如果有且仅有一个交点,说明这就是最大厚度圆圆心,如果无交点,说明最大厚度圆圆心在上一次的两个交点之间。同时在软件设计时,为了提高搜索的效率,我们需要将叶型曲线生成过程中,各交点所代表的内切圆半径记录下来,在实际生产中,由于叶片截面与xoy平面平行,同时中弧线满足y=f(x)的形式,因此采用了C++标准模板库中的map 容器用于收集交点与其所代表的内切圆半径的信息。
map 是C++中的一种关联容器,其中存储的数据均按照key-value 的键值对形式存放,键值唯一,并且遍历时会按照key 值的大小顺序由小到大进行遍历[15]。在叶型曲线偏置时,如果存在交点,便将交点的x坐标以及此时的曲线偏置距离存入到map 中,最后曲线偏置结束,重新遍历一遍容器获取内切圆半径最大的交点信息。
当最后交点为两个时,采用分而治之的思路解决两点间最大内切圆问题,即将求解中弧线在两点内的最大厚度圆的问题,转化为求解这个区间内若干小区间最大厚度圆并比较得最优解得问题。将Q(x1,x2)记为求解两点间最大内切圆问题,若x1与x2之间的距离未达到足够小,则取两点之间的中点m1,该问题可以分解为求解x1到m1间与m1到x2两个区间内最大内切圆的求解的过程,其中两个子问题又可以继续往下划分,直至两点间的距离足够小才可进行求解。问题求解后,即可进行问题的合并,将R(x1,m2)记作x1到m1之间的最大内切圆的解,问题的合并即比较两个子解间问题的最优解,最优解作为该问题的解,最后合并所有子问题,求得最终的结果。分治算法求解思路如图7所示。
图7 根据内切圆圆心点集创建中弧线
当内切圆位置以及半径确定之后,调用NXOpen::Features::DivideCurveBuilder 类,以中弧线为输入曲线,最大厚度圆圆心为分割点,实现曲线的分割。从而获取最大内切圆位置以及半径。最后运行结果如图8所示。
图8 确定最大厚度圆并分割中弧线
在完成中弧线的分割后,须将中弧线进气侧,出气侧进行等长的划分,并以这些等分点为圆心,分别作内切圆。
首先,通过UF_CURVE_ask_arc_ length 函数,输入两条曲线的标签值,并采用公制单位,求得两段曲线的长度。一般情况下,每段曲线长度取10mm,计算得每条曲线应分多少段。最后调用UF_MODL_ask_curve_props 函数,该函数可以求得某条曲线上,某一参数(即曲线起点到该点与曲线总长的比值)所在的点的坐标等信息。
采用以上方法,对进气侧、出气侧中弧线进行遍历,实现自动等长分段功能,并作出以该点为圆心的内切圆。最后实现效果如图9 所示,图中中弧线上的圆心即为等分点。
图9 进出汽两侧中弧线自动划分
本文最后采取以上方法作为核心模块的算法,以UG10.0软件为测试环境,采用Visual Studio 2013作为编译器,使用C++语言进行开发。在UG 软件自带的块UI 样式编辑器中设计出自动化设计软件的人机交互界面,界面最终效果如图10所示。
图10 预锻型线自动设计软件交互界面
打开软件后,首先选取叶背曲线,叶盆曲线,作为中弧线等距偏置法生成的输入,生成中弧线后,选择中弧线,点击第二个按钮,程序自动计算最大厚度圆的位置以及半径,并分割中弧线。该界面满足调整进出汽侧中弧线长度的要求,并可以手动加密分段,并且支持终锻变形量的交互。
中弧线分割完之后,由于不同材料,不同结构的叶片预锻型线弦宽要求不同,所以需预留调整进、出汽两侧中弧线长度的窗口,方法为由两侧向内缩减长度。确定调整策略后,程序自动计算进、出汽两侧中弧线分段数并显示在界面上,界面变化如图11所示。
图11 交互界面动态变化
最后,根据实际需求,输入终端变形量,分别生成延长线以及预锻型线,点击确定,获得最终的结果,在MV030GW 型叶片的叶身某截面程序执行结果如图12所示。
图12 预锻型线自动设计结果
该预锻型线若采用人工方式需花费约两小时,且由于圆心较为密集,特别容易出错,而采用自动生成软件只需要一分多钟,极大提高了预锻型线生成效率,提高预锻模体的设计效率。
本文基于无锡某叶片厂预锻线生成流程,在该叶片厂常用的UG10.0 软件中使用二次开发技术开发预锻型线自动设计软件,主要内容有:
1)根据叶片中弧线定义,采用等距偏置法作为理论基础,设计中弧线自动生成模块实现了中弧线的准确快速生成。
2)将存储在map 中的交点-内切圆半径信息进行遍历,实现最大厚度圆的粗略定位,并采取分治法,将最大厚度圆圆心可能在的区域分为若干子区域,比较不同区域内的内切圆半径,实现最大厚度圆圆心定位与半径值。
3)在UG 块UI 样式编辑器中设计友好的用户交互界面,用户可在其中选择程序运行所需的曲线以及终端变形量等参数,并提供了动态调整选项,用于满足不同产品设计的需求。