数控技术ppt课件4用户宏程序编程.ppt

上传人:小飞机 文档编号:1558877 上传时间:2022-12-05 格式:PPT 页数:111 大小:841.50KB
返回 下载 相关 举报
数控技术ppt课件4用户宏程序编程.ppt_第1页
第1页 / 共111页
数控技术ppt课件4用户宏程序编程.ppt_第2页
第2页 / 共111页
数控技术ppt课件4用户宏程序编程.ppt_第3页
第3页 / 共111页
数控技术ppt课件4用户宏程序编程.ppt_第4页
第4页 / 共111页
数控技术ppt课件4用户宏程序编程.ppt_第5页
第5页 / 共111页
点击查看更多>>
资源描述

《数控技术ppt课件4用户宏程序编程.ppt》由会员分享,可在线阅读,更多相关《数控技术ppt课件4用户宏程序编程.ppt(111页珍藏版)》请在三一办公上搜索。

1、用户宏程序编程一、宏程序应用概述(一)宏程序与普通程序的对比 一般意义上的数控编程(普通程序),是使用数控系统给定的指令代码进行编程。每个代码的功能固定,只要按规定使用即可。为了扩展编程功能,FANUC数控系统厂家在一般指令代码功能基础上,又提供了用户宏程序功能,简称宏程序。区别如下: 普通程序使用常量,常量之间不能运算,程序只能顺序执行 不能跳转,程序没有通用性; 宏程序可以使用变量(可以赋值),变量之间可以运算,程 序运行可以跳转,程序具有通用性。,(二)宏程序与CAD/CAM软件生成的程序对比 宏程序短小精悍,任何数控加工只要能够用宏程序完整表达,即使再复杂,其程序也比较精炼篇幅小,优化

2、后的宏程序段数很少超过60行,这对于一般数控装置的程序存储空间为128KB、256KB标准配置来说,都能容纳下任何复杂的宏程序。不需要考虑因程序较长进行在线加工时,数控系统与外部电脑的传输率不够问题。 CAD/CAM软件生成的程序通常都比较大,因为其生成刀具轨迹的原理采用直线(微线段)逼近曲线曲面,所以不但程序长,而且存在逼近误差。(三)用户宏程序与一般子程序对比 子程序可用于同一操作的重复执行,用户宏程序具有此功能, 还允许使用变量、算术和逻辑操作、条件转移等,也可以扩展一般程序,如凹槽循环和用户定义的循环。加工程序可以调用带有简单命令的用户宏程序。,FANUC 数控系统具有用户宏程序功能。

3、 定义:用户宏程序是具有某种功能的一组命令,象子程序一样存储在内存中。存储的这组命令也称为用户宏程序主体(简称宏程序),用户宏程序可以被“调用宏程序的指令” 调用。 用户宏程序见图11。,图11 用户宏程序,宏程序的最大特点: 在宏程序中,除了使用通常的CNC指令外,还可以使用带变量 的CNC指令,进行变量运算,宏指令可以给变量设定实际值。根据宏程序功能范围的不同分为: 用户宏程序A 用户宏程序B 现代FANUC系统已不分“用户宏程序A”和“用户宏程序B”, 取消了宏程序A,统称为用户宏程序。二、基础理论2.1 变量概念 普通加工程序用数值指定G代码和位移距离 例如:G01和X100.0。 使

4、用宏程序时,数值可以直接指定,而且可用变量指定代 码和位移等,变量值可以用程序或用MDI方式设定或修改。 例如: #1= #2+100; G01 X#1 F500;,2.2 变量的表示 一般计算机程序语言允许使用变量名,用户宏程序则不行。用户宏程序的变量需用变量符号“#”和其后的变量号指定,变量号可以直接用数值或表达式表示,其格式为: i(i =1、2、3、)。例如,#12,102,1006等。用表达式指定变量号时,表达式必须放在括号内。例如,#1+#2-12。 变量可以代替宏程序中地址后面的数值,变量的值可由调用用户宏程序的指令给宏程序主体赋值,或者在执行宏程序主体时由得出的计算值决定。使用

5、复数个变量时,可由变量号决定。2.2.1 变量的引用 1.变量可被引用为代替宏程序中地址后面的数值 如 F103,表示进给速度由变量103的值指定,当103=1.5时,与F1.5指令的相同。又如,G130,当130=3时,与G03指令相同;,2.变量可被引用为指定位移 如G00Z-100,表示刀具在-Z方向快速定位到变量100指定的位置,当100=250时,与G00Z-250.0指令的相同; 此外,用变量j代替变量号码i时,不能用j表示,而用9j。当110=120(110为j, 120为变量号码),120=500时,则为9110=500。地址O,N不能引用变量,即不能使用O100,N120。变

