逐点比较法第一象限直线圆弧插补精选.doc

逐点比较法第一象限直线圆弧插补精选.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
逐点比较法第一象限直线圆弧插补精选

逐点比较法第一象限直线,圆弧插补编程 逐点比较法是以折线来逼近给定的轨迹,就是每走一步控制系统都要将加工点与给定的图形轨迹相比较,以决定下一步进给的方向,使之逼近加工轨迹。逐点比较法以折线来逼近直线或圆弧,其最大的偏差不超过一个最小设定单位。只要将脉冲当量取得足够小,就可以达到精度要求。逐点比较插补法在脉冲当量为0.01mm,系统进给速度小于3000mm/min时,能很好的满足要求。 逐点比较法直线插补 ?如图所示设直线 oA 为第一象限的直线,起点为坐标原点 (0 , 0) ,终点坐标为, A( ) , P() 为加工点。 若 P 点正好处在直线 oA 上,由相似三角形关系则有 ? 即 ? 点在直线 oA 上方 ( 严格为直线 oA 与 y 轴正向所包围的区域 ) ,则有 即 ? ?若 P 点在直线 oA 下方 ( 严格为直线 oA 与 x 轴正向所包围的区域 ) ,则有 图 3 — 1 逐点比较法第一象限直线插补 即 令 则有: 如 ,则点 P 在直线 oA 上,既可向 +x 方向进给一步,也可向 +y 方向进给一步; 如 ,则点 P 在直线 oA 上方,应向 +x 方向进给一步,以逼近oA直线; 如 ,则点 P 在直线 oA 下方,应向 +y 方向进给一步 ,以逼近 oA直线一般将 及 视为一类情况, 即 时,都向 +x 方向进给一步。 ? 当两方向所走的步数与终点坐标相等时,停止插补。这即逐点比较法直线插补的原理。 ? ?对第一象限直线 oA 从起点 ( 即坐标原点 ) 出发,当 F 时, +x 向走一步;当 F0 时,y 向走一步。 ? ?特点:每一步都需计算偏差,这样的计算比较麻烦。 ? ?? ?递推的方法计算偏差: ?? 每走一步后新的加工点的偏差用前一点的加工偏差递推出来。 ? ?采用递推方法,必须知道开始加工点的偏差,而开始加工点正是直线的起点,故 。下面推导其递推公式。 ? ?设在加工点 P( ) 处, ,则应沿 +x 方向进给一步,此时新加工点的坐标值为 ???? 新加工点的偏差为 即 若在加工点 P( ) 处, ,则应沿 +y 方向进给一步,此时新加工点的坐标值为 , 新加工点的偏差为 即 综上所述,逐点比较法直线插补每走一步都要完成四个步骤 ( 节拍 ) ,即: (1) 位置判别 根据偏差值 大于零、等于零、小于零确定当前加工点的位置。 (2) 坐标进给 根据偏差值 大于零、等于零、小于零确定沿哪个方向进给一步。 (3) 偏差计算 根据递推公式算出新加工点的偏差值。 (4) 终点判别 用来确定加工点是否到达终点。 若已到达,则应发出停机或转换新程序段信号。一 般用 x 和 y 坐标所要走的总步数 J 来判别。令 J= ,每走一步则 J 减 1 ,直至 J=0 。 逐点比较法插补程序 #include conio.h #include graphics.h #include process.h #define Ni_circle 0 #define Shun_circle 1 void init_graph(); void draw_Base_circle(); void draw_cabu_circle(); void close_graph(); void acrroods(); static float x0,y0; void line_cabu(), draw_line(),draw_line_cabu(); void line_cabu() /*此函数控制直线插步两次*/ { int i; init_graph(); sleep(1); for(i=0;i2;i++) { line(0,120,300,120); outtextxy(310,120,Z); line(100,10,100,300); outtextxy(110,300,X); outtextxy(90,130,O); draw_line(); if(i==0) draw_line_cabu(6); else draw_line_cabu(2); gotoxy(50,5); getch(); cleardevice();

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档