现 代 制 造
w w w . i c a d . c o m . c n
88
了前后工步的跳转交叉。同时利用双向链表结构也
可以很容易地实现工步的删除、添加等功能。
三、 应用实例
图2为火车车轮轮箍的加工工步图。在粗车图中
所示的踏面和喉部时,为了避免从一侧多刀车削产
生
“闷刀”
现象,加工时从喉部到踏面,再从踏面到
喉部交替进行加工,故产生了工步交叉。
笔者基于美国Bentley公司的MicroStation Mod-
e l e r 三 维 软 件 平 台 , 使 用 内 嵌 的 开 发 语 言
MDL(MicroStation Development Language),以
双向链表为数据存储形式,对上述工步交叉实现了
自动编程。其算法是:先找出需工步交叉的程序
段,再在需工步交叉的程序段开始时处理跳转,接
着调用加工过程,最后在段结束时处理跳转。
下面给出了算法的主要部分:
Private PlanChain *createProcessCode(PlanChain
*nodeP)
{ PlanChain *currNodeP;
int serialNo;/*程序段号*/
initCurrStatus ();/*调用初始化函数*/
for (currNodeP = nodeP, data.processCounter = 1; currNodeP;
c u r r N o d e P = c u r r N o d e P - > n e x t P ,
data.processCounter++)
/*找出需要工步交叉的程序段*/
{ if (currNodeP->capp.cross.crossId == TRUE)
{ if (!currNodeP->nextP)
架使假想刀尖点与对刀镜内的中心点重合
(如图5所
示)
。再将光标移到相应刀具补偿号,并按
“自动计算
(对刀)
”
键,这把刀两个方向的长度就被自动计算出
来并自动存入它的刀具补偿号中。
a) 断面外径刀尖 b) 对称刀尖 c) 断面内径刀尖
图5 刀尖在放大镜中的对刀投影
4. 自动对刀
自动对刀又叫做刀具检测功能,是利用数控系
统自动精确地测量出刀具两个坐标方向的长度,并
自动修正刀具补偿值,然后直接开始加工零件。自动
对刀是通过刀尖检测系统实现的,如图6所示,刀尖
随 刀 架 向 已 设
定 了 位 置 的 接
触 式 传 感 器 缓
缓 行 进 并 与 之
接 触 , 直 到 内
部 电 路 接 通 发
出 电 信 号 , 数
控 系 统 立 即 记
下该瞬时的坐标值,接着将此值与设定值作比较,
并自动修正刀具补偿值。
图6 自动对刀
(上接第 86 页)
本文索引号:76
对本文提及的产品感兴趣的读者请拨打:010-68994816
本文索引号:77
对本文提及的产品感兴趣的读者请拨打:010-68994816
currNodeP->capp.cross.crossId =
FALSE;
mdlDialog_openAlert ("错误的工步
交叉, 交叉工步为最后一个工步!");}
};
/*段开始时处理跳转*/
if (cross.crossOn == TRUE)/*工步交叉开始*/
{fprintf (fp, "@121 R%d K%d K%d\n",
r.loopCounter - 1, cross.jumpOnWhich,serialNo);
/*定义循环次数和第几步交叉*/}
roughProfile_createCode (currNodeP);/*调用粗车
函数*/
preciseProfile_createCode (currNodeP); /*调用
精车函数*/
/*段结束时处理跳转*/
if (cross.crossOn == TRUE)
{ serialNo = formerP->capp.aux.cutPositionId;/
*使用formerP指针调用前一工步,实现工步交叉循环*/
fprintf (fp, "@126 R540 K0 K%d\n",-1*serialNo);}
fprintf (fp, "@126 R541 K0 K%d\n",-1*serialNo);}
/*若没有工步交叉则在本工步内循环*/
}
用户在加工规划时只要输入必
要的工艺信息,就能实现自动编程
的工步交叉,经后置处理生成的N C
程序能直接用于轮箍的车削加工。
实际中把该算法编制成程序输
入到Siemens 810T数控系统,并在CH5716车床进行
加工,大大提高了生产效率,缩短了工时。
四、结论
本文使用双向链表的数据结构,编制出新的算法
应用于自动编程系统中,能很好地解决工步交叉问
题,经过实际验证该算法正确、高效、思路清晰。
图 2 火车车轮轮箍的加工工步图