刀具补偿信息的加入需要等NC代码文件被译码模块读入并作相应处理后实现。处理后的NC代码信息按每行一个节点存入双端队列中。
图3-4 C功能刀具半径补偿预处理
如图3-4所示,首先,进入功能入口函数Rs274ngc_cutter_comp(),然后依次调用相关函数,进入Cutter_comp_main()后首先从双端队列中依次提取节点,判断是否为运动段(需要进行插值的NC代码段),如果不是,则将此非运动段NC代码直接送入作为输出缓冲器的第二个双端队列中去,并继续向下查找,直到找到运动段NC代码或最后一个程序段节点为止。如果找到运动段,就继续判断是否为最后一个NC代码段,如果是则也直接送到第二个双端队列中,如果不是,则送到寄存器AR中去。接着,从第一个双端队列中从上一运动段NC代码节点向后再顺序查找运动段NC代码节点,不是运动段NC代码的节点仍直接送到第二个双端队列,直到找到又一个NC代码段节点,将这个节点放到寄存器BR中去。此时,就可以对第一个运动段NC代码进行刀具补偿预处理。首先,判断两个运动段是否处于刀具补偿使能的状态,如果两个运动段刀具补偿都没有使能,就不进行刀具补偿处理,而直接送到第二个双端队列中去。
如果有一个或两个运动段处于刀具补偿开的状态,就要对第一个NC代码段进行刀具补偿处理。这时通过入口函数Actuai_comp()进入刀具补偿处理部分,如图3-5所示。首先判断两个NC代码段的类型,即是直线段还是圆弧段,按照判断结果分别进入不同分支结构继续执行。以两个NC代码段都是直线段为例说明,判断两NC代码段之间的转接类型(缩短型、伸长型或插入型),根据判断结果进入相应分支,继续判断刀具补偿运行状态(刀具补偿建立、运行中或撤销)并进入相应分支。这时就可以调用相应的最底层函数,对原程序段的坐标进行修正,使之成为刀具中心点坐标,必要时可以在两段NC代码之间插入一段或几段直线段以完成两个NC代码段之间的转接。最后,将刀具补偿后的NC代码段节点送到第二个双端队列中。(www.daowen.com)
图3-5 C功能刀具半径补偿程序流程图
限于篇幅,刀具半径补偿算法这里不再赘述。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。