宏程序

宏程序
宏程序

FUNN宏程序

用户宏程序

能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。

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 6.00×100.0;

N#3Z200.0;

4.变量号所对应的变量,对每个地址来说,都有具体数值范围

例:#30=1100时,则M#30是不允许的

5.#0为空变量,没有定义变量值的变量也是空变量

6.变量值定义:

程序定义时可省略小数点,例:#123=149

MDI键盘输一.变量的种类

1. 局部变量#1~#33

一个在宏程序中局部使用的变量

例:A宏程序B宏程序

……

#10=20X#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

G91X-#1;X-1.235

X-#2F300;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.无条件的转移

格式:GOTO1;

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[#1GT10]GOTO100;

N100G00691X10;

例:求1到10之和

O9500;

#1=0

#2=1

N1IF[#2GT10]GOTO 2

#1=#1+#2;

#2=#2+1;

GOTO 1

N2M301.循环

格式: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;

宏程序编程

30度锥孔加工

G90G54G00X0Y0M03S2500:

G43Z50.H01M08:

Z2.

#1=0.05

WHILE[#1LE5.]DO1

#2=TAN[15.]*#1

#3=5.-#2

G01Z-#1F50

X-#3F500

G02I#3

G01X0

#1=#1+0.05

END1

G0Z50.M05

G91G28Z0Y0M09

M30

『原创』任意多角星的宏程序(西门子格式)

G54

M03 S1000

G00 X52 Y-52 Z15

Z5

R1=50

R2=19.07

R3=5

R4=360/R3

R5=R4/2

R6=-90+R5

G01 Z-5 F150

X=R1*COS(R6) Y=R1*SIN(R6)

AAA:

R6=R6-R5

X=R2*COS(R6) Y=R2*SIN(R6)

R6=R6+R5-R4

X=R1*COS(R6) Y=R1*SIN(R6)

R3=R3-1

IF R3>0 GOTOB AAA

G01 X52 Y-52

G00 Z15

M02

以上程序以五角星为例:

R3为多角星角的个数,若值为5就是五角星

R1,R2分别为五角星外接和内接正五边形的半径

以五角星来讲,当R1=50,R2=19.07时轨迹就是一个正五角星

如果调整R1,R2的大小,还可以让五角星变大变小变胖或变瘦,大家自己试一下,挺有趣的依次类推R3=6就是六角星了。。。。。。

[推荐]想学宏程序的都进来看看

大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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那就是0.1MM~~~~~.#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的数值赋予#101G65 H03 P#101 Q#102 R10G65 H03 P#101 Q10 R#103G65 H03 P#101 Q20 R10上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101G65 H04 P#101 Q#102 R10G65 H04 P#101 Q10 R#103G65 H04 P#101 Q20 R10上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中. H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101G65 H05 P#101 Q#102 R10G65 H05 P#101 Q10 R#103G65 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=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的

指令一样Q和R后面也可以直接写数值.H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#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程序段,如果不符合就继续执行下面的程序段.

大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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那就是0.1MM~~~~~.#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=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#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程序段,如果不符合就继续执行下面的程序

A类宏代码全解释

A类宏代码全解释

哈哈,真是幸运从老师的内部参考上偷瞄到了H代码的全解释,A类宏程序的基本用法我上次在论坛都发表过了,这次主要是说一写上一次没有写到的H代码~~!好开始;

H01 赋值指令H02加指令H03减指令H04乘指令H05除指令:它们的格式我上次都过了这次我依然用#101,#102,#103和数值10,20做例子以上指令格式G65 Hxx Pxx Qxx Rxx; Q是被XX的数(被XX就是被乘数,被除数等),Rxx就是x数(x数就是减数,除数等)Hxx就是结果。H11逻辑或指令H12逻辑与指令H13逻辑异或指令H21平方根指令H22绝对值指令H23乘余数指令由于本人才疏学浅逻辑指令实在不太会用,H21指令的格式G65 H21 Pxx Qxx;Qxx开方后存到Pxx中。H22的指令G65 H22Pxx Qxx这个简单拉把QXX内的数的绝对值赋予到Pxx中去。H23的这个要主要说一下格式:G65 H23 Pxx Qxx Rxx;举个例子G65 H23 P#101 Q#102 R#103;就是把#102内的数值除以#103内的数取它们结果的余数然后乘以#103再被#102内的数减去然后存到#101内去,公式#101=#102-(#102/#103)的余数x#103。这么长到底怎么用我真也奇怪,还不如是取余数好呢~~~~~~!!H24十进制转二进制。H25二进制转十进制。说实在的我单片机学的还不错,可是这个指令在数控系统中怎么用我就不知道了。呵呵~~~对不起拉!H26复合乘除运算这个指令的作用简直是太大了,比如我们想8888888乘以7777777再除以6666666如果用乘再用除那么后果只

有一个可能就是P/S111报警(含义:超出系统运算范围)。如果用H26就简单多拉,格式G65 H24 P#101 Q#102 R#103;公式

#101=(#101X#102)/#103,只要运算结果即#101内的数值不超过系统最大计算结果2的31次方即214748648就可以了。H27复合平方根,先说一下格式G65 H27 P#101 Q#102 R#103;公式#101=(#102平方+#103平方)然后把括号内的结果开平方根。可怜我竟然不会打根号。看出来了吧!这个不就是直角三角型三边关系公式嘛!呵呵这个的应用我就不说了!H28复合平方根,这个和上一个不同的是--看公式#101=(#102平方-#103平方)然后把括号内的结果开平方根。知道了吧!

我继续下写。H31正玄函数SIN 格式G65 H31 P#101 Q#102 R#103;公式#101=#102 X SIN#103;#103内是度数(注意#103内的度数要乘以1000再代进去如360度要写成36000度)。#102内是斜边长度。#101内是结果这个的应用我也就不说了。H32余玄函数COS 格式G65 H32 P#101 Q#102 R#103;公式#101=#102 X COS#103;#103内是度数(注意#103内的度数要乘以1000再代进去如360度要写成36000度)。#102内是斜边长度。#101内是结果这个的应用我也就不说了。H33正切函数TAN 格式G65 H24 P#101 Q#102 R#103;公式#101=#102 X tan#103;#103内是度数(注意#103内的度数要乘以1000再代进去如360度要写成36000度)。#102内是直角边长度。#101内是结果这个的应用我也就不说了。(上次发的帖子说这里算不准就是度数没乘以1000)H34反正切函数COS 格式G65 H24 P#101 Q#102 R#103;公式#101=#102 X ATAN#103;#103内是度数(注意#103内的度数要乘以1000再代进去如360度要写成36000度)。#102内是直角边长度。#101内是结果这个的应用我也就不说了。(上次发的帖子说这里算不准就是度数没乘以1000)无条件转移指

令: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程序段,如果不符合就继续执行下面的程序段.

宏程序入门基础学习资料

宏程序入门基础学习资料 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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那就是0.1MM~~~~~.#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内的数值赋予到

新代数控车床宏程序说明

一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。 用户宏有以下四个主要特征: 1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式; 2)能够进行变量之间的各种运算; 3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参; 4)容易实现程序流程的控制。 使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。 二.基本书写格式 数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。 对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。 例一:MACRO格式文档 % @MACRO //用户宏程序文档,必须包含“@MACRO”关键词 IF @1 = 1 THEN G00 X100.; ELSE G00 Z100.; END_IF; M99; 例二:ISO格式文档 % 这是标题行,可当作档案用途说明,此行可有可无 G00 X100.; G00 Z100.; G00 X0; G00 Z0; M99;

宏程序编程知识

工件偏置量:G10 L2 P X Y Z (加工中心)。 G41X Y D G90G54P1G00X Y S M03 G90G10L2P0X Y Z G10L1P R G10 P U V W C Q 可编程参数入口:G10 L50 ……… G11 G10数据设置模式入口、 L50可编程参数入口模式(固定的) N……P……R……指定参数入口(N=参数号,P=轴号,R=设置值) G11数据设置模式取消 宏程序的调用:G65 P L G65 P包含宏程序的程序号(存储为O ) L宏程序的循环次数 变量的类型:空变量#0 局部变量:#1—#33 全局变:#100—#149或#500—#531 系统变量:#1000—。。。。。。 局部变量的赋值:A-#1 B-#2 C-#3 D-#7 E-#8 F-#9 H-#11 I-#5 J-#6 K-#6 M-#13 Q-#17 R-#18 S-#19 T-#20 U-#21 V-#22 W-#23 X-#24 Y-#25 Z-#26 模态宏程序的调用G66仅用于某个轴运动命令调用宏程序 G67取消模态宏程序调用 宏程序函数:有SIN COS TAN ATAN ASIN ACOS 其他函数:ROUND FIX FUP ROUND表示四舍五入 FIX表示与之最小的整数 FUP表示与之最大的整数 辅助函数: SQRT表示开方 ABS表示绝对值 LN表示自然对数函数 EXP表示以E为底的指数函数、 ADP表示添加小数点的函数、 逻辑函数:EQ表示等于、NE表示不等于、GT表示大于、LT表示小于、GE表示大于等于、LE 表示小于等于。 系统变量: 从#1000开始 #1000through#1015数据输入DI 从PMC向宏程序发送16位信号(逐位读取) #1032用于一次读取所有16位信号 #1100through#1115数据输出DO从宏程序向PMC发送16位信号(逐位写入) #1132用于一次向PMC写入所有16位信号

数控车床由浅入深的宏程序实例

宏程序 裳华职业技术中专鲍新涛 宏程序概述 其实说起来宏就是用公式来加工零件的,比如说,如果没有宏的话,我们要逐点算出上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。.宏一般分为A类宏和B类宏。 A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序 则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广。 宏程序的作用 数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。 宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。较大地简化编程;扩展应用范围。 宏的分类 B类宏 由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如(FANUC)OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好

再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A 类宏的引用; A类宏 A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx 的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM.#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

B类宏程序

二、教学过程 1.变量 B类宏程序的变量与A类宏程序的变量基本相似,但也略有不同,主要区别有以下几个方面。 (1)变量的表示:B类宏程序除可采用A类宏程序的变量表示方法外,还可以用表达式表示,但表达式必须封闭在方括号“[ ]”中。程序的圆括号“()”用于注释。 例# [#1+#2+10] 当#1=10,#2=100时,该变量表示#120。 (2)变量的引用:引用变量也可以用表达式表示 例G01 X [#100-30.0] Y- #101 F [#101+#103] ; 当#100=100时、#101=50、#103=80时,上式即表示为G01 X70.0 Y-50.0 F130; (3)变量的种类:B类与A类宏程序的变量种类相同 2.变量的赋值 (1)直接赋值变量可以在操作面板上用MID方式直接赋值,也可在程序中以等式方式赋值,在等号左边不能用表达式。 例#100 =100.0;#100 =30.0+20.0 (2)引数赋值宏程序以子程序方式出现,所用的变量可在宏调用时赋值。如下所示: 例G65 P1000 X100.0 Y30.0 Z20.0 F100.0; 此处的X、Y、Z不代表坐标字,F也不代表进给字,而是对应与宏程序中的变量号,变量的具体数值由引数后的数值决定。引用宏程序体中的变量对应关系有两种,见表2—4—2及表2—4—3。此两种方法可以混用,其中G、L、N、O、P不能作为引数替变量赋值。 例变量赋值方法1 G65P0030 A50.0 I40.0 J100.0 K0 I20 J10.0 K40.0; 经赋值后#1=50.0,#4=40.0,#5=100.0,#6=0,#7=20.0,#8=10.0,#9=40.0。 变量赋值方法2 G65 P0020 A50.0 X40.0 F100 经赋值后#1=50.0,#24=40.0,#9=100.0。 变量的赋值方法1、2混合 G65 P0030 A50.0 D40.0 I100.0 K0 I20.0 经赋值后,I20.0与D40.0同时分配给变量# 7,则后一个# 7有效,所以变量# 7=20.0,其余同上。 采用赋值后前面A类宏程序例题精加工程序可改写成如下形式: O010;(主程序) … G65 P0210 X28.0 Z-20.0 A20.0 B0 R20.0;(赋值后,#24=28.0,#26=-20.0,#1=20.0,#2=0,#18=20.0)… O210;(精加工宏程序) N1000 G01Z#26;

由浅入深宏程序入门基础示例之欧阳光明创编

由浅入深宏程序1-宏程序入门基础之销轴加工 欧阳光明(2021.03.07) 对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。 对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。 下面大家先看一个简单的车床的程序,图纸如下: 要求用外圆刀切削一个短轴,这里只列举程序的前几步: T0101 M3S800 G0X82Z5 G0X76 G1Z-40F0.2 X82 G0Z5 G0X72 G1Z-40F0.2

X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 ........ G0X40 G1Z-40F0.2 X82 G0Z5 G0X150Z150 M5 M30 从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。 T0101 M3S800

G0X82Z5 #1=76赋初始值,即第一次切削直径 N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序 G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。X82 G0Z5 #1=#1-4每行切深为2mm,直径方向递减4mm IF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。 G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。 M5 M30 由浅入深宏程序2-宏程序之销轴粗精加工 本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。在此用前一篇的图纸与程序 原程序: T0101 M3S800 G0X82Z5 粗加工开始 #2=0.05 Z向的加工余量 #3=0.5 外圆方向的加工余量

雕刻日期的宏程序

我再贴一个雕刻日期的宏程序,是从别处找到的。三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江2 z7 D; [8 }' @8 R& E; y c 主程序 + M$ z! v5 }' Z) c0 G+ s. L) z ·G65= 调用宏三维网技术论坛/ y6 I! D6 `2 f 三维网技术论坛" w$ ?: s- e$ G2 @ ·P9103= 宏程序名三维网技术论坛1 T- }0 i* O( G8 u/ \2 R5 Z6 I; E 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa/ t* K; E1 w) M; s& | ·Z.005= 雕刻深度(可为正或负) ) p$ _& ^8 \: K' D; M) O ·F30.0= 进给速度 三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江E) C) q% n2 N0 ?6 N 主程序定位刀具到你所希望雕刻日期位置的左上角,距加工平面1.00英寸(译者注:文中所有尺寸单位均为英寸,后文将不再注明)。当前加工平面为Z0。由于宏程序内Z轴全部以增量(G91)模式运动,所以在调用宏程序时必须保证刀具位于加工平面上1.0处。我在程序里内建了一个警告来检测这个条件。三维网技术论坛( v7 C% N9 C* K) _2 x5 N O8297 N1T15M6 (装载刀具)三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa' U. j: b7 U; ~: k G0G90G54X1.Y-.5M3S8000 (在XY轴上定位刀具) G43H15Z1.M8 (Z轴定位) G65P9103Z.005F30. (调用宏程序) https://www.360docs.net/doc/3c2649988.html,! l& N* k: P N3 g2 M3 Z M91 @+ q. h4 Y! Z G0G91G28X0Y0Z0三维网技术论坛' S, b. `7 H& E- W M30 用户宏程序 O9103 (日期雕刻宏程序)三维网技术论坛2 X- F& Y# d9 e0 O8 _& x z #30=#4001 (存储当前G代码) #31=#4003 (存储当前G代码)三维网技术论坛1 p0 L! e- @# t- Q# K #120=#5001 (保存当前X轴绝对位置) #121=#5002 (保存当前Y轴绝对位置)三维网技术论坛2 F g0 ]" @) F6 Y" k6 c #122=#5003 (保存当前Z轴绝对位置) #108=#9 (保存公共变量里的进给速度) https://www.360docs.net/doc/3c2649988.html,& J, j# T$ C9 d& w) K #109=ABS[#26] (保存公共变量里的绝对深度) #110=#109+.1 (Z轴进退刀距离) 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa/ n6 `+ l, v @, B IF[#4006EQ21]GOTO500 (检查尺寸单位)https://www.360docs.net/doc/3c2649988.html,- F [. f! B; K0 p" O IF[#122NE1.]GOTO501 (检查Z轴位置是否正确) IF[#26EQ#0]GOTO502 (检查是否没有指定深度)三维,cad,机械,技术,汽

