版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于用户宏程序第一张,PPT共一百一十一页,创作于2022年6月第一部分:用户宏程序编程一、宏程序应用概述 定义:用户宏程序是“除了使用通常的CNC指令外,还可以使用带变量的CNC指令,进行变量运算,使用跳转、循环指令等”具有某种功能的一组命令,象数控加工程序一样存储在内存中。 存储的这组命令称为用户宏程序主体(简称宏程序),用户宏程序可以被“调用宏程序的指令” 调用。可以作为主程序、子程序。调用宏程序 指令具有某种功能的一组命令 O0001; G65P9010R50.0L2; M30;O9010;#1=#18/2;G01X#1 Z#1 F0.3;G02X#1 Z-#1 R#1;M99;加工程
2、序用户宏程序第二张,PPT共一百一十一页,创作于2022年6月(一)宏程序与普通程序的对比 一般意义上的数控编程(普通程序),是使用数控系统给定的指令代码进行编程。每个代码的功能固定,只要按规定使用即可。为了扩展编程功能,FANUC数控系统厂家在一般指令代码功能基础上,又提供了用户宏程序功能,简称宏程序。区别如下: 普通程序使用常量,常量之间不能运算,程序只能顺序执 行不能跳转,程序没有通用性; 宏程序可以使用变量(可以赋值),变量之间可以运算, 程序运行可以跳转,程序具有通用性。第三张,PPT共一百一十一页,创作于2022年6月(二)宏程序与CAD/CAM软件生成的程序对比 宏程序短小精悍,
3、任何数控加工只要能够用宏程序完整表达,即使再复杂,其程序也比较精炼篇幅小,优化后的宏程序段数很少超过60行,这对于一般数控装置的程序存储空间为128KB、256KB标准配置来说,都能容纳下任何复杂的宏程序。不需要考虑因程序较长进行在线加工时,数控系统与外部电脑的传输率不够问题。 CAD/CAM软件生成的程序通常都比较大,因为其生成刀具轨迹的原理采用直线(微线段)逼近曲线曲面,所以不但程序长,而且存在逼近误差。(三)用户宏程序与一般子程序对比 子程序可用于同一操作的重复执行,用户宏程序具有此功能, 还允许使用变量、算术和逻辑操作、条件转移等,也可以扩展 一般程序,如凹槽循环和用户定义的循环。加工
4、程序可以调用 带有简单命令的用户宏程序。第四张,PPT共一百一十一页,创作于2022年6月FANUC 数控系统具有用户宏程序功能。 宏程序的最大特点: 在宏程序中,除了使用通常的CNC指令外,还可以使用带 变量的CNC指令,进行赋值、变量运算,使用跳转、循环 指令等指令。根据宏程序功能范围的不同分为: 用户宏程序A 用户宏程序B 现代FANUC系统已不分“用户宏程序A”和“用户宏程序 B”,取消了宏程序A,统称为用户宏程序。第五张,PPT共一百一十一页,创作于2022年6月二、基础理论2.1 变量概念 普通加工程序用数值指定G代码和位移距离 例如:G01和X100.0。 使用宏程序时,数值可以
5、直接指定,而且可用变量指定代 码和位移等,变量值可以用程序或用MDI方式设定或修改。 例如: #1= #2+100; G01 X#1 F500; G#3 , #3=02第六张,PPT共一百一十一页,创作于2022年6月2.2 变量的表示 一般计算机程序语言允许使用变量名,用户宏程序则不行。用户宏程序的变量需用变量符号“#”和其后的变量号指定,变量号可以直接用数值或表达式表示,其格式为: i(i =1、2、3、)。例如,#12,102,1006等。用表达式指定变量号时,表达式必须放在括号内。例如,#1+#2-12。 变量可以代替宏程序中地址后面的数值,变量的值可由调用用户宏程序的指令给宏程序主体
6、赋值,或者在执行宏程序主体时由得出的计算值决定。使用复数个变量时,可由变量号决定。2.2.1 变量的引用 1.变量可被引用为代替宏程序中地址后面的数值 如 F103,表示进给速度由变量103的值指定,当103=1.5时,与F1.5指令的相同。又如,G130,当130=3时,与G03指令相同; 第七张,PPT共一百一十一页,创作于2022年6月 2.变量可被引用为指定意义,如:位移、代码等。 如G00Z-100,表示刀具在-Z方向快速定位到变量100指定的位置,当100=250时,与G00Z-250.0指令的相同; 此外,用变量j代替变量号码i时,不能用j表示,而用9j。当110=120(110
7、为j, 120为变量号码),120=500时,则为9110=500。地址O,N不能引用变量,即不能使用O100,N120。变量值可以显示,可以用MDI键设定。 3.自变量赋值(指定) 在宏程序中给使用的变量所赋予的实际值叫做自变量赋值。自变量由地址和后面的数字指定。除O之外的地址均可指定自变量,自变量的地址和变量号必须一一对应。例如自变量的地址I、J、K与宏程序内的变量一一对应 赋值:直接指定、调用宏程序指令传送、表达式指定 此外自变量还有标志号,如指定自变量标志为1,否则为0。 自变量被指定,变为指定值,否则变为下述情况: 参照CNC指令,指定的自变量地址无效。 参照运算指令和转移指令。第八
8、张,PPT共一百一十一页,创作于2022年6月2.2.2 变量的类型 按变量号、使用范围和功能,变量分为四种类型,见表1。表1 变量类型变量号变量类型功能 #0总是空(空变量)这个变量总是空,没有值赋予该变量。#1#33局部变量局部变量只能在宏程序中存储数据,例如:运算结果。断电时,局部变量清除(初始化为空)。可以在程序中对其赋值。#100#149(#199)#500#531(#999) 公共变量公共变量在不同的宏程序中的意义相同,即公共变量对于主程序和从这些主程序调用的每个宏程序来说是公用的。断电时,#100#199清除(初始化为空) 通电时复位到“0”。而#500#999数据,即使在断电时
9、,也不清除。#1000以上系统变量系统变量用于读和写CNC运行时各种数据变化。例如,刀具当前位置和补偿等。第九张,PPT共一百一十一页,创作于2022年6月注:公共变量 #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。第十张,PPT共一百一十一页,创作于
10、2022年6月2.2.5 变量使用时注意的问题 在程序中使用变量时,应指定变量号地址。 当用表达式指定变量时,必须把表达式放在括号中,例如:G01 X#11+#22 F#3。 被引用变量的值根据地址的最小设定单位自动的四舍五入。例如:当G00 X#11,以1/1000mm的单位执行赋值12.3456时,CNC把12.3456赋值给变量#11,实际指令值为G00X12.346。 改变引用变量的值的符号,要把“-”号放在#的前面,例如:G00X-#11。 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#11的值是0,并且变量#22的值是空时,G00X#11Y#22的执行结果是G00X0。
11、所谓“变量的值是0”与“变量的值是空”是二个完全不同的概念,可以这样理解: “变量的值是0”相当于“变量的数值等于0”, “变量的值是空”意味着“变量所对应的地址不存在,不生效”,未定义。第十一张,PPT共一百一十一页,创作于2022年6月 不能用的变量地址符号有:程序号O,顺序号N,任选程序段挑转号 /。例如以下情况不能使用变量: O#11; /O#22G00X100.0; N#33Y200.0; 使用ISO代码编程时,用“#”代码表示变量,若用EIA代码,则应用“”代码代替“#”代码,因为EIA代码中没有“#”代码2.3 系统变量 空变量、局部变量和公共变量的意义见表1功能说明部分,不再赘
12、述。下面介绍系统变量。 系统变量用于读和写CNC内部数据,例如,刀具偏置值和当前位置数据。无论用户宏程序A或用户宏程序B,系统变量的用法都是固定的,而且某些系统变量为只读,用户必须严格按照规定使用。 系统变量是自动控制和调用加工程序开发的基础。系统变量的内容见表2。第十二张,PPT共一百一十一页,创作于2022年6月表2 FANUC 0i系统变量一览表 变量号 含义#1000#1015,#1032 接口输入变量#1100#1115,#1132,#1133 接口输出变量#10001#10400,#11001#11400 刀具长度补偿值#12001#12400,#13001#13400 刀具半径补
13、偿值#2001#2400 刀具长度与半径补偿值(位置组数 200时)#3000 报警#3001,#3002 时钟#3003,#3004 循环运行控制#3005 设定数据(SETTING值)#3006 停止和显示信息#3007 镜像#3011,#3012 日期和时间#3901,#3902 零件数#4001#4120,#4130 模态信息#5001#5104 位置信息#5201#5324 工件坐标系补偿值(工件零点偏移值)#7001#7944 扩展工件坐标系补偿值(工件零点偏 移值)第十三张,PPT共一百一十一页,创作于2022年6月下面对系统变量进行说明2.3.1 接口(输入输出)信号接口信号是
14、可编程机床控制器(PMC)和用户宏程序之间交换的信号,具体内容见表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 PM
15、C时,才能使用上表中的变量。在运算中,系统变量 #1000#1015和#1032不能用作左边的项。 下面对系统变量进行说明2.3.1 接口(输入输出)信号接口信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号,具体内容见表3。表3 FANUC 0i 接口信号的系统变量 变量号 功能#1000#1015 把16位信号从PMC送到用户宏程序。变量#1000#1032 #1015用于按位读取信号;变量#1032用于一 次读取一个16位信号#1100#1115 输出: 把16位信号从用户宏程序送到PMC。变量#1100#1132 #1115用于按位写信号;变量#1132用于一次 写一个16位信
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#1032 #1015用于按位读取信号;变量#1032用于一 次读取一个1
17、6位信号#1100#1115 输出: 把16位信号从用户宏程序送到PMC。变量#1100#1132 #1115用于按位写信号;变量#1132用于一次 写一个16位信号#1133 变量#1133用于从用户宏程序一次写一个32位 信号送到PMC。#1133的值为从-99999999到 +99999999注:只有使用FANUC PMC时,才能使用上表中的变量。在运算中,系统变量 #1000#1015和#1032不能用作左边的项。 第十四张,PPT共一百一十一页,创作于2022年6月2.3.2 刀具补偿值用系统变量可以读和写刀具补偿值。通过系统变量赋值,可以修改刀具补偿值,见表4。表4 FANUC 0
18、i刀具补偿存储器C的系统变量补偿号刀具长度补偿刀具半径补偿几何补偿磨损补偿几何补偿磨损补偿12199200201399400#11001(#2201)#11002(#2202)#11199#2399)#11200(#2400)#112001#11399#11400#10001(#2001)#10002(#2002)#10199(#2199)#10200(#2200)#10201#10399#10400#13001#13002 #13199#13200#13201 #13399#13400#12001#12002 #12199#12200#12201 #12399#12400第十五张,PPT共一
19、百一十一页,创作于2022年6月 刀具长度补偿 : 几何补偿(长度值)和磨损补偿 几何半径补偿 : 几何补偿(半径值)和磨损补偿 刀具补偿号:400个,即系统支持控制容量达400把刀的刀库。 当刀具补偿号小于等于200个时,刀具长度补偿也可使用#2001#2400。例如:假设一把10mm的立铣刀,将其视为10号刀(若在加工中心上,是有非常明确和实在的含义,即应将此铣刀放置在刀库的10号刀位上);对于随机换刀的机床,刀号和刀库位置不一定对应; 数控铣床上,尽管只能人工换刀,但为了使刀具管理和工艺管理更合理、更有序,同样也可以效仿加工中心那样操作,即在系统中记录下相关的补偿号和刀具补偿值,唯一的差
20、别不过是没有刀库和自动换刀功能,而需要人工换刀。 刀具长度补偿包括二项补偿值(几何值-长度、磨损量)在 Z方向对刀完成后一般不再需要特别处理。 刀具半径补偿包括二项补偿值(几何值-半径值、磨损量) 几何补偿值=刀具半径 即#13010=5.0,可视为对刀具的识别; 磨损补偿值(#12010) 则视为对尺寸的控制。第十六张,PPT共一百一十一页,创作于2022年6月 在应用宏程序编写加工程序时,将会有以下的描述: #20=#13010 : 意义是:把刀具补偿号10(即10号刀,在此既是10mm的立铣刀)的半径5mm,作为几何补偿值赋值给变量#20,#20=5.0。 #22=#12010 : 意义
21、是:把刀具补偿号10(即10号刀,在此既是10mm的立铣刀)的半径方向磨损值1.2mm,作为磨损补偿值赋值给变量#22,在这里,#20=1.2。2.3.3 模态信息 正在处理的当前程序段之前的模态信息可从系统变量中读出。 FANUC 0i 系统的模态信息见表5。 第十七张,PPT共一百一十一页,创作于2022年6月 表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,
22、G21 (组06)#4007 G40,G41,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代码第十八张,PPT共一百一十一页,创作于2022年6月#4107 D代码#4109 F代码#4111 H代码#41
23、13 M代码#4114 顺序号#4115 程序号#4119 S代码#4120 T代码#4130 P代码(现在选择的附加工件坐标系)注:1.P代码为当前选择的是附加工件坐标系。 2.当执行#1=4002时,在#1中得到的值是17,18或19。 3.系统变量#4001#4120不能用于运算指令左边的项。 4.模态信息不能写,只能读。另外如果阅读模态信息指定的系统变量为 不能用得G代码时,系统则发出程序错误P/S报警2. 3. 4 当前位置信息当前位置信息不能写,只能读。当前位置信息的系统变量见表6。 表6 FANUC 0i当前位置信息的系统变量变量号位置信息相关坐标系移动时的读操作刀具补偿值(长度
24、、半径补偿)第十九张,PPT共一百一十一页,创作于2022年6月#5001 X轴程序段终点位置(ABSIO) 不考虑#5002 Y轴程序段终点位置(ABSIO) 工件 可以 刀尖位置#5003 Z轴程序段终点位置(ABSIO) 坐标系 (程序指令位置)#5004 4th轴程序段终点位置(ABSIO) #5021 X轴当前位置(ABSMT) 考虑#5022 Y轴当前位置(ABSMT) 机床 刀具基准点位置#5023 Z轴当前位置(ABSMT) 坐标系 (机床坐标系)#5024 4th轴当前位置(ABSMT) 不可以 #5041 X轴当前位置(ABSOT) 考虑#5042 Y轴当前位置(ABSOT
25、) (与位置的绝对坐标系#5043 Z轴当前位置(ABSOT) 显示相同)#5044 4th轴当前位置(ABSOT) 工件#5061 X轴跳跃信号位置(ABSKP) 坐标系 #5062 Y轴跳跃信号位置(ABSKP 可以 已考虑#5063 Z轴跳跃信号位置(ABSKP) 刀具基准点位置#5064 4th轴跳跃信号位置(ABSKP)#5081 X轴刀具长度补偿值#5082 Y轴刀具长度补偿值 已考虑#5083 Z轴刀具长度补偿值#5084 4th轴刀具长度补偿值 不可以 #5101 X轴伺服位置补偿#5102 Y轴伺服位置补偿 已考虑#5103 Z轴伺服位置补偿#5104 4th轴伺服位置补偿第
26、二十张,PPT共一百一十一页,创作于2022年6月注:1.ABSIO 工件坐标系中,前一程序段终点座标志。 ABSMT 机床坐标系中,当前机床坐标位置。 ABSOT 工件坐标系中,当前坐标位置。 ABSKP 工件坐标系中,G31程序段终中跳跃信号有效的位置。 2.在G31(触发功能)程序段终中,当触发信号接通时的刀具位置存储在变量 #5061#5064中,当G31程序段终中的触发信号不接通时,这些变量存储指定程 序段的终点值。 3.变量#5081#5084所存储的刀具长度补偿值是当前的执行值(即当前正在执行 中的程序段的量),不是后面的程序段的处理量。 4.移动期间不能读取是由于缓冲(豫读)功
27、能的原因,不能读取目标指令值。2.3.5 工件坐标系补偿值(工件零点偏移值) 用系统变量可以读和写工件零点偏移值,见表7。 表7 FANUC 0i工件零点偏移值的系统变量变量号功能#5201#5204 第1轴外部零点偏移值 第4轴外部零点偏移值第二十一张,PPT共一百一十一页,创作于2022年6月#5221#5224第1轴G54工件零点偏移值第4轴G54工件零点偏移值#5241#5244第1轴G55工件零点偏移值第4轴G55工件零点偏移值#5261#5264第1轴G56工件零点偏移值第4轴G56工件零点偏移值#5281#5284第1轴G57工件零点偏移值第4轴G57工件零点偏移值#5301#5
28、304第1轴G58工件零点偏移值第4轴G58工件零点偏移值#5321#5324第1轴G59工件零点偏移值第4轴G59工件零点偏移值#7001#7004第1轴工件零点偏移值(G54.1 P1)第4轴工件零点偏移值(G54.1 P1)第二十二张,PPT共一百一十一页,创作于2022年6月#7021#7024第1轴工件零点偏移值(G54.1 P2)第4轴工件零点偏移值(G54.1 P2)#7941#7944第1轴工件零点偏移值(G54.1 P48)第4轴工件零点偏移值(G54.1 P48)2.4 宏程序B中,算术和逻辑运算变量中可以进行运算等式右边的表达式:包含常量或由函数或由运算符组成的变量表达式
29、中的变量 #j 和 #k 可以用常量赋值等式左边的变量也可以用表达式赋值。算术运算:加、减、乘、除函数,逻辑运算包括与、或、异或等表8 FANUC 0i 算术和逻辑运算一览表功能 功能 格式 备注 定 定义置换 #i=#j 加法 #i=#j+#k 减法 #i=#j-# 乘法 #i=#j*#k 除法 #i=#j/#k第二十三张,PPT共一百一十一页,创作于2022年6月正弦#i=sin#j三角函数及反三角函数的数值均以度为单位来指定。如9030应表示为90.5反正弦#i=Asin#j余弦#i=COS#j反余弦#i=ACOS#j正切#i=TAN#j反正切#i=ATAN#j/#K平方根#i=SQRT
30、#j绝对值#i= ABS#j舍入#i=ROUND#j指数函数#i=EXP#j自然对数#i=LN#j上取整#i=FIX#j下取整#i=FUP#j逻辑运算与#i=#jAND#k或#i=#jOR#k异或#i=#jXOR#k 从BCD转为BIN#i=BIN#j用于与PMC的信号转换 从BIN转为BCD#i=BCD#j算术运算 第二十四张,PPT共一百一十一页,创作于2022年6月以下是算术和逻辑运算的详细说明:1.反正弦运算#i=Asin#j 取值范围:当参数(No6004#0)NAT位设置为0时,在27090范围 取值。当参数(No6004#0)NAT位设置为1时,在-9090范围取值。 当#j超出
31、-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时,取值范围为-180180。例如,当指定 #1= ATAN-1/-1时,#1=-135 常数可替代变量#j。4.自然对
32、数运算#i=LN#j 相对误差可能大于10-8。 当反对数(#j)为0或小于0时,触发程序错误P/S报警No.111。 常数可替代变量#j。第二十五张,PPT共一百一十一页,创作于2022年6月5.指数函数#i=EXP#j 相对误差可能大于10-8。 当运算结果超过3.651047(#j大约是110)时,出现溢出并触发程序错误P/S报警No.111。 常数可替代变量#j。6.上取整#i=FIX#j和下取整#i=FUP#jCNC处理数值运算时,无条件的舍去小数部分,称为上取整,小数进位到整数称为下取整(注意与数学上的四舍五入对照)。对于负数的处理要特别小心。例如:假设#1=1.2,#2=-1.2
33、 当执行#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#4、乘法、加法。9.括号嵌套、运算顺序 括号优先
34、,括号按先内括号、中间括号、外括号次序进行第二十六张,PPT共一百一十一页,创作于2022年6月用“”可以改变运算顺序,最里层的优先运算,括号最多可以嵌套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.运算精度 用户宏程序运算时,必须考虑运算结果的精度。用户宏
35、程序处理数据的浮点格式为:M=2E。每执行一次运算,产生一次误差,在重复计算的过程中,这些误差将累加 FANUC 0i系统运算中的误差精度见表9。 运算平均误差最大误差误差类型a=b*c1.5510-104.6610-10相对误差a=b/c1.8810-104.6610-10/a(绝对值)1.2410-103.7310-10a=b+ca=b-c2.3310-95.3210-9最小/b,/c(绝对值)a=sinba=cosb5.010-91.010-8绝对误差(绝对误差)度a=ATANb/c1.810-63.610-6第二十七张,PPT共一百一十一页,创作于2022年6月相对误差取决运算结果。使
36、用二类误差的较小者。绝对误差是常数,而不管决运算结果。函数TAN执行SIN/COS。注:如果SIN、COS或TAN函数的运算结果小于10-8,或由于运算精度的限制不为0的话,设定参数No6004#1为1。则运算结果可视为0。影响运算精度的说明: 加减运算 由于用户宏程序的变量值的精度仅有8位十进制数,当在加减运算中处理非常大的数时,得不到期望的结果 例如;当试图把下面的值赋予变量#1和#2时:#1=9876543277777.777#2=9876543210123.456 变量值实际上已经变成:#1=9876543300000.000#2=9876543200000.000 此时,当变成计算#
37、3=#1-#2时,其结果#3并不是期望值 67654.321,而是 #3=100000.000,显然误差较大,实际计算的实际结果与此还稍有误差,因为系统是以二进制执行的。第二十八张,PPT共一百一十一页,创作于2022年6月 逻辑运算 在使用条件表达式EQ、NE、GE、LT、LE时,也可能造成误差,其情形与加减运算基本相同。例如:IF#1EQ#2的运算会受到#1和#2的误差的影响,并不是总是能估计正确。要求二个值完全相同,有时不可能,由此会造成错误的判断 因此应该改用误差来限制比较稳妥,即用IFABS#1-#2LT0.001代替上述语句,以避免二个变量的误差。此时,当二个变量的差值的绝对值未超
38、过允许极限(此处为0.001),就认为二个变量的值是相等的。 三角函数运算 在三角函数运算中会发生绝对误差,它不在10-8之内,所以注意使用三角函数后的积累误差,由于三角函数在宏程序中的应用非常广泛,特别在极具数学代表性的参数方程表达上,因此必须对此保持应有的重视。2.5 赋值与变量使用中注意的问题 赋值是指将一个数据赋予一个变量。例如:#1=0,则表示#1的值是0。其中#1代表变量,#是变量的符号(注意:数控系统不同,表示方法有不同),0就是给变量#1赋的值。第二十九张,PPT共一百一十一页,创作于2022年6月这里的“=”是赋值符号,起语句定义的作用。赋值的规律与规定: 赋值号“=”两边的
39、内容不能互换,左边只能是变量,右边可 以是表达式、 数值或变量。 一个赋值语句只能给一个变量赋值。 可以多次给一个变量赋值,新变量值取代原变量值(即最 后赋的值)生效。 赋值语句具有运算功能,它的一般形式为:变量=表达式。 在变量运算中,表达式可以是变量自身,或与其它数据的 运算结果,如:#1=#1+1,这表示#1的值为#1+1。 赋值表达式的运算顺序与数学运算顺序相同。 辅助功能(M代码)的变量有最大值的限制,例如,M30赋 值为300时,是不合理的。2.6 转移与循环(以下属于宏程序B中用法) 在程序中,使用GOTO语句和IF语句可以改变程序执行的流向。有三种转移和循环操作可供使用。第三十
40、张,PPT共一百一十一页,创作于2022年6月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大于10
41、0时,程序转移到N99程序段执行,当#1小 于或等于100时,则顺序执行下一个程序段。第三十一张,PPT共一百一十一页,创作于2022年6月 2IF条件表达式 GOTO THEN 如果指定条件表达式满足时,则执行预先指定的宏程序语 句,而且只执行一个宏程序语句。 如:IF#1 EQ #2 THEN #3 =10; 表示如果#1和#2的值相同,10赋给#3。 说明: 条件表达式:条件表达式必须包括运算符。运算符插在二 个变量之间或变量和常量之间,并且用括号封闭。表达式 可以替代变量。 运算符:运算符由2个字母组成(见表10),用于两个值的 比较,以决定它们是相等还是一个值小于或大于另一个值 注意
42、,不能使用不等号。 第三十二张,PPT共一百一十一页,创作于2022年6月表10 运算符运算符含 义英文注释EQ等于(=)EQualNE不等于()Not EQualGT大于()Great ThanGE大于或等于()Great than or EqualLT小于()Less ThanLE小于或等于()Less Than or Equal O8000; #1=0; 存储“和数”变量的初值 #2=1; 被加数变量的初值 N5 IF #2 GT 100 GOTO 99; 当被加数大于100时转移 到N99 #1=#1+#2; 计算和数 #2=#2+1; 下一个被加数 GOTO 5; 转移到N5N99
43、M 30; 程序结束 典型程序示例:下面程序为计算1-100的累加和。第三十三张,PPT共一百一十一页,创作于2022年6月2.6.3 循环(WHILE语句) 循环语句的格式: WHILE条件表达式DO m;(m=1,2,3) END m 在WHILE后指定一个条件表达式。当指定条件满足时,执 行DO到END之间的程序;当指定条件不满足时,转到END 后面的程序段。 1嵌套 在DOEND循环中的标号m(13)可根据需要多次使用 需要注意的是,无论怎样多次使用,标号永远限制在1,2, 3次;此外,当程序有交叉重复循环(DO范围内的重叠)时 会触发P/S报警No124。 关于嵌套的详细说明:第三十
44、四张,PPT共一百一十一页,创作于2022年6月标号m(13)可以根据需要多次使用。 WHILE 条件表达式 DO 1 ; 程序 END 1; WHILE 条件表达式 DO 1; 程序 END 1; DO范围不能交叉。 右面是错误的:WHILE 条件表达式 DO 1;WHILE 条件表达式 DO 2; 程序 程序END 1;END 2; 错第三十五张,PPT共一百一十一页,创作于2022年6月 DO循环可以3重嵌套。WHILE 条件表达式 DO 1; WHILE 条件表达式 DO 2; WHILE 条件表达式 DO 3;END 3; END 2;END 1; 程序 用条件转移可以跳出,到 循环
45、的外边 WHILE 条件表达式DO 1; IF 条件表达式 GOTO n; End 1; N n 第三十六张,PPT共一百一十一页,创作于2022年6月 条件转移不能进入循环区内,注意与对照。 IF条件表达式GOTO n; WHILE 条件表达式 DO 1;Nn End 1; 错2关于(WHILE语句)的其他说明 DO m 和END m 必须成对使用,而且DO m 一定要在END m 之 前用识别号 m 来识别。 当指定DO 而没有指定WHILE语句时,将产生DO 到END之间 的无限循环。 在使用EQ或NE的条件表达式中,值为空和值为零有不同的效 果。而在其他形式的条件表达式中,空即被当作零
46、 条件转移(IF)和循环(WHILE)的关系:从正反两个方面 描述同一个问题;从实现的功能上说,二者具有相当程度 的相互替代性;从具体用法和使用限制上说,条件转移( IF)受到系统的限制相对更少,使用更灵活。第三十七张,PPT共一百一十一页,创作于2022年6月 处理时间:当在GOTO语句(无论是无条件转移的GOTO语句, 还是IFGOTO形式的条件转移语句)中有标号转移的语句时 系统将对顺序号检索。数控系统执行反向检索的时间比正向 检索的时间长。因为系统通常正向检索到程序结束后,再返 回程序开头进行检索,所以化费的时间要多。 故用WHILE语句实现循环可省时间。 例:计算1-10的累加和 O
47、0001; #1=0; 存储和变量赋初值 #2=1; 被加数变量的初值 WHILE#2 LE 10DO 1; 被加数个数小于10时,执行DO 到END间程序,继续累加,大于 10时,执行END后面的程序,即 程序结束。 #1=#1+#2; 作加法(累加) #2=#2+1 新的被加数 END 1; 循环1次结束 M30; 程序结束第三十八张,PPT共一百一十一页,创作于2022年6月 三、用户宏程序A、B调用指令 3.1 用户宏程序调用指令(用户宏指令): 宏程序非模态调用指令 (G65) 宏程序模态调用指令 (G66,G67) 子程序调用指令 (M98) 用G代码 (G G) M代码(1)调用
48、宏程序 (M m) 用M代码(2) (M m) T代码调用子程序(宏程序)(T t) 1. 在宏程序A中: G65为专用指令(运算跳转等);G66、G67指令; M98指令;Mm指令;T t指令。均没有传送数据赋值 2. 在宏程序B中: G65非模态调用 G66、G67模态调用(成对使用)。 G代码调用,此G代码同G66代码 第一种M代码调用,此M代码同G66代码。 第二种M代码调用,此M代码同M98代码。 T代码调用, 此T代码代替M98代码。第三十九张,PPT共一百一十一页,创作于2022年6月3.2 用户宏程序主体(本体) 用途:可作为:主程序(宏主程序)、子程序(宏子程序) 特点:宏程
49、序主体中可以使用普通的NC指令、变量、变量表 达式、采用量的NC指令、计算指令和转移指令 (宏程序A中,计算指令和转移指令为规定的格式)等。 宏程序的结构:以O带后面的程序号开始,中间为指令,最 后用M99结束。例如: O ; 程序号 G65 H05 ; 运算指令 G90 G00 X#110 Y#20; 使用变量的NC指令 G65 H82 ; 转移指令 M99; 返回主程序;第四十张,PPT共一百一十一页,创作于2022年6月3.3 宏程序A的运算指令和控制指令 1指令格式:G65 Hm P#i Q#j R#k 式中m为0199,表示宏程序的功能,#i为存储运算结果的变量号;#j为进行运算的变
50、量号1,也可以是常数;#k为进行运算的变量号2,也可以是常数。 意义: #I= #j #k 运算符,由Hm决定注意:变量值不能带小数,与各地址不带小数时表示的意义相同(参数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)。 第四十一张,PPT共一百一十一页,创作于2022年6月2运算和控制指令的指令表 G65 Hm指令 表12G65 H m功能数学定义
51、G65 H01定义、置换#i=#jG65 H02加法#i=#j+#kG65 H03减法#i=#j-#kG65 H04乘法#i=#j#kG65 H05除法#i=#j#kG65 H11逻辑加#i=#j AND #kG65 H12逻辑乘#i=#j OR #kG65 H13异或#i=#J XOR #k#I= #jG65 H21开平方G65 H22绝对值#i=#jG65 H23剩余数#i=#j-trunc(#j/#k)#ktrunc:小数部分舍去表12 FANUC 0i G65 Hm指令表(宏程序的运算与控制指令)第四十二张,PPT共一百一十一页,创作于2022年6月#i= #j#j+#k#k#i= #
52、j#j-#k#kG65 H24变成二进制#i=BIN(#j)G65 H25变成十进制#i=BCD(#j)G65 H26复合乘除运算#i=(#j#k) #kG65 H27复合平方根运算1G65 H28复合平方根运算2G65 H31正弦#i=#jsin(#k)G65 H32余弦#i=#jcos(#k)G65 H33正切#i=#jtan(#k)G65 H34反正切#i=arctan(#j#k)G65 H80无条件转移GOTO nG65 H81条件转移1iF#j =#k GOTO PnG65 H82条件转移2iF#j#k GOTO PnG65 H83条件转移3iF#j#k GOTO PnG65 H84
53、条件转移4iF#jj#k GOTO PnG65 H85条件转移5iF#j#k GOTO PnG65 H86条件转移6iF#j#k GOTO PnG65 H99P/S报警报警号为500+n第四十三张,PPT共一百一十一页,创作于2022年6月四、用户宏程序B4.1 用户宏程序调用指令 用户宏程序B的调用指令有: 非模态调用 (G65) 可传送数据 模态调用 (G66,G67)可传送数据 用G代码调用宏程序(Gg) 可传送数据,同G65 用M代码调用宏程序(Mm) 可传送数据,同G65 用M代码(Mm)调用子程序不能传送数据,同M98 用T代码(Tt)调用子程序不能传送数据,同M98 用户宏程序调
54、用G65与子程序调用M98之间的区别: G65可以给自变量赋值,即将G65程序段中的数据,传送到 宏程序中指定的自变量,而M98则不能给自变量赋值。 当M98程序段包含另一个NC指令(例如,G01X200.0 M98P p)时,在执行完这种非N、P或L指令后,可调用或转 移到子程序。而G65只能无条件的调用宏程序。 当M98程序段包含有O、N、P、L以外的地址的NC指令时, 例如,G01X200.0 M98Pp,在单程序段方式中,第四十四张,PPT共一百一十一页,创作于2022年6月可以单程序段停止(即停机)。而G65则不行(即不停机)。 G65改变局部变量级别,而M98不改变局部变量的级别。
55、4.1.1 宏程序非模态调用(G65)当指定G65时,调用以地址P指定的用户宏程序,而且数据能传递到用户宏程序中(自变量赋值) 。指令的格式: G65 PpLl自变量赋值; p: 要调用的程序号 l: 重复次数,默认值为1 自变量赋值:传递到宏程序的数据O0110; G65 P9110 L2 A1.0 B2.0; M30;O9110;#3=#1+#2;IF#3 GE 180 GOTO 99;G00 G91 X#3;N99 M99;1. 调用说明第四十五张,PPT共一百一十一页,创作于2022年6月在G65之后,用P指定用户宏程序的程序号。任何自变量前必须指定G65。当要求重复时,在地址L后指定
56、从19999的重复次数,省略L 值时,默认L值为1。使用自变量指定(赋值),其值被赋给宏程序中相应的局部 变量。2.自变量指定(赋值) 自变量值的指定又可称为自变量赋值 即向用户宏程序主体中变量传递数据时,需由自变量赋值地 址来指定,其值可以有符号和小数点,具体数值与地址无关 如上例 “G65 P9110 L2 A1.0 B2.0” 程序段中的 1.0 赋给A地址对应的宏程序中自变量 #1; 2.0 赋给地址B对应的宏程序中自变量 #2。 这里使用的是局部变量(#1#33,共有33个),与其对 的自变量赋值有两种类型。第四十六张,PPT共一百一十一页,创作于2022年6月自变量赋值: 用英文字
57、母后加数值进行赋值,除了G、L 、O、N和P 之 外,其余所有21个英文字母都可给自变量赋值 每个字母赋值一次,赋值不必按字母顺序进行,但用I、J、 K时,必须按字母顺序进行赋值,不赋值的地址可以省略。 自变量赋值: 该方法也是用英文字母后加数值进行赋值, 但只使用了A、B、C和I、J、K这6个字母。 具体用法是: 除了A、B、C之外,还用10组I、J、K来对自变量进行赋值, 在这里I、J、K是分组定义的,同组的I、J、K必须按字母顺 序进行赋值,不赋值的地址可以省略。 自变量赋值和自变量赋值与用户宏程序主体中局部变量 的 对应关系见表13。第四十七张,PPT共一百一十一页,创作于2022年6
58、月表13 FANUC 0i 地址与局部变量的关系自变量赋值地址用户宏程序主体中的变量自变量赋值地址自变量赋值地址用户宏程序主体中的变量自变量赋值地址ABC#1#2#3ABCSTU#19#20#21I6J6K6IJK#4#5#6I1J1K1VWX#22#23#24I7J7K7DEF#7#8#9I2J2K2YZ#25#26#27I8J8K8H#10#11#12I3J3K3#28#29#30I9J9K9M#13#14#15I4J4K4#31#32#33I10J10K10QR#16#17#18I5J5K5第四十八张,PPT共一百一十一页,创作于2022年6月 注意:对于自变量赋值,I、J、K下标用于确
59、定自变量赋值 的顺序,在实际编程中不写(也无法写,语法上无法表达) 3.自变量赋值的其他说明 自变量赋值、自变量赋值的混合使用 CNC内部自动识别自变量赋值和,混合赋值时,较后赋值的 自变量类型有效(以从左到右书写的顺序为准,左为先,右为 后)。例如: 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.
60、0() (#7对应I4.0,第二次I(I2),即#7 #7=5.0 (#7也对应D5.0),改写了#7=4.0,变为 #7=5.0第四十九张,PPT共一百一十一页,创作于2022年6月 自变量赋值的地址和变量是一一对应的,不宜混淆,但数量只有21个。 自变量赋值充分利用了资源,可以对#1#33全部33个局部变量赋值。实际上用自变量赋值的21个变量也已足够啦。小数点问题 没有小数点的自变量数据的单位为最小设定单位。传递没有小数点的自变量的值将根据机床实际的系统配置而定。因此建议在宏程序调用中使用小数点,可避免无谓的差错,兼容性好调用嵌套 调用可以四级嵌套,包括非模态调用G65和模态调用G66,但
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024出口货物代理合同协议书
- 2024广西某小区环境景观工程合同
- 2024装修合同范本(家装、公装、标准版)
- 软件技术开发协议
- 消防安全操作员培训合同范本
- 涉外劳务合同的国际法律适用
- 2024监控施工合同模板
- 2024产权交易委托合同适用于转让方采取拍卖、招投标方式
- 深圳市注册会计师执业责任保险协议
- 2024对水果冷饮配送商监管协议
- 慢病管理及远程医疗的应用
- 学校个性化课程管理制度
- 肺炎支原体性肺炎护理课件
- 黑色素瘤护理的课件
- 水性可剥离涂料的制备
- 小程序会员协议书
- 贝克抑郁量表(BDI)
- 必修一第三章《细胞的基本结构》单元教学设计高一上学期生物人教版必修1
- 新青岛版三上科学19《海洋和陆地》教学设计
- 住宅项目工程总承包(EPC)技术标
- 情绪密码-心理课件
评论
0/150
提交评论