直线插补算法,就是刀具或绘笔每走一步都要和给定的数据进行比对,看该点在次点的上方或者是下方,从而决定下一步该怎么走。

即机床数控系统依照一定方法确定刀具运动轨迹的过程。也可以说,已知曲线上的某些数据,按照某种算法计算已知点之间的中间点的方法,也称为“数据点的密化”;数控装置根据输入的零件程序的信息,将程序段所描述的曲线的起点、终点之间的空间进行数据密化,从而形成要求的轮廓轨迹,这种“数据密化”机能就称为“插补”。

单片机控制步进电机运作,实物图奉上:

插补算法坐标给进的如下图:

C语言控制步进电机画直线的代码如下:

NextOffset=0;//每一步要走的偏差判断;

if(X >=0 && Y>0) //ONE

{

Number_XY=(X+Y)*50/12.5;

while(1)

{

if(NextOffset >= 0 && X0 != X)

{

NextOffset=NextOffset-Y;

X0=X0+1;

Y0=Y0;

for(i=0;i<4;i++)

{

P0=Clockwise[i]; //left

Delay30ms();

Number_XY--;

}

}

if(NextOffset < 0 && Y0 != Y)

{

NextOffset=NextOffset+X;

X0=X0;

Y0=Y0+1;

for(i=0;i<4;i++)

{

P2=Clockwise[i]; //down;

Delay30ms();

Number_XY--;

}

}

if(Number_XY <= 0)

break;

if(X0==X && Y0==Y)

Number_XY--;

}

}

if(X < 0 && Y>=0) //TWO

{

X=abs(X);

Number_XY=(X+Y)*50/12.5;

while(1)

{

if(NextOffset >= 0 && X0 != X)

{

NextOffset=NextOffset-Y;

X0=X0+1;

Y0=Y0;

for(i=0;i<4;i++)

{

P0=Anti_Clockwise[i]; //RIGHT

Delay30ms();

Number_XY--;

}

}

if(NextOffset < 0 && Y0 != Y)

{

NextOffset=NextOffset+X;

X0=X0;

Y0=Y0+1;

for(i=0;i<4;i++)

{

P2=Clockwise[i]; //down;

Delay30ms();

Number_XY--;

}

}

if(Number_XY <= 0)

break;

if(X0==X && Y0==Y)

Number_XY--;

}

}

if(X <=0 && Y<0) //THREE

{

X=abs(X);

Y=abs(Y);

Number_XY=(X+Y)*50/12.5;

while(1)

{

if(NextOffset >= 0 && X0 != X)

{

NextOffset=NextOffset-Y;

X0=X0+1;

Y0=Y0;

for(i=0;i<4;i++)

{

P0=Anti_Clockwise[i]; //RIGHT

Delay30ms();

Number_XY--;

}

}

if(NextOffset < 0 && Y0 != Y)

{

NextOffset=NextOffset+X;

X0=X0;

Y0=Y0+1;

for(i=0;i<4;i++)

{

P2=Anti_Clockwise[i]; //UP

Delay30ms();

Number_XY--;

}

}

if(Number_XY <= 0)

break;

if(X0==X && Y0==Y)

Number_XY--;

}

}

if(X >0 && Y <=0 )//FOUR

{

Y=abs(Y);

Number_XY=(X+Y)*50/12.5;

while(1)

{

if(NextOffset >= 0 && X0 != X)

{

NextOffset=NextOffset-Y;

X0=X0+1;

Y0=Y0;

for(i=0;i<4;i++)

{

P0=Clockwise[i]; //left

Delay30ms();

Number_XY--;

}

}

if(NextOffset < 0 && Y0 != Y)

{

NextOffset=NextOffset+X;

X0=X0;

Y0=Y0+1;

for(i=0;i<4;i++)

{

P2=Anti_Clockwise[i]; //UP

Delay30ms();

Number_XY--;

}

}

if(Number_XY <= 0)

break;

if(X0==X && Y0==Y)

Number_XY--;

}

}

}

C语言圆弧插补代码如下:

NextOffset = Dfr_X*Dfr_X + Dfr_Y*Dfr_Y - Radius*Radius;//偏差初始值;

while(1) //one

{

if(NextOffset >= 0 && Dfr_X != 0)

{

NextOffset = NextOffset - 2 * Dfr_X + 1;

Dfr_X=Dfr_X-1;

Dfr_Y=Dfr_Y;

for(i=0;i<4;i++)

{

P0=Anti_Clockwise[i]; //right

Delay30ms();

Count_Step++;

}

}

if(NextOffset < 0 && Dfr_Y != Radius)

{

NextOffset = NextOffset +2*Dfr_Y + 1;

Dfr_X=Dfr_X;

Dfr_Y=Dfr_Y+1;

for(i=0;i<4;i++)

{

P2=Clockwise[i]; // down

Delay30ms();

}

}

if(Dfr_X==0 )

break;

}

while(1) //two

{

if(NextOffset >= 0 && Dfr_Y != 0)

{

NextOffset = NextOffset -2*Dfr_Y + 1;

Dfr_X=Dfr_X;

Dfr_Y=Dfr_Y-1;

for(i=0;i<4;i++)

{

P2=Anti_Clockwise[i]; //right

Delay30ms();

}

}

if(NextOffset < 0 && Dfr_X != Radius)

{

NextOffset = NextOffset +2*Dfr_X + 1;

Dfr_X=Dfr_X+1;

Dfr_Y=Dfr_Y;

for(i=0;i<4;i++)

{

P0=Anti_Clockwise[i]; // up

Delay30ms();

}

}

if( Dfr_Y==0 )

break;

}

while(1) //three

