摘要:叙述了基于PC机的激光雕刻机运动轨迹插补控制软件的设计与实现和其外围接口特性。
关键词:控制 CNC 插补原理 计算机并口
激光是20世纪60年代初期兴起的一项新技术,由于其具有单色性好,高亮度和方向性好的特点,对各个技术领域产生了巨大的影响。而近年来的基于CNC(Computer Numerical Control)的激光雕刻机作为一种机、光、电、算相结合的高科技产品也在市场上出现,其应用相当广泛,市场需求量很大。由于该产品大部分是由国外进口,其价格之高,令一般的国内消费者难以接受。主要同类产品有日本的MIMAKI PRO的专业刻字机,上海长江汇众企业发展有限公司的长江激光雕刻机和北京开天科技公司的FC-15型激光雕刻机等。本文主要介绍激光雕刻机的控制系统的软件设计以及主要端口的接口特性。在该激光雕刻机控制系统中,主要采用基于PC机的数字控制系统,通过并口和步进电机驱动器来控制步进电机,从而达到控制工作台(或激光束)的走向和速度的目的。
1 控制软件的设计
1.1 插补原理
在激光雕刻机中为了实现对激光雕刻机的控制,主要采用矢量化的方法将控制分成不同种类的基本矢量,其中包括直线、圆弧、椭圆三个基本矢量。再利用插补原理来实现对这三个基本矢量的数字逼近。在激光雕刻机的控制系统中要求能够达到较高的速度和精确度,因此控制软件的计算不能太复杂,花费的时间不能太多,这就是使用插补原理的原因所在。在本系统中所采用的为逐点比较插补算法。所谓逐点比较插补算法,即每走一步都要和给定轨迹上的坐标值进行一次比较,使该点在给定轨迹的上方或下方,或在给定轨迹的里面或外面,从而决定下一步的进给方向,使之趋近加工轨迹。如此走一步,比较一次,决定下一步走向,逐步逼近给定的轨迹。逐点比较法是以折线来逼近直线或圆弧曲线的,它与规定的直线或圆弧之间的最大误差不超过一个脉冲当量,只要将脉冲当量(即每走一步的距离)取得足够小,就可以达到加工的精度要求。下面以直线为例来说明插补原理。如图1所示。
偏差计算公式假定加工第一象限的直线OA,取直线起点为坐标原点O,直线终点坐标A(Xe,Ye)是已知的。M(Xm,Ym)为加工点(动点)。若M在OA直线上,则根据相似三角形的关系有:
Xm / Ym=Xe / Ye
取Fm=YmXe-XmYe作为直线插补的偏差判别式。
若Fm=0,表明M点在直线OA上。
若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+1Xe-Xm+1Ye=Fm-Ye
若Fm<=0时,应沿+Y方向进给一步,走一步后的坐标值为: Xm+1=Xm,Ym+1=Ym+1
新的偏差为:Fm+1=Ym+1Xe-Xm+1Ye=Fm+Xe
上式为简化后的偏差计算公式在公式中只有加、减运算,只要将前一点的偏差值等于上述的终点坐标值。当然对于不同的象限以及不同的矢量插补公式不同,但其基本原理相似,在这里不再赘述。
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++;
_asmnop;
}
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=intm_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机并口实现对激光雕刻机控制的方法简单而且易于实现,可以大大的缩短开发周期。如果我们配上相应的激光雕刻机作图软件,就可以成为一个商用化的产品了。
上一篇:TEC9503AM/FM接收频率显示模块及应用
下一篇:超高灵敏度新型Super-HARP摄像管的发展
- 热门资源推荐
- 热门放大器推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况