其中,r、t 为开关变量。r 为正负进给量判断,只取1 或-1 值;t 为进给与否判断,只取0或1。对于不同象限,进给方向及进给轴的选取都不一样。通过设定进给开关量,即可控制插补点位置。单一象限内插补运算较容易实现。对于多象限插补,需要在过象限时做特殊处理。相应的算法处理如下:
(1)判断起始点、终止点所在象限。
(2)结合转向(顺/逆时针),规划进给路径,即穿越象限编号。
(3)结合路径中的象限编号,逐象限插补运算。
程序实现部分源代码如下:
//路径规划函数
bool CrossQuadrant(int quad_bgn, int quad_end, int direction, int x_s, int y_s, int x_e, int y_e,
int* pCrossQuad){
int CrossPart[5]; //穿越象限编号数组
…………
for(i=0;i<5;i++){ //初始化为-1
CrossPart[i]= -1; }
nCurPart= quad_bgn; //起始象限编号
if(nCurPart== quad_end){ //起始点、终止点在同一象限
if((nCurPart==0) || (nCurPart==2)){ //若在第1,3象限
if(fSlope_bgn>fSlope_end){ //斜率判断
if(direction== ClkWs){ //这种情况下,只走过本象限
blnCross= FALSE; //置标志位
}}}
……..
else{ //起始点在不同象限
do{
j++;
if(direction== ClkWs){ //顺时针
nCurPart--;}
else{ //逆时针
nCurPart++; }
if(nCurPart <0){ //若前一象限为第一象限,且顺时针转
nCurPart=3; } //则后一象限换为第四象限
if(nCurPart >3){ //若前一象限为第四象限,且逆时针转
nCurPart=0; } //则后一象限换为第一象限
CrossPart[j]= nCurPart;
}while(nCurPart!= quad_end); }}
4 小结
本文介绍的嵌入式数控软件已成功应用于数控玻璃雕刻机系统中,现场生产试验表明,系统运行效果良好。Windows CE嵌入式操作系统的出现为数控系统的应用开辟了新的领域,但由此也带来了软件开发上的复杂性。在嵌入式数控系统软件的开发过程中,必须针对数控加工的特点,对Windows CE 系统内核进行裁减定制,同时结合嵌入式硬件的具体情况,对代码进行合理优化,减少内存开支和不合理的CPU 占用,完成在嵌入式硬件上的编程。本论文在数控软件结构的合理构建以及开发的关键实现技术上做了有益的探讨。
本文作者创新点:在对数控平台应用进行Windows CE 系统定制的基础上,提出了嵌入式数控开发的软件架构。并对传统插补算法加以改进,解决插补数据过象限突变问题。本系统已成功应用于作者所在数控实验室的玻璃雕刻机中。与传统雕刻系统相比,本系统能节省设备成本30%-40%,加工时间缩短20%左右,已累计产生经济效益数十万元。