基于微机的激光雕刻机控制系统设计

2006-05-07 15:49:32来源: 电子技术应用

    若Fm>0,表明M点在直线OA上方的M′处。

    若Fm<0,表明M点在直线OA下方的M″处。

    对于第一象限直线从起点(即坐标原点)出发,

    若Fm>=0,沿+X轴方向走一步。

    若Fm<=0,沿-X轴方向走一步。

    当两方向所走的步数与终点坐标(Xe,Ye)相等时,发出到达终点信号,停止插补。设在某加工点出现有Fm>=0时,应沿+X方向进给一步,走一步后的坐标值为: Xm+1=Xm+1, Ym+1=Ym

    新的偏差为:Fm+1=Ym+1-Xm+1=F-Y

    若Fm<=0时,应沿+Y方向进给一步,走一步后的坐标值为: Xm+1=Xm,Ym+1=Y+1

    新的偏差为:Fm+1=Ym+1-Xm+1=F+X

    上式为简化后的偏差计算公式在公式中只有加、减运算,只要将前一点的偏差值等于上述的终点坐标值。当然对于不同的象限以及不同的矢量插补公式不同,但其基本原理相似,在这里不再赘述。

1.2 对电机运行速度的控制

    由于国产步进电机的最高启动频率一般为1~2kHz,一般步进电机不能一下突变到要求的最大频率,而在电机的最大运行频率下也不能立即停止,否则就会造成电机的丢步,影响系统的精度。这就需要在程序中有对电机的加减速控制,其基本思路如下:

    设电机每次步进的时间为t,t与电机的运行速度成反比,当电机处于加速阶段时,在电机的下一步应使其时间为t-洌簦渲袖t是根据电机加速度计算出的时间减小量,其计算方式如下:

    n=l / δ,δt=t0-t1 / n-l,tsum=n(t0+t1) / 2

其中l为某段距离的长度,δ为系统的分辨率即最小步进距离,n为所走的总瞳数,tsum为所需走的总时间,t0为初始速度时每走一瞳所花费的时间,t1为到达所要求走的距离时(即达到最大速度 时)每走一走所花费的时间,根据具体的要求我们可以计算出以各式的值。

    在基于PC机的控制系统中,一个很重要的问题就是如何获得对时间的精确控制。在windows操作系统中系统所提供的时间函数只能达到毫秒级的精度,很难达到微秒级的控制精度。对于不同配置的PC机,执行相同的语句其时间也不会相同。为此我们利用系统提供的GetTickCount()函数,用包括_nop语句的循环来达到微秒级的控制精度。下面为具体的实现方法用法:

    构造CMicroSecond类:

    在类初始化函数中实现每微秒包含_nop语句循环数。

    void CMicroSecond::Initialize

    {

    DWORD dwStart = 0;

    DWORD dwStop = 0;

    int nLoopSeed = 100000;

    do{

    m_dwLoopCounter1 = 0;

    dwStart = GetTickCount;

    for(int i=0;i< nLoopSeed;i++)

    {

    m_dwLoopCounter1++;

    _asmnop;

    }

    dwStop = GetTickCount();

    nLoopSeed += 100000;

    }while ( dwStop - dwStart < 50 );

    m_dwLoopCounter1 = 0;

    dwStart=GetTickCount;

    for(int i=0; i<nLoopSeed;i++)

    {

    m_dwLoopCounter1++;

    _asm{nop}

    }

    dwStop = GetTickCount();

    //每毫秒的循环数

    m_dwLoopCounter1=m_dwLoopCounter1/dwStop-

dwStart;

    //每微秒的循环数

    m_nLoopCountPerMicroSecond=intm_dwLoop

Counter 1/1000;

    }

    实现固定时间的延时:

    void CMicroSecond::MicroDelay( int uSec )

    {

    n=0;

    for(int i=0;i<uSec*m_nLoopCountPerMicroSecond;i++)

    {

    n++;

    _asm{nop}

    }

    }

    由于赋值语句、for语句、函数的调用等要消耗时间,因此所得到的时间也并不是非常精确的时间。但对于一般的PC机来说完全可以达到几十微妙的精度,而对于一般的控制系统来说,这个精度是足以达到控制要求的。

2 外围接口特性

    在本系统中我们通过计算机的并口来实现对步进电机驱动器的控制。我们知道并行口适配器的具体形式是多种多样的,但是在PC系列微机中分配给它的最多有四个口,常用的是三个口,其地址为:03BCH - 03BEH:并口一(LPT1),0378H - 037AH:并口二(LPT2),0278H - 027AH:并口三(LPT3)。这里可以看到每个并口包括了三个口地址其中第一个为基地址,是因为一个并口具有数据口状态口和控制口的缘故。不过值得注意的是,最好不要直接用上述口的地址去读写并口,因为在实际应用中很少有三个并行口都同时有效的,而且多功能卡和单色显示卡上的并行口地址是有差别的。单色显示卡上的并口地址一般是03BCH,而多功能卡上的并口基地址一般可以在0378H和0278H之间进行选择。因此如果直接对某一并口地址进行操作,万一PC机上的并口适配器用的不是这个口地址那就要出错了。

    熟悉PC机的读者都知道,PC机内存最低端BIOS数据区的40:08H,40:0AH,40:0CH三个字是被设计用来存放上述三个并行口的基地址的,40:08H - 09H LPT1基地址;40:0AH - 0BH LPT2基地址;40:0CH - 0DH LPT3基地址。这三个字中的基地址是在PC机启动过程中根据实际存在的并行口地址存放的,使用它们来读写并行口就不会出错,所以在使用时一定要通过检查这三个字来得到并行口的基地址。在对并口的读写操作用到的语句为_outp(并口地址,数据)和 _inp( 并口地址 )(_inp返回值为读到的数据)。

3 系统特点及结果分析

    在本文所述的激光雕刻机系统中,我们通过动态连接库的方式对系统进行控制,我们将对基本矢量元素的控制都封装在了一个动态连接库中,这样使系统的控制软件具有一定可移植性。而这种通过PC机并口实现对激光雕刻机控制的方法简单而且易于实现,可以大大的缩短开发周期。如果我们配上相应的激光雕刻机作图软件,就可以成为一个商用化的产品了。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/sensor/200605/1419.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved