菜鸟学四轴控制器之3:数字积分法DDA实现直线插补
上一篇的逐点比较法显然是无法画一条有倾角的直线的。因为X轴和Y轴永远都不同步,也就是像打台球一样,你打一个,我打一个,如果我进了球,我再接着打一个。
也就是说,如果直线为45度,也是没有办法画出来的,只能是锯齿形状。
如何实现X和Y同时动?也就是说,如果要画一条45度的线,X和Y同时动不就行了么?
比如起点为0,0,终点为5,5,如果采用逐点比较法,则需要运动10次,如果两轴同时运动,则5步就可以实现了。实现的途径如下:
初始值为0,0,然后下一步,我们每个坐标增加5,则结果为5,5,这样会溢出,也就是说,溢出来出发运动一步。溢出以后清零,下一步再加5,又溢出,继续同时运动一步。一共5步就可以实现了。
等等,当然可以设置寄存器的溢出值为5,这样的寄存器使用3位就行了,但是如果要移动到(3,7)的坐标呢?显然,我们用的寄存器则可以选用溢出值为7.
这样的话,我们要用的寄存器其实需要3个,一个是存(3,7)的初始值,一个存7这个阀值,一个则是累加器。我们可以直接省掉一个阀值的寄存器。也就是说,直接用3位的寄存器,阀值为8.
| 步数 | X累加 | X余数 | X是否溢出 | Y累加 | Y余数 | Y是否溢出 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 3 | 0 | 0 | 7 | 0 | 0 |
| 2 | 6 | 0 | 0 | 14 | 6 | 1 |
| 3 | 9 | 1 | 1 | 13 | 5 | 1 |
| 4 | 4 | 0 | 0 | 12 | 4 | 1 |
| 5 | 7 | 0 | 0 | 11 | 3 | 1 |
| 6 | 10 | 2 | 1 | 10 | 2 | 1 |
| 7 | 5 | 0 | 0 | 9 | 1 | 1 |
| 8 | 8 | 0 | 1 | 8 | 0 | 1 |
也就是说,当X轴和Y轴同时溢出的时候,X和Y轴是在同步运动的。
问题来了,比如我们要运动从(0,0)运动到(2554,47)这个点,实际需要多少步?
也就是说,只要能装的下2554这个的寄存器位数就可以了,也就是说,用4096来作为累加器。移动的速度则是4096*脉冲当量的周期。实际上,这个时间比2554+47慢了很多了。
但是这样做的好处显而易见,我们不是每一个图形,都是锯齿形了。
我们可以轻松的实现直接的实际刀路如上面的图形
从而实现了多座标联动,多坐标曲线插补,在轮廓控制方面得到了广泛的应用。
再来一个例子。
上面没有用到公式,如果感兴趣可以找教材了解,原理图如下:
还有一种就是圆形的DDA插补,鉴于我好不容易才理解了数字积分法,以及提高DDA插补质量用到了更加难理解的左移规格化等技术,干货太多,我打算另起一篇。
想起李笑来的一句话:解决问题的钥匙,显然大部分时候都不是要你眼睛盯着锁头,而是要到别的地方去寻找。
显然,我一开始就打算了解什么是插补,什么是联动,在百度上苦苦搜寻,压根就没有办法了解清楚,而在不经意中,为了了解DDA,多轴联动的概念迎刃而解。
菜鸟学四轴控制器之3:数字积分法DDA实现直线插补的更多相关文章
- 数字积分法DDA(DDA(Digital Differential Analyzer)
数字积分法DDA(DDA(Digital Differential Analyzer) 数字积分法又称数字微分分析法DDA(Digital differential Analyzer),是在数字 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补
对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明), ...
- iOS边练边学--父子控制器之自定义控制器的切换
一.如图所示的界面,按钮One.Two.Three分别对应三个控制器的view,点击实现切换.个人感觉父子控制器的重点在于,控制器的view们之间建立了父子关系,控制器不建立的话,发生在view上面的 ...
- 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...
- 菜鸟学IT之四则运算升级版
菜鸟学IT之四则运算升级版 本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 团队代码github远程仓库的 ...
- JS控制只能输入数字并且最多允许小数点两位
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- JS 控制只能输入数字并且最多允许两位小数点
<html lang="en"> <head> <meta charset="UTF-8"> <title>JS ...
- 菜鸟学Java(十五)——Java反射机制(二)
上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...
- 菜鸟学Java(十四)——Java反射机制(一)
说到反射,相信有过编程经验的人都不会陌生.反射机制让Java变得更加的灵活.反射机制在Java的众多特性中是非常重要的一个.下面就让我们一点一点了解它是怎么一回事. 什么是反射 在运行状态中,对于任意 ...
随机推荐
- Spring实战4:面向切面编程
主要内容 面向切面编程的基本知识 为POJO创建切面 使用@AspectJ注解 为AspectJ的aspects注入依赖关系 在南方没有暖气的冬天,太冷了,非常想念北方有暖气的冬天.为了取暖,很多朋友 ...
- Func系列3:自定义模块
简介 Func自带的模块已经非常丰富,但在日常系统运维当中,尤其是面对大规模的服务器集群.不同类别的业务平台,次是Func自带的模块或许已经不能满足我们的需求,所以有必要通过自定义模块来填补这块的不足 ...
- android学习笔记42——图形图像处理2——绘图
绘图 android的绘图应该继承View组件,并重写onDraw(Canvas canvas)方法即可. 重写onDraw(Canvas canvas)方法时涉及一个绘图API:Canvas,Can ...
- 编译在arm板上使用的sqlite3的静动态库
采用的是sqlite-autoconf-3080002.tar.gz 解压 tar xvf sqlite-autoconf-3080002.tar.gz 进入 cd sqlite-autoconf-3 ...
- jquery .filter()过滤器
述: 筛选元素集合中匹配表达式 或 通过传递函数测试的 那些元素集合. .filter( selector ) selector 类型: Selector 一个用于匹配 ...
- Lnmp环境的自搭建
### 备选#### 安装开发者工具包 (简约版的可能要安装一下) yum groupinstall "Development tools" ########## 1.准备 php ...
- php全角字符转换为半角函数
<?php /** * 全角字符转换为半角 * * @param string $str * @return string public function Sbc2Dbc($str) { $ar ...
- 黄聪:simple_html_dom 换行符丢失
我在利用simple_html_dom来解析文档是,想要将其中的换行符替换成<BR> , 结果试了好几次没有成功,但是在原始文档中确实是有换行符的.后来索性把装载进来的文档打印出来,结果发 ...
- [HTMLDOM]删除已有的 HTML 元素
摘自www.w3school.com:http://www.w3school.com.cn/htmldom/dom_elements.asp如需删除 HTML 元素,您必须清楚该元素的父元素: < ...
- HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的. 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| ...