宏程序基础

1.1概述 1.2 1.3 1.4一、宏程序的分类 1.5首先我们来讲一下宏程序的分类,A类和B类。 首先在数控车系统比较老的时候,我们系统里 面有A类宏,A类宏格式为G65格式,现在已 经基本淘汰。随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而 言,现在B类宏是一个主流发展趋势,所以接 下来我们的实例讲解都以B类宏程序为例。1.6 1.7 1.8二、宏程序的概念 1.9 1.10简单来理解宏程序是什么可以这样理解,宏程 序就是利用数学公式,函数等计算方式,配合 数控系统中的G代码编制出的一种程序,主要 加工一些像椭圆,曲线,各类大螺距螺纹和刀 具路线相识的一些零件。随着科技发达,像椭 圆,抛物线,等线性零件,用软件或则系统自 代G代码可以完成加工,而大螺距异型螺纹这 类零件,软件还没达到成熟,所以我们学会宏 程序在加工中可以起到一个非常大的作用。可 以弥补多年来数控车对大螺距螺纹的编程难的 一个提高。 1.11 1.12 1.13三、宏程序的特征 1.14 1.151.赋值 1.16在宏程序中我们通常用法最多的就是变量,比 如: 1.17#1=1 它就是一个变量。我们把这一过程,称为 赋值。也就是说,我们把等号后面的数值1,赋 值给#1。而现在#1的值就等于1,也可以理解 为#1就是一个代号,用来代替数值1。 1.18 1.19 2.变量和应用 1.20比如:#1=2(把数值2赋值给#1) 1.21#2=1(把数值1赋值给#2)1.22#2=#1(程序从上往下执行,思考一下现在#2的 值等于多少) 1.23 1.24解:当程序执行第一步的时候#1的值等于2, 当执行第二步的时候#2的值等于1,当执行第 三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在 第一步赋值以后,#1已经等于2了,所以在执 行第三步的时候#2的值应该等于2,不在是第 二步的1了。从这里我们可以看出,当程序中 有相同的变量#的时候,后面的#号代替前面的# 号。 1.25比如:#1=2 1.26#1=3 1.27 1.28最后结果#1的值因该是等于3的。所以说后面 的代替前面的。 1.29 1.30 1.31四、变量的取值范围 1.32 1.331.局部变量(#1-#33) 1.34什么叫局部变量,局部变量就是在局部或则可 以理解为在单个程序中有效。断电以后系统自 动清零。 1.35 1.36 2.公共变量(#100-#199,#500-#999) 1.37公共变量和局部变量的区别在于,局部变量是 在局部,或则单个程序中有效,而公共变量是 指如果一个程序同时拥有主程序和子程序的情 况下,在主程序中如果已经赋值,在子程序中 可以不用从新赋值,可以共用。而#100-#199和 #500-#999的区别在于,前者断电清零,而后者 不会清零会一直保存在系统内部。比如: 1.38#500=TAN[15] 1.39 1.40#500一旦赋值就将保存在系统内部,下次可以 直接调用#500使用。 1.41 1.423.系统变量(#1000-#17200) 1.43系统变量是用于我们机床系统储存一些刀补数 据参数等等的东西,我们可以不用管它,不会 用的,慎用) 1.44

