搜索
bottom↓
回复: 28

如何查找G代码中曲线的路径

[复制链接]

出0入0汤圆

发表于 2010-6-18 17:58:04 | 显示全部楼层 |阅读模式
G代码在描述的曲线,是由很多个小线段来逼进它

当我们在处理这些小线段时,如果单个节点进行插补,则需要反复的加减速,插补速度很慢

所以在处理小线段时,需要采用连续插补,即将曲线的路径找出来,在起始线段处加速,在末尾线段减速


现在头痛的是,如何找出曲线的路径呢

想了几个方法

预读N条G代码,
1、找出插补主轴,看当前线段的插补主轴和上一线段的插补主轴是否一致,如果不一致,则减速,否则不减速,连续运动

2、插补主轴如果换向,则减速。否则不减速,连续运动

如下图,圆的雕刻路径



(原文件名:未命名.JPG)

共有200条直线段和圆弧

如果采用单节点插补,则要加减速200次

如果采用连续插补,则只要加减速5次

可实际上,这个圆是可以加减速一次,就可以加工完成的。 不知大家有没有好的方向来判断G代码中的路径,连续插补时如何确定在哪一线段开始减速

再看下图,插补主轴换向后减速的例子

(原文件名:未命名.JPG)

注明一下,插补主轴是指在插补过程中,移动距离大的一轴

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-6-18 19:38:26 | 显示全部楼层
MCX314中文手册ourdev_562428L4CERS.pdf(文件大小:1.08M) (原文件名:MCX314cn.pdf)
手册中有在连续查补中的描述。不知有没有帮助

出0入0汤圆

 楼主| 发表于 2010-6-18 21:59:33 | 显示全部楼层
谢谢semonpic的回复

我现在的问题不是如何实现连续插补,而是不知道要提取G代码中的哪些线段来做连续插补

出0入0汤圆

 楼主| 发表于 2010-6-18 22:01:34 | 显示全部楼层
连续插补是在CPLD里完成的,现在的问题是如何找出需要连续插补的线段,然后将它写入CPLD

出0入0汤圆

发表于 2010-6-19 08:13:16 | 显示全部楼层
顶起,关注。

楼主加工的工件有多大,速度要多高啊,插补都用到加减速了

出0入0汤圆

 楼主| 发表于 2010-6-19 08:54:48 | 显示全部楼层
步进电机运动,当然要加减速才行

这是最基本的

不可能用恒速去插补吧

速度不快 3米每分就行


单节点插补用来雕刻PCB还行,最高可达1.2米每分

如果雕刻PVC,要3米每分的加工速度,就要用连续插补了

出0入0汤圆

发表于 2010-6-19 16:32:30 | 显示全部楼层
是哪个加减速?是电机性能要加速启动?或减速缓冲?3米每分钟这么慢的速度不要加减速。

出0入0汤圆

发表于 2010-6-19 16:52:42 | 显示全部楼层
步进电机走3米每分钟不算很慢吧,如果丝杆导程是5mm,3米每分是600转/分了,是要加减速才行

出0入0汤圆

发表于 2010-6-21 11:06:47 | 显示全部楼层
1、你的G代码怎么生成的?如果是你描述的正圆且你的硬件支持圆弧插补的话,就没必要打散成小段。
2、你需要看下速度规划方面的资料,插补算法除了曲线拟合以外都比较好实现了,如何针对你的插补
   算法和机床、电机的特性来做速度规划,以达到要求的加工精度才是重点。
3、你说的预读N条G代码是可行的办法,前瞻处理,有几种算法,可以去查下资料。
4、对“需要连续插补的线段”很是不解,加工过程要么连续插补,要么走单段,而且这个是用户来选择的。

出0入0汤圆

 楼主| 发表于 2010-6-21 13:07:22 | 显示全部楼层
re:yngufeng

感谢你,回答得非常的仔细

