随着现代工业技术的发展,尤其是应用于数控领域的工控机和伺服系统的技术水平的进步,数控切割技术在制造业受到了广泛的关注。数控切割通过先进的计算机编程实现零件的自动切割,不但操作简单,维修方便,保证切割产品的质量,减轻人们的劳动,而且可以大幅度降低切割成本,缩短生产周期,提高系统可靠性。因此,数控切割技术广泛适用于机械制造行业。与国外相比,我国的技术水平还有很大的差距,许多切割行业的控制设备都需要进口,成本较高。本文介绍了一种在AutoCAD2002下开发的基于IPC机PCI总线的步进电机或数字式伺服电机的控制系统,其切割精度、切割速度以及可靠性较好,而且价格低廉,在切割实践中也达到了预期的切割效果。
一、数控系统硬件设计
1. MPC02运动控制卡简介
MPC02运动控制卡是基于PC机PCI总线的步进电机或数字式伺服电机的上位控制单元,适用范围广,卡上无需进行任何跳线设置,所有资源自动配置,在Windows98及Windows2000操作系统中支持即插即用,同时在软件方面提供了丰富的运动控制函数库。MPC02控制卡具有开放式结构、使用简便、功能丰富、可靠性高等特性,主要适用于数字式交流伺服系统或闭环的步进电机控制系统。其结构示意图如图1所示。 (图片)
图1 MPC02结构示意图每块MPC02卡可控制3轴步进电机或数字式伺服电机,并支持多卡共用;每轴均可输出脉冲和方向信号,以控制电机的运转;同时,可外接原点、减速、限位等开关信号,以实现回原点、保护等功能,这些开关信号由MPC02卡自动检测并做出反应。另外,MPC02卡还提供了适用于伺服系统的伺服使能和偏差清零信号接口,以及供用户使用的通用I/O接口。
2. 系统的硬件结构
组成该通用式热切割数控系统的硬件框图如图2所示,主要包括工业PC机、运动控制卡和伺服系统。该系统采用工业PC机为基础,在工控机主板PCI扩展槽上插入MPC02运动控制卡,构成主从式控制结构:工业PC机是该系统的核心,主要实现系统的管理功能;MPC02卡一方面与伺服系统相连,实现对切割运动轨迹的控制,另一方面与控制面板及控制气源的继电器相连,实现加工过程中各种功能。另外,电源板、伺服驱动和电机、继电器、电磁阀是系统的执行机构。
在实际切割过程中,割具的起始位置用主控界面很难精确调整,同时也为了方便操作,在该系统设计中带有有线手控盒,它可以实现主控界面的所有控制操作如运行、暂停、后退、继续、割具移动、点火、气阀控制等,手控盒用89C2051单片机开发,采用7芯电缆与运动控制卡连接。(图片)
图2 数控系统硬件框图二、控制系统的软件开发及其功能实现
1. 数控火焰切割加工工艺
数控火焰切割不同于其它金属机加工,受切割工艺特点所限,在切割的过程中会存在钢板未割穿的现象,这就要求控制系统必须做到切割过程中的暂停、后退、前进、继续和无级调速的功能。
2. 人机界面及其功能介绍
该系统利用AutoCAD2002作为开发平台,采用Visual C++6.0作为开发工具,进行AutoCAD的二次开发。由于AutoCAD2002的开放性允许我们开发出自己的主界面,只需修改AutoCAD2002安装目录的Support子目录下的Acad.mnu菜单文件即可修改出友好的主界面,修改后的主界面如图3所示。(图片)
图3 系统主界面用户通过全中文的人性化操作界面调用相应功能,完成各种操作:包括零件图形预览;加工过程中的暂停、后退、前进、继续及沿原轨迹返回、断点保存和恢复、调速;刀具的上升、下降等。
3. 重要功能模块的实现
(1)图形元素的分类
根据切割工艺的特殊性,将所有的图形元素给以分类:引入线、起步线、内轮廓、外轮廓、空移线五类,相应的创建5个图层以区分不同类型的图形元素。然后创建一个浏览器,遍历当前数据库的所有实体。
AcDbBlockTableRecordIterator *pIterator;
pBlockTableRecord->newIterator(pIterator);
AcDbObjectIdArray yinru_array;//存放引入线的ID
AcDbObjectIdArray qibu_array;//存放起步层ID
AcDbObjectIdArray kongyi_array;//存放空移层ID
AcDbObjectIdArray in_array;//存放内轮廓ID
AcDbObjectIdArray out_array;//存放外轮廓ID
//遍历当前数据库所有的实体
for(pIterator->start();!pIterator->done();pIterator->step())
{
AcDbEntity *pEntity;
pIterator->getEntity(pEntity,AcDb::kForRead);
if(strcmp(pEntity->layer(),"引入线")==0)
{yinru_array.append(pEntity->objectId());}
else if(strcmp(pEntity->layer(),"起步")==0)
{qibu_array.append(pEntity->objectId());}
else if(strcmp(pEntity->layer(),"内轮廓")==0)
{in_array.append(pEntity->objectId());}
else if(strcmp(pEntity->layer(),"外轮廓")==0)
{out_array.append(pEntity->objectId());}
else if(strcmp(pEntity->layer(),"空移")==0)
{kongyi_array.append(pEntity->objectId());}
pEntity->close();
}
至此,所有图形元素的句柄被分类存放在5个不同的句柄数组中。
(2)图形元素的排序
所有要加工的图形元素已经保存在句柄数组中,必须把所有元素按照加工顺序加以排序才能满足后续的切割、暂停、后退、前进、继续等功能。为了满足此要求定义数据结构如下:
typedef union entity_special_data
{
struct line_data *line;
struct circle_data *circle;
struct arc_data *arc;
}Specialpt;
typedef struct common_structure_data
{
char id[STRLEN];
char layer[STRLEN]; /*存储层名字符串*/
int close;
char edge[STRLEN];
union entity_special_data data;
struct common_structure_data *next,*previous;
}EntityData;
typedef struct line_data
{
double x1,y1,z1;
double x2,y2,z2;
}LINE;
typedef struct circle_data
{
double xc,yc,zc;
double radius;
//long double pmode;
}CIRCLE;
/*ARC (圆弧)*/
typedef struct arc_data
{
double xc,yc,zc;
double radius;
double ang1,ang2;
}ARC;
该数据结构模仿AutoCAD2002数据库存储实体数据的数据结构,方便操作。排序的程序流程图如图4所示。(图片)
图4 排序程序流程图在排序过程中,每次排序都记录下图形元素的终点,最关键的一点是寻找各图形元素的起点或终点,因为图形的绘制并非按照切割轨迹绘制,因此判断各图形元素是否顺序相连需要判断当前元素的起点或终点是否与上一图形元素的终点相连,为此首先判断当前图形元素的种类,我们可以调用AcDbEntity类的isKindOf()函数判断当前图形元素的种类以做后继处理。经过排序后将获得EntityData类双向链表的头指针,后续的切割、暂停、后退、前进、继续等功能将迎刃而解。
三、结束语
本文介绍了一种用AutoCAD2002为软件平台的数控火焰切割机控制系统,该系统无需编程,操作简单,真正实现了CAD/CAM一体化,另外,设计了有线手控盒,方便了操作,在切割试验中达到了预期切割效果,系统最大空载速度为20m/min,控制精度为0.005mm/p,采用厚为80mm 的45 # 钢板切割材料,切割表面粗糙度为Ra25,达到了切割工艺的要求。目前,该数控火焰切割系统能够满足现代工业生产的要求,已在湖南某企业中投入生产应用,客户反应很好。
文章来源:《CADCAM与制造业信息化》
8/4/2006
|