6、量值可以显示,可以用MDI键设定。 3.自变量赋值(指定) 在宏程序中,给使用的变量所赋予的实际值叫做自变量。自变量由地址和后面的数字指定。除O之外的地址均可指定自变量,自变量的地址和变量号必须一一对应。例如自变量的地址I、J、K与宏程序内的变量8004、8005、8006一一对应 赋值:直接指定、调用宏程序指令传送、表达式指定 此外自变量还有标志号,如指定自变量标志为1,否则为0。 自变量被指定,变为指定值,否则变为下述情况: 参照CNC指令,指定的自变量地址无效。 参照运算指令和转移指令。,2.2.2 变量的类型 按变量号、使用范围和功能,变量分为四种类型,见表1。表1 变量类型,注:公共

7、变量 #150 到 #199 及 #532 到 #999 是随意的(可选择)2.2.3 变量值的范围 局部变量和公共变量的值可以是0或以下范围中的值: -1047-1029 0 +10-29+1047 如果计算结果超出有效范围,则触发程序错误P/S, 报警NO.111。2.2.4 小数点的省略 当在程序中定义变量值时,整数值的小数点可以省略。 例如:#1=123,变量#1的实际值是123.000。,2.2.5 变量使用时注意的问题 在程序中使用变量时,应指定变量号地址。 当用表达式指定变量时,必须把表达式放在括号中,例如:G01 X#11+#22 F#3。 被引用变量的值根据地址的最小设定单位

8、自动的四舍五入。例如:当G00 X#11,以1/1000mm的单位执行赋值12.3456时,CNC把12.3456赋值给变量#11,实际指令值为G00X12.346。 改变引用变量的值的符号,要把“-”号放在#的前面,例如:G00X-#11。 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#11的值是0,并且变量#22的值是空时,G00X#11Y#22的执行结果是G00X0。 所谓“变量的值是0”与“变量的值是空”是二个完全不同的概念,可以这样理解: “变量的值是0”相当于“变量的数值等于0”, “变量的值是空”意味着“变量所对应的地址不存在,不生效”。,不能用变量代表的地址符号有:程

9、序号O,顺序号N,任选程序段挑转号 /。例如以下情况不能使用变量: O#11; /O#22G00X100.0; N#33Y200.0; 使用ISO代码编程时,用“#”代码表示变量,若用EIA代码,则应用“”代码代替“#”代码,因为EIA代码中没有“#”代码2.3 系统变量 空变量、局部变量和公共变量的意义见表1功能说明部分,不再赘述。下面介绍系统变量。 系统变量用于读和写CNC内部数据,例如,刀具偏置值和当前位置数据。无论用户宏程序A或用户宏程序B,系统变量的用法都是固定的,而且某些系统变量为只读,用户必须严格按照规定使用。 系统变量是自动控制和调用加工程序开发的基础。系统变量的内容见表2。,

10、表2 FANUC 0i系统变量一览表 变量号 含义#1000#1015,#1032 接口输入变量#1100#1115,#1132,#1133 接口输出变量#10001#10400,#11001#11400 刀具长度补偿值#12001#12400,#13001#13400 刀具半径补偿值#2001#2400 刀具长度与半径补偿值(位置组数 200时)#3000 报警#3001,#3002 时钟#3003,#3004 循环运行控制#3005 设定数据(SETTING值)#3006 停止和显示信息#3007 镜像#3011,#3012 日期和时间#3901,#3902 零件数#4001#4120,#

11、4130 模态信息#5001#5104 位置信息#5201#5324 工件坐标系补偿值(工件零点偏移值)#7001#7944 扩展工件坐标系补偿值(工件零点偏 移值),下面对系统变量进行说明2.3.1 接口(输入输出)信号接口信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号,具体内容见表3。表3 FANUC 0i 接口信号的系统变量 变量号 功能#1000#1015 把16位信号从PMC送到用户宏程序。变量#1000#1032 #1015用于按位读取信号;变量#1032用于一 次读取一个16位信号#1100#1115 输出: 把16位信号从用户宏程序送到PMC。变量#1100#113

12、2 #1115用于按位写信号;变量#1132用于一次 写一个16位信号#1133 变量#1133用于从用户宏程序一次写一个32位 信号送到PMC。#1133的值为从-99999999到 +99999999注:只有使用FANUC PMC时,才能使用上表中的变量。在运算中,系统变量 #1000#1015和#1032不能用作左边的项。,下面对系统变量进行说明2.3.1 接口(输入输出)信号接口信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号,具体内容见表3。表3 FANUC 0i 接口信号的系统变量 变量号 功能#1000#1015 把16位信号从PMC送到用户宏程序。变量#1000#10