1、正圆是可以用四个和四个以下的圆弧来表示,主的要问题不是圆,而是曲线,曲线是由很多小段的圆弧和直线描述的。
2、圆弧和直线插补目前可以说是做得很好了,关键是曲线运动时,反复加减速导致速度提不上来。
   至于加工精度,和电机,驱动器,丝杆以及G代码有关。目前精度不是问题。主是要是曲线加工和直线圆弧相比加工效率很低。
   正因为这样,所以需要用连续插补,使曲线拟合的所有小线段加工时只需要一个加减速过程。

4、在G代码中,有三种类型的线段,直线、圆弧、曲线,直线和圆弧是用的单条代码描述的,而曲线则是由多条G代码描述的,在加工直线和圆弧的时候是走单段,而加工曲线的时候是连续插补的。

出0入0汤圆

 楼主| 发表于 2010-6-21 13:18:37 | 显示全部楼层
如下图的 D

(原文件名:1.JPG)
最外面的那条路径有由19条小线段组成的弧

如果单段加工,要加工19段,加减速19次,如果加速度不够且最大速度设得比较高,每段都加不到最大速度。

如果连续插补,19段连续加工,只需要加减速1次,如果加速度不够且最大速度设得比较高也没有关系,第一段加不到,第二段接着加,这样可以加到最大速度

很显然,连续插补效率高。

出0入0汤圆

发表于 2010-6-21 20:24:35 | 显示全部楼层
回复【10楼】liu_xf 新发

-----------------------------------------------------------------------
呵,明白你的意思了.
我目前采用的方法跟你的"预读N条G代码"方法类似,只是把所有的运动指令G代码(GOO,G01,G02,G03...包括打散的小线段)统一处理.
N值是固定的(比如30条),不过有局限性,当连续小线段太多的时候,速度就提不了太高.
还有一种是定长前瞻,不过操作太复杂,要看你的CPU性能和内存容量.
也有高手跟我说过先把全部刀路处理一遍再跑,不过只适用于比较小的文件,而且不能实现加工中调速.
个人觉得从这几种方法中找个折中方案是效果最好的.
祝你成功 ∧_∧Y

出0入0汤圆

 楼主| 发表于 2010-6-21 22:07:32 | 显示全部楼层
定长前瞻我觉得不合适

G代码中 不是所有的线段都能连续处理

曲线的拐角处一定是要减速的

比如 10楼图片中

从 1 开始,到19 这段弧线就结束了,下一段又要重新开始

所以说 前瞻的长度要看 曲线的路径

出0入0汤圆

 楼主| 发表于 2010-6-21 22:12:02 | 显示全部楼层
其实还有一个问题 不知 yngufeng 兄遇到过没有


我们知道,不同的线段在插补时,输出的频率是不一样的,比如 1段插补时X频率是15K,第2段插补时 X的频率变为14K

当这两段连续插补时,会产生一个1K频率的跃变

这会影响机器运动的连续性。

我觉得在插补第一段快结束时,应减速至14K,然后再连上第二段,这样才会很连续

关键是这个控制起来有点困难。

在目前的测试中,还真发现这个问题

出0入0汤圆

发表于 2010-6-21 22:41:24 | 显示全部楼层
回复【13楼】liu_xf 新发
-----------------------------------------------------------------------

15K-14K的跳变其实可以理解为加速度,只要这个加速度不超过机床和电机能承受的最大加速度,实际加工是没有太大影响的.当然这个跳变值是越小越好的,所以在两段数据的夹角比较大的时候,就得先把速度降下来.如果要做到非常平滑的过度而且速度不能降太多的话,估计要用到曲线拟合.你可以试下定条数的前瞻,我们的这一算法已经用在了实际的产品中了,由于机床要求不是很高,目前看起来是可以满足加工要求的.

出0入0汤圆

发表于 2010-6-21 23:50:46 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-6-22 08:10:17 | 显示全部楼层
yngufeng 看来是高手,膜拜一下。

