新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > MPC08运动控制卡在开放式钻床数控系统中的应用

MPC08运动控制卡在开放式钻床数控系统中的应用

作者:时间:2014-04-06来源:网络收藏

0 引言

在计算机技术飞速发展的今天,由传统的专用型封闭式系统向灵活的转变已成为一种必然趋势。与传统的封闭式相比,数控系统有以下优势:

可伸缩性,CNC系统的功能、规模(硬件或软件模块)可根据具体应用灵活增减;

可移植性,系统的功能软件与运行平台无关,能运行于不同供应商提供的硬件平台上;

可扩展性,开发者能有效地将自己的软件集成到NC系统中,形成自己的专用系统;

可互操作性,通过标准化接口,通信和交互机制,使不同功能模块获得相互操作能力,协调工作。

目前数控系统主要形式是基于PC的NC,即在PC的总线上插上具有NC功能的完成实时性要求较高的NC内核功能。本次课题基于步进机电有限公司的MPC08就是一款能满足数控系统功能要求,性价比高的通用,课题根据钻床的工艺在此基础上进行数控系统软件的研究。

1 系统总体结构

本系统数控钻床共有8个轴,分别为X,Y轴和Z1,Z2,Z3,Z4,Z5,Z6轴,其中X,Y轴控制平面两个方向的定位, Z1,Z2,Z3,Z4,Z5,Z6则控制下钻的进给量,XYZ可联动控制。加工时, 根据要加工工件上的孔坐标、孔直径、孔深等参数, 编好工件的加工文件, 系统按加工文件控制机床完成钻削加工。

为了对机床8个轴的进行控制,我们采用了MPC08运动控制器作为系统控制的内核,插在PC机的PCI插槽中。工业PC机作为主控计算机来完成与MPC08控制器的通讯以及上层系统操作、调度管理、故障诊断、参数输入等非实时性任务。

MPC08是一款开放式通用运动控制器,所有指令均为立即指令,适合于PCB钻床的高速度,定位准的点位运动,并具有足够的专用和通用的IO通道供机床控制使用,软件方面提供了丰富的运动控制函数,以供用户在Windows平台自主开发,构建所需要的数控系统。我们将MPC08插入PC的PCI插槽里,借助它完成整个系统的控制。

IO及反馈系统使用MPC08的专用和通用的输入和输出通道进行各种机床电器IO信号的连接与控制;驱动和伺服步进电机单元则是接收MPC08发出的脉冲及方向信号完成需要的运动。

变频器和主轴转动控制部分是利用PC机的串口进行和变频器的通讯,由此完成主轴转速的控制,此控制则是独立于MPC08之外。

2 软件结构设计

为了满足伸缩性,移植性,扩展性和互操作性的要求,软件采用了模块化设计的思想,利用VisualC++6.0开发工具在Windows2000操作系统上开发而成。软件总体分为两大部分,人机界面交互部分和系统控制部分。

1)人机界面 人机界面模块主要完成整个数控系统的状态显示和需求参数的输入,除此以外应该使界面友好,使用便捷。本程序设计借助了MFC库中CWnd类和CButton按钮类的强大功能,利用这两个类的成员函数以及类派生的子类构造了友好便捷的界面。界面包括有加工过程中重要参数的显示,主要功能按钮和加工图形的显示。其中参数显示有各轴的坐标,工作行程,下止点,刀具代号,直径,偏移以及加工的孔数记录,所在刀库的记录等;功能按钮有启动,回原点,回停车位,导入文件,刀具参数,刀具管理,加工参数等,其中刀具参数,刀具管理和加工参数按钮还可以打开其他界面完成系统功能;图形显示则位于界面的中间部分用于显示加工PCB孔的图形,加工过程中还可以动态显示加工到某个孔。

2)加工文件 加工文件功能模块完成对外部输入进来的加工文件(PCB行业通用的Excellon格式文件)进行译码,将加工文件的信息转化为控制系统需要的数据形式。软件具体实现办法是将文件的每一行进行解读,根据解读出来的信息将每个要加工的刀具节点数据放在一个WORK_NODE结构里面,对应在该刀具下的孔加工数据放在WORK_NODE里面的RECORD_NODE结构体内,最后统一将每一个刀具节点存放到以WORK_NODE为类型的加工链表gWorkList里。其中WORK_NODE和RECORD_NODE的数据结构如下:

typedef struct _WORK_NODE



int Type; //刀具类型,

int ToolNo; //刀具号 T0,T1......

double Diameter; //mm直径

double VelocityForZUp; //提升速度

double VelocityForZDown; //下钻速度mm/min

double Offset; //下钻允许偏移量mm

int Rev; //主轴转速rpm/minute

int MaxLife, HitCount; //寿命

int ToolCurNo; //当前刀具所在刀库号jia

CRecordList *pList; //孔坐标链表

}WORK_NODE,*PWORK_NODE;

typedef struct _RECORD_NODE



double x; //x坐标

double y; //y坐标

}RECORD_NODE,*PRECORD_NODE;

c++相关文章:c++教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