13、32 #1015用于按位读取信号;变量#1032用于一 次读取一个16位信号#1100#1115 输出: 把16位信号从用户宏程序送到PMC。变量#1100#1132 #1115用于按位写信号;变量#1132用于一次 写一个16位信号#1133 变量#1133用于从用户宏程序一次写一个32位 信号送到PMC。#1133的值为从-99999999到 +99999999注:只有使用FANUC PMC时,才能使用上表中的变量。在运算中,系统变量 #1000#1015和#1032不能用作左边的项。,下面对系统变量进行说明2.3.1 接口(输入输出)信号接口信号是可编程机床控制器(PMC)和用户宏程序之

14、间交换的信号,具体内容见表3。表3 FANUC 0i 接口信号的系统变量 变量号 功能#1000#1015 把16位信号从PMC送到用户宏程序。变量#1000#1032 #1015用于按位读取信号;变量#1032用于一 次读取一个16位信号#1100#1115 输出: 把16位信号从用户宏程序送到PMC。变量#1100#1132 #1115用于按位写信号;变量#1132用于一次 写一个16位信号#1133 变量#1133用于从用户宏程序一次写一个32位 信号送到PMC。#1133的值为从-99999999到 +99999999注:只有使用FANUC PMC时,才能使用上表中的变量。在运算中,系

15、统变量 #1000#1015和#1032不能用作左边的项。,2.3.2 刀具补偿值用系统变量可以读和写刀具补偿值。通过系统变量赋值,可以修改刀具补偿值,见表4。,表4 FANUC 0i刀具补偿存储器C的系统变量,刀具补偿 : 几何补偿和磨损补偿 几何补偿 : 长度补偿和半径补偿 刀具补偿号:400个,即系统支持控制容量达400把刀的刀库。 当刀具补偿号小于等于200个时,刀具长度补偿也可使用#2001#2400。例如:假设一把10mm的立铣刀,将其视为10号刀(若在加工中心上,是有非常明确和实在的含义,即应将此铣刀放置在刀库的10号刀位上);对于随机换刀的机床,刀号和刀库位置不一定对应; 数控

16、铣床上,尽管只能人工换刀,但为了使刀具管理和工艺管理更合理、更有序,同样也可以效仿加工中心那样操作,即在系统中记录下相关的补偿号和刀具补偿值,唯一的差别不过是没有刀库和自动换刀功能,而需要人工换刀。 刀具长度补偿的二项补偿值在Z方向对刀完成后一般不再需要特别处理。 编程时主要涉及刀具半径补偿的二项补偿值 几何补偿值=刀具半径即#13010=5.0,可视为对刀具的识别; 调整磨损值(#12010)则视为对尺寸的控制。,在应用宏程序编写加工程序时,将会有以下的描述: #20=#13010 把刀具补偿号10(即10号刀,在此既是10mm的立铣刀)的半径补偿值中的几何补偿值赋值给变量#20,#20=5

17、.0。 #22=#12010 把刀具补偿号10(即10号刀,在此既是10mm的立铣刀)的半径补偿值中的磨损补偿值赋值给变量#22,在这里假设#20=1.2。2.3.3 模态信息 正在处理的当前程序段之前的模态信息可从系统变量中读出。 FANUC 0i 系统的模态信息见表5。,表5 FANUC 0i 模态信息的系统变量变量号 功能#4001 G00,G01,G02,G03,G33 (组01)#4002 G17,G18,G19 (组02) #4003 G90,G91 (组03)#4004 (组04)#4005 G94,G95 (组05)#4006 G20,G21 (组06)#4007 G40,G4

18、1,G42 (组07)#4008 G43,G44,G49 (组08)#4009 G73,G774,G76,G80G89 (组09)#4010 G98,G99 (组10)#4011 G50,G51 (组11)#4012 G65,G66,G67 (组12)#4013 G96,G9 (组13)#4014 G54G59 (组14)#4015 G61G64 (组15)#4016 G68,G69 (组16) #4022 待定 (组22)#4102 B代码,#4107 D代码#4109 F代码#4111 H代码#4113 M代码#4114 顺序号#4115 程序号#4119 S代码#4120 T代码#413

