一种基于数控系统的砂轮磨损实时补偿方法与流程

文档序号:12062811阅读:来源:国知局

技术特征:

1.一种基于数控系统的砂轮磨损实时补偿方法,其特征在于:根据主轴电机电流的变化计算并实时更新砂轮磨损量,通过数控系统在插补器层的二次开发接口,根据该实时更新的砂轮磨损量,修正G代码理论运行轨迹点,从而实现砂轮磨损的实时补偿。

2.根据权利要求1所述的一种基于数控系统的砂轮磨损实时补偿方法,其特征在于具体包括如下步骤:

步骤1、在每个采样周期T从主轴电机的驱动单元获取主轴电机电流Ii,i=1,2,...,k,...;

步骤2、将实时获取的电机电流Ii通过模拟量输入I/O模块接入数控系统;

步骤3、在数控系统中将每个采样周期实时读取的电机电流Ii通过加权递推滤波平均算法进行滤波处理,得到去噪平滑处理之后的实时电机电流

步骤4、将实时电机电流与磨边工艺设置的阈值电流Is进行比较,若则δi=δi-1+Δδ,否则δi=δi-1,据此规则更新砂轮磨损量δi,其中:δi为砂轮磨损量,Δδ为砂轮磨损增量常量,ΔI为电流超差范围的阈值常量,ΔI、Δδ根据现场工艺确定,δ0=0;

步骤5、在数控系统中获取G代码轨迹在当前插补周期由插补器输出的理论坐标值(xi,yi),i=1,2,...,k,...,结合上一插补周期插补器输出的理论坐标值(xi-1,yi-1),即可计算数控系统G代码当前运行轨迹的单位切向量(ji,ki):

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>j</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>k</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>

步骤6、根据单位切向量(ji,ki),即可得到数控系统G代码当前运行轨迹处的两个单位法向量(mi1,ni1),(mi2,ni2),这两个单位法向量分别为垂直于当前G代码运行轨迹方向指向左侧、右侧的法向量:

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>m</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mfrac> <mrow> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>m</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>=</mo> <mfrac> <mrow> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>

步骤7、根据数控系统当前的左、右刀补设置,结合“左刀补,往右进行磨损补偿,右刀补,往左进行磨损补偿”的规则,即可确定唯一的单位法向量(mi1,ni1),此方向即为砂轮磨损量在数控系统G代码当前运行轨迹处沿X、Y轴的分配方向;

步骤8、根据计算获得的砂轮磨损量在数控系统G代码当前运行轨迹处沿X、Y轴的分配方向(mi1,ni1),计算修正后的G代码理论运行轨迹点坐标值(xi′,yi′):

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msup> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>&delta;</mi> <mi>i</mi> </msub> <mo>*</mo> <msub> <mi>m</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>=</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>&delta;</mi> <mi>i</mi> </msub> <mo>*</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced>

将修正后的G代码理论运行轨迹点坐标值(xi′,yi′)直接输出、执行;

步骤9、至此,砂轮磨损实时补偿算法在数控系统的插补周期内完成一个周期的运行。

3.根据权利要求2所述的一种基于数控系统的砂轮磨损实时补偿方法,其特征在于在所述的步骤8计算得到修正后的G代码理论运行轨迹点坐标值(xi′,yi′)后,增加如下执行内容:

通过数控系统接口函数获取上一插补周期数控系统实际位置坐标值(x″i-1,y″i-1),将该坐标值与修正后的G代码理论运行轨迹点坐标值(xi′,yi′)进行比较,若两坐标点X、Y坐标差值均未超过数控系统平滑处理的阈值,则将修正后的G代码理论运行轨迹点坐标值(xi′,yi′)直接输出、执行;若两坐标点X或Y坐标值超过数控系统平滑处理的阈值,则需要进行平滑处理;

平滑处理时,以上一插补周期数控系统实际位置坐标点(x″i-1,y″i-1)和修正后的G代码理论运行轨迹点坐标点(xi′,yi′)确定的向量为方向,沿该方向运行一段距离1,以此解决修正后G代码运行轨迹突变的问题,并据此计算出平滑处理后的G代码运行轨迹点坐标值(xi″,yi″):

<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msubsup> <mi>x</mi> <mi>i</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>+</mo> <mfrac> <mrow> <mi>l</mi> <mo>*</mo> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>y</mi> <mi>i</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>+</mo> <mfrac> <mrow> <mi>l</mi> <mo>*</mo> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> <msup> <mrow> <mo>&lsqb;</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>x</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>-</mo> <msubsup> <mi>y</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&rsqb;</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mn>2</mn> </mrow> </msup> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>

然后将平滑处理后的G代码运行轨迹点坐标值(xi″,yi″)直接输出、执行。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1