为什么要有刀具补偿?
想象一下,如果我们的刀具可以理想到半径无穷小,倒是不需要考虑半径的补偿,但是实际上我们用到的是刀具的边沿在雕刻物体,如下图:
简单来看,好像是直接平行于轮廓进行移动就可以了,其实不然,单条直线的雕刻是平行,但是直线和直线,直线和圆弧,圆弧和圆弧都是不同的,并且!直线与直线的刀具补偿也分为三种情况分析。并且,在理论上有两种方法来进行补偿。
且慢,还分为三步,第一步是建立补偿,第二步 进行补偿,第三步撤销补偿。
两种方法分别为:
1、B刀具半径补偿
2、C刀具半径补偿
按照以往惯例,显然第一种方法是简单粗暴有效。第二种复杂一点,但是更加精准。
单条直线和圆弧的刀具偏移如图,很简单的可以计算出直线和圆弧的刀具补偿公式如下:
公式是很简单,其实和插补的算法结合到一起以后,就比较复杂了,典型的方法有R2法,极坐标法和矢量判别法,如果想知道具体的方法的原理,可以参考下面的链接:
http://jpkc.nwpu.edu.cn/jpkc2005/34/dianzikejian/
要注意的是,在B刀具半径补偿的时候,比如直线和圆弧连接,则需要一个过度的算法,否则刀具不连续而产生错误。过度时我们用到补偿一个相切的圆弧,并且在B刀具补偿的时候,还有一个尖角的问题需要处理,所以在数控系统中,专门加入了一条G39的补偿指令。
C刀具补偿法:
这个补偿法用到了4个缓存,按照顺序分别叫做BS,CS,AS,OS,简单来说,插补的线段指令先送入BS,第一条,继续往下传递到CS,继续加载第二条指令到BS,这时候判断BS和CS需要做何种刀具补偿,这个是问题的关键,处理完成以后,加入补偿后送入AS,AS进行运算,送到OS进行脉冲的输出。
当指令传入下一个缓冲器时,也就是上一个缓冲器完成一个传递以后,继续取下一条指令。
其中需要补偿的情况氛围三种:
直线和直线
直线和圆弧
圆弧和圆弧
以直线和直线的转接来说,按照两条直线的夹角,可以分为以下的五种情况。
总体来说,就是缩短型,插入型和伸长型。
另外两种情况类似也有这五种情况。
圆弧的计算流程如下:
总结下来,刀具半径补偿的算法就是理想与现实搭建起来的桥梁的一种算法,理解起来不难,但是要把每一种可能性都经过判断,计算和执行,其实不是一件容易做到的事情。
问题:MCX314和PCL6045这种专用芯片,应该用到了刀具补偿的算法,比如插补算法用比较原始的DDA算法,而刀具补偿用到的是C刀具补偿法。