王婷,李欢
(1.武昌工学院智能制造学院,湖北武汉430070;2.湖南中大创远数控装备有限公司研发部,湖南长沙 410199)
数控裁床作为服装加工的重要生产设备,其性能决定了服装制品的生产质量和生产效率[1]。而自动化裁剪系统是数控裁床实现自动加工的核心,直接影响设备的使用性能。目前国外著名的服装自动化裁剪系统有美国格柏(Gerber)AccuMark 系统,加拿大派特(PAD)PAD System系统和法国力克(Lectra)Modaris系统等,国外厂商的产品性能普遍较为优良,并且功能比较完善[2]。但此类系统核心技术均掌握在西方发达国家手中,显然不利于国内服装企业长远发展,所以国内学者和相关企业也进行了相关研究。肖宇明皓[3]提出了一种二维高性能圆弧插补算法。史伟民等[4]提出了基于模拟退火蚁群混合算法的裁床样片切割路径优化方法。马虎亮等[5]提出了圆弧-线段一阶混合曲线及其插补算法。戈立远控股有限公司设计开发了服装CAD软件系统,经纬公司开发了一套针对箱包的CAD软件系统[6]。就目前国内研究现状而言,对数控裁床系统的理论插补算法以及对CAD系统的研究较多,但针对集设计与制造一体化的数控裁床生产问题解决方案的研究较少。
因此,本文作者设计一套集设计与制造为一体的数控裁床加工系统。考虑数控裁床的运动速度控制和加工轨迹插补算法将直接影响加工效率和加工精度[7],在系统开发时,将上述两点作为研究要点。关于运动控制问题,根据设计的CNC加工数据生成特点,通过大量试验掌握数控裁床运动规律,制定各段轨迹的运行规则,有效提高加工效率和运动精度。关于插补问题,提出将插补算法和数据栈相结合的方法,经实践进行检验,实际输出的轮廓轨迹能够按照理论轨迹准确进行。
图1 系统运行流程
图1所示为所设计的数控裁床加工系统运行流程。目前主流绘图软件均支持惠普HPGL协议格式文件的数据输出,HPGL图形文件是为绘制绘图仪产品而建立的一套指令系统,其中PLT拓展名最为常用,此类型格式输出的数据主要以坐标点的方式出现[8-9],本文作者设计的系统就选择此类型数据进行处理。在图1流程图中共有两条主线:一条主线为利用C++语言的类特性,通过设计CCurve类,实现解析PLT文件里的字符数据,并基于微软基础类库(Microsoft Foundation Classes,MFC)平台,实现CCurve模型的坐标点轨迹绘制;另一条主线为根据CCurve中模型数据,生成CNC加工数据以及插补数据,通过仿真以及实际加工迭代优化,最终得到理想加工效果。
根据PLT数据特性抽象出数控裁床系统走刀使用的数据模型,利用C++类特性,将数据转化为坐标点数据及曲线属性集合,形成设计的CCurve类,最终实现PLT文件解析并生成曲线数据模型。
基于Visual Studio 2013的MFC开发Windows桌面应用程序SpCutter。该系统实现图像显示、图层转换、文本添加、旋转、移动和删除等功能。文中重点阐述图像显示的实现原理。
基于MFC平台的CView基类实现图形绘制。CView基类为用户定义的视图类提供基本功能[10],设计派生类GmCutterView。在GmCutterView类中重写父类(CView)的纯虚函数OnDraw,在OnDraw中使用CDC的成员方法MoveTo及LineTo实现对CCurve模型的坐标点轨迹(m_pointList)绘制。其中关键代码如下:
INT_PTR nSize = m_pointList.GetSize();
if(nSize <= 0) return;
pDC->MoveTo(m_pointList.GetAt(0));
if (nSize == 1){
pDC->LineTo(m_pointList.GetAt(0));
}else{
int i;
for (i = 1;i pDC->LineTo(m_pointList.GetAt(i)); } } 为验证系统实际使用效果,特别是为验证系统处理复杂图形能力,将如图2(a)所示的PLT图形文件载入系统平台。图2(a)为系统加载PLT模型效果图,可以看出图形文件可完整、清晰地显示。为进一步验证图形轮廓构成,将该马头外轮廓进行局部放大,如图2(b)所示,可清晰地看出外轮廓是大量黑色小点依次连线而形成,这些黑色小点就是通过解析PLT图形文件转换而成的坐标点数据,组成图形轮廓的直线和曲线就是由相连坐标点构成的。 图2 图形显示系统测试图 CNC加工数据的生成是完成数控裁床加工的关键核心[11-12]。在数控裁床实际加工过程中,理想状态为实际加工轨迹沿着图像显示轮廓进行加工。而数控裁床加工轨迹形成是靠笔绘和切割等工序实现的,因此在加工过程中还需进行刀具转换。 为满足数控裁床加工需求,通过设计的CCurve类,生成CNC加工数据。CCurve类的主要成员变量信息如表1所示。 表1 CCurve类成员变量 在表1中,CCurve类成员变量m_pointList表示解析PLT数据转化成的曲线坐标点集,成员变量m_nPenNumInPlt表示原始PLT图形数据包含的笔号,成员变量m_nCurveType表示实际加工笔号。其中,原始PLT笔号与加工笔号存在对应关系,即原始PLT笔号等于0或者1时,加工刀号为笔绘;原始PLT笔号大于1时,加工刀号为切割。 图3 轨迹生成的图形解释 所设计的数控裁床加工轨迹生成原理为根据CCurve类坐标点集m_pointList中当前点距下一点在x轴和y轴方向上需要的相对步进量,以及当前段矢量相对上一段矢量的角度变化量,计算出每段线段对应的CNC加工数据相关参数。图3所示为CNC加工数据生成原理的几何图形解释。 图3中线段分别由3个相邻坐标点P0(x0,y0)、P1(x1,y1)和P2(x2,y2)连线组成。根据加工轨迹生成原理,假设点P0为当前点,点P1为下一点,则在x轴方向相对步进量为两点x轴坐标之差,同理,在y轴方向相对步进量为两点y轴坐标之差。而点P2为P1下一点,则其两轴方向相对步进量计算方法也和点P0到点P1计算方法保持一致。 图3中各矢量线段与x轴夹角也是关键参数,在第3.2节的运动速度控制中会重点使用该参数。以图3中矢量线段为例,P0P1与x轴夹角θ0计算方法如式(1)所示,P1P2与x轴夹角θ1计算方法如式(2)所示,则P1P2相对于P0P1的转角变化量如式(3)所示。需要特别指出的是,式(1)和式(2)适用于两点之间x坐标不相等时。当两点的x坐标相等时,判定为该矢量线段与x轴垂直。 (1) (2) Δθ=θ1-θ0 (3) 根据上述CNC加工数据生成原理,并结合运动速度控制关键因素,设计CNC系统数据结构成员变量如表2所示。 表2 CNC数据结构成员变量 由图3可知,数控裁床加工的实际矢量轨迹为连续多个矢量线段组成的曲线。为保证加工精度,在加工过程中需要在各矢量线段之间进行加减速处理,从而保持合理加工速度以满足数控裁床的加工精度与效率需求。 传统的矢量线段加减速处理方法是以每一段矢量线段为研究对象,并使得每段的起始和末尾的速度都为0,这势必造成在加工过程中电动机的启停频繁、进给速度缓慢以及效率低下。如何根据各矢量线段之间的变化情况对速度进行加减速控制,是提高数控裁床加工性能的重要研究方向。 本文作者根据各矢量线段均为直线这一特性,提出一种直线加减速控制方法。经过在数控裁床平台的反复测试验证,发现只有控制好前一段矢量线段完成加工时的结束速度才不会影响下一段矢量的控制精度,否则就会出现加工轨迹抖动的情况。而轨迹抖动情况会随着矢量线段转角变化量的增大而增多。因此,研究转角变化量的变化和各矢量线段结束速度之间的关系有积极意义。 通过大量试验,发现矢量线段的转角变化量Δθ对应的最大结束速度差别很大,并且在一定范围内的转角变化量Δθ对应最大结束速度趋同。表3所示为试验所得的速度控制列表,表中速度级别对应的具体速度适用于STM32F103单片机通过定时器输出脉冲给雷赛专用驱动器M542,并控制57HS04型步进电动机。此表可为各矢量线段之间运动速度控制提供重要参考。 表3 速度控制 本文作者提出的直线加减速数控裁床运动控制方法,由于在不同矢量线段衔接过程中,并没有将所有线段的结束速度降为0,而是根据速度控制列表进行分类处理,在保证加工精度的基础上提高了加工效率。 插补算法是数控裁床系统的关键核心[13]。插补运算具有实时性,每个插补中间点的计算精度影响系统的控制精度,中间点的计算速度又影响着系统的控制速度[14-15]。本文作者设计一种将数控裁床插补算法与数据栈相结合的方式,进一步提高数控裁床的加工效率。 图4所示为单段矢量线段的插补算法示意。该示意图表示微观上的两点之间的微粒线段,依据矢量线段在两轴方向的长短分别命名为长轴和短轴。 图4 插补算法示意 在STM32F103单片机控制步进电动机工作时,每一步均需要判定应该走长轴还是两轴同时走斜对角。具体的判定方法:设sAxisL和sAxisS分别为长轴和短轴的步进量行程,整段矢量线段的倾角为A,则tanA=sAxisS/sAxisL。i、j分别为长轴和短轴已走的步数,当前实际已走矢量的角度θ满足tanθ=j/i。当tanθ F=i×sAxisS-j×sAxisL (4) 当F>0时,沿两轴斜对角运动;当F≤0时,沿长轴运动。实现该插补算法的核心代码如下所示: j = 0; for(i = 0;i if(i*AxisS - j*AxisL >0){ StepXY;} else{StepL;j++;} } 通过插补运算得到的加工数据最终需要电动机具体执行,而如何高效地将插补数据转变为插补运动是影响加工效率的关键。在上述插补运算过程中,插补运算与插补运动是相互独立进行的,且运算时会产生极大的数据量。因此,设计一种数据栈用来处理插补数据。该数据栈的主要数据读写逻辑:当栈空间有剩余时往栈内存写数据,栈剩余空间减小,直至空间为0;当插补定时器中断从栈内取插补数据,栈剩余空间增大,栈内又可以补充插补数据。按照这种运行机制,依靠在栈内对插补数据进行不断的存和取,保证电动机工作过程不间断接收插补数据,进一步提高加工效率。 数控裁床加工仿真是加工前的必要环节,能有效检验加工程序的合理性。所设计的仿真系统依然利用MFC平台 CView的Ondraw来绘制,使用CCurve类坐标点数据,将生成的CNC的加工数据用于几何仿真。与第2节所述PLT图形文件显示的内容相比较,其区别在于矢量线段的长短轴是利用计算机图形学原理,将两坐标点之间的线段离散化,变为沿着长短轴的各个小点,而仿真过程就是将各点依次描绘出来。图5所示为仿真系统的测试图,该图形的内外轮廓均需要进行绘图工序,而外轮廓还需在绘图工序完成后进行切割工序。 图5 仿真系统功能验证 图5(a)表示加载的PLT图形文件,可见图形仿真前原始状态;图5(b)表示在仿真模块下,对图形文件的连续曲线的外轮廓进行绘图工序仿真。图形文件外轮廓变为绿色(代表绘图工序),且可见仿真轨迹与显示外轮廓重合;图5(c)表示对图形文件分散曲线的内轮廓进行绘图工序仿真,依然可见仿真轨迹与显示内轮廓重合;图5(d)表示对外轮廓进行切割加工工序的仿真,可见仿真轨迹与显示外轮廓重合,且外轮廓颜色由绿色变为红色(代表切割工序)。 通过试验,验证了所设计的仿真模块对加载图形的连续、分散轮廓以及工序变换等均能顺利仿真完成。 为验证整套数控裁床系统实际生产的可行性,进行完整的实例验证。选用真实生产中上衣面领作为测试对象。图6(a)所示为数控裁床试验平台上的硬件执行部分,图6(b)所示为导入上衣面领PLT图形文件显示效果,图6(c)所示为验证CNC加工数据的仿真结果,图6(d)所示为在试验平台实际加工完成的样品。本文作者完整地验证了样品在系统平台上的图形显示、仿真加工和实际加工等环节,各环节均与理论设计保持一致,达到了预期效果。 图6 实例验证 本文作者以数控裁床的控制系统为研究对象,设计了一整套数控裁床加工系统方案。文中的创新之处有两点:(1)在提出的数控裁床CNC加工数据生成方法基础上,通过试验制定加工轨迹的运行规则;(2)设计了将加工插补算法与数据栈相结合的应用方法,并基于MFC和STM32等平台开发了软硬件系统,最终使理论方法得以实施。通过样片应用实例,验证了该数控裁床系统设计的可行性与准确性,满足了生产的实际需要。3 数控裁床运动控制
3.1 CNC加工数据生成方法
3.2 速度控制列表
3.3 插补算法的应用
4 加工验证
4.1 仿真加工验证
4.2 实例加工验证
5 结语