iCAx开思网

标题: 后处理是这样写滴 [打印本页]

作者: postman    时间: 2006-8-16 10:53
标题: 后处理是这样写滴
嗯,在版上潜水也有一段日子了,看到不少讲后处理的帖子,总的来说,信息比较陈旧,而且也不够系统。改别人的多,自己写的少。现在轮到我来做点贡献了,希望这些信息能对大家有所帮助,呵呵,也不枉了我叫这个ID。这个帖子会有一系列,由于我平时很忙,时间不大够用,所以就蚂蚁啃骨头,一点一点写吧。这个帖子我想发到我最常去的两个论坛,ICAX和CADCAM之家,一稿两投,大家没意见吧?我对大家常用的数控机床术语不熟悉,有表达不清楚的地方请大家指正。

请大家都到版上来看,转贴么,最好不要。我可是很看重版权的喔!希望大家在学习和工作的过程中不要忘记支持正版软件,这样就能早日见到中国人自己的CAD/CAM系统。

如果斑竹老大们觉得我的东西还凑合的话,希望多多支持。

其实啊,后处理这个东东很有意思,搞熟了以后,就会发现其功能之强大,真是无所不能。不管什么样的控制器,只要有代码格式,就能随心所欲。后处理甚至还能做控制器程序之外的东西。曾经改到过一个后处理,输出的是加工清单,呵呵,图文并茂的HTML网页格式的。所以说,学好了后处理,就只有想不到,没有做不到。

好,我们开始。

首先,我们来谈一谈一个后处理里面所用到的一些基本定义:

MP - 编写后处理的语言。是Mastercam大牛自己写的一种语言喔。它的好处是,结构简单,功能强大。缺点是,文档少,功能复杂抽象,学起来实在不容易。真正从头到尾了解MP语言的,全世界找不出20个。

整数 - 不用我说了吧。

实数 - 带小数点的。

字符串 - 也就是一串字符,ABCDE123这样的

后处理块 - 后处理的基本功能模块,就是一系列实现某一个或一些功能的后处理指令,写在一起,给起个名字,以后用起来方便。后处理块分两种,Mastercam系统预定义的,和用户自定义的。在X版以前,这两种后处理块在外观上没啥区别,要查看手册才能知道到底属于哪一种。从X版开始,系统预定义的后处理块后面加了个"$",像"psof$","pcomment$"。这样就容易区分了,而且,如果用Mastercam自带的文本编辑器打开,预定义后处理块会用蓝色字符显示。后处理块中的每一行叫做后处理命令行。

整数,实数和字符串变量也有系统预定义的和用户自定义的,在X版里区别也是一样,系统预定义的后面有个"$",像"e$"。

逻辑表达式,返回值为0或1。

NCI文件,嗯,这个比较重要,是Mastercam输出机器代码时生成的一个中间文件,文本格式的。Mastercam输出的所有刀路信息都在这里面了。这个文件就是后处理器的输入,而数控控制器所能用的程序就是后处理器的输出。说白了,后处理器就是一个从NCI到机器程序的翻译器,因为同一个NCI。在X以前的版本里,有NCI就搞定一切,但从X版本开始,由于Mastercam系统里加入了机器定义(Machine Definition)和控制器定义(Control Definition),MP语言还要和这两个东东发生关系。具体是怎样的下面会详细讲到。

今天先到这里,开个头,下一次详细讲NCI的结构。
作者: wp2576    时间: 2006-8-16 11:42
好东西,希望有后续,建议置顶!
作者: wp2576    时间: 2006-8-16 11:43
好东西,希望有后续,建议置顶!
作者: 秋风红叶    时间: 2006-8-16 13:35
我也来顶,能学多少算多少
作者: 润无痕    时间: 2006-8-16 13:55
我不想学这个了,但也支持一下了.
作者: ihuanhuan    时间: 2006-8-16 23:22
希望楼主能系统讲解一下,区区上面那几字怎能说清呢?最好有书或教程上传上来分享一下.先谢谢了!
作者: ihuanhuan    时间: 2006-8-16 23:23
希望楼主能系统讲解一下,区区上面那几字怎能说清呢?最好有书或教程上传上来分享一下.先谢谢了!
作者: luojianhua2010    时间: 2006-8-16 23:47
先坐个位置  好以后慢慢看 最好有教程传上来
作者: gm39sby    时间: 2006-8-17 10:12
对,最好是有教材传上来就好看了,说起来会比较抽象一点。不过我还是愿意学这个东东。
作者: 屁颠屁颠    时间: 2006-8-17 20:10
后处理我就用人家的,嘿嘿。给他加份
作者: yuyf    时间: 2006-8-17 21:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: yuyf    时间: 2006-8-20 16:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: postman    时间: 2006-8-21 05:41
今天接着来,NCI。这个NCI么,其实结构是非常简单的。打开一个NCI文件,会发现它是以每两行作为一个功能结构。MP语言在读取NCI的时候也是两行两行的读取的。例如:

1
41 1.5 2.5 -0.125 3.2

每两行中的第一行,只有一个参数,而且和控制器代码(G Code)有不少相似之处,比方说, 1代表直线移动,0代表快速移动,2代表顺时针圆弧移动,81代表钻孔过程开始等等。但是不可将这两种G Code混淆起来。两行中的第二行,就是对应第一行G Code的参数行。每个G Code所对应的参数各不相同,而且同一个G Code在不同的加工过程(车削,铣削等)中参数也不相同。在上面的例子中,具体的每个参数的意义如下:

铣削
参数                含义                对应系统变量                预定值
1                刀径补偿        cc / ccomp                40-取消 41-左补偿 42-右补偿 140-最后移动时取消
2                X位置                x / xnci
3                Y位置                y / ynci
4                Z位置                z / znci
5                进刀速率        fr                         正值-速率 -1-不变 -2-快速移动
6(可选)                控制标志        cur_cflg               

车削
参数                含义                对应系统变量                预定值
1                刀径补偿        cc / ccomp                40-取消 41-左补偿 42-右补偿 140-最后移动时取消
2                Z位置                z / znci
3                X位置                x / xnci
4                置空
5                进刀速率        fr                         正值-每分钟进给量 负值-每周进给量
6(可选)                控制标志        cur_cflg               

MP语言在处理刀路信息的时候,先读取NCI的G Code, 然后根据读取到的G Code去调用相应的预定义后处理块。比方说,如果读到的G Code是0,就会调用prapid或pzrapid。然后,第二行的参数就会储存到相应的系统预定义变量中,用来输出或做相关的计算。大体上这就是Mstercam用后处理把NCI翻译成机器代码的简要过程。

不过,说起来挺容易,具体里面怎么跑的可没法子一句话说得清楚。这么多的NCI代码,这么多的后处理块,看起来都TMD头晕。如果各位老大不怕头晕的话,嘿嘿,下面我来讲怎么输出相关信息来了解这整个翻译的过程。用文本编辑器打开后处理器,找到这一块:

fastmode    : yes   #Enable Quick Post Processing, (set to no for debug)
bug1        : 2     #0=No display, 1=Generic list box, 2=Editor
bug2        : 40    #Append postline labels, non-zero is column position?
bug3        : 0     #Append whatline number to each NC line?
bug4        : 1     #Append NCI line number to each NC line?

bug1,不要动他,2就好了。

bug2比较重要。如果是一个非零正值的话,在输出机器代码的时候,会把输出这一行所被调用的第一个后处理块的名称附上。因为一个后处理块可以调用其他的后处理块,所以如果还有其他的后处理块被调用的话,最后一个被调用的后处理块的名称也会被附上。这些附加信息输出的起始列数就是所属入的非零正值数。在上面的例子中,第一个和最后一个被调用的后处理块名称输出开始于第四十列。


如果是一个非零负值的话,所有被调用的后处理块名称都会被输出,不论有没有输出机器代码。这是非常有用的,有助于了解后处理里面的逻辑是怎么跑的,但是,结果有时候会变得非常非常的长。当然,如果bug2是零的话这些附加信息就没有了。

bug3,不要管他,没啥用,历史原因留在这里,保持零就好了

bug4,另一个很重要的参数。如果为1的话,会输出当前所到的NCI文件的行数。对比NCI文件就可以知道后处理逻辑跑到什么地方了。设为其他值另有用处,以后再说。

以上这些调试信息,如果fastmode是yes或1的时候是不会出现的。把fastmode改为no或0,调试信息就会出现在输出里面了。

这是V9版本的。如果用的是X的话,改fastmode是没有用的。X和V9很大的不同就是很多后处理开关变量被移到机器定义(Machine Definition)和控制器定义(Control Definitoin)中了,fastmode就是其中之一。改动Control Definiton -> NC Output -> Post Debug Information来输出调试信息。还有,如果是X的话,所有预定义变量名和后处理块后面都要加"$"。

今天就先来这么多。小弟这周要出差,估计要到这周末才能再更新了。大家可以说说看想了解点什么方面的,我也好写起来有个谱。
作者: yuyf    时间: 2006-8-21 20:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: wanghan3    时间: 2006-9-19 16:24
又见一个人才.ddDD
作者: dingnixxx    时间: 2006-9-19 19:08
怎么我看楼主有点像杜公子啊!
作者: dingnixxx    时间: 2006-9-19 19:09
怎么我看楼主有点像杜公子啊!
作者: wajipi927    时间: 2006-9-19 21:03
支持,期待下一贴
作者: HEENDA    时间: 2006-9-20 17:31
原帖由 dingnixxx 于 2006-9-19 19:09 发表
怎么我看楼主有点像杜公子啊!


有点像
作者: ttt8310    时间: 2006-9-20 18:50
支持楼主!!如果有视频语音教程的现好~~先Ding先了!谢谢共享~
作者: mazai    时间: 2006-9-24 18:13

楼主加分
作者: yuyf    时间: 2006-9-25 20:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: hjb    时间: 2006-9-26 14:57
期待下文~~~
作者: hahashu    时间: 2006-11-22 18:22
wo  xia  bu  le a
作者: icac_668    时间: 2006-12-29 08:07
期待!
作者: anglu    时间: 2006-12-29 08:56
好貼一定得頂。。
作者: xuwei99987    时间: 2006-12-29 18:29
期待中
作者: jshahxm    时间: 2007-1-2 12:38
楼主继续哎
作者: leebm1225    时间: 2007-1-3 08:46
作個記號!以後來學習!
作者: csb1985    时间: 2007-1-3 15:42
好贴要支持一下,学习学习.
作者: gaoxicheng    时间: 2007-1-3 21:29
你的怎么是负的分
作者: gaoxicheng    时间: 2007-1-3 21:30
原贴由luojianhua2010发表:
先坐个位置  好以后慢慢看 最好有教程传上来

你的怎么是负的分
作者: xinruyu369    时间: 2007-1-3 22:24
刚好是是时候,我正在学改后处理,支持楼主并谢谢!
作者: alwin-icax    时间: 2007-1-3 22:57
支持楼主,期待继续呀呵呵~~
作者: hedinghui    时间: 2007-2-12 00:03
希望版主收入 精华
作者: sunjianbo121    时间: 2007-2-12 15:51
不知道搂主有没有mastercam的手册,若有的话能不能上传一份!!万分感谢!!!!!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3