找本书看看,另外你要懂得曲线方程,等一些数学问题。 给你举个例子看看先。 宏程序编程
一 变量
普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X1000。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的 *** 作改变。
#1=#2+100 G01 X#1 F300 说明: 变量的表示
计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。
例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。
例如:#[#1+#2-12] 变量的类型 变量根据变量号可以分成四种类型
变量号 变量类型 功能 #0 空变量 该变量总是空,没有值能赋给该变量 #1-#33 局部变量 局部变量只能用在宏程序中存储数据,例如,运算结果当断电时,局部变量被初始化为空调用宏程序时,自变量对局部变量赋值, #100-#199 #500-#999
公共变量 公共变量在不同的宏程序中的意义相同当断电时,变量#100-#199初始化为空变量#500-#999的数据保存,即使断电也不丢失 #1000 系统变量 系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值 变量值的范围 局部变量和公共变量可以有0值或下面范围中的值: -1047到-10-29或-10-2到-1047 如果计算结果超出有效范围,则发出P/S报警NO111 小数点的省略 当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123000。 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。
例如:
当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346 改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。
双轨迹(双轨迹控制)的公共变量 对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N06036和6037的设定,某些公共变量可同时用于两个轨迹。
未定义的变量 当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。
引用 当引用一个未定义的变量时,地址本身也被忽略。
当#1=
当#1=0 G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0 (b) 运算
除了用赋值以外,其余情况下与0相同。
当#1=时
当#1=0时
#2=#1 #2= #2=#1 #2=0 #2=#5 #2=0 #2=#5 #2=0 #2=#1+#1 #2=0 #2=#1+#1 #2=0 (c)条件表达式
EQ和NE中的不同于0。
当#1=时
当#1=0时
#1EQ#0 成立
#1EQ#0 不成立
#1 NE #0 成立
#1 NE #0 不成立
#1 GE #0 成立
#1 GE #0 不成立
#1 GT #0 不成立
#1 GT #0 不成立
限制 程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:
0#1;
/#2G00X1000; N#3Y2000; 二 算术和逻辑运算
下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。
说明:
角度单位 函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30'表示为905度。 ARCSIN # i= ASIN[#j]
(1)取值范围如下:
当参数(NO6004#0)NAT位设为0时,270°~90°
当参数(NO6004#0)NAT位设为1时,-90°~90°
(2)当#j超出-1到1的范围时,发出P/S报警NO111 (3)常数可替代变量#j ARCCOS #i=ACOS[#j] 取值范围从180°~0° 当#j超出-1到1的范围时,发出P/S报警NO111 常数可替代变量#j 三 程序举例 铣椭圆:
轨迹:
椭圆程序代码如下: N10 G54 G90 G0 S1500 M03 N12 X0 Y0 Z20 N14 G0 Z1 N16 G1 Z-5 F150 N18 G41 D1 N20 #1=0 N22 #2=34 N24 #3=24 N26 #4=#2COS[#1] N28 #5=#3SIN[#1] N30 #10=#4COS[45]-#5SIN[45] N32 #11=#4SIN[45]+#5COS[45] N34 G1 X#10 Y#11
N36 #1=#1+1 N38 IF [#1 LT 370] GOTO26 N40 G40 G1 X0 Y0
N42 G0 Z100 N44 M30
铣矩形槽:
铣矩形槽代码如下: #102=0 N3#100=0 #101=0 #103=200 #104=400 G91G28Z0 G0G90G54X0Y0 G43H1Z20 M3S2000 N4G0X#100Y#101 G01Z#102F200 #102=#102-2 IF[#102EQ-50]GOTO1 GOTO2 N2 N4X#104F500 Y#103 X#100 Y#101 #100=#100+10 #101=#101+10 #103=#103-10 #104=#104-10 IF[#100EQ100]GOTO3 GOTO4 N3 N1 M5 M9 G91G28Z0 G28Y0 M30 铣倾斜3度的面:
轨迹:
铣倾斜3度的面的代码如下: O0001 #[#1+12]=1 G65P9012L1A0B01C4I100J3K0 M30 宏程序O9012代码如下: G54 G90 G00 X[#3] Y0 Z100 S500 M3 G01 Z0 F300 WHILE[#1LE10]DO1 #7= #1/TAN[#5]+#3 G1Z-#1 X#7 #8=#6/2-ROUND[#6/2] IF[#8EQ0]GOTO10 G1Y0
GOTO20 N10 Y#4 N20#1=#1+#2 #6=#6+1 END1 G0
Z100 铣半球:
轨迹:
铣半球代码如下: G90G0G54X-10Y0M3S4500 G43Z50H1M8 #1=05 WHILE[#1LE50]DO1 #2=50-#1 #3=SQRT[2500-[#2#2]] G1Z-#1F20 X-#3F500 G2I#3 #1=#1+05 END1 G0Z50M5 M30 铣喇叭:
铣喇叭代码如下: M03 S500 M06 T01 #1=0 #2=0 G0 Z15 X150 Y0 N11 #2=30SIN[#1] #3=30+30[1-COS[#1]] G01 Z-#2 F40 G41 X#3 D01 G03 I-#3 G40 G01 X150 Y0 #1=#1+1 IF [#1 LE 90] GOTO 11 G0 Z30 M30
数控加工中宏程序的编制方法首都航天机械公司商学谦FANUC宏程序简介 在数控编程中,宏程序编程灵活、高效、快捷。宏程序不仅可以实现象子程序那样,对编制相同加工 *** 作的程序非常有用,还可以完成子程序无法实现的特殊功能,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。 FANUC宏程序特殊用法 宏程序还可以实现系统参数的控制,如,坐标系的读写、刀具偏置的读写、时间信息的读写、倍率开关的控制等。 SIEMENS参数编程 与FANUC类似,但功能要弱一些。变量以“R”开始,如:R0、R1、R99。不包含系统变量,系统变量以 “$”开头。 FANUC宏程序的构成 FANUC宏程序的变量Ⅰ FANUC宏程序的变量Ⅱ FANUC宏程序的变量Ⅲ FANUC宏程序的变量Ⅳ 刀具补偿存储器C的系统变量当偏置组数小于等于200时,也可以用#2001——#2400刀具补偿存储器C用G10指令进行设定P:刀具补偿号R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。自动运行控制的系统变量自动运行控制的系统变量攻丝加工循环工件原点偏移值的系统变量Ⅰ工件原点偏移值的系统变量Ⅱ工件原点偏移值的系统变量Ⅲ工件原点偏移值的系统变量Ⅳ工件原点偏移值的系统变量Ⅴ工件原点偏移值的系统变量Ⅵ工件原点偏移值的系统变量Ⅶ工件原点偏移值的系统变量Ⅷ用G10改变工件坐标系零点偏移值 FANUC宏程序运算符ⅠFANUC宏程序运算符ⅡFANUC宏程序运算符ⅢFANUC宏程序运算符ⅣFANUC宏程序的转移和循环Ⅰ 无条件转移:GOTOn (n为顺序号,1——99999) 例:GOTO10为转移到N10程序段 FANUC宏程序的转移和循环Ⅱ 条件转移:(IF语句)IF [条件表达式] GOTOn 当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段FANUC宏程序的转移和循环Ⅲ 条件转移:(IF语句)IF [条件表达式] GOTOn FANUC宏程序的转移和循环Ⅳ IF [条件表达式] THEN 当指定的条件表达式满足时,执行预先决定的宏程序语句。 例:IF [#1EQ #2] THEN #3=0 ; FANUC宏程序循环ⅠFANUC宏程序循环Ⅱ FANUC宏程序循环Ⅲ FANUC宏程序循环Ⅳ FANUC宏程序的条件表达式运算符 FANUC宏程序的调用ⅠFANUC宏程序的调用ⅡFANUC宏程序的调用ⅢFANUC宏程序的调用ⅣFANUC宏程序的G代码调用FANUC宏程序的G代码调用FANUC宏程序的M代码调用FANUC宏程序中刀具半径补偿
大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用宏一般分为A类宏和B类宏A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是
以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广由于现在B类宏程序的大量使
用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;
A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是01MM~~~~~#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义:
以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,
基本指令:
H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中
G65H01P#101Q#10:把10赋予到#101中
H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101
G65 H02 P#101 Q#102 R10
G65 H02 P#101 Q10 R#103
G65 H02 P#101 Q10 R20
上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数
值或变量号内的数值然后等于到P后面的变量号中
H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101
G65 H03 P#101 Q#102 R10
G65 H03 P#101 Q10 R#103
G65 H03 P#101 Q20 R10
上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数
值或变量号内的数值然后等于到P后面的变量号中
H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101
G65 H04 P#101 Q#102 R10
G65 H04 P#101 Q10 R#103
G65 H04 P#101 Q20 R10
上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数
值或变量号内的数值然后等于到P后面的变量号中
H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101
G65 H05 P#101 Q#102 R10
G65 H05 P#101 Q10 R#103
G65 H05 P#101 Q20 R10
上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数
值或变量号内的数值然后等于到P后面的变量号中(余数不存,除数如果为0的话会出现112报警)
三角函数指令:
H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度结果是#101=#102SIN#103,也就是说可以直接用这个求出三角形的另
一条边长和以前的指令一样Q和R后面也可以直接写数值
H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边
R后面的#103内存的是角度结果是#101=#102COS#103,也就是说可以直接用这个求出三角形的
另一条边长和以前的指令一样Q和R后面也可以直接写数值
H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么
开平方根指令:
H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的
无条件转移指令:
H80;格式:G65 H80 P10 ;直接跳到第10程序段
有条件转移指令:
H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;
格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段
用 户 宏 程 序
能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
l 所存入的这一系列指令——用户宏程序
l 调用宏程序的指令————宏指令
l 特点:使用变量
一. 变量的表示和使用
(一) 变量表示
#I(I=1,2,3,…)或#[<式子>]
例:#5,#109,#501,#[#1+#2-12]
(二) 变量的使用
1. 地址字后面指定变量号或公式
格式: <地址字>#I
<地址字>-#I
<地址字>[<式子>]
例:F#103,设#103=15 则为F15
Z-#110,设#110=250 则为Z-250
X[#24+#18*COS[#1]]
2. 变量号可用变量代替
例:#[#30],设#30=3 则为#3
3. 变量不能使用地址O,N,I
例:下述方法下允许
O#1;
I#2 600×1000;
N#3 Z2000;
4. 变量号所对应的变量,对每个地址来说,都有具体数值范围
例:#30=1100时,则M#30是不允许的
5. #0为空变量,没有定义变量值的变量也是空变量
6. 变量值定义:
程序定义时可省略小数点,例:#123=149
MDI键盘输一. 变量的种类
1 局部变量#1~#33
一个在宏程序中局部使用的变量
例: A宏程序 B宏程序
… …
#10=20 X#10 不表示X20
… …
断电后清空,调用宏程序时代入变量值
2 公共变量#100~#149,#500~#531
各用户宏程序内公用的变量
例:上例中#10改用#100时,B宏程序中的
X#100表示X20
#100~#149 断电后清空
#500~#531保持型变量(断电后不丢失)
3 系统变量
固定用途的变量,其值取决于系统的状态
例:#2001值为1号刀补X轴补偿值
#5221值为X轴G54工件原点偏置值
入时必须输入小数点,小数点省略时单位为μm
一. 运算指令
运算式的右边可以是常数、变量、函数、式子
式中#j,#k也可为常量
式子右边为变量号、运算式
1. 定义
#I=#j
2. 算术运算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3. 逻辑运算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4. 函数
#I=SIN[#j] 正弦
#I=COS[#j] 余弦
#I=TAN[#j] 正切
#I=ATAN[#j] 反正切
#I=SQRT[#j] 平方根
#I=ABS[#j] 绝对值
#I=ROUND[#j] 四舍五入化整
#I=FIX[#j] 下取整
#I=FUP[#j] 上取整
#I=BIN[#j] BCD→BIN(二进制)
#I=BCN[#j] BIN→BCD
1. 说明
1) 角度单位为度
例:90度30分为90.5度
2) ATAN函数后的两个边长要用“1”隔开
例:#1=ATAN[1]/[-1]时,#1为了35.0
3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入
例:设#1=1.2345,#2=2.3456,设定单位1μm
G91 X-#1;X-1.235
X-#2 F300;X-2.346
X[#1+#2];X3.580
未返回原处,应改为
X[ROUND[#1]+ROUND[#2]];
4) 取整后的绝对值比原值大为上取整,反之为下取整
例:设#1=1.2,#2=-1.2时
若#3=FUP[#1]时,则#3=2.0
若#3=FIX[#1]时,则#3=1.0
若#3=FUP[#2]时,则#3=-2.0
若#3=FIX[#2]时,则#3=-1.0
5) 指令函数时,可只写开头2个字母
例:ROUND→RO
FIX→FI
6) 优先级
函数→乘除(*,1,AND)→加减(+,-,OR,XOR)
例:#1=#2+#3*SIN[#4];
7) 括号为中括号,最多5重,园括号用于注释语句
例:#1=SIN[[[#2+#3]#4+#5]#6];(3重)
一. 转移与循环指令
1.无条件的转移
格式: GOTO 1;
GOTO #10;
2.条件转移
格式: IF[<条件式>] GOTO n
条件式:
#j EQ#k 表示=
#j NE#k 表示≠
#j GT#k 表示>
#j LT#k 表示<
#j GE#k 表示≥
#j LE#k 表示≤
例: IF[#1 GT 10] GOTO 100;
…
N100 G00 691 X10;
例:求1到10之和
O9500;
#1=0
#2=1
N1 IF [#2 GT10] GOTO 2
#1=#1+#2;
#2=#2+1;
GOTO 1
N2 M301.循环
格式:WHILE[<条件式>]DO m;(m=1,2,3)
…
…
…
ENDm
说明:1.条件满足时,执行DOm到ENDm,则从DOm的程序段
不满足时,执行DOm到ENDm的程序段
2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环
3.嵌套
4.EQ NE时,空和“0”不同
其他条件下,空和“0”相同
例:求1到10之和
O0001;
#1=0;
#2=1;
WHILE [#2LE10] DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30;
关于宏程序编程,步骤细致复杂,要对宏程序有相当的了解。
举一个例题如下:
1、例如加工一个长半轴30,短半轴20一个椭圆,椭圆不是圆弧,所以我们不能用圆弧的方式来加椭圆,这里我们用一小段一小段的直线来拼接这个椭圆。
2、椭圆的基本公式为x^2/a^2+y^2/b^2=1 (a>b>0) 焦点在X上这是车床上用的方程。a乘以cosx=x b乘以sinx=y这是CNC加工中心用的角度公式。
#号在机床编程中也是一种编程语言
3、一般我们将它分为两类可变量不可变量,就是说有些#号代表的意思是会变化的,一般用字母来替代条件字符 EQ等于 NE不等于 GT 大于 GE 大于或等于 LT小于 LE小于或等于 。
拿上面的例题来进行讲解
1、O0001 程序名
T01 M6 换一号刀具
G90 G54 G00 X0 Y0 M03S3000 快速定位 主轴旋转
G43 Z100 H01 建立长度补偿
Z10 M08 打开冷却液
G00X70Y0
G01 Z-5 F200 下刀Z方向
#1=30长半轴
#2=20短半轴
#3=0起始角度
#4=360 终止角度
#5=1角度增量 数值越小精度越高
WHILE[#3LE#4]DO1
#6=#1COS[#3]
#7=#2sin[#3]
G01 X[#6] Y[#7]
#3=#3+#5
END1
2、WHILE---DON
------
---
ENDN
这是一个固定循环格式只要括号中条件满足,它就会无限的循环反之条件不满足循环会被自动结束。
3、建议在学习的时候,最好下载一个仿真软件这样有助快速的学会并使用,建议使用斯沃仿真。VERICUT是仿真当中最为强悍的,不适合新手,当然如果有这方面的经验可以更好的学习VERICUT。
自动编程都可以设置起始行号和行号间隔,手工编程时,行号的用处不大,可以不编进程序的。#5021~#5023
当前位置
机床坐标系
#5041~#5043
当前位置
工件坐标系分别代表X、Y、Z,这个只能读不能写入的。
举个简单的数车的例子,走个椭圆:
椭圆方程是x^2/a+y^2/b=1
那么y=[(1-x^2/a)b]^(1/2)
在数控系统中的Z为方程中的x方向,X为y方向。
设定Z负方向走刀变量为#1,X方向走刀为#2
编程序为:
G99;
#1=0;
#2=0;
WHILE
[#1
GE
-a]DO1;
#1=#1-3;
#2=SQRT[[1-#1#1/a]b];
G01
X[#2]
Z[#1}
F6
END1
%
这样就车出了一个椭球形。
补充:三菱数控系统由数控硬件和数控软件两大部分来工作的。数控系统的硬件由数控装置、输入/输出装置、驱动装置和机床电器逻辑控制装置等组成
以上就是关于数控宏程序怎么编全部的内容,包括:数控宏程序怎么编、数控车床宏程序编程祥解、数控编程宏程序详细教程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)