{

if(NextOffset >= 0 && Dfr_X != 0)

{

NextOffset = NextOffset - 2*Dfr_X + 1;

Dfr_X=Dfr_X-1;

Dfr_Y=Dfr_Y;

for(i=0;i<4;i++)

{

P0=Clockwise[i]; //left

Delay30ms();

}

}

if(NextOffset < 0 && Dfr_Y != Radius)

{

NextOffset = NextOffset +2*Dfr_Y + 1;

Dfr_X=Dfr_X;

Dfr_Y=Dfr_Y+1;

for(i=0;i<4;i++)

{

P2=Anti_Clockwise[i]; //up

Delay30ms();

}

}

if(Dfr_X==0 )

break;

}

while(1) //four

{

if(NextOffset >= 0 && Dfr_Y != 0)

{

NextOffset = NextOffset -2*Dfr_Y + 1;

Dfr_X=Dfr_X;

Dfr_Y=Dfr_Y-1;

for(i=0;i<4;i++)

{

P2=Clockwise[i]; //down;

Delay30ms();

}

}

if(NextOffset < 0 && Dfr_X != Radius)

{

NextOffset = NextOffset +2*Dfr_X + 1;

Dfr_X=Dfr_X+1;

Dfr_Y=Dfr_Y;

for(i=0;i<4;i++)

{

P0=Clockwise[i]; //left

Delay30ms();

}

}

if(Dfr_Y==0 )

break;

}

c语言直线插补原理程序,直线插补算法相关推荐

  1. 数字积分法插补c语言程序,数字积分法插补原理

    <数字积分法插补原理>由会员分享,可在线阅读,更多相关<数字积分法插补原理(19页珍藏版)>请在人人文库网上搜索. 1.3单元 数字积分法插补原理,掌握数字积分法插补基本原理 ...

  2. 计算机插补,插补原理及控制方法

    <插补原理及控制方法>由会员分享,可在线阅读,更多相关<插补原理及控制方法(40页珍藏版)>请在人人文库网上搜索. 1.第三章 插补原理及控制方法,插补的概念 插补(Inter ...

  3. matlab 数控插补实验,数控插补原理及G代码编程实验.ppt

    数控插补原理及G代码编程实验 数控插补原理及G代码编程实验 机械工程实验教学中心 数控插补原理及G代码编程实验 ★ 二维插补原理实验 ★ 数控代码编程实验 1 实验目的 ★ 使学生掌握逐点比较法.数字 ...

  4. 插补、直线插补、联动与插补

    转自:http://blog.gkong.com/218hty_27393.ashx 什么是插补? 试由直线的逐点比较工作节拍说明其插补过程: 答:插补是在组成轨迹的直线段或曲线段的起点和终点之间,按 ...

  5. 计算机插补,第三章计算机数控装置的插补原理.doc

    第三章 计算机数控装置的插补原理 3.1 概述 3.1.1插补的基本概念 是指在轮廓控制系统中,根据给定的进给速度和轮廓线形的要求等"有限信息",在已知数据点之间插入中间点的方法, ...

  6. C++版本OpenCv教程(四十二)霍夫变换原理及直线检测

    霍夫变换(Hough Transform)是图像处理中检测是否存在直线的重要算法,该算法是由Paul Hough在1962年首次提出,最开始只能检测图像中的直线,但是霍夫变换经过不断的扩展和完善已经可 ...

  7. c语言 绘制任意斜率的直线,绘制任意斜率的直线

    <绘制任意斜率的直线>由会员分享,可在线阅读,更多相关<绘制任意斜率的直线(15页珍藏版)>请在人人文库网上搜索. 1.淮海工学院计算机工程学院 实验报告书 课程名: 计算机图 ...

  8. python 图像变化检测_Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客...

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 33 篇. 基础知识铺垫 霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几 ...

  9. LSD快速直线检测的原理概要及OpenCV代码实现(CV类LineSegmentDetector)

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 LSD快速直线检测算法是由Rafael Grom ...

最新文章

  1. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
  2. 解决eclipse ctrl+鼠标左键不能用
  3. SEO的操作流程梗概
  4. [register]-ARMV8-aarch64 部分系统寄存器总结(必背)
  5. HDU - 5017 Ellipsoid(三分套三分/模拟退火)
  6. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
  7. 中医教你5个补肾护发食疗方
  8. ABP源码分析三十六:ABP.Web.Api
  9. 昨夜,拼多多发布财报后,大家只看到了用户达到7.31亿
  10. strcore.cpp(156) 内存泄漏
  11. 数字证书转换cer---pem
  12. Office LTSC 2021 for Mac
  13. var that = this 小坑记
  14. Mybatis详细教程
  15. 离散时间傅里叶变换(DTFT)与离散傅里叶级数(DFS)
  16. 【English】十二、英语句子种类,陈述句、疑问句、祈使句、感叹句
  17. 使用Telerik控件搭建Doubanfm频道部分
  18. 手机铃声和图片的详细设计说明
  19. 【报错】unhandled error during execution of watcher callback
  20. 【CSharp】延迟初始化(Lazy)

热门文章

  1. Twitter 永久在家办公 VS 特斯拉对抗加州政府成功复工
  2. Go环境配置(MAC)
  3. 酒店项目 酒店管理系统酒店在线预订系统
  4. 零伽壹浅谈:区块链存证机制之探索
  5. orcad DRC检查,元件C2都没连接,为什麼不报错
  6. 完成10亿元D轮融资,易快报成费控SaaS独角兽?
  7. python pexels_从零开始学习python爬虫方法,从安装到语法基础(附赠资料)
  8. 索尼Xperia XZ1拆机换上听筒和电池
  9. 前沿研究丨李德毅院士:基于驾驶脑的智能驾驶车辆硬件平台架构
  10. 锻炼完美腹肌的7条原则