19、0 P代码(现在选择的附加工件坐标系)注:1.P代码为当前选择的是附加工件坐标系。 2.当执行#1=4002时,在#1中得到的值是17,18或19。 3.系统变量#4001#4120不能用于运算指令左边的项。 4.模态信息不能写,只能读。另外如果阅读模态信息指定的系统变量为 不能用得G代码时,系统则发出程序错误P/S报警2. 3. 4 当前位置信息当前位置信息不能写,只能读。当前位置信息的系统变量见表6。,表6 FANUC 0i当前位置信息的系统变量,注:1.ABSIO 工件坐标系中,前一程序段终点座标志。 ABSMT 机床坐标系中,当前机床坐标位置。 ABSOT 工件坐标系中,当前坐标位置。

20、 ABSKP 工件坐标系中,G31程序段终中跳跃信号有效的位置。 2.在G31(触发功能)程序段终中,当触发信号接通时的刀具位置存储在变量 #5061#5064中,当G31程序段终中的触发信号不接通时,这些变量存储指定程 序段的终点值。 3.变量#5081#5084所存储的刀具长度补偿值是当前的执行值(即当前正在执行 中的程序段的量),不是后面的程序段的处理量。 4.移动期间不能读取是由于缓冲(豫读)功能的原因,不能读取目标指令值。2.3.5 工件坐标系补偿值(工件零点偏移值) 用系统变量可以读和写工件零点偏移值,见表7。 表7 FANUC 0i工件零点偏移值的系统变量,变量号,功能,#520

21、1#5204,第1轴外部零点偏移值 第4轴外部零点偏移值,2.4 算术和逻辑运算变量中可以进行运算等式右边的表达式:包含常量或由函数或由运算符组成的变量表达式中的变量 #j 和 #k 可以用常量赋值等式左边的变量也可以用表达式赋值。算术运算:加、减、乘、除函数,逻辑运算包括与、或、异或等表8 FANUC 0i 算术和逻辑运算一览表功能 功能 格式 备注 定 定义置换 #i=#j 加法 #i=#j+#k 减法 #i=#j-# 乘法 #i=#j*#k 除法 #i=#j/#k,以下是算术和逻辑运算的详细说明:1.反正弦运算#i=Asin#j 取值范围:当参数(No6004#0)NAT位设置为0时,在