Layout鲫鱼塘—PADS 宏相关操作之学会看宏程序

PADS 宏相关操作之学会看宏程序在看这篇资料之前请先在网上搜《Layout鲫鱼塘—PADS 宏相关操作之宏录制与运行》,看完之后再看这一篇。 大家知道宏可以比较快速的设置、操作等。但是给你一个宏,你知道这个宏倒底能干什么吗?开始接触宏的人如果没有编程基础怕是很难看懂。 其实只需要运行一下这个宏,大概就知道是怎么回事了。如果感觉宏运行得太快,没看楚过程,那就用Step into单步执行模式运行宏,看宏怎样一步一步的操作。 下面这些是宏经常出现命令行里示例: Application.ExecuteCommand("Layer Setup") LayersSetupDlg.LevTypeDirName.Selected(0) = true https://www.360docs.net/doc/3c2649988.html, = "1(PATTERN:COMP/Copper Top)" LayersSetupDlg.Ok.Click() MainFrame.StandardToolbarCurrentLayer = "(H) 1(PATTERN:COMP)" ApplicationExport Document("F:\ CCB Layout TOP.dxf") DXFExportDlg.Add.Click() DXFExportDlg.AllItems.Click() DXFExportDlg.Ok.Click() 这些命令行是不是不容易看懂,其实命令是由英文组成,是将各单词之间的空格去掉了,有的加了“.”,所以看起来很费劲。 加上空格,去掉“.”后加上中文注解是这样的: Application Execute Command("Layer Setup") 应用程序执行命令(“图层设置”) Layers Setup Dlg Lev Type Dir Name Selected(0) = true 图层设置对话框层次类型目录名称选择(0)=真 Layers Setup Dlg Name = "1(PATTERN:COMP)" 图层设置对话框名称=“1(PATTERN:COMP)” Layers Setup Dlg Ok Click()

