由于数控系统要求有坐标记忆的功能,也就是说在系统再次启动时,各轴坐标值应该为上一次系统退出前的坐标值。为了实现这一个功能,比较便捷的方法就是对注册表进行读写操作。在系统退出之前,把各轴坐标值写入注册表,在系统启动时,把坐标值从注册表中取出,具体实现的代码如下:
3.2.3 加工程序的编译与诊断
在编译程序时,基于DOS的数控系统主要是经过多次扫描,将数控加工程序存入缓冲区,最后再次扫描编译缓冲区,根据各功能代码转入相应的子程序。进行插补运算,完成程序加工。
在编写这套软件时,加工代码只经过一次扫描。在扫描过程中,对代码按照字符逐个识别就把程序中的各种代码元素存放在不同的数组中,其中包含绝对坐标值、相对坐标值、正反转标志位等等。在输出脉冲程序模块中,按照这些数组中的值分别向各轴送出相应的脉冲及方向信号。
3.2.4 插补程序
插补程序采用比较积分法,插补算法基于伸雄式函数发生器。基本原理为:如果给定了直线的终点坐标(xo,yo)、圆弧的起点坐标(xo,-yo)、或者其它二次曲线的参数(A,B)和公差(α,β),就可以通过判别函数△的计算来实现这些函数曲线的脉冲分配。△为x轴脉冲总时间间隔和y轴脉冲总时间间隔之差,用来决定两轴进给脉冲的配合关系。运算过程说明如下:
(1)比较x轴和y轴的脉冲间隔A和B(对直线而言,A、B的初始值A0=ye,B0=xe;对圆则A0=x0,B0=y0)。插补时取脉冲间隔小的轴作基础轴,此处设A<B,取戈为基础轴。
(2)脉冲源每发一个脉冲,基础轴都走一步。非基础轴,则根据判别函数△来决定是否走一步。
当△≤0时,x、y都走一步。
当△<0时,只戈走一步,y不动。
(3)在每次戈或y进给之后,都必须进行坐标修正,即计算
为方便计,其中A、B取绝对值进行运算,而α、β取相对值运算。口、卢取值不同就可以得到不同的曲线形式。程序框图如图4所示。
采用此算法实现多坐标直线插补插补原理清晰,插补计算比较简单,而且由于这种方法是在基础轴上走步,脉冲发生是不间断的,而且是均匀的,故机床的长轴运行很平稳。
4 结束语
在机械制造加工中,数控软件不仅要有一个友好的人机界面,更重要的是实现加工控制的实时性。我们设计了这种前后台结构的全软件开放式数控系统,以visual C++6.0作为开发工具,在windows2000平台下,充分利用PC的硬件功能,通过编写VPICD虚拟设备驱动程序来提供实时中断以实现实时控制;采用windows多线程机制来实现多任务调度。下一步我们将在不断完善系统自身功能的同时,进一步开发出该数控系统的网络功能。