数控车宏程序入门二
这是第四篇,还是建议先看其他三篇,一步一步来。我的帖子都是通过链接找到上一篇,然后再找到上一篇,这样就可以找到第一篇了。这是第三篇的链接 http://tieba.baidu.com/p/2646631237
我们接着第三篇的问题往下面说。在第三篇的最后,我介绍了曲线类的基本知识——方程的化简。化简的目的相信看过的吧友也知道了,这里不再赘述。现在看下本篇大纲: 1 椭圆为例的宏程序(第二节)
2 椭圆为例的宏程序(第三节) 以及剖析曲线类宏程序的编制思想
NO.1 椭圆为例的宏程序(
第二节)
在第一节,我讲解了化简以及化简的目的。不论以后做到什么曲线,都需要化简。抛物线也好,渐开线也罢,至少你要定义出自变量和因变量。这样才能编制它的程序。那么第二节我主要介绍椭圆的相关参数。其实这些我本也不该讲。但部分吧友的基础真的很差,所以这里也是扫盲。以后遇到抛物线或者其他曲线,建议先看下曲线的定义,不求甚懂,但至少要知道方程的某个值或者符号,代表的是什么!
说到椭圆,和我们宏相关的参数就两个:长半轴和短半轴!分别用字母 a 、b 表示。那么什么是长半轴,什么是短半轴呢?我们看图说明
如图,所谓长半轴,我们可以通俗的理解为:椭圆圆心点0,到右边点A 的直线距离叫长半轴!短半轴就是圆心点O 到达B 点的垂直距离。(不要抠字眼,也不要拿什么专业定义讨论,这些不重要!) 。前面也说过,a 表示长半轴,b 表示短半轴。如果a = 10,b = 5 那么说明这个椭圆的长半轴是10,短半轴是5 就这么回事。那么我知道长、短半轴,能不能列出一个方程呢?当然可以!方程就是 不要问为什么等于1,对编程没任何意义。这是数学大师们给我们定义好的,我们不需要花这个时间研究它。这里两个
分母a 、b 就是长短半轴,Z 和X 表示椭圆上某个点的Z 和X 坐标。其实我们可以发现,Z 对应的是长半轴,X 对应的是短半轴。知道这个,我们自己可以根据长短半轴把一个椭圆方程列出来了。然后再普及一个只是,这里的Z 和X ,他们的取值范围最大分别是他们的长短半轴的值。我们这里a=10
,b=5 所以这里Z 和X 取值最大分别是10和5 如果取值超出这个范围,那么系统会报错,因为这个方程不成立!说到这,我们可以想想,如果把X 当因变量,那么当Z 等于8的时候,X 的值一定能求出来。那么当Z 等于4,X 的值也会被求出来,因为他们存在等式关系。第二小节就到这,实在没什么好讲的了。
NO.2 椭圆为例的宏程序(第三节) 讲完方程的基础,这一节就要综合使用前面三篇所有的知识了!在正式编制椭圆程序前,先讲解下一个运算符:平方根
我们都看过第三篇,在方程化简时用到根号了。而在数控系统中,没有根号这符号。但是有一个字符他可以表示根号——SQRT 比如SQRT(4) = 2 SQRT(9) = 3 就这么简单! 现在我们来用一个椭圆图,来编制宏吧
首先看到这个图纸,我们要得到几个信息:长半轴是60,短半轴是20 有人会奇怪,这不是40嘛? 如果你觉得是40,说明基础相当差。不过没关系,这也不重要!40是短轴,那么短轴的一半不就是20么,所以称为短半轴 - -! 那么长半轴为60,长轴就是120 - -! 我们知道长、短半轴,可以列出这个方程: 然后,我们把Z 作为自变量,X 作为因变量,就有了如下方程:。当Z 取了一个值,X 就会被求出来了,这里的X 和Z 表示椭圆曲线上的某一个点的坐标,当你的Z 取60,那么对应的X 值就是0。 。试想一下,如果Z 的值不断地变化,那么X 的值也跟着变化,最后用G01指令把这些小点连接起来,是不是可以做出椭圆了呢?!
讲到这,要介绍两个“点”的概念:椭圆中心点和零件原点。零件原点一般取在零件的右端面中心,这样就构成了一个直角坐标系。那么图中的任何长度方向数值,都是带负号的!这个是基础不再赘述。椭圆中心点在X0 Z-60处。区别椭圆中心和零件原点是很重要的,很
多学习宏程序的人会把这两个点弄混淆!我们开始编制程序吧。 先做零件切削刀路分析:首先这个零件我们加工顺序是从右向左,那么刀具当是从零件右端面起切,至最左端结束(这里不考虑装夹)。
(只写精加工)!
T0101
S500M03
G0X0Z2
G01Z0F150 #1=60 我们以椭圆长半轴为自变量。这个值有正负之分。取决于需要加工的部分是在椭圆中心点的哪边。这里取60,是因为图中椭圆要从最右端加工,而最右端的坐标值相对于椭圆中心是
60。因此长半轴、短半轴的取值不是由零件原点决定,而是根据椭圆中心决定的,需格外注意!)
WHILE [#1 GE 0] DO1 // 这句话的意思是:如果#1的值大于等于60,那么就一直执行DO1、END1里的程序段,直到不符合条件!
#2=20×SQRT[1-#1*#1/60/60] // 此程#2表示椭圆短半轴,跟着长半轴变化而变化。其实这一步就是我们上面化简的方程,只不过用了宏代码格式表达而已。
G01X[#2*2] Z[#1-60] // 这里是重点!我认为这是宏程序的核心!这一步直接关系到程序的正确与否!首先说明为什么#2要乘以2。因为这里的#2表示短半轴,可以理解为零件X 方向单边值。那么在实际零件里,是双边的值才对,所以要乘以2!重点是Z 值!!!!!!!我们先想想,做这个零件,刀具肯定是从右向左加工的。也就是说Z 值是从“-1到-2再到-3一直到-60”的顺序变化的。如果这个Z 段改为”Z#1”那么会怎么样? 我们发现他的第一刀在Z60处!因为#1=60!而我们加工时第一刀应该在Z0!如果#1一直减小那么Z 加工方向是对了,但值却不对。他是从60一直加工到0。加工完我们就会发现根本没做零件,走了空刀而已!那我们需要的是从0加工到-60。所以重点是怎么样才能把他的第一刀定位在Z0!其实很简单,我们给他点“障碍”,在#1后面减去60。那么第一刀就会在Z0了。因为60-60=0。。。好,我们看看对不对。第一刀Z0, 第二刀Z-1(这里假设#1每次运算后,减1)第三刀Z-2(程序Z[58-60]的缘故) ,我们就发现Z 值和他的方向都是对的!总而言之Z 向的第一刀在你选择加工的初始点上就可以了!如果把零件原点和椭圆中心原点设置在一起。那么Z 段程序就应该是“Z#1.这里面的奥妙自己摸索,已经讲的详细了。
#1=#1-1 //这程序段意思是#1每经过一次运算后递减1。(一般递减值不会这么大,0.1就可以了。只是这里取1是为配合上面的讲解)
END1
G0X100
Z100
M30
第四篇已经结束了,里面有部分内容分是粘贴我以前的一篇文章,当时很多吧友都说还行,所以又用了下,呵呵,偷个懒.... 但关于椭圆的讲解还远没有结束,这里可以抛几个问题:如果椭圆轴线不和零件轴线重合,比如偏置了一个距离,那么该怎么编?如果我只要椭圆曲线的某一个部分,不要一半或者超过一半,又该怎么弄?亦或是倾斜了一个角度(所谓的斜椭圆) 又该怎么编?这里要说下,斜椭圆那真心是小儿科,以前看到过一人拿这个在吧里忽悠新手,这里我鄙视他一下。这玩意怎么能拿得出手呢?!
第五篇的内容就讲解上面抛出的几个问题。现在吧友可能觉得越来越深奥,不过没关系,帖子写了永远在那,慢慢来。这曲线部分只能算是一只脚踏入宏程序的大门,刚开始而已。连入门都不能算哦!各位努力吧。 睡觉了......
二
问题 宏程序用不用得到
这个问题呢我觉得没法给一个肯定的回答。就我个人经历而言,以前常用,做数车的时候,公司做变螺距螺杆和异性螺纹等零件,这个不用宏的话很累。然后做加工中心,用的就更多了。但确实有些吧友用不到,这不是你的问题,而是公司的问题。因为公司的活一般都单一,对于一线操作的人来讲,没什么太复杂的零件。但是,难道我们学技术要根据公司的零件来定吗?另外我做数控的时候,数车从不用CAM 软件编程,加工中心是能不用CAM ,尽量不用CAM ,除非遇到空间异形曲面不得已而用之。
这里说一句狠话,我数车能用宏做的,CAM 不一定能做的了,数车CAM 能做的,我手工编程一定能做的了!!!所以,想要提高水平,建议先打好手工编程基础,当然也包括宏。说句玩笑话,学会宏去装B 也可以的么 ^_^
问题三:宏有没有等级划分
同样的,等级划分这个问题因人而异。就我个人而言,我是把所有曲线类的宏都划分为入门,包括加工中心的三维空间曲面,比如空间正弦曲面等等,都是入门级!这可不是大话,因为这些曲线都有公式,我们要做的就是把公式里的每一个小点用G01链接起来而已。然后是中级篇,中级主要包括大螺距螺纹的编制,比如梯形,矩形,锯齿形,变螺距,圆弧螺纹,椭圆曲面螺纹等。高级的呢就有点不切实际,比如我朋友的波浪轴,三爪卡盘不加垫片不用任何工装车偏心,或者怎么让系统定期撞刀,定期撞卡盘等等,还有很多。基本上高级的宏用来踢馆或者装B 用。至少我是这么玩的 ^_^ 所以我很讨厌有人跟踢我,如果来踢我了,那就搞定我的波浪轴吧。搞不定,就老实的回去 ^_^
问题四:有吧友私信我后期会不会收费
说到收费今天还有个小插曲,但过去了。我也希望这是误会。我写的东西是共享的,不收费,同时也是原创。
以上是我收集了几个有代表性的问题,只能做简单的解答。下面我们言归正传!
细心的吧友会发现,为什么这篇不是第五篇,而是4 - 1 呢?因为我觉得第四篇的椭圆讲解的不够细致,那是我很早之前的一篇文章,部分内容我粘贴到了第四篇。但既然和各位共享了,那么我就有必要写的更深一层!今天我用的曲线不是椭圆,咱们换个口味----抛物线!总是椭圆,我人都快成椭圆了,哈哈
本篇大纲:
1 彻彻底底的剖析曲线的编程原理!
NO.1 曲线原理深层解析!
任何带有方程的曲线,我们要做的是把他化简,化简的目的是定义出自变量和因变量!比如昨天的椭圆,我是用Z 为自变量,那么能不能用X 为自变量呢?当然可以!!!这个没有拘束。这里要说一下,自变量不一定是X 或者Z ,还有可能是一个角度。这个在后期会讲到,
这里不赘述。化简后,我们就可以着手编制宏了。下面直接上图
:
看到这个图,肯定也看到了方程 - - ! 这里已经化简的差不多了。但我们需要的是X ,不是X 的平方,所以还得开根号。因此用X 做因变量的方程是:X = SQRT(-10*Z) 这应该没什么问题。化简好了那就直接上程序呗:
#1 = 0
N10 #2 = SQRT(-10 * #1)
G01 X[#2*2] Z#1 F0.1
#1 = #1 - 0.1
IF [#1 GE -29.61] GOTO10
G0 X100
Z100 M30
程序很短,但里面包含的思想很多。我们一步一步来分析:
1, #1和#2 这里的#1代表Z ,#2代表X ,也就是说Z 是自变量,那么X 的值会因为Z 的变化而变化。#1的取值是非常有讲究的,绝不是想给什么值就给什么值!在这我可以教大家一个简单的方法:你可以把任意一个数给#1,但是请看下程序的Z 值是不是0,然后按照方程再计算下X 的值是不是零。因为我们车削时,曲线的起点就是 X0 Z0。如果第一刀是X0 Z0 那么恭喜你 #1 的值赋值是正确的!这里又有人会问,我从哪知道对不对呢?答案是在这一行 “G01 X[#2*2] Z-#1 F0.1”由于我们#1的初始值是0,所以Z 肯定是0,那么X 呢?X 是根据上面的方程“SQRT(10 * #1)”算出来的。我们把#1带进方程算算吧!SQRT(10 * 0),结果是 0 也就是说#2 = 0 到了下一行X[#2*2],其实就是X[0*2],此时X 是0 所以只要你#1正确了,#2肯定是正确的。因为#2是跟着#1的变化而变化的。到了这,我把#1和#2的关系介绍了下,应该不难理解
2, N10 #2 = SQRT(-10 * #1) 这一步其实没什么,就是把数学方程,用宏格式的代码给写了一遍。至于前面的N10,这是目标地址,在前面的帖子讲过,不赘述。但是地址的选择是有讲究的,绝不是乱放。这个问题到下面再说。
3, G01 X[#2*2] Z#1 这一步是什么意思呢?专业术语叫“直线拟合”,之所以称为直线拟合,是因为G01是车削直线的。也就是说,把一个点的X 坐标和Z 坐标用GO1指令链接起来,由于Z 在变化,所以X 也变了,每循环一次,就链接一个点,一直到最后结束。这里不介绍工作过程,下面会详细的说。
4, #1 = #1 - 0.1 这一步前面也讲过,就是#1做递减运算。如果你是仔细看前面的帖子,这一步不会郁闷的。所以我不赘述了。
5, IF [#1 GE -29.61] GOTO10 这一步是判断下有没有车完。由于我们是#1为自变量,而#1又代表着Z ,我们看看图纸中,曲线部分Z 值最后一个点是在-29.61,所以当#1的值没有到-29.61,就意味着没车完。没车完就跳到行号那继续车
6,退刀
以上我仅仅逐行释义了代码,但没有讲解程序的工作过程,现在请各位集中精神,跟着我的思路,看看这程序到底怎么工作的!
首先,我们把系统当做一个人大脑。它在第一行是,看到有个#1变量,并且他的值是0 然后到了第二行,它又看到了行号,并且也记住了方程。到这他不知道是干嘛的。到了下面一行
G01 X[#2*2] Z-#1 F0.1 时,他知道了,原来我要执行G01代码,于是他把这行的坐标给算了出来,程序就变成 G01 X0 Z-0 F0.1 这是走的第一刀,然后这行执行完毕,到了下一行它发现有个 #1 = #1 - 0.1 。于是它把#1的值经过运算,得到了-0.1 这样又到了下一行,看到一条判断语句 IF [#1 GE -29.61] GOTO10 ,它很聪明,把代码翻译成了 如果,-0.1 大于等于 -29.61,那么就跳转到第10号行。 他发现-0.1 >= -29.61 的,那就跳转呗。于是就到了 N10 #2 = SQRT(10 * #1) 行,此时此刻,他又进行计算了(大家请注意,这一次的计算,#2和#1都不是0了!经计算器计算,#2 = 1 ,#1 = -0.1 ),计算完,#2和#1个字保存了新的值,这样就又到了 G01 X[#2*2] Z-#1 F0.1 行,此时它翻译为 G01 X2 Z-0.1 大家发现没有,刀具已经在动了哦!从刚开始的X0 Z0 车到了X2 Z-0.1 !执行完这行,就到了#1 = #1 - 0.1 于是呢#1的值就成了-0.2 于是又到了判断这行,发现-0.2>=-29.61,于是继续跳到第10号行,到了这行,由于#1=-0.2,所以#2又是一个新的数值,就这样往复的循环。。。循环。。。一直到#1不满足条件,退刀! 这里我们可以提前算下,#1=-29.61的时候,看看#2是不是17.21(34.42的一半。因为#2是单边X 值,到了下面的G01段,会乘以2) ,如果是,那么就对咯。拿起你们的计算器,算算吧!#2 = SQRT(-10 * -29.61) = 17.2075.... 怎么样,结果是对的吧!那么我们再看看图纸,曲线的最后X 值是34.42,完全正确!这里的误差在范围之内,不要纠结。
以上是程序的执行过程,但我们的问题还没有结束,接着往下看
1, 为什么 G01 X[#2*2] Z#1 中的Z#1不写成Z-#1呢?
我们都知道,在数车编程中,如果把工件坐标系原点放在零件右端面的旋转中心,那么任何向左车削的Z 值,都是负的(这个我不说为什么。。。初一的知识) 。所以按道理应该是Z-#1啊。其实不然,因为我们的#1就是负值,他是-0.1 -0.2 -0.3 -0.4....-29.61 这要再加个“-”号,可就画蛇添足啦!
2 这是我给各位的建议:要学好数控,一定要有一个科学计算器! 这玩意好处大大的!比如我们程序的开头,#1不知道怎么给数值,那你就随意给一个,然后带到方程算,看看第一刀的起刀点是不是图纸中的那个点。再比如最后#1需要判断的时候,也不知道车到什么长度结束,那也可以算啊。把#1 = -29.61 带到方程算,看X 值是不是34.42不就行了? 就这么回事,一定要灵活!谁说数学好不好就不能学宏的?咱不会算,这不有计算器么 ^_^
3 我在第四篇的写到的 Z 值得判定,各位一定要彻底吸收。细心的吧友会发现,椭圆的那
个宏,在Z 这一步是 “Z[#1-60]”的,可抛物线怎么没用#1减去什么东西呢? 那是因为我们的#1本来就在0位,而椭圆的那个例子,如果不减去60,他的Z 第一刀在60MM ,而正确的应该是在0,所以就给他减了个60,让他乖乖的到第一刀的Z 起刀点:Z0
4 任何曲线,都是这个样,工作过程也一样,只不过有的方程复杂,有的简单而已。但万变不离其中!之所以说曲线类的是入门,是因为他有方程啊!方程就是描述这个曲线的,我们要做的只不过是把曲线的各个点连接起来,仅此而已!
本4 - 1篇到此就结束了,是对第四篇的一个继论吧。
下一篇的课程内容已经在第四篇说了,这里不赘述啦。 但我还是喜欢勾起别人的胃口,下一篇可是有倾斜类曲线的精讲哦! ^_^
三
在正式讲解之前,我先纠正第四篇的一个错误:“WHILE [#1 GE 0] DO1 // 这句话的意思是:如果#1的值大于等于60,那么就一直执行DO1、END1里的程序段,直到不符合条件!”这里由于笔误,导致翻译错误。正确的是:“WHILE [#1 GE 0] DO1 // 这句话的意思是:如果#1的值大于等于0,那么就一直执行DO1、END1里的程序段,直到不符合条件!” 好,接下来我们步入正题!
上一篇的4 - 1,对曲线类的加工进行了一次剖析。下面先介绍本帖大纲:
1 “前不着村、后不着店”类曲线的编制
2 曲线轴线与回转轴线不共线的零件编程
3 倾斜类(斜) 曲线的程序编制及原理
NO.1 “前不着村、后不着店”类曲线的编制
所谓 “前不着村、后不着店”类曲线,就是指曲线部分不完整,只需要加工一小部分的零
件,比如。这份图纸是某省技能大赛,这里我们只要看椭圆就行,其他的不管(后期会精讲椭圆曲面螺纹,记得关注哦 ^_^)
这个零件,我们就发现它和我之前说的曲线不同了,因为他不是全部都需要加工,而只需要中间一部分,首尾都不要!这类零件该怎么编程呢?
分析: 前面我们在做一半椭圆的时候,零件第一刀在X0 Z0,而这份图纸的第一刀X 是30.32(经过计算得出) Z0 如果继续用Z (#1)向做自变量,那么我们需要给 #1 赋一个初始值。这个初始值给 0 的话,错是没有错,不过会走空刀!在技能大赛里,时间是非常宝贵的,而且我们也不喜欢空刀,直接在真正的起到点加工多好!所以这里就涉及到一个问题:#1的值怎么给?拿本图举例,这有一个小窍门:以椭圆的中心为起点,向右找有效的长半轴!什么意思?我们看图纸不难发现,椭圆部分有虚线和实线的。你就找实线部分对应的Z 长度,会发现是15!那么恭喜你,你找对了!#1的初始值就是15。所以前面我说,初始值不是想给什么就给什么,要有依据的!这么一来,把15带进方程算算,看看X 是不是30.32(记得最后X 乘以2) 。但有吧友会觉得又有问题了,如果#1=15,X 值对了,可Z 不对了!因为Z#1 是Z15,不是Z0 这个问题呢,我在前面也讲过,给他个小“障碍”就行。具体看程序
#1 = 15
N10 #2 = 16.5*SQRT[1 - #1*#1/38/38] //如果还有吧友对这一步不理解,我。。。
G01 X[#2*2] Z[#1 - 15] F0.1 //这里#1-15 就是小障碍,既然第一刀在Z0,要是直接#1的话,第一刀在Z15,那么我减去个15就可以了。
#1 = #1 - 0.1
IF [#1 GE -15] GOTO10 //这里为什么是大于等于负15呢? 因为椭圆有效终点在椭圆圆心左边,所以是负的。同时我们在图纸里,椭圆的最后Z 值是 -30 ,我们把#1带进去算,看看Z 最后是不是 -30 ! 从程序不难发现,#1最后肯定会成 -15,那么在Z[#1-15]这一步,就会变成Z[-15 - 15] ,结果完全正确!
以上就是这个椭圆的程序,其实大家会发现没什么特别,只不过初始值改了改。这怎么改各
位要知道原理。 好,这里我留一个小题目,大家自己想。如果是下面这幅图,他的
#1初始值以及判断终点该怎么办呢?(比较坑)
上面这个图就当是小练习,程序写完可以留言在本帖,我会在下一篇公布答案及编程原理。
总结:所有和椭圆自身相关的数值,都是以椭圆自身的中心为参考!比如,上面的#1=15 有吧友可能会问“为什么不是-15呢,尺寸都在零件坐标系的左边啊”。这里就是我说的问题,#1是椭圆上某个点的Z 值坐标,是和椭圆相关,和零件坐标无关。所以这里给#1赋值,是参考椭圆的中心,因此是15. ,而不是-15!
NO.2 曲线轴线与回转轴线不共线的零件编程
讲到了第二节,我们步入了全新的一节!
之前所有的曲线讲解,都是基于“二线共一”的原则,但实际加工中,可没这么爽了。 中午也在贴吧看到一位吧友发了这个帖子,说不知道怎么办了。如果你正在看本帖,那么要留心咯。下面我们看一张图纸(本人酷爱收集各类、各国大赛图纸,如果吧友有不错的图纸,记得分享给我哦!)
这里感谢朋友 陈建xq 帮忙画的图纸。
看到这幅图纸,我们不考虑刀具干预问题。目前是研究程序的编制,不纠结
由图得知,长半轴为20,短半轴为10 至于方程怎么弄。。。我不说了
思路分析:这类的曲线,由于它的轴线和机床回转轴线不共线了,所以较之以往略有不同。但我们要知道是哪不同。由图可知,椭圆的Z 向是没变化的,变化的是X 向!因为他离开了回转轴线,所以这点我们要想到。在程序里,我们就对X 向“动点手脚”。直接上程序! #1 = 20 //这一步问题不大
WHILE[#1 GE -20] DO1 //由于这里椭圆是“整的”,所以判断终点非常好找。为什么是 -20,因为他参考的是椭圆自身的中心
#2 = 10*SQRT[1 - #1*#1/20/20] G01 X[50 - #2*2] Z[#1 - 20] F0.1 //上面这一步是关键!思路分析:我们在编制共线曲线的时候,X 向的值是直接乘以2!但这里只乘以2的话是不够的,因为乘以2是共线的,压根不是我们要的!并且我们可以看到,这椭圆的X 向起点是50,如果只乘以2, 根据方程可以算出X 的值是0 。所以这里X 向用50减去了#2*2。那么50是哪来的? 看图纸不难发现,椭圆X 向偏离回转轴线25MM ,而这是半径值,所以25*2 = 50 可为什么又是[50 - #2*2]呢?因为这是凹的!(其实我很不喜欢这么解释,但它又是最直观的解释。。。) 所以我们可以想下,要是凸的,不就是50 + #2*2 么! 这应该不难想象,呵呵 那么能不能[#2*2 - 50]呢? 算算不就知道了。。。第一刀应该是X50 Z0 那么如果是[#2*2 - 50],那么X 的第一刀是:X -50 这不是开玩笑嘛! 所以很多时候大家自己试试就明白的。
#1 = #1 - 0.1
END1
.......
以上就是这个椭圆的加工程序。其实没什么花头,就是X 向变化了而已。
如果偏移性的椭圆,它是“前不着村后不着店”类型的,那么就结合我上面讲的,#1的值取好,终点判断弄好就行了。
综合来说,上面讲的稍有仓促。其实前面的基础扎实的话,本帖到目前的内容是不会有问题的。因此我又要啰嗦了,基础扎实很关键!!!
上面的知识点没搞懂的吧友,万万不要接着看 ^_^,下面是给基础扎实的吧友学习使用。
NO.3 倾斜类(斜) 曲线的程序编制及原理
帖子写到这,总算结束了基础性的东西。下面呢,我们看一个稍微复杂点的曲线,很多人为之头疼,也有人拿他忽悠宏新手,其实。。。它就那么回事!
本人第一次接触倾斜类曲线是在2006年,那时候参加市里的数车高职组技能大赛。当时练习的时候我也为这个题目头疼,前前后后花了十几分钟吧 - - !
之所以多数人为之头疼,是因为不知道怎么让曲线旋转。之前有吧友说,是不是加个锥度或者斜率什么的。想到这一点,我觉得很不错了。但和答案差的十万八千里,因为思路就不对。其实我们只要想一个问题就行:要旋转。。。也就是说椭圆上的点都变化了!那么有么有旋转方程呢?! 本人庆幸读过高中,之所以花了十几分钟搞定,就是因为看到这图第一时间想到的旋转方程!说到这,相信大家已经知道怎么让曲线旋转了吧!
首先我们看下旋转方程:
X (新) = X*COS(角度) + Z*SIN(角度)
Z (新) = Z*COS(角度) - X*SIN(角度)
这里我们不需要知道方程怎么来的,数学家们已经帮我们整理好了!但是我们有必要知道方程里的几个参数:
X 新 和 Z 新 这里的X 新和Z 新,是指椭圆旋转后, 某个点的 新的X 坐标 和Z 坐标!而等号右边的 X 和 Z 是未旋转前的某个点的坐标。其实自己可以想一想,一个点的位置动过了,他的X 和Z 坐标肯定也变化了,就这个意思! 方程里的角度是指旋转角度,有正负号之分。这个问题应该不大。讲到这里,方程就差不多了。
接下来是重中之重了!
很多人会问,难道方程不是重点嘛? 我真的得说一句,那个TMD 根本就不是重点!以前我也郁闷。。!^_^ 因为方程早就有了,我们拿来主义。那么真正的重点是什么呢?它就是———椭圆未旋转前的某个点的X 、Z 值!也就是#1和#2的值! 我们再想的深一点,由于#2是根据#1求出来的, 因此,只要#1就可以了。总结一下:只要知道未旋转前的 #1 即可!
这是一个斜椭圆的图纸,重点不是图纸设计怎么样,而是程序怎么编制,继续不纠结 图上的两个尺寸请注意:39.5和13.5 ! 39.5就是我说的未旋转前的那个点的值,也就是#1 = 39.5 这个尺寸怎么弄,其实看图就知道了。过点A ,做一条直线垂直于椭圆长半轴,交点为o 那么椭圆中心到点o 的距离,就是未旋转前的Z 值,也就是#1 后面的13.5(其实是13.47) 是椭圆判断终点,求法和#1的求法一直,不赘述了。
思路总结:找出#1(Z)的值,然后根据方程求得#2(X),得出这两个未旋转前的X 、Z 值后,把他们带到旋转方程,求的旋转后的X 、Z 。搞定!
程序:
#1 = 39.5
N10 #2 = 30*SQRT[1 - #1*#1/50/50]
#3 = #2*COS(-25) + #1*SIN(-25) //旋转后的X 值
#4 = #1*COS(-25) - #2*SIN(-25) //旋转后的Z 值
G01 X[#3*2+100] Z[#4 - 43.6] F0.1 //这一步不解释了。基础的东西
#1 = #1 - 0.1
IF [#1 GE -13.5] GOTO1O
GO X180
Z180
M30 .......
写到这,斜椭圆的核心程序就结束了。
第五篇就先到这,希望看过的吧友能够学的前面的知识,扎实以后再看本帖。
曲线部分的讲解暂且告一段落,后期会发一个 各类曲线的宏程序编制集锦。到那时曲线就彻底结束了。然后是大螺距螺纹的知识点。OK ,先到这
暂时发这三章 大家消化下 一起讨论下
注:本文章转摘自鬼谷先生
在此希望大家能够推广我们我群329945534 一起交流数控技术