SIEMENS系统宏程序

SIEMENS系统宏程序应用 一、计算参数 SIEMENS系统宏程序应用的计算参数如下: R0~R99----可自由使用; R100~R249----加工循环传递参数(如程序中没有使用加工循环,这部分参数可自由使用); R250~R299----加工循环内部计算参数(如程序中没有使用加工循环,这部分参数可自由使用)。 二、赋值方式 为程序的地址字赋值时,在地址字之后应使用“=”,N、G、L除外。 例:G00 X=R2 三、控制指令 控制指令主要有: IF 条件 GOTOF 标号 IF 条件 GOTOB 标号 说明: IF----如果满足条件,跳转到标号处;如果不满足条件,执行下一条指令; GOTOF----向前跳转; GOTOB----向后跳转; 标号----目标程序段的标记符,必须要由2~8个字母或数字组成,其中开始两个符号必须是字母或下划线。标记符必须位于程序段首;如果程序段有顺序号字,标记符必须紧跟顺序号字;标记符后面必须为冒号。 条件----计算表达式,通常用比较运算表达式,比较运算符见表6.6。 表6.6 比较运算符

例: …… N10 IF R1<10 GOTOF LAB1 …… N100 LAB1: G0 Z80 四、应用举例 例6-5:用镗孔循环 LCYC85加工图6.6所示矩阵排列孔,无孔底停留时间,安全间隙2mm。 N10 G0 G17 G90 F1000 T2 D2 S500 M3 N20 X10 Y10 Z105 N30 R1=0 N40 R101=105 R102=2 R103=102 R104=77 R105=0 R107=200 R108=100 N50 R115=85 R116=30 R117=20 R118=10 R119=5 R120=0 R121=10 N60 MARKE1:LCYC60 N70 R1=R1+1 R117=R117+10 N80 IF R1<5 GOTOB MARKE1 N90 G0 G90 X10 Y10 Z105 N100 M2