22、27090范围 取值。当参数(No6004#0)NAT位设置为1时,在-9090范围取值。 当#j超出-1到1的范围时,触发程序错误P/S报警No.111。 常数可替代变量#j。2.反余弦运算#i=ACOS#j 取值范围:1800。 当#j超出-1到1的范围时,触发程序错误P/S报警No.111。 常数可替代变量#j。3.反正切运算#i=ATAN#j/#K 采用比值的书写方式(可理解为对边/邻边)。 取值范围:当参数(No6004#0)NAT位设置为0时,取值范围为0 360。例如,当指定#1= ATAN-1/-1时,#1=225。当参数 (No6004#0)NAT位设置为1时,取值范围为-1

23、80180。例如,当指定 #1= ATAN-1/-1时,#1=-135 常数可替代变量#j。4.自然对数运算#i=LN#j 相对误差可能大于10-8。 当反对数(#j)为0或小于0时,触发程序错误P/S报警No.111。 常数可替代变量#j。,5.指数函数#i=EXP#j 相对误差可能大于10-8。 当运算结果超过3.651047(#j大约是110)时,出现溢出并触发程序错误P/S报警No.111。 常数可替代变量#j。6.上取整#i=FIX#j和下取整#i=FUP#jCNC处理数值运算时,无条件的舍去小数部分,称为上取整,小数进位到整数称为下取整(注意与数学上的四舍五入对照)。对于负数的处理

24、要特别小心。例如:假设#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。7.算术与逻辑指令的缩写 程序中指令函数时,函数名的前二个字符可以用于指定该函数。例如:ROUNDRO;FIXFI.8.混合运算时的运算顺序 上述运算和函数可以混合运算,既涉及到运算的优先级,其运算顺序与一般数学 上的定义基本一致,优先级顺序从高到低依次为:函数运算、乘法除法和AND运算、加法减法及0R和XOR运算。例如:#1=#2+#3*COS#4,运算顺序为COS

25、#4、乘法、加法。9.括号嵌套、运算顺序 括号优先,括号按先内括号、中间括号、外括号次序进行,用“”可以改变运算顺序,最里层的优先运算,括号最多可以嵌套5级(包括函数内部使用的括号)。当超过5级时,触发程序错误P/S报警No.118。例如:#6=COS#5+#4*#3+#2*1为3重嵌套。10.逻辑运算说明 逻辑运算:表9 FANUC 0i系统运算 AND 与 逻辑乘 11=1 10=0 00=0 ; OR 或 逻辑加 1+1=1 1+0=1 0+0=0 ; XOR 异或 逻辑减 1-1=0 1-0=1 0-0=0 0-1=1;11.运算精度 用户宏程序运算时,必须考虑运算结果的精度。用户宏程

26、序处理数据的浮点格式为:M=2E。每执行一次运算,产生一次误差,在重复计算的过程中,这些误差将累加 FANUC 0i系统运算中的误差精度见表9。,相对误差取决运算结果。使用二类误差的较小者。绝对误差是常数,而不管决运算结果。函数TAN执行SIN/COS。注:如果SIN、COS或TAN函数的运算结果小于10-8,或由于运算精度的限制不为0的话,设定参数No6004#1为1。则运算结果可视为0。影响运算精度的说明: 加减运算 由于用户宏程序的变量值的精度仅有8位十进制数,当在加减运算中处理非常大的数时,得不到期望的结果 例如;当试图把下面的值赋予变量#1和#2时:#1=9876543277777.

27、777#2=9876543210123.456 变量值实际上已经变成:#1=9876543300000.000#2=9876543200000.000 此时,当变成计算#3=#1-#2时,其结果#3并不是期望值 67654.321,而是 #3=100000.000,显然误差较大,实际计算的实际结果与此还稍有误差,因为系统是以二进制执行的。,逻辑运算 在使用条件表达式EQ、NE、GE、LT、LE时,也可能造成误差,其情形与加减运算基本相同。例如:IF#1EQ#2的运算会受到#1和#2的误差的影响,并不是总是能估计正确。要求二个值完全相同,有时不可能,由此会造成错误的判断 因此应该改用误差来限制比

28、较稳妥,即用IFABS#1-#2LT0.001代替上述语句,以避免二个变量的误差。此时,当二个变量的差值的绝对值未超过允许极限(此处为0.001),就认为二个变量的值是相等的。 三角函数运算 在三角函数运算中会发生绝对误差,它不在10-8之内,所以注意使用三角函数后的积累误差,由于三角函数在宏程序中的应用非常广泛,特别在极具数学代表性的参数方程表达上,因此必须对此保持应有的重视。2.5 赋值与变量使用中注意的问题 赋值是指将一个数据赋予一个变量。例如:#1=0,则表示#1的值是0。其中#1代表变量,#是变量的符号(注意:数控系统不同,表示方法有不同),0就是给变量#1赋的值。,这里的“=”是赋

29、值符号,起语句定义的作用。赋值的规律与规定: 赋值号“=”两边的内容不能互换,左边只能是变量,右边可 以是表达式、 数值或变量。 一个赋值语句只能给一个变量赋值。 可以多次给一个变量赋值,新变量值取代原变量值(即最 后赋的值)生效。 赋值语句具有运算功能,它的一般形式为:变量=表达式。 在变量运算中,表达式可以是变量自身,与其它数据的运 算结果,如:#1=#1+1,这表示#1的值为#1+1。 赋值表达式的运算顺序与数学运算顺序相同。 辅助功能(M代码)的变量有最大值的限制,例如,M30赋 值为300时,是不合理的。2.6 转移与循环 在程序中,使用GOTO语句和IF语句可以改变程序执行的流向。

30、有三种转移和循环操作可供使用。,2.6.1 无条件转移(GOTO语句) 转移(跳转)到标有顺序号N(行号)的程序段。当指定 199999以外的顺序号时,触发R/S报警No.128. 转移语句的格式:GOTO N ;N为顺序号(199999) 例如:GOTO 99 ,即转移到第99行。2.6.2 条件转移(IF语句) 1IF条件表达式 GOTO N 表示如果指定的条件表达式满足时,则转移(跳转)到标 有顺序号N(即行号)的程序段。如果不满足指定的条件表 达式,则顺序执行下一个程序段。 例如:IF#1GT100 GOTO 99; N99 G00 G90 Z100; 表明当#1大于100时,程序转移

31、到N99程序段执行,当#1小 于或等于100时,则顺序执行下一个程序段。,2IF条件表达式 GOTO THEN 如果指定条件表达式满足时,则执行预先指定的宏程序语 句,而且只执行一个宏程序语句。 如:IF#1 EQ #2 THEN #3 =10; 表示如果#1和#2的值相同,10赋给#3。 说明: 条件表达式:条件表达式必须包括运算符。运算符插在二 个变量之间或变量和常量之间,并且用括号封闭。表达式 可以替代变量。 运算符:运算符由2个字母组成(见表10),用于两个值的 比较,以决定它们是相等还是一个值小于或大于另一个值 注意,不能使用不等号。 典型程序示例:下面程序为计算1-100的累加和。

32、,O8000; #1=0; 存储“和数”变量的初值 #2=1; 被加数变量的初值 N5 IF #2 GT 100 GOTO 99; 当被加数大于100时转移 到N99 #1=#1+#2; 计算和数 #2=#2+1; 下一个被加数 GOTO 5; 转移到N5N99 M 30; 程序结束,表10 运算符,2.6.3 循环(WHILE语句) 循环语句的格式: WHILE条件表达式DO m;(m=1,2,3) END m 在WHILE后指定一个条件表达式。当指定条件满足时,执 行DO到END之间的程序;当指定条件不满足时,转到END 后面的程序段。 1嵌套 在DOEND循环中的标号m(13)可根据需要

33、多次使用 需要注意的是,无论怎样多次使用,标号永远限制在1,2, 3次;此外,当程序有交叉重复循环(DO范围内的重叠)时 会触发P/S报警No124。 关于嵌套的详细说明:,标号m(13)可以根据需要多次使用。 WHILE 条件表达式 DO 1 ; 程序 END 1; WHILE 条件表达式 DO 1; 程序 END 1; DO范围不能交叉。 左面是错误的:, DO循环可以3重嵌套。, 条件转移可以跳出循环 的外边, 条件转移不能进入循环区内,注意与对照。,2关于(WHILE语句)的其他说明 DO m和END m必须成对使用,而且DO m一定要在END m之前 用识别号m来识别。 当指定DO

34、而没有指定WHILE语句时,将产生DO 到END之间 的无限循环。 在使用EQ或NE的条件表达式中,值为空和值为零有不同的效 果。而在其他形式的条件表达式中,空即被当作零 条件转移(IF)和循环(WHILE)的关系:从正反两个方面 描述同一个问题;从实现的功能上说,二者具有相当程度 的相互替代性;从具体用法和使用限制上说,条件转移( IF)受到系统的限制相对更少,使用更灵活。, 处理时间:当在GOTO语句(无论是无条件转移的GOTO语句, 还是IFGOTO形式的条件转移语句)中有标号转移的语句时 系统将对顺序号检索。数控系统执行反向检索的时间比正向 检索的时间长。因为系统通常正向检索到程序结束

35、后,再返 回程序开头进行检索,所以化费的时间要多。 故用WHILE语句实现循环可省时间。 例:计算1-10的累加和 O0001; #1=0; 存储和变量赋初值 #2=1; 被加数变量的初值 WHILE#2 LE 10DO 1; 被加数个数小于10时,执行DO 到END间程序,继续累加,大于 10时,执行END后面的程序,即 程序结束。 #1=#1+#2; 作加法(累加) #2=#2+1 新的被加数 END 1; 循环1次结束 M30; 程序结束,三、用户宏程序A 3.1 用户宏程序调用指令(用户宏指令) 用户宏程序A中使用的变量、变量的引用同前述,值得注意 的使用变量种类为公共变量和系统变量。

36、 用户宏程序A的调用指令包括: 宏程序模态调用指令(G66,G67) 子程序调用指令(M98) 用M代码调用子程序(宏程序主体) 用T代码调用子程序(宏程序主体)。 1. 模态调出指令(G66、G67) 该指令使程序处于模态调出方式,即指令的各程序段每执 行一次,都能调出用P指定的宏程序主体。 指令格式为: G66 P ; 被调出宏程序主体的宏程序号 G67为取消宏程序模态调出方式。G66、G67成对使用。,2. 子程序调用指令(M98) 指令格式为: M98 P ; 被调出宏程序主体的宏程序号 上述指令能够调出用P指定的宏程序主体。 3. 由参数指定的M代码调出 指令格式为: N_G_X_

37、Mm; 其中m为被调出的子程序号。M代码在参数No.6071 No.6079种设定,表11给出了参数、M代码和子程序号之间 的关系。 m值的范围可从0397中选取,其中30除外。,表11 FANUC 0i 参数、M代码和子程序号之间的对应关系,例如:假设在系统中将No.6072参数设置为72(建议这样设置,将m1m9改为m71m79,因为识别方便、条理性好) 则M72 = M98 P9002。,参数No.6072=72 说明:自变量赋值:不允许自变量赋值; M代码:在宏程序中调用的M代码被处理为普通的M代码。 4. 由参数指定的T代码调出 指令格式为: N_G_X_Tt; 其中t为被调出的子程

38、序号,与N_G_X_M98P进行同 样的操作。设置参数No.6001的#5位TCS=1时,可用Tt 代码调用用户宏子程序,代替M98P9000。 在加工程序中指定的T代码t赋值到(存储)公共变量 #149中。,参数No.6001的#5位TCS=1 公共变量#149=22 说明 调用:设置参数No.6001的#5位TCS=1时,可用Tt代码代替M98P9000 在加工程序中指定的T代码t赋值到(存储)公共变量#149中 限制:在用T代码作为子程序调用的程序中,不能用一个T代码调用多个 子程序。这种 T代码被处理为普通的T代码。,3.2 用户宏程序主体(本体)结构 在用户宏程序主体中,可以使用普通

39、的NC指令、采用变量 的NC指令、计算指令和转移指令。 用户宏程序的结构,以O后的程序号开始,中间为指令, 最后用M99结束。例如:,O; 程序号 G65 H05 ; 运算指令 G90 G00 X#110 Y#20; 使用变量的NC指令 G65 H82 ; 转移指令 M99; 返回主程序; 3.3 宏程序A的运算指令和控制指令 1指令格式:G65 Hm P#i Q#j R#k 式中m为0199,表示宏程序的功能,#i为存储运算结果的变量号;#j为进行运算的变量号1,也可以是常数;#k为进行运算的变量号2,也可以是常数。 意义: #I= #j #k 运算符,由Hm决定注意:变量值不能带小数,与各

40、地址不带小数时表示的意义相同(参数No.3401的#0位DPI=0,最小输入单位0.001mm及0.001),例如:若#100=10,以0.001mm为单位输入时X#100为X0.01mm(100.001mm= 0.010mm); 若#100=100,以0.001为单位输入时#100为0.10(1000.001= 0.10)。 2运算和控制指令的指令表 G65 Hm指令表12,G65 H m,功能,数学定义,G65 H01,定义、置换,#i=#j,G65 H02,加法,#i=#j+#k,G65 H03,减法,#i=#j-#k,G65 H04,乘法,#i=#j#k,G65 H05,除法,#i=#

41、j#k,G65 H11,逻辑加,#i=#j AND #k,G65 H12,逻辑乘,#i=#j OR #k,G65 H13,异或,#i=#J XOR #k#I= #j,G65 H21,开平方,G65 H22,绝对值,#i=#j,G65 H23,剩余数,#i=#j-trunc(#j/#k)#ktrunc:小数部分舍去,表12 FANUC 0i G65 Hm指令表(宏程序的运算与控制指令),#i= #j#j+#k#k,#i= #j#j-#k#k,四、用户宏程序B4.1 用户宏指令(用户宏程序调用指令) 用户宏程序B的调用指令有: 非模态调用(G65) 模态调用(G66,G67) 用G代码调用宏程序(

42、Gg) 用M代码调用宏程序(Mm) 用M代码调用子程序(Mm或M 98),不能传送数据 用T代码调用子程序。 不能传送数据用户宏程序调用(G65)与子程序调用( M98)之间的区别: G65可以给自变量赋值,即将G65程序段中的数据,传送到 宏程序中指定的自变量,而M98则不能给自变量赋值。 当M98程序段包含另一个NC指令(例如,G01X200.0 M98P p)时,在执行完这种非N、P或L指令后,可调用(或转 移到)子程序。而G65只能无条件的调用宏程序。 当M98程序段包含有O、N、P、L以外的地址的NC指令时, 例如,G01X200.0 M98Pp,在单程序段方式中,,可以单程序段停止

43、(即停机)。而G65则不行(即不停机)。 G65改变局部变量级别,而M98不改变局部变量的级别。4.1.1 宏程序非模态调用(G65)当指定G65时,调用以地址P指定的用户宏程序,而且数据能传递到用户宏程序中(自变量赋值) 。指令的格式: G65 PpLl自变量赋值; p: 要调用的程序号 l: 重复次数,默认值为1 自变量赋值:传递到宏程序的数据,1. 调用说明,在G65之后,用P指定用户宏程序的程序号。任何自变量前必须指定G65。当要求重复时,在地址L后指定从19999的重复次数,省略L 值时,默认L值为1。使用自变量指定(赋值),其值被赋给宏程序中相应的局部 变量。2.自变量指定(赋值)

44、 自变量值的指定又可称为自变量赋值 即向用户宏程序主体中变量传递数据时,需由自变量赋值地 址来指定,其值可以有符号和小数点,具体数值与地址无关 如上例 “G65 P9110 L2 A1.0 B2.0” 程序段中的 1.0 赋给A地址对应的宏程序中自变量 #1; 2.0 赋给地址B对应的宏程序中自变量 #2。 这里使用的是局部变量(#1#33,共有33个),与其对 的自变量赋值有两种类型。,自变量赋值: 用英文字母后加数值进行赋值,除了G、L 、O、N和P 之 外,其余所有21个英文字母都可给自变量赋值 每个字母赋值一次,赋值不必按字母顺序进行,但用I、J、 K时,必须按字母顺序进行赋值,不赋值

45、的地址可以省略。 自变量赋值: 该方法也是用英文字母后加数值进行赋值, 但只使用了A、B、C和I、J、K这6个字母。 具体用法是: 除了A、B、C之外,还用10组I、J、K来对自变量进行赋值, 在这里I、J、K是分组定义的,同组的I、J、K必须按字母顺 序进行赋值,不赋值的地址可以省略。 自变量赋值和自变量赋值与用户宏程序主体中局部变量 的 对应关系见表13。,表13 FANUC 0i 地址与局部变量的关系,自变量赋值地址,用户宏程序主体中的变量,自变量赋值地址,自变量赋值地址,用户宏程序主体中的变量,自变量赋值地址,ABC,#1#2#3,ABC,STU,#19#20#21,I6J6K6,IJ

46、K,#4#5#6,I1J1K1,VWX,#22#23#24,I7J7K7,DEF,#7#8#9,I2J2K2,YZ,#25#26#27,I8J8K8,H,#10#11#12,I3J3K3,#28#29#30,I9J9K9,M,#13#14#15,I4J4K4,#31#32#33,I10J10K10,QR,#16#17#18,I5J5K5,注意:对于自变量赋值,I、J、K下标用于确定自变量赋值 的顺序,在实际编程中不写(也无法写,语法上无法表达) 3.自变量赋值的其他说明 自变量赋值、自变量赋值的混合使用 CNC内部自动识别自变量赋值和,混合赋值时,较后赋值的 自变量类型有效(以从左到右书写的顺

47、序为准,左为先,右为 后)。例如: G65 P1100 A1.0 B2.0 I-3.0 I4.0 D5.0;其中的变量值为: #1=1.0 (#1对应A1.0) #2=2.0 (#2对应B2.0) #3无赋值 (无对应)程序中没有C #4= -3.0 (#4对应I-3.0) #5无赋值 (无对应)程序中没有J,也没有J1 #6无赋值 (无对应)程序中没有K,也没有K1 #7=4.0() (#7对应I4.0,第二次I(I2),即#7 #7=5.0 (#7也对应D5.0),改写了#7=4.0,变为 #7=5.0,自变量赋值的地址和变量是一一对应的,不宜混淆,但数量只有21个。 自变量赋值充分利用了

