[摘要]本文简述了开放式数控系统的特点和目前开放式数控系统的主要形式,接着介绍开放式钻床数控系统的总体结构以及该系统软件的模块结构,最后在此基础上重点阐述该系统软件中每个模块的功能与实现。
[关键词]开放式 数控系统 运动控制器
[Abstract]This article firstly introduces the characteristic and the actual prevail form of opening numerical control system, then it introduces the chief structure of the control system and the module structure of the system’s software. Finally, article particularly describes the function of every module of the software and explains how to carry out.
[Keywords]Opening Numerical Control System Motion Controller
1、引 言
在计算机技术飞速发展的今天,数控系统由传统的专用型封闭式系统向灵活的开放式数控系统转变已成为一种必然趋势。与传统的封闭式数控系统相比,开放式数控系统有以下优势:
·可伸缩性,cnc系统的功能、规模(硬件或软件模块)可根据具体应用灵活增减;
·可移植性,系统的功能软件与运行平台无关,能运行于不同供应商提供的硬件平台上;
·可扩展性,开发者能有效地将自己的软件集成到nc系统中,形成自己的专用系统;
·可互操作性,通过标准化接口,通信和交互机制,使不同功能模块获得相互操作能力,协调工作。
目前开放式数控系统主要形式是基于pc的nc,即在pc的总线上插上具有nc功能的运动控制器完成实时性要求较高的nc内核功能。基于步进机电有限公司的mpc08运动控制器就是一款能满足数控系统功能要求,性价比高的通用运动控制器,课题根据钻床的工艺在此基础上进行数控系统软件的研究。
2、系统总体结构
本系统数控钻床共有8个轴,分别为、y轴和z1、z2、z3、z4、z5、z6轴,其中x、y轴控制平面两个方向的定位,z1…z6则控制下钻的进给量,xyz可联动控制。加工时, 根据要加工工件上的孔坐标、孔直径、孔深等参数, 编好工件的加工文件, 系统按加工文件控制机床完成钻削加工。
为了对机床8个轴的进行控制,采用了mpc08运动控制器作为系统控制的内核,插在pc机的pci插槽中。其系统硬件框图如图1:
图1 系统硬件框图
工业pc机作为主控计算机来完成与mpc08控制器的通讯以及上层系统操作、调度管理、故障诊断、参数输入等非实时性任务。
mpc08是一款开放式通用运动控制器,所有指令均为立即指令,适合于pcb钻床的高速度,定位准的点位运动,并具有足够的专用和通用的io通道供机床控制使用,软件方面提供了丰富的运动控制函数,以供用户在windows平台自主开发,构建所需要的数控系统。我们将mpc08插入pc的pci插槽里,借助它完成整个系统的控制。
io及反馈系统使用mpc08的专用和通用的输入和输出通道进行各种机床电器io信号的连接与控制;驱动和伺服步进电机单元则是接收mpc08发出的脉冲及方向信号完成需要的运动。
变频器和主轴转动控制部分是利用pc机的串口进行和变频器的通讯,由此完成主轴转速的控制,此控制则是独立于mpc08之外。
3、软件结构设计
为了满足伸缩性,移植性,扩展性和互操作性的要求,软件采用了模块化设计的思想,利用visualc++6.0开发工具在windows2000操作系统上开发而成。软件总体分为两大部分,人机界面交互部分和系统控制部分,软件的总体模块结构如图2所示:
图2 软件总体模块结构nextpage
(1)人机界面
人机界面模块主要完成整个数控系统的状态显示和需求参数的输入,除此以外应该使界面友好,使用便捷。程序借助了mfc库中cwnd类和cbutton按钮类的强大功能,利用这两个类的成员函数以及类派生的子类构造了友好便捷的界面。界面包括有加工过程中重要参数的显示,主要功能按钮和加工图形的显示。其中参数显示有各轴的坐标,工作行程,下止点,刀具代号,直径,偏移以及加工的孔数记录,所在刀库的记录等;功能按钮有启动,回原点,回停车位,导入文件,刀具参数,刀具管理,加工参数等,其中刀具参数,刀具管理和加工参数按钮还可以打开其他界面完成系统功能;图形显示则位于界面的中间部分用于显示加工pcb孔的图形,加工过程中还可以动态显示加工到某个孔,如图3。
图3 人机界面显示
(2)加工文件
加工文件功能模块完成对外部输入进来的加工文件(pcb行业通用的excellon格式文件)进行译码,将加工文件的信息转化为控制系统需要的数据形式。软件具体实现办法是将文件的每一行进行解读,根据解读出来的信息将每个要加工的刀具节点数据放在一个work_node结构里面,对应在该刀具下的孔加工数据放在work_node里面的record_node结构体内,最后统一将每一个刀具节点存放到以work_node为类型的加工链表gworklist里。其中work_node和record_node的数据结构如下:
typedef struct _work_node
{
int type :// 刀具类型
int toolno;// 刀具号 to,t1…
double diameter; // mm直径
double velocityforzup;//提升速度
double velocityforzdown;//下钻速度 mm/min
double offset;//下钻允许偏移量mm
int rev; //主轴转速r/min
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;
(3)加工参数管理
本功能完成在机床控制过程中各参数的管理,包括机器的轴参数,系统参数,加工参数,刀具参数,机床坐标参数。为了方便管理和使用,以上参数程序里都定义全局变量存放,使用时对这些变量操作即可以进行各参数的读取和修改。每个参数变量都以一个自定义的结构体为类型,轴参数类型内包括每个轴的使能,最大速度,最大加速度,脉冲当量,回零速度,回零方向,反向间隙等;系统参数包括插补精度,到位检测周期,刀库坐标位置,深度检测深度,深度检测速度;加工参数包括进给速度,提升速度,工作行程,主轴转速,换刀方式,断钻检测允许范围;刀具参数包括刀具的类型,直径,寿命,已使用寿命,所在刀库号;机床坐标参数则包括机床的绝对坐标和相对坐标参数。所有这些参数除了绝对和相对坐标参数外都需要在加工前由使用者按需求输入,加工过程中根据这些设置的数据进行运动。下面是轴参数的数据结构例子:
typedef struct _axis_param_set
{
int installed;//轴是否安装:true--安装
int enable;//轴是否有效
int homedir;
//机床回零方向:1--正向,-1--反向,0--无效
double interval;//反向间隙
double maxspeed;//最大速度(mm/min)(a)
double accelspeed;
//最大加速度(mm/min^2)3600000
double pulsefactor;//脉冲当量(mm)
long pulseup;//电子齿轮分子
long pulsedown; //电子齿轮分母
long pulsedir;//反馈方向
int sratio;//s型加速度曲线系数
double homespeed;//回零速度
double homecheckdis;//回零检测长度
double homeoffsetdis;//回零后的移动距离
double depthcheckdis;//深度检测的下降距离
}axis_param_set,*paxis_param_set;nextpage
(4)运动与换刀控制
运动与换刀控制是钻床运动的核心部分,完成钻床的孔加工(包括启动,定位,下钻,提升),回零,回停车位和换刀的动作。本模块的代码都在专门建立的运动控制线程pubworkthreadhandler(lpvoid pparam)里面执行。
·孔加工
当用户加工准备就绪,按下启动加工的按钮的时候,线程开始自动读取加工链表gworklist里面已经经过译码的数据,通过已知数据信息程序按照加工参数管理模块设定的速度发送运动指令给mpc08运动控制器,控制器发出脉冲使机床快速运动并定位到该孔坐标,接着以给定的下钻速度和下钻深度进行孔加工,然后再以给定的速度提升,提升的同时迅速定位到下一个加工孔的坐标位置。
·回零
准确的回零对机床的定位和加工起着重要的作用,本系统设计的回零方式借助于伺服电机的z脉冲,当按下回零按钮后,程序的运动控制线程即按相应步骤发出回零指令给控制器,使机床准确的回零。设计的回零步骤为:各轴快速朝原点方向运动→碰到原点开关后缓停→缓停后反向低速运动→当接收到伺服电机的z脉冲信号后停下来。机床即以停下来的坐标位置作为机床的原点。程序里面对每个步骤定义了一个宏,以此来区分加工到那一步骤。
·回停车位
当按下回停车位的按钮后,发出回停车位的指令,使机床的xy轴分别运动到加工前设定到加工参数管理模块的停车位坐标。
·换刀
钻床加工pcb板的时候需要加工不同直径的孔,这就要求在加工过程中当加工完一种直径的孔以后进行换刀,取到另外一直径的刀具进行加工。本系统的换刀方式有手动换刀和自动换刀两种。手动换刀就是在加工完一直径的孔后或刀具寿命到了以后回到停车位,由加工者手动把原刀具取下来并换上新的刀具然后恢复加工。手动换刀效率比较,现在的机床一般都采取自动换刀,本次设计的换刀流程如下:
z轴回零——压脚抬起——x轴移动到原刀库的位置——y轴移动到原刀库的位置——z轴移动到换刀位置——张夹头放刀——延时——z轴回零——xy轴回到停顿位置——检查刀具放回了——z回零——回到停顿位置——x轴移动到目标刀具的位置——y轴移动到目标刀具的位置——z轴移动到换刀位置——合夹头取刀——延时——z轴回零——回到停顿位置——检查刀具取到了——z轴回零——xy轴回到停顿位置——压脚放下
换刀的软件实现同样是在运动控制线程里按以上步骤一步步完成,每个步骤类似回零步骤一样定义了一个宏来区分。当整个换刀流程执行完毕以后,机床继续加工剩余的孔。
(5)自诊断检测
自诊断模块对机床的调试,检测,状态监视起着重要的作用。通过本模块,使用者可以随时的检测到机床电器信号状态,包括机床输入到控制器的信号和使用者通过控制器输出到机床的控制信号。程序里是通过另一个辅助线程pubmonitorthreadhandler不断的查询mpc08控制器的状态寄存器,并构建如图4的对话框显示出来。
图4 系统监测对话框
4、结 语
该系统利用了mpc08运动控制器的强大功能,并在模块化思想指导下进行软件编程,最终有效的应用于pcb钻床的控制系统中,运行效果良好,并且通过了在pcb数控机床中高精度和速度的加工测试,加工使用0.1~0.3mm大小的刀径,孔间距为0.5mm,其各轴的最大速度,以及每分钟的钻孔个数均达到了预期的要求。