宏程序基础知识

合集下载

有关宏程序的总结归纳

有关宏程序的总结归纳

有关宏程序的总结归纳正弦曲线:-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宏程序编程必备知识

FANUC宏程序编程必备知识

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循环的用法

宏程序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程序段,如果不符合就继续执行下面的程序段.用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。

数控车宏程序编程方法及技巧课件

数控车宏程序编程方法及技巧课件

常见问题三:条件语句使用不当导致逻辑错误
条件语句使用不当、条件判断过于复杂、条件判断错误。
在宏程序中,条件语句可以根据条件控制程序的流程。如果条件语句使用不当,可能导致程序逻辑错误;条件判断过于复杂 ,会使程序难以理解和维护;条件判断错误,会导致程序结果不正确。
06 数控车宏程序编 程的未来发展趋 势与展望

THANKS
感谢观看
发展趋势一:智能化编程技术的普及与应用
智能化编程技术是指通过人工智能和机器学习等技术,实现数控车宏程序的自动化 和智能化。
随着技术的发展,越来越多的企业开始应用智能化编程技术,以提高生产效率和加 工质量。
未来,智能化编程技术将在数控车宏程序编程中得到广泛应用,并成为主流趋势。
发展趋势二
01
02
03
变量命名不规范、变量初始化不正确、变量值未更新。
在宏程序中,变量的使用是相当频繁的。如果变量命名不规范,可能导致程序混 乱;变量初始化不正确,将影响程序计算;变量值未更新,会导致程序结果不正 确。
常见问题二:循环嵌套过深导致程序复杂化
循环嵌套过深、循环次数过多、循环条件过于复杂。
在宏程序中,循环结构的使用可以简化编程,但过度使用循环可能导致程序复杂化。如果循环嵌套过 深,会使程序难以理解和维护;循环次数过多,会浪费程序运行时间;循环条件过于复杂,可能增加 程序出错的风险。
SELECT语句
根据不同的条件,执行不同的程序 段。
CASE语句
对多个条件进行判断,执行对应的 程序段。
宏程序中的函数与变量
函数
可以进行数学运算、逻辑运算、字符 串处理等操作。
变量
可以存储数据,作为函数参数传递等 。
04 数控车宏程序应 用实例

Fanuc用户宏程序基础(NC车床)

Fanuc用户宏程序基础(NC车床)

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(取消模态调用)。

宏程序知识

宏程序知识

• • • • •
编程举例 MARKE1:G0 G54 X0 Y0 Z100 D1 S600 M03 G0 X100 Y100 X0 Y0 · · ·
• 有条件跳转
• 用IF—条件语句表示有条件跳转。如果满足跳转条件,则进行跳转。 跳转目标只能是有标记符的程序段,此程序段必须位于该程序之内。 有条件跳转指令必须占用一个独立的程序段;在一个程序段中可以有 很多个条件跳转指令。使用了跳转指令后有时会使程序得到明显的简 化,使程序变得简练而简单。 • 编程格式和意义 • IF条件GOTOF 条件满足后,向前跳转(向程序结束的方向跳转) • IF条件GOTOB 条件满足后,向后跳转(向程序开始的方向跳转) • 编程举例 • IF R1>1 GOTOB MARKE1
• • • • •
G01 X=R4 Y=R5 R3=R3+1 由原来的R3加上1后赋值给新的R3 IF R3<=360 GOTOB MA1 判别椭圆加工是否结束,没有的话,就继续 G90G00Z20 M30
• 绝对跳转
• NC程序在运行时以写入时的顺序执行程序段。程序在运行时可以通过 插入程序跳转指令改变执行顺序。跳转目标只能是有标记符的程序段; 此程序须位于该程序内。绝对跳转指令必须占用一个独立的程序段。 • 编程格式和意义 • GOTOF 向前跳转(向程序结束的方向跳转) • GOTOB 向后跳转(向程序开始的方向跳转)
• 用户宏程序和普通程序的简要对比
宏程序 可以使用变量,并给 只能使用常量 变量赋值 常量之间不可以运算 变量之间可以运算 程序只能顺序执行, 程序运行可以跳转 不能跳转 普通程序
计算参数R
• • • • • • • 1、编程格式 R0= ~R299= 2、值的指定 可以在以下范围内给算术参数赋值:±(0.000 0001~9999 9999) 整数值小数点可省略,正好也可以一并省去。 举例:R1=10 3、给其他的地址赋值 举例:G00 X=R1 给X轴赋值
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

瑞鹄汽车模具有限公司内部教材第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。

虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。

常量普通加工程序直接用数值指定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。

相关文档
最新文档