48、资源,可以对#1#33全部33个局部变量赋值。实际上用自变量赋值的21个变量也已足够啦。小数点问题 没有小数点的自变量数据的单位为最小设定单位。传递没有小数点的自变量的值将根据机床实际的系统配置而定。因此建议在宏程序调用中使用小数点,可避免无谓的差错,兼容性好调用嵌套 调用可以四级嵌套,包括非模态调用G65和模态调用G66,但不包括子程序调用M98。局部变量的级别 局部变量嵌套从0到4级,主程序是0级,用G65或G66调用宏程序,每调用一次(2、3、4级),局部变量级别加1,而前一级的局部变量值保存在CNC中,即局部变量(1、2、3级)被保存,下一级的局部变量(2、3、4级)被准备。当宏程序执

49、行M99时,控制返回到调用程序,此时,局部变量级别减1,并恢复宏程序调用时保存的局部变量值,即上一级被,保存的局部变量被恢复,如同它被存储一样,而下一级局部变 量被清除。,G65应用举例:钻孔循环(FANUC 16iT),Z:孔深(绝对值)W:孔深(相对值)K:每循环切削量 (深度)F:切削进给速度,O0002; 主程序 G50 X100.0 Z200.0; 设置工件坐标系 G00 X0 Z102.0 S1000 M03; G65 P9100 Z50.0 K20.0 F0.3;#26=50;#6=20;#9=0.3 G00 X100.0 Z200.0 M05; M30; O9100; 用户宏程

50、序 #1=0; 当前孔深数据,初值为0 #2=0; 加工过的孔深存储 IF #23 NE #0 GOTO 1; W: #23;如果增量孔深不是空变 量,跳转到N1 IF #26 EQ #0 GOTO 8; 如果Z和W都不指定,错误报警 N1 #23=#5002-#26; 计算孔深W。#5002是刀尖Z坐标 绝对位置变量,#26是绝对孔深 N2 #1=#1+#6; 计算当前要加工的孔深 IF #1 LT #23 GOTO 3; 确定孔深加工是否达到深度?如 果当前孔深小于相对孔深W ,转 到N3,#1=#23; #1中赋予孔深数据WN3 G00 W-#2; 快速移动到每次开始加工位置 G01 W

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号