iCAx开思网

标题: 个人手工编的一个程序,通用刷面程序。 [打印本页]

作者: 柳生剑影    时间: 2014-12-15 01:41
标题: 个人手工编的一个程序,通用刷面程序。
前段时间看数控编程的资料的时候,看了下编程的一些代码,后来自己就手工编了一个刷面的程序。
实际作用并不是很大,因为用mastercam之类的工具一画,面就刷出来了。
发到这里,大家如果有什么改进的意见,万分感谢。

我的程序是直接放在存储器里使用的,当防止在存储卡里的时候,程序无法调用在相同存储卡里的子程序。这一点让我很是纠结。
公司所使用的机器是三菱M70,所以如果有人想试用一下,或许也得都将这些
代码拷贝到存储器中。
个人对机器不是很熟悉,所以不大明白其中原理。
下面说说程序:
程序一
程序名: SMCH  
(因为是放置在存储器里,我也没有加后缀名,反正在M70上是可以直接打开)
(主程序就是直接进行调用的程序,在里面需要自己设置一些参数,达到对不同的材料,不同大小,不同刀具的各种情况进行处理)

程序内容:
#105=1;
#106=-1;
G65P2014 X150. Y75. Z8.5 H0.2 F1200 S4500 D08 T01;
M30;
%
如上所示,这是我最后一次使用该程序进行的设置。
X   加工材料的长度
Y   加工材料的宽度
Z   加工的深度
H   每次加工的深度
F   进给速度
S   主轴转速
D   刀具的直径
T   刀具号。(其实这个意义不大,不过我加进去了,偶尔的时候,也不需要按T1M6之类的)

通过改变这些参数的数据,程序就会完成对相应的平面,使用相应的刀具,以对应的参数进行加工。
该程序通过调用子程序2014完成曲面的加工。
其中的105,106是用来控制刀具在x,y方向运转的时候的方向的。
105=1表示 朝X正方向。  105=-1表示为朝X负方向。
106控制Y的方向,类同105.

程序二:
程序名: 2014

程序内容:

G54G17G90G21G80;
IF[#9GE5000]GOTO888;
IF[#19GE10000]GOTO888;
IF[#19LE500]GOTO888;
IF[#11GE5]GOTO888;
T#20M6;
#115=#24+#7;
#116=#7*0.7;
G43H#20Z50;
X0Y0;
S#19M3;
M8;
#31=#24/2+#7/2;
#32=#25/2+#7/2;
#1=FUP[#26/#11];
G00X-#31Y#32;
G00Z3;
G01Z0F[#9/2];
G65P20141L#1X#24Y#25F#9D#7H#11;
G90Z50;
M9;
M5;
G91G28Z0;
G28Y0;
M01;
N888M99;
%

这个程序主要是完成一些初始化的工作,让刀运转起来,同时通过调用程序20141,来完成刀具的运转。
这里面有两个变量。
#115表示刀具在X方向运转的宽度,为材料的宽度#24+刀具的宽度#7。
#116表示y方向的步进量。
也就说当刀具在X方向走完的时候,需要走到y方向的时候,每次前进的距离为#7*0.7,也就是为刀具直径的70%.
#31,#32则是表示为初始下刀点的位置。
#1,则是计算出来的刷面程序需要分几层完成。
程序20141的功能是完成一层的切削。

这里说明下,因为程序设计的并不怎么好,所以在走完X方向后,程序是直接转90度弯朝着y方向走的,这样可能对机床并不好。
按理说应该采用走半圆的形式完成该段路程,这样可以有效防止机床的急速停,减小震动。

程序三;
程序名: 20141
程序内容:

G91G01Z[-#11]F[#9/2];
#2=#116;
#33=FUP[#25/#2];
#32=#2*#106;
G65P201411L#33F#9;
G01G91Y#32F#9;
#106=#106*[-1];
M01;
M99;

该程序完成一个面的切削。
FUP的意思是.取小数点进位+1。比如FUP【1】=1; FUP【1.5】=2;FUP[3.3]=4;
#33表示一个面需要在Y方向上运行多少次。
#25是y方向的距离。#2则是先前计算出来的每次在Y方向上的进给量。

#106=#106*[-1];
将106进行取负的操作,以便控制下一次操作的时候,y方向是于上一次相反的。

201411则是完成一次切割。

程序四:
程序名:
201411
程序内容:

#2=#116*#106;
#1=#115*#105;
M1;
G91G01Y#2F#9;
X#1;
M1;
#105=#105*[-1];
M99;

这里就不做多的解释了。
其实个人觉得使用L作为次数可能让程序比较难以理解,直接使用WHILE循环要容易明白一些。

里面的一些M1,是我在做测试的时候所用的,完全可以删除。
但是基本上也不会影响程序的运行。


作者: nizhen6007    时间: 2014-12-15 16:54
  支持一下。这么好的东西,必须支持。 宏程序啊。
作者: 明明然然    时间: 2014-12-15 21:10
鄙人菜鸟看不懂,惭愧
作者: dongdongze    时间: 2014-12-22 21:45
我也来看看啊
作者: cnc46003    时间: 2014-12-31 15:16
手工程序的核心是简化易用,你这样虽然能行得通,但对大多数调机编程人员来说,还是很多地方无法理解。
作者: Alan729729    时间: 2014-12-31 16:54
要理解宏程序数学模型很重要,这个关系要是搞清楚了那就没有什么问题,以前手工编程的时候铣面,我一般采用调用子程序,这样还来得快一点,在子程序中采用增量的形式进行调用即可,这样简单多了!
作者: xgc114    时间: 2015-1-5 09:37

作者: 柳生剑影    时间: 2015-1-7 00:42
cnc46003 发表于 2014-12-31 15:16
手工程序的核心是简化易用,你这样虽然能行得通,但对大多数调机编程人员来说,还是很多地方无法理解。

手工编程本身只能弄一些简单和规则性的东西,我只是拿来熟悉一下G代码。
但是这个程序我还是在某些场合用得着的,因为有不少的时候需要刷面,我就直接使用这个了,也已经用过几次了,放在机器的存储器里,随时能够调用。

但论理解性来说,最简单的还是机器编出来的刀路,只要你了解X,Y,Z,G1,G0,G2/3,G41,G83之类几个代码即可。
如果要使用宏来实现一些模块化的东西,则其理解上必然会比较有难度。而且要做到通用也会出现一些控制的参数。可能会比较复杂了。

我有看过G83,G84等的源代码,也是用宏编的,虽然行数并不多,却理解不了。

作者: cnc46003    时间: 2015-1-15 14:06
手工的宏是很实用的,也能给调机带来很多方面,这对人的要求很高,属于高级的手工编程范畴,机床里的很多参数还有指令都是通过宏来运行的,只不过是内嵌在机床模块内,如换刀、调用你所说的循环钻孔等。电脑的程序都是步进的形式,而宏可以演变出很多种,能够进行逻辑和复杂的函数计算,这点是电脑无法比拟的。总之,要灵活调用,各取所长
作者: 柳生剑影    时间: 2015-1-15 20:53
cnc46003 发表于 2015-1-15 14:06
手工的宏是很实用的,也能给调机带来很多方面,这对人的要求很高,属于高级的手工编程范畴,机床里的很多参 ...

。。。。。嗯,谢谢指点。
其实在我所接触的这些东西来,宏这些基本属于无需了解的东西。宏可能属于较为高级的领域吧。公司几百台机子,做手机壳,基本上都是画出图,用软件编出刀路。所以跟手工关系不大,主要是偶尔使用下一些简单的G代码,跟宏这些更扯不上边。
而且就公司现在的情况来看,即便往深层次点的东西去探究,主要也应该是夹具设计,产品设计,以及对机床的较为深刻的探析(软件控制机床)这些方面。
我真的看不到宏在这厂里有何种作用。
我跟的师傅,他学了大概五年左右,会使用MasterCam,但不是很熟悉。但是对G代码这一块,则了解度是相当的少。

目前就我自己所了解的,宏首先需要对机床的参数了解,也可能需要对机床的一些细节问题了解,比如机床的加减速,例外,如果不数序刀具加工时候的一些细节问题,手工编出来的东西,肯定也难以起到好的效果。
我对这些东西的了解基本为0,所以也没有再多看手工的东西,主要在看UG了。

~





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