宏程序基础知识
- 格式:doc
- 大小:440.51 KB
- 文档页数:18
有关宏程序的总结归纳正弦曲线:-180…-90…0…90…180…270…360 -π…-2π...0 (2)π…π…32π…π2-50...-25...0...25...50...75 (100)#1=0#2=360 #3=1#4=50/180 (等同于180π即角度与弧度的转换) #5=10WHILE[#1LE#2] DO1 #10=#4*#1#11=SIN[#1]*[#5]G01 X[#10] Y[#11] F1000 #1=#1+#3 END1余弦曲线:(图同上) #1=-90 #2=270 #3=1#4=50/180 (等同于180π即角度与弧度的转换) #5=10WHILE[#1LE#2] DO1 #10=#4*#1+25 #11=COS[#1]*[#5]G01 X[#10] Y[#11] F1000 #1=#1+#3 END1例题:(具体尺寸同上)#1=0#2=360#3=1#4=50/180 (等同于即角度与弧度的转换)#5=10#24=50#25=50WHILE[#1LE#2] DO1#10=#4*#2-#24#11=SIN[#2]*[-#5]-#25G01 X[#10] Y[#11] F1000#2=#2-#3END1WHILE[#1LE#2] DO2#10=#4*#1-#24#11=SIN[#1]*[#5]+#25G01 X[#10] Y[#11] F1000#1=#1+#3END2注:如加刀具补偿可以把上面改为#1=-10、#2=370,两端都增大了10°以防撞到工件。
正多边形:#1=0#2=360#3=6 (正多边形的边数)#4=#2/#3 (每条边所对应的圆心角度)#5=100 (外接圆的半径)WHILE[#1LE#2]DO1#10=#5*COS[#1]#11=#5*SIN[#1]G01X[#10] Y[#11] F1000#1=#1+#4END1铣工篇专题一环切1.方法一:直接在G41/G42程序段修改刀具补偿号O1000 ; 子程序G54 G90 G00 X0 Y0 Z50; O0010;M03 S1000; G90 G01 Y60;G00 Z5; G01 X-30;M08; G01 Y0;G01 Z-10 F60; G03 X30 R30;G41 X30 D01 F100; G40 G01 X0;M98 P0010; M99;G41 X30 D02 F100; 补偿号刀具补偿半径M98 P0010; 1 25G41 X30 D03 F100; 2 15M98 P0010; 3 6.5G41 X30 D04 F100; 4 6M98 P0010;M05M09;M30;方法二:用宏变量表示刀具补偿号,利用循环修改刀具补偿号O0100G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=1;#2=4;WHILE[#1LE#2] DO1;G41 G01 X30 D#1 F100;G01 Y60;G01 X-30;G01 Y0;G03 X30 R30;G40 G01 X0;#1=#1+1;END1;G00 Z50;M05M09;M30;方法三:使用G10和子程序完成环切O0100;G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;G10 L12P1 R25;M98 P0010;G10 L12 P1 R15;M98 P0010;G10 L12 P1 R6.5;M98 P0010;G10L12 P1 R6;M98 P0010;M05G00 Z50;M30;子程序:O0010;G90 G41G01 X30 D01 F100;G01Y60;G01 X-30;G01 Y0;G03 X30 R30;G40 G01 X0;M99;方法四:使用G10和循环完成环切O0011;G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=25.#2=6#3=9.25#5=1;WHILE[#5LE2] DO1;WHILE[#1GE#2]DO2;G10 L12 P1 R#1;G41 G01 X-30 D01;G03 X30 R30;G01Y60;G01 X-30;G01 Y0;G40 G01 X0;#1 =#1-#3;END2;#1=#4;#5=#5+1;END1;G00 Z50M05M30方法五:不使用刀具半径补偿,只使用宏变量编程G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=30;#2=60#3=25#4=9.25#5=6#6=1WHILE[#6LE2]DO1;WHILE[#5LE#3]DO2;#10=#1-#3#11=#2-#3G01X[-#10];G03 X[#10] R[#10];G01 Y[#11];G01 X[-#10];G01 G01 Y0;#3=#3-#4;END2;#3=#5;#6=#6+1;END1;G00Z50M05M30专题二简单立体曲面加工1.铣凸半球(只考虑轮廓没有刀具)方法一:使用角度为参数变量(原点在球心)O0001;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=90;#3=1;#4=15WHILE[#1LE#2]DO1;#5=COS[#1]* #4;#6=SIN[#1]* #4;G01X[#5]Y0F100;G01Z[#6];G02I[-#5];#1=#1+#3;END1;G00Z50M05;M30;方法二:使用函数进行编程O0002;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=15;#2=15#3=0.3;#4=0G00X[#1]WHILE[#1GE#4]DO1;#5=SQRT[#2*#2-#1*#1];G01X[#1]Z[#5]F100;G02I[-#1];#1=#1-#3;END1;G00Z50;M05;M30;2.使用立铣刀铣凸半球(立铣刀半径为5)方法一:使用角度为参数编程铣凸半球O0003;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=90;#3=1;#6=15;#7=5;WHILE[#1LE#2]DO1;#4=COS[#1]*[#6]+[#7];#5=SIN[#1]*[#6];G00X[#4]Y0;G01X[#4]Z[#5]F100;G02I[-#4];#1=#1+#3;END1;G00Z50;M05;M30;方法二:使用函数方法编程铣外形O0004;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=15;#3=0.5;#6=5;G00X[#1+#6];WHILE[#1GE0]DO1;#2=SQRT[15*15-#1*#1];G01X[#1+#6]Z[#2]F100;G02I[-#1-#6];#1=#1-#3;END1;G00Z50;M05;M30;3.使用球头刀铣内凹球(刀具半径为5,球的半径为5)O0005;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=5;#3=90;#4=1;#5=10#6=#5-#2WHILE[#1LE#3]DO1;#10=[#6]*SIN[#1];#11=-[#6]*COS[#1];G01X[#10]Z[#11]F100;G03I[-#10];#1=[#1]+[#4];END1;G00Z50;M05;M30;4.使用立铣刀铣内凹球(刀具半径为5,球的半径为10)O0006;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=30;#2=10;#3=90;#4=1;#5=5;WHILE[#1LE#3]DO1;#10=[#2]*SIN[#1]-[#5];#11=-[#2]*COS[#1];G01X[#10]Z[#11]F100;G03I[-#10];#1=[#1]+[#4];END1;G00Z50;M05;M30;5.其他知识总结①G16 X R Y a ;极坐标编程G15;取消极坐标编程O0001;G92 X0 Y0Z100;G90 G00 Z5;M03 S1000;G16 G00 X33 Y90;G01 Z-10 F100;G41 G01 G91X5 Y-90 D01; G03 X7.07 Y135R5;G90 G03 X38 Y121 R38; G03 X28 Y121 R5;G02 X28 Y59 R28;G03 X38 Y59 R5;G03 X38 Y90 R38;G91 G03 X7.07 Y135 R5; G40 G01 X5 Y135;G90 G00 Z100;G15;M05;M30;O0002;G92 X0 Y0 Z100;G90 G00 Z5;M03 S1000;G16G00X34 Y90;G91 G41 G01 X4 Y-180 D01 F1000; G03 X8 Y180 R4;G90 G03 X38 Y121 R38;G03 X28 Y121 R5;G02 X28 Y59 R28;G03 X38 Y59 R5;G03 X38 Y90 R38;G91 G03 X8 Y-180 R4;G40 G01 X4 Y-180;G90 G00 Z50;G15;M05;M30;②螺旋下刀G02/G03G17X Y RG18Z X RG19Y Z R#1=1;WHILE[#1LE5]DO1G90 G02 I J Z[-#1]R ;#1=#1+#1;END1③倒角G01 X Y ,C ;倒直角G01X Y ,R ;倒圆角G02/G03X Y R ,R ;倒圆角。
FANUC宏程序编程必备知识运算符:运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值。
注意,不能使用不等号运算符含义EQ 等于(=)NE 不等于GT 大于GE 大于或等于LT 小于LE 小于或等于示例程序下面的程序计算数值1~10的总和O9500;#1=0;…………………………存储和的变量初值#2=1;…………………………被加数变量的初值N1 IF[#2GT 10]GOTO 2;……当被加数大于10时转移到N2#1=#1+#2;…………………计算和#2=#2+#1;…………………下一个被加数GOTO 1;……………………转移到N1N2 M30;............................程序结束算术和逻辑运算:功能格式备注定义#i=#j:加法#i=#j+#k减法#i=#j-#k乘法#i=#j*#k除法#i=#j/#k正弦#i=SIN[#j]: 角度以度指定090度30分反正弦#i=ASIN[#j]:表示为90.5度余弦#i=COS[#j]:反余弦#i=ACOS[#j]:正切#i=TAN[#j]:反正切#i=ATAN[#j]:平方根#i=SQRT[#j]:绝对值#i=ABS[#j]:舍入#i=ROUND[#j]:上取整#i=FIX[#j]:下取整#i=FUP[#j]:自然数对数#i=LN[#j]:指数函数#i=EXP[#j]:或#i=#jOR#k: 逻辑运算一位一位地按二异或#i=#jXOR#k:进制数执行与#i=#jAND#k:从BCD转为BIN #i=BCD#j;用于与PMC的信号交换从BIN转为BCD #i=BCD#j;角度单位:SIN、ASIN、COS、ACOS、TAN和ATAN的角度单位是度ARCSIN#i=ASIN[#j]:●取值范围如下:当参数(N0.6004¥0)NAT位设为0时,270~90度;当参数(N0.6004¥0)NAT位设为1时,-90~90度。
宏程序编程知识工件偏置量:G10 L2 P X Y Z (加工中心)。
G41X Y DG90G54P1G00X Y S M03G90G10L2P0X Y ZG10L1P RG10 P U V W C Q可编程参数入口:G10 L50………G11G10数据设置模式入口、L50可编程参数入口模式(固定的)N……P……R……指定参数入口(N=参数号,P=轴号,R=设置值)G11数据设置模式取消宏程序的调用:G65 P LG65P包含宏程序的程序号(存储为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-#13Q-#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 FUPROUND表示四舍五入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位信号#1133用于一次向PMC写入所有32位信号——-99999999到+99999999的数值可用于#1133 #2001through#2200 (A刀具补偿值)(B磨损偏置值)(H代码C)#2201through#2400(B几何偏置值)(H代码C)#2500表示沿X轴的外部工件偏置值。
宏程序while循环的用法一、什么是宏程序和while循环A. 宏程序的定义和作用B. while循环的定义和作用二、while循环的语法和基本使用方法A. while循环的语法结构B. while循环的基本使用方法三、while循环的高级应用技巧A. 循环嵌套:多层while循环实现复杂逻辑B. 循环控制:break和continue语句的使用四、宏程序和while循环实例分析及应用场景介绍A. 实例1:计算1到100之间所有偶数的和B. 实例2:统计学生成绩,计算平均分数并输出优秀学生名单五、总结一、什么是宏程序和while循环A. 宏程序的定义和作用:宏程序是一种能够自动化执行特定任务或操作序列的机制。
它可以将重复性较高且需要频繁调用的代码块封装为一个独立部分,并通过指令或参数来调用执行。
宏程序适合处理较为固定化需求,可以提高代码可读性与重用性。
B. while循环的定义和作用:在编程中,控制流程流转通常需要借助条件判断。
而while循环是一种基于条件判断的迭代循环结构,它能够使程序在满足特定条件时重复执行一段代码块。
事先并无法确定执行次数,只有当条件不再满足时,循环才会停止。
二、while循环的语法和基本使用方法A. while循环的语法结构:while(condition){//被循环执行的代码块}其中,condition是一个布尔表达式(true或false),用于决定是否继续执行循环。
当condition为true时,代码块将被重复执行;当condition为false时,循环结束。
B. while循环的基本使用方法:1. 初始化计算器变量与控制条件。
2. 在while后的括号中写入条件。
3. 在大括号内指定需要重复执行的代码。
4. 在代码块中更新计数器或控制条件。
三、while循环的高级应用技巧A. 循环嵌套:多层while循环实现复杂逻辑有些场景下,需要处理较为复杂的逻辑。
可以通过嵌套多个while循环来实现。
宏程序入门基础学习资料其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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那就是~~~~~.#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的数值赋予#101G65 H02 P#101 Q#102 R10G65 H02 P#101 Q10 R#103G65 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程序段,如果不符合就继续执行下面的程序段.用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
Fanuc用户宏程序基础(NC车床)Fanuc用户宏程序基础1、概要2、变量的指定3、变量(1)局部变量(2)公共变量(3)系统变量4、运算指令5、控制指令6、利用机床内部传感器测外径时宏程序的组合方法以及步骤介绍7、<空>的灵活使用8、刀具最大磨损值作为寿命值9、机床外部测量以及输入输出端口1、概要宏程序对大家来讲都比较困难,即便是阅读了使用说明书。
的确,关于宏程序是有一些比较难以理解的部分,鉴于此种情况,这一次以简单实例并加以详细说明来解释何谓宏程序。
这个教材的对象是已经能够熟练掌握了NC加工编程的人员。
本资料作为参考,希望能够对大家有所帮助。
到现在为止,宏程序是基于NC语言,由主、子程序来组合而成。
说到宏程序和子程序的最大区别就是宏程序能够调用变量。
所以最近机器人、装载机无人化系统上应用到的内部外部测定、刀具破损、刀具寿命管理、负荷监视系统、工件判断等,像这些领域,宏程序就不得不被使用到了。
不管怎么样,总之原本是人进行的作业转由机床来进行,所以要必须方方面面都要考虑到。
另外,本资料针对的是FANUC 18T, 16T, 15T, 11T, 10T, 0T(用户宏程序B), Y ASNUC作为说明对象的。
2、变量指定关于宏变量的调用,请看下例。
(1)形状相同,尺寸不同的时候、各尺寸定义为A~D等变量;(2)刀尖的进给路线1~7的程序用宏程序来编制。
主程序宏程序(3)宏调用及变量指定G65 P9000 A(#1)B(#2)C(#3)D(#7)此命令为编集、输入A~D图面尺寸值,并执行跳转至(O9000)。
像上述程序中,A~D的内容即使更改,A~D也仍然使用对应的#1、#2、#3、#7变量(最初指定后就不能更改)。
这些常数都是分配给局部变量的。
与宏程序相关的指令,除了G65以外还有G66(宏模态调用)、G67(宏模态调用取消)。
如果定义G65,定义的宏程序只被调用一次;G66是模态调用指令,每次轴移动指令都调用宏程序,直到G67(取消模态调用)。
第7章宏7.1 宏的功能7.1.1宏的基本概念宏是指一个或多个操作的集合,其中每个操作实现特定的功能,例如打开某个窗体或打印某个报表。
宏可以使某些普通的任务自动完成。
在Access中,共定义了近50种这样的基本操作,也叫宏命令。
Access中宏可以分为:操作序列宏、宏组合含有条件操作的条件宏。
宏组是共同存储在一个宏名下的相关宏的集合。
对于一些复杂的操作,还可以使用条件宏,即在执行宏的过程中按照一定的逻辑条件来决定执行哪些宏命令。
使用宏的好处:创建的过程简单。
不需编程,不需记住各种复杂的语法,即可实现某些特定的自动处理功能。
7.1.2设置宏操作Access中提供了一系列基本的宏操作,每个操作都有自己的参数,可以按需要进行设置。
常见宏操作和功能参见附录D7.2 建立宏7.2.1创建操作序列宏(1)在“宏”窗口的“操作”列单击第一个空白行。
假如要在两个操作行之间插入一个操作,单击插入行下面的操作行的行选定器,然后在工具栏上单击“插入行”按钮。
(2)在“操作”列,请单击箭头显示操作列表。
(3)选择要使用的操作。
(4)可以在“操作”列右侧的“备注”栏中为操作键入相应的说明,说明是可选的。
(5)假如需要,在窗口的下部指定参数。
宏窗口的组成:⏹“操作”列⏹“宏名”列⏹“条件”列⏹“注释”列⏹“操作参数”部分⏹“说明”部分7.2.2创建宏组⏹宏组由若干彼此相关的宏组成⏹宏组中的每个宏有自己的宏名,执行宏组中的宏时需要在宏名前加宏组名,形式为:宏组名.宏名。
⏹建立宏组的目的是方便管理7.2.3条件操作宏条件宏是设置了宏命令的执行条件的宏。
运行宏时先测试条件,如果条件成立,则执行对应的宏命令。
否则,不执行。
关于创建条件宏:操作时需要先执行菜单命令“视图” →“条件”,调出“条件”列。
◆其中条件是任何计算结果为True/False 或“是/否”的表达式例如:[Forms]![按性别浏览学生].[frm性别]=17.2.4设置宏的操作参数在宏中添加了某个操作之后,可以在“宏”窗口的下部设置这个操作的参数。
理论四、宏程序的概述(宏程序B类)(一)宏程序的基本知识一、宏程序的概述用户把实现某种功能的一组指令像子程序一样,预先存储在机床内,用一个指令代表这个存储的功能,在程序中只要指定该指令就能实现这个功能。
这一组指令称为用户宏程序基本体,简称宏程序。
代表指令称为用户程序调用指令,简称宏指令。
优点:通用性强,简单分类:宏程序A、宏程序B二、变量1、变量的表示:#后接数字或表达式eg: #1、#100、#[#4/2] (变量符号+变量号或表达式)2、变量的种类1)局部变量:#1~#33 用作计算过程量2)公共变量:#100~#149 用作定形、定位的变量3)系统变量:#200~3、变量的使用地址等(O、N、G、L、P除外)后接变量eg:G01 X#101 Y#102 F#103= G01 X-60.0 Y0 F100 (#101=-60.0 #102=0 #103=100) 说明:1)程序中使用变量值时,应指定变量号eg:#1=50.0 G01 X#1 F200;2)用表达式指定变量时,必须使用“[ ]”eg:G01 X[#11+#22] F#33;3)被引用变量的值根据地址的最小设定单位自动舍入eg:#4=12.34567G01 X#4;实际上#4=12.3464)改变引用变量的符号,要把负号放在“#”的前面eg:G00 X-#10;5)引用未定义的变量时,变量及地址被忽略eg:#11=0 #22为空值G01 X#11 Y#22;实际为G01 X0;4、变量的赋值1)直接赋值# =数值(或表达式)eg:#1=1.0 #2=2.0 #3=#1*#2 =1*2说明:等号左边不能用表达式。
#4+10.0=#3 #4=#3-10.0 2)引数赋值宏调用时,在主程序中赋值(二)宏程序算术和逻辑运算说明:1)定义转换:#i=#j eg :#1=10.0 #2=#1 ⇒ #2=10.02)加法形演算: “+”和;“-”差;#i=#jOR#k 逻辑和;#i=#jXOR#k 异或eg :3)乘法形运算: “*”乘;“/”商;“AND ”与(逻辑乘); #i=#jMOD#k 取余4)函数运算:SIN 、COS 、TAN[ ] (后面的变量必须加“[ ]”) ATAN[ ] 反正切、SQRT 平方根、ABS 绝对值、ROUND 四舍五入整数化、FIX 小数点以下舍去、FUP 小数点以下进位、LN 自然对数、EXP e xa) 角度以“度”为单位;eg :#j=90︒30'=90.5︒ SIN[#j]=SIN[90.5] #j 取值-1~1之间,否则报警。
宏程序教案一、宏程序的概述宏程序是指利用变量编制的NC程序。
它可使得编制相同加工操作的程序更方便、更容易。
用户宏程序和调用子程序完全一样。
宏程序既可以在主程序中使用,也可以当做子程序来调用。
二、变量1、变量的表示变量用变量符号“#”和和面的变量号制定。
表达式可以用来制定变量号。
此时表达时必须封闭在括号中。
例如:#1,#[#1+#2-12]2、宏程序中变量的类型变量一共有4种类型,各种变量的范围和功能见下表:变量类型变量号功能空变量#0 该变量总是空,没有值能赋给该变量用户变量#1~#33 用在宏程序中存储数据公共变量#100~#199 断电时初始化为空#500~#999 断电后数据保存,不丢失系统变量#1000~#5335 用于读写CNC的各种数据,如刀具当前位置3、变量的引用为在程序中使用变量值,在制定变量后跟变量号的地址。
当用表达式制定变量时,把表达式放在括号中。
例如:G01 X#1 F#[#2+#3]4、变量的赋值在程序中若对局部变量进行赋值时,可通过自变量地址,对局部变量进行传递。
有2种形式的自变量赋值方法。
形式1使用了除G,L,O,N和P以外的字母,每个字母对应一个局部变量。
对应关系见下表:自变量局部变量自变量局部变量自变量局部变量自变量局部变量A #1 H #11 R #18 X #24B #2 I #4 S #19 Y #25C #3 J #5 T #20 Z #26D #7 K #6 U #21E #8 M #13 V #22F #9 Q #17 W #23自变量形式2使用A,B,C各1次和I,J,K各10次对局部变量赋值,自变量2用于传递诸如三位坐标值的变量。
对应关系见下表:自变量 局部变量自变量 局部变量 自变量 局部变量 自变量 局部变量A #1 I 3 #10 I 6 #19 I 9 #28B #2 J 3 #11 J 6 #20 J 9 #29C #3 K 3 #12 K 6 #21 K 9 #30 I 1 #4 I 4 #13 I 7 #22 I 10 #31 J 1 #5 J 4 #14 J 7 #23 J 10 #32 K 1 #6 K 4 #15 K 7 #24 K 10 #33 I 2 #7 I 5 #16 I 8 #25 J 2#8J 5#17J 8#26K 2 #9 K 5 #18 K 8 #27 CNC 系统内部自动识别自变量1和2的类型,如果自变量1和2混合赋值,后指定的自变量类型有效。
数控宏程序知识讲解,看完你也牛逼了01何为宏程序用变量的方式进行数控编程的方法就叫做数控宏程序编程。
我们普通程序(如G01X100.Y100.F200)X,Y地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1 Y#2 F200,这就是我们所谓的宏程序。
备注:FUNC系统是用#1,#2等等来表示变量的。
*(机床系统不同表示的方式也不同,在这以FUNC系统为例)FUNC系统是用#1,#2等等来表示变量的。
即“#”和“数字”组成的。
如#1,#2……#33等。
这些#后面的数子1,2,3等等有什么含义吗?其实它只是宏变量的代号而已。
举个最简单的例子:如果有三个人,他们的名字叫小李、小李、小李。
那么当你呼叫小李的时候,会发生一个问题,这三个人都会回答,但你其实只想喊其中的一个。
这就分不清了。
同理,#1 #1 #1 ,如果后面的数字都是一样,当系统使用#1的时候,它也会发生糊涂,到底让我用哪个呢?所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。
此时如果系统使用#1,就不会发生混乱了。
02何为变量变量是一个会变化的量,与之对应的是常量。
(常量比如:1,2,22,65等等阿拉伯数字。
变量比如:#1,#2,#5等等,#1,#2的值到底是多少??因为它是变量,一个会变化量)。
03变量是多少?比如把#1,#2等变量当做的银行卡,你往这些卡里存了多钱,那么这些卡里就有多钱(比如:往#1里面存了500元,此时#1就相当于500,又取走了300此时#1里面就有200)04变量的赋值往#1里面存了500元等这么一个过程就叫变量赋值。
如果你不在往“#1“里面存钱,或取钱,那么#1就相当于500.也就是说#1不发生运算的情况下就是500.如果有这么一个程序段G0X#1,也就等同于此程序段G0X500.那么变量在数控机床中是怎么赋值的呢?格式如下:机床中的赋值中文解释备注#5=100 把100这个数值赋给变量#5 把常量赋给了#5#1=#1-1 把#1-1这个运算结果赋值给#1 把表达式结果赋值给了#1 #6= [#11 #15 3] 把[#11 #15 3]这个表达式的运把表达式结果赋值给了#6算结果赋值给#605宏程序IF…GOTO语句直观意思是:如果...就跳转到哪(或者是做什么事)。
宏程序讲义4.2用户宏程序及其基本编程方法在生产过程中存在大量的零件是系列化的。
它们的形状相似,但是尺寸不同。
为了满足对这类零件的编程需要,数控系统提供了一些固定循环。
如FANUC 中的钻孔循环,车加工中的粗加工循环等,SIEMENS 系统中的孔加工循环和腔、槽加工循环等等。
除此以外,还为用户提供了根据自己的需要编写固定循环的功能,以满足不同用户的特殊需要。
这种功能在不同的系统中有不同的提法,例如,在FANUC 系统中称作用户宏程序,在SIEMENS 系统中称作用户循环。
无论其名称如何不同,但其实质都是利用变量和程序控制功能,编制具有一定通用性的程序,如果这个程序作为子程序,可以通过变量和简单指令被其他程序调用。
变量用一个名称表示一个数,通过程序或操作面板对其赋值,也可以参与运算。
程序控制语句使得程序运行可以不再单一按自然排列顺序执行,而可以由控制语句控制其执行顺序。
4.2.1 FANUC 系统 4.2.1.1变量变量用变量符号“#”和后面跟随变量号表示。
变量号可以是整数,例如:#10,#20等。
变量号也可以是一个表达式,例如:#[#1+#2+#3],如果,#1=1,#2=4,#3=7,那么 #[#1+#2+#3] 等价于 #12。
变量的类型: FANUC 系统规定变量的类型由变量号区分,共分为四类:变量的范围:局部变量和公共变量的值可以是0或者4710-~ 2910-- 或者 2910- ~ 4710在程序中定义变量时,小数点可以省略。
例如定义#1=123;#1的实际值是123.000。
空变量处理:1. 空变量被引用:当引用一个空变量时,这个引用无效。
例如 #1 = 〈空〉,G90 X100 Y#1 等同 G90 X1002.赋值与运算:一个空变量被赋予另一个变量时,被赋值的变量也成为空变量。
例如#1=〈空〉,#2=100,执行#2=#1 以后,#2 = 〈空〉。
在运算中空变量等于0.例如#1=〈空〉,#2=100,#3=50 执行#3=#1+#2 以后,#3 = 100;3.比较:在等于和不等于的比较中,空变量与0是不相同的。
1. 什么场合会用到宏程序编程?其实说起来宏就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加一个量,那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。
手工编程加工公式曲线(计算简单,输入快捷)有规律的切削路径(作为一个切削模块)程序间的控制(程序的调度)刀具的管理(刀具的磨损)自动测量(机内测头)2. 什么叫宏程序?在编程时,我们会把能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来调用它们,使用时只需给出这个总指令就能执行其功能所存入的这一系列指令称作用户宏程序本体,简称宏程序。
这个总指令称作用户宏程序调用指令。
在编程时,编程员只要记住宏指令而不必记住宏程序。
3. 用户宏程序与普通程序的区别1)在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转。
2)普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。
3)用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。
4. 变量的三种类型数控系统变量表示形式为“#”后跟1~4位数字,变量种类有三种:(1)局部变量:#1~#33是在宏程序中局部使用的变量,它用于自变量转移。
(2)公用变量:用户可以自由使用,它对于由主程序调用的各子程序及各宏程序来说是可以公用的。
#100~#149在关掉电源后,变量值全部被清除,而#500~#509在关掉电源后,变量值则可以保存。
(3)系统变量:由后跟4位数字来定义,它能获取包含在机床处理器或NC内存中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。
5. 宏程序的特点宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
瑞鹄汽车模具有限公司内部教材第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 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 相同。
限制程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:○#1;错误使用方法/#2G00X100.0; 错误使用方法N#3Y200.0; 错误使用方法系统变量系统变量能用来读写内部NC数据,如刀具补偿值和当前位置数据。
然而,注意:有些系统变量是只读变量。
对于扩展自动化操作和一般的程序,系统变量是必须的。
刀具补偿值:使用这类系统变量可以读写刀具补偿值。
可用的变量数取决于能使用的补偿对数,当补偿对数不大于200时,可以用变量#2001~#2400。
补偿号系统变量1 : 200 #10001(#2001):#10200(#2200)补偿号几何补偿磨损补偿1 : #11001(#2201):#10001(#2001):200#11200(#2400)#10200(#2200)宏报警:变量号功能#3000 当#3000中有0~99间的某一值时,NC停止并显示报警信息。
报警信息不超过26个字符,例:#3000=1(TOOL NOT FOUND);报警屏幕显示“3001 TOOL NOT FOUND。
”时间信息:时间信息可以读写。
变量号功能#3001 这个变量是一个以1毫秒为增量一直记数的记时器,上电或达到65535毫秒时复值为0。
#3002 这个变量是一个以1小时为增量、当循环启动灯亮时记数的记时器,电源关闭后记时器值依然保持,达到1145324.612小时时复值为0。
#3011 这个变量用于读当前年/月/日数据,该数据以十进制数显示。
例:March 28,1993表示成19930328。
#3012 这个变量用于读当前时/分/秒数据,该数据以十进制数显示。
例:下午3点34分56秒表示成153456。
自动操作控制:自动操作的控制状态可以改变。
自动操作控制的系统变量#3003#3003单段辅助功能的完成使能要等待1无效要等待2使能不要等待3无效不要等待☆上电时该变量值为0。
☆当不能执行单段停止时,单段停止操作不能执行,即使单段开关有效。
☆当没有指定是否等待辅助功能(M、S、T)完成时,在辅助功能完成之前,程序执行到下一段,定位完成信号DEN不发出。
自动操作控制的系统变量#3004#3004进给保持进给倍率精确停止使能使能使能1无效使能使能2使能无效使能3无效无效使能4使能使能无效5无效使能无效6使能无效无效7无效无效无效☆上电时该变量值为0。
☆当不能执行进给保持时:进给保持按钮按下并保持时,机床以单段停止方式停止,但单段方式若因变量#3003而无效时,不执行单段停止操作。
进给保持按钮按下又释放时,进给保持灯亮,但机床不停止;程序继续进行,机床停在最先含有进给保持使能的段。
☆当进给倍率无效时,倍率定在100%,忽略机床操作面板上的倍率开关。
☆当精确停止无效时不执行精确停止检查(定位检查),即使是包含有不执行切削的段。
☆例如G84攻丝循环时进给速度,转速,单段操作都无效,其内部程序就指定了#3003=3 #3004=7模态信息:变量号功能#4001G00,G01,G02,G03,G33 (01组)#4002G17,G18,G19 (02组)#4003G90,G91 (03组)#4004(04组)#4005G94,G95 (05组)#4006G20,G21 (06组)#4007G40,G41,G42 (07组)#4008G43,G44,G49 (08组)#4009G73,G74,G76,G80~G89 (09组)#4010G98,G99 (10组)#4011G50,G51 (11组)#4012G65,G66,G67 (12组)#4014 G54~G59(14组)#4015 G61~G64(15组)#4016G68,G69 (16组)::#4022(22组)#4102B码#4107D码#4109F码#4111H码#4113M码#4114顺序号#4115程序号#4119S码#4120T码例:当执行#1=#4001时,#1=0,1,2,3或33当前位置:位置信息变量不能写只能读。
见下表:变量号位置信息坐标系刀具补偿值移动期间的读操作#5001~#5004 段结束点工件坐标系不包括使能#5021~#5024 当前位置机床坐标系包括无效#5041~#5044 当前位置工件坐标系#5061~#5064 跳段信号位置使能#5081~#5084 刀偏值无效#5101~#5104 偏差的伺服位置☆首位数(从1~ 4)分别代表轴号,数1代表X轴,数2代表Y轴,数3代表Z轴,数4代表第四轴。
☆执行当前的刀偏值,而不是立即执行保持在变量#5081~#5088里的值。
☆在含有G31(跳段)的段中发出跳段信号时,刀具的位置保持在变量#5061~#5068里,如果不发出跳段信号,指定段的结束点位置保持在这些变量中。
☆移动期间读变量无效时,表示由于缓冲(准备)区忙,所希望的值不能读。
工件坐标系补偿值(工件零点偏置值):工件零点偏置值变量可以读写,见下表:变量号功能#5201~#5204第一轴外部工件零点偏置值~第四轴外部工件零点偏置值#5221~#5224第一轴G54工件零点偏置值~第四轴G54工件零点偏置值#5241~#5244第一轴G55工件零点偏置值~第四轴G55工件零点偏置值#5261~#5264第一轴G56工件零点偏置值~第四轴G56工件零点偏置值#5281~#5284第一轴G57工件零点偏置值~第四轴G57工件零点偏置值#5301~#5304第一轴G58工件零点偏置值~第四轴G58工件零点偏置值#5321~#5324第一轴G59工件零点偏置值~第四轴G59工件零点偏置值#7001~#7004第一轴工件零点偏置值(G54P1)~第四轴工件零点偏置值#7021~#7024第一轴工件零点偏置值(G54P2)~第四轴工件零点偏置值:#7941~#7944第一轴工件零点偏置值(G54P48)~第四轴工件零点偏置值算术和逻辑操作对于附加的48工件坐标系,变量#7001~#7948(G54P1~G54P48)是可选变量。
在下表中列出的操作可以用变量进行。
操作符右边的表达式,可以含有常数和(/或)由一个功能块或操作符组成的变量。
表达式中的变量#J和#K可以用常数替换。
左边的变量也可以用表达式替换。
见下表:功能格式注释赋值#i=#j加#i=#j+#k减#i=#j—#k乘#i=#j*#k除#i=#j/#k正弦#i=SIN[#j] 角度以度为单位,如:90度30分表示余弦#i=COS[#j]成90.5度正切#i=TAN[#j]反正切#i=ATAN[#j]平方根#i=SQRT[#j]绝对值#i=ABS[#j]进位#i=ROUND[#j]下进位#i=FIX[#j]上进位#i=FUP[#j]OR(或)#i=#jOR#k 用二进制数按位进行逻辑操作。
XOR(异或)#i=#jXOR#kAND(与)#i=#jAND#k将BCD码转换成BIN码#i=BIN[#j] 用于与PMC间信号的交换。
将BIN码转换成BCD码#i=BCD[#j]角度单位:在SIN,COS,TAN,ATAN中所用的角度单位是度。
ATAN功能:在ATANT之后的两个变量用“/”分开,结果在0°和360°之间。
例:当#1=ATANT[1]/[—1]时,#1=135.0ROUND功能:☆当ROUND功能包含在算术或逻辑操作、IF语句、WHILE语句中时,将保留小数点后一位,其余位进行四舍五入。
例:#1=ROUND[#2];其中#2=1.2345,则#1=1.0☆当ROUND出现在NC语句地址中时,进位功能根据地址的最小输入增量四舍五入指定的值。
例:编一个程序,根据变量#1、#2的值进行切削,然后返回到初始点。
假定增量系统是1/1000mm,#1=1.2345,#2=2.3456则G00 G91 X—#1;移动1.235mmG01 X—#2 F300;移动2.346mmG00 X[#1+#2];因为1.2345+2.3456=3.5801移动3.580mm,不能返回到初始位置。
而换成G00X[ROUND[#1]+ROUND[#2]]能返回到初始点。
上进位和下进位成整数:例:#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算术和逻辑操作的缩写方式:取功能块名的前两个字符,例:ROUND RO。