定条数前瞻,那不是要在加工的时候判断两段数据的夹角,当比较大的时候还要降速

也就是说,边插补,边判断

为何不在夹角比较大的时候停止前瞻,插补的时候就不需要判断了

你觉得呢

看不出定长前瞻有什么优势

出0入0汤圆

 楼主| 发表于 2010-6-22 08:21:49 | 显示全部楼层
其实我觉得还有一个方法,来解决 频率跃变的问题

就是连续插补时仍然加减速,只是减速时不是减到最小速度,而是减到一个定值

这个定值与最大速度接近,且与连续插补的所有线段的最小速度也接近。

这样,连续插补时,输出的脉冲跳变是很小的,而且加工时根本看不出它是在加减速

出0入0汤圆

发表于 2010-6-22 09:04:48 | 显示全部楼层
我的速度规划可能与我的架构有关(FPGA按指定的速度做插补,速度规划交给上层MCU来解决).
个人觉得如你所说的连续插补降速到定值是不可行的,因为夹角是不定的,这样的话,等于你用同样的拐弯速度来走不同的弯道,会出问题的.
我同事用了个比较形象的比喻:赛车手过弯道.所有弯道都被打成了小线段.那么怎样才能保证以最快的速度过弯又不翻车?
"跳频"的问题其实就是线段终点速度的问题.当前段的终点速度就是下一段的起点速度,那么就要根据这两段的夹角来确定这个终点速度,使得"跳频"不超过最大加速度.

出0入0汤圆

 楼主| 发表于 2010-6-22 13:51:16 | 显示全部楼层
15K-14K的跳变其实可以理解为加速度,只要这个加速度不超过机床和电机能承受的最大加速度,实际加工是没有太大影响的.当然这个跳变值是越小越好的,所以在两段数据的夹角比较大的时候,就得先把速度降下来.如果要做到非常平滑的过度而且速度不能降太多的话,估计要用到曲线拟合.你可以试下定条数的前瞻,我们的这一算法已经用在了实际的产品中了,由于机床要求不是很高,目前看起来是可以满足加工要求的.
--------------

yngufeng 兄,你那个产品里,有没有出现 频率跳变的情况

你的机床最大加工速度是多少

频率跳变,加工速度底的时候还没事,加工速度越高的时候,跳变也被放大了。

出0入0汤圆

发表于 2010-6-22 14:22:58 | 显示全部楼层
回复【22楼】liu_xf 新发
-----------------------------------------------------------------------

"只要这个加速度不超过机床和电机能承受的最大加速度,实际加工是没有太大影响的....所以在两段数据的夹角比较大的时候,就得先把速度降下来....."
速度降下来了,跳变值就小了.所以拐弯才要减速.
我们的产品,跳频是肯定有的,具体跳变值没测量过.
加工速度5m/min左右~可以满足要求.

出0入0汤圆

 楼主| 发表于 2010-7-1 10:55:00 | 显示全部楼层
"跳频"的问题其实就是线段终点速度的问题.当前段的终点速度就是下一段的起点速度,那么就要根据这两段的夹角来确定这个终点速度,使得"跳频"不超过最大加速度.
-------------

经测试,不解决跳频还真不行,速度快了有失步的情况

看来,需要针对不同的曲线做速度规划

由CPU算出每一段的终点速度

然后交给CPLD去处理。


采用连续插补,加工效率那是成倍的增长啊。呵呵


CPLD资源有点紧了!

出0入0汤圆

发表于 2012-11-10 10:13:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-4-3 16:01:25 | 显示全部楼层
MARK:加我QQ939896399

出0入0汤圆

发表于 2013-4-3 17:01:05 | 显示全部楼层
mark 学习

出20入0汤圆

发表于 2013-4-4 01:03:36 来自手机 | 显示全部楼层
.学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表