数控技术 - 直线插补 - 逐点比较法
数控技术-直线插补 - 逐点比较法
前言:还有5天要考《数控技术》了,开始(复习)预习时发现,考点之一是直线插补。这个知识点不是我上个学期的课程设计——运动控制卡的主要功能之一吗。我当时对直线插补的理解还是很简单的:一边两点取中间打折,使线段更加平滑。现在看了理论实现后发现,可以说不是一个东西了,所以甚是感觉有趣。
排除掉要应付大学考试,直线插补这个知识点还是很主要的。特地写篇笔记记录,防止以后忘记。
- 推荐视频:《逐点比较法-478-机床数控系统综合设计-远程教育|夜大|面授|函授|家里蹲大学|宅在家|在家宅_哔哩哔哩_bilibili》北京理工大学老师讲解,up主应该是转载或代传。
1.解释
- 逐点比较法,顾名思义,逐个点比较。每次进给都会得到一个点,然后再和目标线段比较误差。根据误差决定下一次进给的方向,循环反复。
- 该方法有个重要定义:只适用于两轴决定的平面,每次进给都只能沿轴方向,必须且只能选一个轴方向。
数学定义很重要,嗯……
- 下面直接看效果图,图源自网络 。实践时,XY轴就是电机控制,每次移动一定单位量。
2.过程步骤
- 根据视频教程的总结,可访分为5步:①得出偏差函数;②偏差判别;③坐标进给;④新的偏差计算;⑤终点判别,如果没到就重复②,循环反复;
(0)符号
- 为下面的内容做些规定,用符号代替名词,方便阅读。
- 原点
O
;
(xs,ys)(x_s,y_s) (xs,ys)
- 终点
E
;
(xe,ye)(x_e,y_e) (xe,ye)
- 中间点
P
;(ij
表示各轴进给的次数)
(xi,yj)(x_i,y_j) (xi,yj)
(1)公式由来
- 因为进给是单位量,所以得到的中间点
P
会出现3种情况:在线段上方,在线段中,在线段下方。 - 逐点比较法的重点是 比较偏差 ,为了方便,定义用斜率比较偏差。
下面公式例子 部分 只列举一种情况,排版原因不穷举了。
- 用线段
OP
的斜率与OE
比较:斜率大,在线段上方;斜率 相等 ,在线段中;斜率小,在线段下方。
yjxi>yexe\frac{y_j}{x_i} > \frac{y_e}{x_e} xiyj>xeye
- 数学式子要漂亮,为了方便计算,化简成与零作比较。
yi∗xe−ye∗xi>0y_i*x_e - y_e*x_i >0 yi∗xe−ye∗xi>0
- 这个式子就定义为偏差函数,决定了进给方向。
F=xe∗yj−xi∗ye>0F = x_e*y_j - x_i*y_e > 0 F=xe∗yj−xi∗ye>0
- 结合第一象限的图,点
P
位于线段下方时,进给就要 向上 ,靠近线段;位于线段上方时,进给就要 向前 ,靠近线段。即分别沿y轴正方向,x轴正方向进给。同时规定,在线段中时,也属于线段上方,沿x轴进给。
(+Δx)(+ \Delta x) (+Δx)
- 计算新的偏差函数,然后整理化简可得,新的偏差就等于,上一个偏差减去点
E
的y轴坐标,或上一个偏差加上点E
的x轴坐标。
F1=xe∗yj−(xi+1)∗ye=(xe∗yj−xi∗ye)−ye=F−yeF1=xe∗(yj+1)−xi∗ye=(xe∗yj−xi∗ye)+xe=F+xeF_1 = x_e*y_j - (x_i+1)*y_e = (x_e*y_j - x_i*y_e) - y_e = F - y_e \\ F_1 = x_e*(y_j+1) - x_i*y_e = (x_e*y_j - x_i*y_e) + x_e = F + x_e F1=xe∗yj−(xi+1)∗ye=(xe∗yj−xi∗ye)−ye=F−yeF1=xe∗(yj+1)−xi∗ye=(xe∗yj−xi∗ye)+xe=F+xe
- 到这里就很明朗了,我只需计算初始的偏差函数,然后每次新的偏差函数根据终点
E
坐标和进给方向计算。无须在意中间点P
的坐标。巧妙啊!
F1=F−yeF1=F+xeF_1 = F - y_e \\ F_1 = F + x_e F1=F−yeF1=F+xe
- 关于终点的判别,有2种方法:总步长法、总坐标法。原理都一样,其实得到轨迹图后分开xy轴,会发现就是在走 三角形 。比如走到点
(x_s,y_e)
再走到点(x_e,y_e)
,所以,其实只要总步数够了一定能到达终点。
N=∣xe∣+∣ye∣N = |x_e| + |y_e| N=∣xe∣+∣ye∣
- 又或者,只要三角形的最长边已经走完了,也代表已经走到终点了。
3.例题
最后还是要做个题目练练手,不能转头就忘记了。
题目:加工第一象限直线OE,起点为坐标原点,终点坐标为E(6,3),试用逐点比较法对该段直线进行插补,并画出插补轨迹。
- 偏差函数
F=xe∗yi−xi∗ye=6∗0−0∗3=0F = x_e*y_i - x_i*y_e = 6*0 - 0*3 = 0 F=xe∗yi−xi∗ye=6∗0−0∗3=0
- 偏差判别
F=0F = 0 F=0
- 坐标进给
(+Δx)(+ \Delta x) (+Δx)
- 偏差计算
F1=F−ye=−3F_1 = F - y_e = -3 F1=F−ye=−3
- 终点判别,等于零时代表结束。
n=∣xe∣+∣ye∣−1=9−1=8n = |x_e| + |y_e| - 1 = 9 - 1 = 8 n=∣xe∣+∣ye∣−1=9−1=8
- 循环第二步。
脉冲 | 偏差判别 | 进给方向 | 偏差计算 | 终点判别 |
---|---|---|---|---|
0 | 0,(6,3) | 9 | ||
1 | 0=0 | +x | 0-3=-3 | 8 |
2 | -3<0 | +y | -3+6=3 | 7 |
3 | 3>0 | +x | 3-3=0 | 6 |
4 | 0=0 | +x | 0-3=-3 | 5 |
5 | -3<0 | +y | -3+6=3 | 4 |
6 | 3>0 | +x | 3-3=0 | 3 |
7 | 0=0 | +x | 0-3=-3 | 2 |
8 | -3<0 | +y | -3+6=3 | 1 |
9 | 3>0 | +x | 3-3=0 | 0 |
- 可以发现,第一个偏差和最后一个偏差 总是 为0的。这是因为起点和终点肯定都在线段上,这个点也在坐标轴的 整值 上。
4.补充
(1)其他象限的线段
- 当线段的 朝向 是其他象限时,情况和第一象限类似。下面介绍2种方法,需要注意的是,下面两种方法得到的结果是 不一样 的,这就很奇葩了……
- 可以选择从偏差函数重新推导一遍得到结果,也就是视频中提到的 分别处理法 ,不常用,需要记多个公式。
- 可以采用相对进给的方法,将坐标取绝对值计算,即将线段转为第一象限。计算出的结果是远离坐标轴还是靠近坐标轴,根据结果相对得到原本的进给方向。为 坐标变化法 ,一般也常用这个,好用。
(2)坐标轴上的线段
- 这个更加简单了,只需要沿一个坐标轴进给就好了。另一个坐标轴一直不用进给。
数控技术 - 直线插补 - 逐点比较法相关推荐
- MATLAB实现数控加工中的逐点比较法直线插补(四个象限,动态显示)
逐点比较法就是刀具每走一步都要和给定轨迹上的坐标值做比较,从而决定下一步的进给方向.一般有直线插补和圆弧插补.简单的说就是,如果起始位置在给定轨迹的下方,下一步就向轨迹的上方走.如果起始位置在给定轨迹 ...
- 逐点比较法直线插补MATLAB(四个象限分开)
现在还是只能分开运行,还在研究怎么合在一起 第一象限 Xs = input('请输入起点横坐标XIn X0= '); Ys = input('请输入起点纵坐标YIn Y0= '); Xe = inpu ...
- 插补、直线插补、联动与插补
转自:http://blog.gkong.com/218hty_27393.ashx 什么是插补? 试由直线的逐点比较工作节拍说明其插补过程: 答:插补是在组成轨迹的直线段或曲线段的起点和终点之间,按 ...
- matlab程序 直线插补,无聊写matlab仿真直线插补算法
本帖最后由 CK345 于 2016-6-24 17:16 编辑 X0 = input('请输入起点横坐标 X\n X0 = '); Y0 = input('请输入起点纵坐标 Y\n Y0 = '); ...
- c语言直线插补原理程序,直线插补算法
直线插补算法,就是刀具或绘笔每走一步都要和给定的数据进行比对,看该点在次点的上方或者是下方,从而决定下一步该怎么走. 即机床数控系统依照一定方法确定刀具运动轨迹的过程.也可以说,已知曲线上的某些数据, ...
- 机械臂控制软件,上位机软件 此机器人上位软件。 运动采用通用G代码指令编程,具有G5三维的空间圆弧插补,空间直线插补功能
机械臂控制软件,上位机软件 此机器人上位软件. 运动采用通用G代码指令编程,具有G5三维的空间圆弧插补,空间直线插补功能,子程序编程功能,逻辑判断语句功能,示教编程功能(支持手柄),变量位置编程功能, ...
- 用C语言代码实现布雷森汉姆直线插补
布雷森汉姆直线插补是计算机图形学中常见的直线插补算法.以下是用C语言实现布雷森汉姆直线插补的代码示例: #include <stdio.h> #include <math.h> ...
- matlab六轴直线插补代码
针对已有点位,通过matlab编程进行直线插补,插补逻辑是将X.Y.Z.A.B.C先分成XY,ZA和BC三部分,给定直线轴插补步长LStep和旋转轴插补步长RStep.先计算要插补的两行代码各个轴所要 ...
- 基于带约束S型加减速曲线的空间直线插补与空间圆弧插补算法(Matlab)
写在前面 学习代码都记录在个人github上,欢迎关注~ Matlab机器人工具箱版本9.10 在前面的博文中: 基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab) 基于 ...
- 用c++模拟直线插补和圆弧插补
C++模拟直线插补(不带图形) http://download.csdn.net/detail/z893345329/7358097 运行结果: C++模拟圆弧插补(不带图形) http://down ...
最新文章
- Data Science | 数据分析
- AttributeError: module ‘tensorflow‘ has no attribute ‘app‘
- jovi智慧场景运动步怎么是零_Jovi智慧场景,赛事直播提前提醒,让你不错过任何一刻的精彩...
- JavaScript基础学习(七)—BOM
- javascript面试_在编码面试中需要注意的3个JavaScript问题
- jupyter怎么安装jieba_AI工具:Anaconda中Jupyter不能import已安装module问题解决
- 此计算机到未能识别网络连接,本地连接显示“未识别的网络”
- transtion-transform
- SQL Server中的bcp实用工具(批量复制程序)简介
- java遍历jsonarray数组_java-JSON-遍历JSONArray
- 功能强大的Server.Transfer
- RSA加密算法流程图
- APP版本更新通知流程图
- Excel如何批量添加批注
- 使用Qt常见报错及解决方案
- 从执行计划的预估行数看执行计划是否正确
- 关于Office 365 显示语言的设置(注册开通时的语言选择及注册开通后的语言显示修改)
- java(jdk 1.8 64位)连接中控考勤机
- 认识世界的基础——系统概述-1
- 服务器网站后门检测软件,服务器安全工具
热门文章
- 全志V3s 荔枝派WiFi RTL8723BS 连接
- QCC302X/QCC303X蓝牙对讲与蓝牙扩音器
- 最简单的STM32入门教程----闪烁LED
- Java生成随机数的方法
- oracle sqlldr decode,SQLLDR应用举例
- access vba代码全部丢失_Access2016由于无法读取数据库中所含的VBA工程,因此无法打开此数据库。只有先删除VBA工程,然后才能打开数据库...
- vmware linux虚拟机网络配置
- 基于JAVA大学生旅游拼团网站计算机毕业设计源码+系统+数据库+lw文档+部署
- Java编一个收银小票_Java编程打印购物小票实现代码
- Apple M1 开启HiDPI的新方法,无需关闭SIP,无需SwitchResX