发明名称 一种基于ARM9嵌入式系统和FPGA的NURBS曲线分段插补方法
摘要 本发明一种基于ARM9嵌入式系统和FPGA的NURBS曲线分段插补方法,采用ARM9嵌入式系统对NURBS曲线进行粗插补,完成对NURBS曲线的分段预处理,采用FPGA对分段曲线进行精插补,最后,外围电路将各进给轴运动分量以脉冲量形式输出到电动机的信号控制端口,实现电动机伺服控制;实现了NURBS曲线描述的复杂曲面零件直接加工技术,在保证加工精度的同时,提高了加工效率。
申请公布号 CN103048953B 申请公布日期 2014.11.12
申请号 CN201310003017.8 申请日期 2013.01.05
申请人 福建工程学院 发明人 聂明星;蒋新华;陈兴武;李光炀;邵明;陈青霞;聂作先;朱悦涵;郑积仕;王光耀
分类号 G05B19/41(2006.01)I 主分类号 G05B19/41(2006.01)I
代理机构 福州市鼓楼区京华专利事务所(普通合伙) 35212 代理人 宋连梅
主权项 一种基于ARM9嵌入式系统和FPGA的NURBS曲线分段插补方法,其特征在于包括2个步骤:1)粗插补从NC代码文件中提取NURBS曲线描述的工件信息,得到控制点集合{P<sub>i</sub>}、权因子集合{w<sub>i</sub>}及指令速度F;采用二阶泰勒展开近似法对NURBS曲线进行预插补,得到预插补点集合{(u<sub>i</sub>,v<sub>i</sub>,ρ<sub>i</sub>)},系统根据弓高误差变化情况自动识别曲线小曲率半径区,并动态调整预插补点进给速度,得到调整后的插补点速度集合:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msup><mi>V</mi><mi>m</mi></msup><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mo>{</mo><mi>v</mi><mo>|</mo><mi>v</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&lt;</mo><mi>F</mi><mo>}</mo><mo>,</mo><msub><mi>u</mi><mi>i</mi></msub><mo>&Element;</mo><mrow><mo>(</mo><msubsup><mi>u</mi><mi>s</mi><mi>m</mi></msubsup><mo>,</mo><msubsup><mi>u</mi><mi>e</mi><mi>m</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000548725020000011.GIF" wi="815" he="85" /></maths>插补误差模型为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>ER</mi><mi>i</mi></msub><mo>=</mo><msub><mi>&rho;</mi><mi>i</mi></msub><mo>-</mo><msqrt><msubsup><mi>&rho;</mi><mi>i</mi><mn>2</mn></msubsup><mo>-</mo><msup><mrow><mo>(</mo><mfrac><mrow><mi>V</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>T</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mo>,</mo><msub><mi>&rho;</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>/</mo><msub><mi>k</mi><mi>i</mi></msub></mrow>]]></math><img file="FDA0000548725020000012.GIF" wi="1010" he="140" /></maths>k<sub>i</sub>为曲线在参数u<sub>i</sub>处的曲率,有:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>k</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mfrac><mrow><msub><mi>dC</mi><mi>x</mi></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow><mi>du</mi></mfrac><mo>&CenterDot;</mo><mfrac><mrow><msup><mi>d</mi><mn>2</mn></msup><msub><mi>C</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow><msup><mi>du</mi><mn>2</mn></msup></mfrac><mo>-</mo><mfrac><mrow><msub><mi>dC</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow><mi>du</mi></mfrac><mo>&CenterDot;</mo><mfrac><mrow><msup><mi>d</mi><mn>2</mn></msup><msub><mi>C</mi><mi>x</mi></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow><msup><mi>du</mi><mn>2</mn></msup></mfrac></mrow><msubsup><mrow><mo>|</mo><mo>|</mo><mfrac><mrow><mi>dC</mi><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow><mi>du</mi></mfrac><mo>|</mo><mo>|</mo></mrow><mrow><mi>u</mi><mo>=</mo><msub><mi>u</mi><mi>i</mi></msub></mrow><mn>3</mn></msubsup></mfrac></mrow>]]></math><img file="FDA0000548725020000013.GIF" wi="822" he="268" /></maths>根据插补弓高误差和最大弓高误差限制关系,动态调整插补进给速度方程为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>V</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>F</mi></mtd><mtd><msub><mi>ER</mi><mi>i</mi></msub><mo>&le;</mo><msub><mi>&delta;</mi><mi>max</mi></msub></mtd></mtr><mtr><mtd><mfrac><mn>2</mn><mi>T</mi></mfrac><msqrt><msubsup><mi>&rho;</mi><mi>i</mi><mn>2</mn></msubsup><mo>-</mo><msup><mrow><mo>(</mo><msub><mi>&rho;</mi><mi>i</mi></msub><mo>-</mo><msub><mi>&delta;</mi><mi>max</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000548725020000014.GIF" wi="911" he="198" /></maths>系统根据小曲率半径区插补点速度集合和曲率变化情况提取出小曲率半径区速度特征点:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msup><mi>C</mi><mi>m</mi></msup><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mo>{</mo><msub><mi>u</mi><mi>i</mi></msub><mo>|</mo><mi>min</mi><mrow><mo>(</mo><msup><mi>V</mi><mi>m</mi></msup><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>}</mo><mo>,</mo><msub><mi>u</mi><mi>i</mi></msub><mo>&Element;</mo><mrow><mo>(</mo><msubsup><mi>u</mi><mi>s</mi><mi>m</mi></msubsup><mo>,</mo><msubsup><mi>u</mi><mi>e</mi><mi>m</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000548725020000021.GIF" wi="840" he="99" /></maths>以相邻速度特征点对NURBS曲线进行分段,得到分段曲线:L<sub>m</sub>={(C<sup>m</sup>(u<sub>i</sub>),C<sup>m+1</sup>(u<sub>i+1</sub>))}采用自适应辛普森方法计算分段曲线长度,得到四元组{u<sub>s</sub>,u<sub>e</sub>,v<sub>i</sub>,S<sub>i</sub>}表示的曲线段数据,该数据包括曲线段首尾端点参数、进给速度、曲线段长度的信息;由ARM9嵌入式系统通过总线将曲线段数据写入到FPGA的FIFO队列中;2)精插补FPGA读取FIFO队列中曲线段数据,采用S型加减速方法进行加减速处理,根据NURBS曲线定义式实时生成插补点坐标;外围电路将各进给轴运动分量以脉冲量形式输出到电动机的信号控制端口,实现电动机伺服控制。
地址 350108 福建省福州市闽侯县上街镇福州地区大学新校区学园路