数控编程体系的总体结构与功能
在cim s系统中,数控加工是产品制造自动化最重要的环节,其关键技术数控自动编程技术是能否真正实现cims的决定因素应用数控自动编程技术能有效提高机床生产效率,保证加工精度稳定和一致性目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式cnc高档数控系统,国内一些单位也在进行新一代基于工业个人计算机( industrial personal computer,简称ipc)数控系统的研究与开发该类数控软件系统将更具有开放性和易扩展升级的特点本文介绍了作者在pentium及window 98操作平台,以autocad r14为开发平台,采用可视化程序设计语言visual c 6. 0,设计开发的适于pc机数控系统上使用的数控图形自动编程系统1系统的总体结构与功能本系统首先读取由autocad绘制的加工图形,然后进行工艺处理和加工过程动态模拟,最后自动生成数控加工程序其系统的总体框架结构它主要包括图形数据信息输入、剪板机加工工艺设计、nc加工代码生成、动态仿真及输出nc程序五大模块( 1)图形数据输入设计人员在autocad中进行实体建模后,将图形信息存储在dxf文件中读模块读取dxf文件为自动编程系统准备必要的图形数据,然后还要对采集到的数据进行转换( 2)加工工艺设计确定实际加工路线,指定对刀点,确定走刀路线,设置刀偏值及方向,输入各种辅助功能m指令以及f、s、t指令等( 3)生成nc加工代码工艺设计完毕后,根据iso数控代码格式便可将图形几何信息和工艺干预信息转换成iso标准数控加工程序代码( 4)动态仿真采用动态的真实感图形,模拟数控加工全过程,能判别加工路径是否合理,检测刀具的碰撞、干涉,优化加工参数,降低材料消耗和生产成本,最大限度的发挥数控设备的利用率( 5)输出nc程序生成的nc程序可拷贝、打印输出或直接与数控设备实现通讯2系统功能模块设计下面以图形数据输入模块为例说明其设计的过程2. 1实体数据结构本系统二维模块的数据结构采用环-点双向链表结构首先,本系统引入环( loop)的概念现以平面轮廓类零件为例说明,其可简化的用二维图形来表示,对其进行加工时(冲孔或落料) ,在图形上表现为封闭的(把这种环称做闭环)当然,在数控系统中,有时候只需要加工闭环的某一部分(则可称做开环)无论是闭环还是开环,都是由直线、圆弧、圆及非圆曲线首尾相连构成的图形的全部或一部分本系统的数据结构直接关系到图元的显示,实体关系的建立等内容,基本的类结构如下:二维基本实体基类:class entity : public cobject { public:enum { line,高斯计 circle, arc, face2d, feature, cylinder, } ;/ /实体的类型列举enum { solidln= 0, thinln, dashln, dot ln};/ /实体的线型列举int flag_usedornot;/ /找内环后或外环时,该元素是否用过int iflag1, itype, ilinestyle;/ /图素性质标志,实体的类型,线型entity pmate;/ /二维对应原始图素coblist sectpoilist, ltchild;/ /图素交点链表,图素子线链表double dst anang, detanang;/ /起始点,终点切矢point3d startp, endp; } ;/ /实体的起点,终点二维基本实体类:二维基本实体类指的是点、线段、圆弧、圆在它们的基类中已经包含了大部分的属性,接下来表述的这些基本实体的类就是各自的具有特性的成分
点、线类的实体特征与基类完全相同,在此不需多述圆、圆弧类实体特征结构如下:class circle : public entity { public:/ /圆类point3d center;/ /圆心double radius;/ /半径vector3d normal; };/ /圆的矢量方向class carc : public entity { public :/ /圆弧类point3d center;/ /圆弧的圆心double radius;/ /圆弧的半径vector3d normal;/ /圆弧的方向矢量int flag_direction;/ /圆弧的旋转方向,逆时针为1,顺时针为0 double dstarta, denda; };/ /圆弧的起点,终点2. 2 dxf文件读取程序设计当一幅零件图绘完后,可将其转存为dxf文件所以要做的工作就是要能从dxf文件中读取图形实体信息一个完整的dxf文件由标题段(header sect ion)、表段( tables section)、块段( blocks sect ion)以及实体段( ent ities section)和文件结尾所组成其中实体段是本系统所要处理的关键由于dxf文件包含了图形的全部信息,而且描述每个实体的组码很有规律,可以很方便地用visual c 6. 0来编写处理程序读取直线部分程序如下:line rawdrawing: readline( file fp) { / /从dxf文件中读取line的几何信息point3d startp, endp;/ /线的起点,终点int i; float v;
cstring layername;/ /层名char str<
点、线类的实体特征与基类完全相同,在此不需多述圆、圆弧类实体特征结构如下:class circle : public entity { public:/ /圆类point3d center;/ /圆心double radius;/ /半径vector3d normal; };/ /圆的矢量方向class carc : public entity { public :/ /圆弧类point3d center;/ /圆弧的圆心double radius;/ /圆弧的半径vector3d normal;/ /圆弧的方向矢量int flag_direction;/ /圆弧的旋转方向,逆时针为1,顺时针为0 double dstarta, denda; };/ /圆弧的起点,终点2. 2 dxf文件读取程序设计当一幅零件图绘完后,可将其转存为dxf文件所以要做的工作就是要能从dxf文件中读取图形实体信息一个完整的dxf文件由标题段(header sect ion)、表段( tables section)、块段( blocks sect ion)以及实体段( ent ities section)和文件结尾所组成其中实体段是本系统所要处理的关键由于dxf文件包含了图形的全部信息,而且描述每个实体的组码很有规律,可以很方便地用visual c 6. 0来编写处理程序读取直线部分程序如下:line rawdrawing: readline( file fp) { / /从dxf文件中读取line的几何信息point3d startp, endp;/ /线的起点,终点int i; float v;
cstring layername;/ /层名char str<