宏程序基础知识

瑞鹄汽车模具有限公司内部教材 第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在

括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与 G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与 G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

数控铣宏程序实例

第四章数控铣宏程序实例 §4、1 椭圆加工(编程思路:以一小段直线代替曲线) 例1 整椭圆轨迹线加工(假定加工深度为2mm) 方法一:已知椭圆的参数方X=acosθ Y=bsinθ 变量数学表达式 设定θ= #1(0°~ 360° ) 那么 X= #2 = acos[#1] Y= #3= bsin[#1] 程序 O0001; S1000 M03; G90 G54 G00 Z100; G00 Xa Y0; G00 Z3; G01 Z-2 F100; #1=0; N99 #2=a*cos[#1]; #3=b*sin[#1]; G01 X#2 Y#3 F300; #1=#1+1; IF[#1LE360]GOTO99; GOO Z50; M30;

例2 斜椭圆且椭心不在原点的轨迹线加工(假设加工深度为2mm) 椭圆心不在原点的参数方程 X=a*COS[#1]+ M Y=b*SIN[#1]+ N 变量数学表达式 设定θ=#1; (0°~360°) 那么X=#2=a*COS[#1]+ M Y=#3=b*SIN[#1]+ N 因为此椭圆绕(M ,N)旋转角度为A 可运用坐标旋转指令G68 格式 G68 X - Y - R - X,Y:旋转中心坐标; R: 旋转角度 程序 O0002; S1000 M03; G90 G54 G00 Z100; GOO X0 Y0; GOO Z3; G68 XM YN R45; #1=0; N99 #2=a*COS[#1]+M; #3=b*SIN[#1]+N;

GO1 X#2 Y#3 F300; G01 Z-2 F100; #1=#1+1; IF[#1LE360]GOTO99; G69 GOO Z100; M30; 例3:椭圆轮廓加工(深度2mm) 采用椭圆的等距加工方法使椭圆的长半轴与短半轴同时减少一个行距的方法直到短半轴小于刀具的半径R 根据椭圆的参数方程可设 变量表达式θ=#1(0°~360°) a=#2 b=#3(b-R~R) X=#2*COS[#1]=#4 Y=#3*SIN[#1]=#5 程序 O0003; S1000 M03; G90 G54 G00 Z100;

宏程序循环加工

9390 (M98 P9990) M98副程式呼叫 M96P9998 M96刀具补正圆弧转角模式 (C #3) 修整量 (V #22) Y軸斜面長度 (W #23) Z軸長度 (E #8) Y軸平面長度 (F #9) Z軸回刀距離 (A #1) Y 軸平面進給速度 (B #2) Y 軸斜面進給速度 (M #13) 最大修砂次數 (D #7) 修砂後Z軸退刀距離 (S #19) 砂輪轉速 #17=#727 修砂次數 #3=#728 #22=#729 #23=#730 #8=#731 #9=#732 #1=#733 #2=#734 #13=#735 #7=#736 #19=#737 (#550) IF[#501LE0]GOTO2 假如外徑修砂記數小於或等於0直接到 N2 IF[#17LE0]GOTO902(Qdataerrordresstimes) 假如修砂次數記數小於或等於0直接到 902 IF[#3GT0.1]GOTO903(Cperdresscuttoolarge) 假如修整量大於0.1直接到 903 IF[#3LE0]GOTO904(Ctoosmall) 假如修砂量小於或等於0直接到 904 IF[#23LT0]GOTO905(Wxiushakuandu) 假如設定 Z軸長度小於0直接到 905 IF[ABS[#23]GT360]GOTO905(dataerror20-360)假如Z軸長度超過360直接到 905 IF[#501GE#13]GOTO51(WHEELTOOSMALL)假如端面修砂記數大於最大修砂次數直接到51 IF[#19LE0]GOTO906(STOOSMALL) 假如砂輪轉數記數小於或等於0直接到 906 IF[[#504-#507]GE#505]GOTO907 假如砂輪原始直徑–修整後實際直徑大於或等於0直接到 907 IF[[#502-#506]GE#503]GOTO908假如砂輪原始長度–修整後實際長度大於或等於0直接到 908 #545=#17(dresstimes) 端面修砂次數 = 修砂次數 /M13S2=#19 砂輪轉數 /M08 G56 座標位置 G0Z10

宏程序基础知识资料

第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,1和X100.0。变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用面板上的操作改变。 #1=#2+100 G01 1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#12-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量:

#133 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100199 #500999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100199初始化为空.变量#500999的数据保存,即使断电也不丢失. 4.系统变量1000以上的变量 系统变量用于读和写的各种数据,例如刀具补偿,当前位置信息,变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。例如:G01X[#12]3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G001;以1/1000的单位执行时,把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X -#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G001 2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

新代宏程序实例

新代宏程序实例文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

1、R E P E A T直到型循环REPEAT <循环体> UNTIL <条件表达式> END_REPEAT; 说明:REPEAT直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如: % @MACRO ,为了;?倾向于;?关于;?当作; conj.因为,由于;? FOR <循环变量> := <表达式1> TO <表达式2> [ BY <表达式3>] DO <循环体> END_FOR; 说明:FOR循环控制,式中各参数意义如下 循环变量——控制循环次数的变量; 表达式1——循环计数的起始值,可为整数或表达式; 表达式2——循环计数的终止值,可为整数或表达式; 表达式3——循环计数每次的累加值,可为整数或表达式; 循环体——循环每次执行内容; FOR循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止值,当循环变量已为终止值时退出循环,否则执行循环体,再对循环变量加上每次累加值, 4、无条件转移

GOTO转移语句 语法: GOTO n; 说明:无条件地跳到指定的n行号执行,其中n可为整数或表达式。GOTO常和IF语句搭配使用,那就是说当程序检查到某个条件满足时用GOTO语句去进一步处理,但应尽量少用该语句以提高程序可读性。 范例: % @MACRO Z10.; … N100 G01 X30. Z30.; … M02; EXIT循环中断语句 语法:EXIT; 说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT都和IF 语句搭配使用,当某个条件满足后就跳离循环。请参考WHILE范例。

Vericut_基础教程-构建机床、程序原点、刀具设置、宏程序仿真_by_ljg

Vericut 基础培训一构建三轴机床、仿真宏程序 Vericut 基础培训1 ——构建三轴机床,仿真宏程序 作者:LJG 使用Vericut仿真,必须包含毛坯、数控程序、刀具三个部分,但为了仿真的准确性和真实性,我们还需要机床、夹具用于仿真碰撞,设计模型用于比对仿真结果的正确性等。 这一章我们从基本的三轴机床构建讲起。 在Vericut里有两种方法构建机床,一种是通过Vericut自带的简单建模工具建立机床模型,另外一种是使用其它CAD软件先建立好机床模型,再将机床模型文件导出为Vericut可以接受的文件格式,再导入Vericut。用Vericut自带的建模工具建立机床模型比较麻烦,这里我们用第二中方法,利用NX将建好的机床模型文件导出为.STL 格式文件,并导入Vericut用以构建三轴机床。 一、从NX输出机床模型 从论坛https://www.360docs.net/doc/3c2649988.html,上下载机床模型文件,用NX6打开,如下图1所示。 图 1 一般像机床外壳,控制系统操作面板等实际仿真过程中不需要的部件可以不导出,不过在Vericut里导入不参与仿真的部件可以增加机床的真实感。这里我们不导出机床外壳,控制系统操作面板这两个部件,将这两个部件隐藏如图2所示。

图 2 将不用的部件隐藏后,我们可以看见如图3所示的主轴端面的坐标系。 图 3 在机床建模的时候,我们一般会按照机床的机械零点位置来建立各个机床运动部件的模型,而机床的Z轴的机械原点一般在主轴端面,如图3所示。但从这个机床模型可以看出X、Y轴的位置并不在机械原点,所以我们导出后还要在Vericut里进行调整。 下面先输入机床床身,即在仿真过程中不运动的部件。选择主菜单File > Export >STL…,弹出Rapid Prototyping对话框,这里可以设置输出模型的公差,公差的大小会影响STL文件的大小,不改变参数,单击OK,在弹出的对话框中输入要保存的文件名,输入Based_Y,双击鼠标中键(单击两次OK),选择绿色的底座和导轨,如图4所示的高亮显示部件,选择完成后所有弹出的窗口,都选择OK。 图4

宏程序基础知识资料

瑞鹄汽车模具有限公司内部教材 第一章第一节宏程序基础知识常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放

在括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

EXCEL宏编程实例.doc

Excel 宏编程举例说明 学习宏编程,需要VB基础,如果一点VB基础和面向对象的概念,建议先去补补VB,不然即使自认为学好了也只能拿着高射炮打蚊子! 一)、宏学习 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏:点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿:Workbooks、Workbook、ActiveWorkbook、ThisWorkbook Workbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks(1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。 2、工作表:Worksheets、Worksheet、ActiveSheet Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets(1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置:第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是:在使用过程中Excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。3、图表:Chart 、Charts、ChartObject、ChartObjects、ActiveChart Chart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index) 可引用单个Chart图表,其中index是该图表工作表的索引号或名称;如Charts(1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts(1)是工作簿中第一个(最左边的)图表工作表;Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject 可以控制工作表上嵌入式图表的外观和尺寸。 ChartObjects代表指定的图表工作表、对话框编辑表或工作表上所有嵌入式图表的集合。可由ChartObjects(index)引用单个ChartObject,其中index为嵌入式图表的编号或名称。如

相关文档
最新文档