1、单元宏单元宏 用户宏程序编程 非圆公式曲线加工非圆公式曲线加工 宏程序法宏程序法 单元宏单元宏 用户宏程序编程 椭圆曲线椭圆曲线 一、非圆公式曲线的加工方法一、非圆公式曲线的加工方法 非圆公式曲面的加工特点非圆公式曲面的加工特点 单元宏单元宏 用户宏程序编程 l1. 概念: l“宏程序”一般指含有变量的程序。由宏程 序体和程序中调用宏程序的指令。即宏指令 构成。主要应用于抛物线、椭圆、双曲线等 各种数控系统没有插补指令的轮廓曲线编程。 l用户宏程序有两个要点:(1)在宏程序中存 在变量;(2)宏程序能依据变量完成某个 具体操作。 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 l(2)特
2、点: l1)可以进行变量的算术运算、逻辑运算和)可以进行变量的算术运算、逻辑运算和 函数的混合运算。还可以使用循环语句、分函数的混合运算。还可以使用循环语句、分 支语句和子程序调用语句。支语句和子程序调用语句。 l2)宏程序能依据变量,用事先指定的变量)宏程序能依据变量,用事先指定的变量 代替直接给出的数值,在调用宏程序或宏程代替直接给出的数值,在调用宏程序或宏程 序本身执行时,得到计算好的变量值。序本身执行时,得到计算好的变量值。 l3)宏程序通用性强,灵活方便,一个宏程)宏程序通用性强,灵活方便,一个宏程 序可以描述一种曲线,曲线的各种参数用变序可以描述一种曲线,曲线的各种参数用变 量表示
3、量表示 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 l(3)基本原理)基本原理 l 宏程序编程是用户用变量作为数宏程序编程是用户用变量作为数 据进行编程,变量在编程中充当据进行编程,变量在编程中充当 “媒介媒介”作用。在后续程序中可作用。在后续程序中可 以重新再赋值,原来内容被新赋以重新再赋值,原来内容被新赋 的值所取代,利用系统对变量值的值所取代,利用系统对变量值 进行计算和可以重新赋值的特性,进行计算和可以重新赋值的特性, 使变量随程序的循环自动增加并使变量随程序的循环自动增加并 计算,实现加工过程的自动循环,计算,实现加工过程的自动循环, 使之自动计算出整个曲线无数个使之自动计
4、算出整个曲线无数个 密集坐标值,从而用很短的直线密集坐标值,从而用很短的直线 或圆弧线逼近理想的轮廓曲线。或圆弧线逼近理想的轮廓曲线。 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 2.2.非规则曲面的编程方法非规则曲面的编程方法 (1 1)自动编程法)自动编程法 (2 2)宏程序法)宏程序法 宏程序的编程加工,一般是采用厂方所提供的宏宏程序的编程加工,一般是采用厂方所提供的宏 程序程序( (或用户自行开发的宏程序或用户自行开发的宏程序) )通过对变量进行赋值及通过对变量进行赋值及 处理后完成程序的加工任务。处理后完成程序的加工任务。 普通加工程序直接用数值指定代码和移动距离;普通加工
5、程序直接用数值指定代码和移动距离; 例如,例如,G01X100.0Z2.0G01X100.0Z2.0。 使用用户宏程序时,数值可以直接指定或用变量指使用用户宏程序时,数值可以直接指定或用变量指 定。当用变量时,变量值可用程序或用定。当用变量时,变量值可用程序或用MDI MDI 面板上的操面板上的操 作改变。作改变。 单元宏单元宏 用户宏程序编程 二、宏程序编程二、宏程序编程 、变量的表示、变量的表示 用一个可赋值的代号用一个可赋值的代号“#i”(i=1,2,3)来代替具体的坐标来代替具体的坐标 值或数据,这个代号值或数据,这个代号“#i” 就称为变量。就称为变量。 一个变量由符号一个变量由符号
6、“# #” (变量的标志)(变量的标志)和和后续数值后续数值(变量变量标号标号) )组成,组成, 如:如:#i (i=1#i (i=1,2 2,3 3,) ),如如#5,#21等,等,其后续数值不允许带小其后续数值不允许带小 数点。数点。此外,变量还可以用表达式进行表示,但其表达式必须全部此外,变量还可以用表达式进行表示,但其表达式必须全部 写入方括号写入方括号“ ”中。中。 例:例: #100#100,#500#500,#5#5,#1+#2+10#1+#2+10; 变量可以在宏程序体中使用,宏程序体中可以含有复杂的表达式,变量可以在宏程序体中使用,宏程序体中可以含有复杂的表达式, 并完成很复
7、杂的计算。而普通加工程序直接用并完成很复杂的计算。而普通加工程序直接用G或数值编写,如或数值编写,如 “G00 X50 Z50”,而用户在编写宏程序时,数值可以直接指定或,而用户在编写宏程序时,数值可以直接指定或 用变量指定,如用变量指定,如“G00 X#1+#1F#3” 单元宏单元宏 用户宏程序编程 、变量的引用、变量的引用 将跟随在地址符后的数值用变量来代替的过程称为引将跟随在地址符后的数值用变量来代替的过程称为引 用变量。同样,引用变量也可以采用表达式。用变量。同样,引用变量也可以采用表达式。 例:例: G01 X#100 Y-#101 F#101+#103G01 X#100 Y-#10
8、1 F#101+#103; 当当#100=100.0#100=100.0、#101=50.0#101=50.0、#103=80.0#103=80.0时,上例即时,上例即 表示为:表示为: G0l Xl00.0 Y-50.0 F130G0l Xl00.0 Y-50.0 F130; 单元宏单元宏 用户宏程序编程 l 3. 赋值赋值 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 4 4、宏变量的类型、宏变量的类型 根据变量号,宏变量可分成四种类型,如表根据变量号,宏变量可分成四种类型,如表1 1所示。所示。 表1 变量的类型 变量号变量类型功 能 #0空变量空变量该变量总是空,没有值能赋给该
9、变量。该变量总是空,没有值能赋给该变量。 #1#33局部变量局部变量 局部变量只能用在宏程序中存储数据,例局部变量只能用在宏程序中存储数据,例 如,运算结果。当断电时,局部变量被初如,运算结果。当断电时,局部变量被初 始化为空。调用宏程序时,自变量对局部始化为空。调用宏程序时,自变量对局部 变量赋值。变量赋值。 #100#199 #500#999 全局变量全局变量 公共变量在不同的宏程序中的意义相同。公共变量在不同的宏程序中的意义相同。 当断电时,变量当断电时,变量#100#199 初始化为空,初始化为空, 变量变量#500#999 的数据保存,即使断电也的数据保存,即使断电也 不丢失。不丢失
10、。 #1000#9999系统变量系统变量 系统变量用于读和写系统变量用于读和写CNC 运行时的各种运行时的各种 数据,例如,刀具的当前位置和补偿值。数据,例如,刀具的当前位置和补偿值。 单元宏单元宏 用户宏程序编程 5 5、算术和逻辑运算(见表、算术和逻辑运算(见表2 2) 表2 算术和逻辑运算 函数函数格格 式式备备 注注 赋值赋值#i=#j 求和求和 求差求差 乘积乘积 求商求商 #i=#j#k #i=#j#k #i=#j#k #i=#j#k 正弦正弦 余弦余弦 正切正切 反正切反正切 #i=SIN#j #i=COS#j #i=TAN#j #i=ATAN#J/#k 角度用十进制度表示。角度
11、用十进制度表示。 9030表示为表示为90.5 度。度。 平方根平方根 绝对值绝对值 四舍五入四舍五入 向下取整向下取整 向上取整向上取整 #i=SQRT#j #i=ABS#j #i=ROUND#j #i=FIX#j #i=FUP#j 或或OR 异或异或XOR 与与AND #I=#J OR #K #I=#J XOR #K #I=#J 逻辑运算用二进制数按位操作逻辑运算用二进制数按位操作 十十二进制转换二进制转换 二二十进制转换十进制转换 #I=BIN#J #I=BCD#J 用于转换发送到用于转换发送到PMC的信号或从的信号或从PMC 接收的接收的 信号信号 单元宏单元宏 用户宏程序编程 表表3
12、 3 比较运算符比较运算符 运算符运算符含含 义义 EQEQ相等相等equal to (=)equal to (=) NENE不等于不等于not equal to ()not equal to () GTGT大于大于Greater than ()Greater than () GEGE大于等于大于等于greater than or equal to()greater than or equal to() LTLT小于小于less than ()less than () LELE小于等于小于等于less than or equal to ()less than or equal to () 单元
13、宏单元宏 用户宏程序编程 6 6、宏程序指令、宏程序指令 (1 1)无条件转移)无条件转移 (FanucFanuc系统)系统) 格式:格式:GOTO n; nGOTO n; n(转移到的程序段)顺序号(转移到的程序段)顺序号 例:例:GOTO1;GOTO1; GOTO#10; GOTO#10; (2 2)条件分支)条件分支IFIF语句(语句(FanucFanuc系统)系统) 在在IFIF后指定一条件,当条件满足时,转移到顺序号为后指定一条件,当条件满足时,转移到顺序号为n n的的 程序段,不满足则执行下一程序段。程序段,不满足则执行下一程序段。 格式:格式: IF IF 表达式表达式 GOTO
14、n; GOTOn; ; Nn Nn ; ; n n:顺序号:顺序号(1(199999)99999) 例:例:O0002(O0002(宏程序宏程序) ) N5 IF #3GT90.0GOTO10;N5 IF #3GT90.0GOTO10; ; ; GOTO5;GOTO5; N10 M99;N10 M99; 单元宏单元宏 用户宏程序编程 条件表达式条件表达式 条件表达式由两变量或一变量一常数中间加比较运算条件表达式由两变量或一变量一常数中间加比较运算 符组成,条件表达式必需包含在一对方括号内。条件表达符组成,条件表达式必需包含在一对方括号内。条件表达 式可直接用变量代替。式可直接用变量代替。 比较
15、运算符比较运算符 比较运算符由两个字母组成,用于比较两个值,来判比较运算符由两个字母组成,用于比较两个值,来判 断它们是相等,或一个值比另一个小或大。注意不能用不断它们是相等,或一个值比另一个小或大。注意不能用不 等号(见表等号(见表3 3)。)。 单元宏单元宏 用户宏程序编程 (3 3)循环调节转移语句()循环调节转移语句(FanucFanuc系统)系统) 在在WHILE WHILE 后指定一条件表达式,当条件满足时,从后指定一条件表达式,当条件满足时,从DO DO m m 到到END mEND m之间的程序就重复执行,不满足则执行之间的程序就重复执行,不满足则执行ENDEND后后 的下一程
16、序段。的下一程序段。 格式:格式: WHILE WHILE 条件表达式条件表达式DODOm m ; ; END ENDm m ; ; 例:例:O0002O0002 WHILE#3LE90.0DO2; WHILE#3LE90.0DO2; ; END 2;END 2; M99; M99; 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 分析:三爪卡盘夹住左端,伸出分析:三爪卡盘夹住左端,伸出55mm55mm,手动车右端面,选择,手动
17、车右端面,选择1 1号号3030外圆外圆 车刀加工外轮廓。切削用量的选择:粗加工主轴转速为车刀加工外轮廓。切削用量的选择:粗加工主轴转速为600r/min600r/min,进给量,进给量 为为0.25mm/r0.25mm/r,精加工主轴转速为,精加工主轴转速为800r/min800r/min,进给量为,进给量为0.1mm0.1mm。在椭圆坐标。在椭圆坐标 系中,其标准方程为:系中,其标准方程为: ; ;参数方程为:参数方程为:X=14sinX=14sin,Z=20cosZ=20cos。从零件图。从零件图 上可以看出,椭圆轮廓的起点角度为上可以看出,椭圆轮廓的起点角度为0 0 ,终点角度为,终点
18、角度为144(180-144(180- 36=144)36=144),所以适合采用以,所以适合采用以参数参数( (角度角度) )为初始变量,应用参数方程来为初始变量,应用参数方程来 表达椭圆上点的坐标。编制程序如下。表达椭圆上点的坐标。编制程序如下。 O1234; T0101 M03 S600; GOO X34 Z2.0; G73 U15 W0 R7; G73 P10 Q20 U1 W0.05 F0.25; N10 G00 X0.; G42 G01 Z0. F0.1; #1=0;(角度初始值) WHILE #1 LE 144 DO1; #2=14*SIN#1; #3=20*COS#1; G01
19、 X2*#2 Z#3-20F0.1; #1=#1+0.5; END 1; G01 Z-40; X28; W-10; N20 G40 X33; M03 S800; G70 P10 Q20; G00 X150 Z150; M5; M30; 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 l 四、以四、以Z坐标为初始变量坐标为初始变量 l 如图如图4,毛坯为,毛坯为30mm50mm的棒料,的棒料,45号钢。编号钢。编 程原点设在右端面与中心轴线的交点上,椭圆原点在编程原点设在右端面与中心轴线的交点上,椭圆原点在
20、编 程坐标系程坐标系(0,-15)处。处。 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 如图如图5,毛坯为,毛坯为30mm80mm的棒料的棒料 ,45号钢。编程原点设在右端面与中心号钢。编程原点设在右端面与中心 轴线的交点上,椭圆原点在编程坐标系轴线的交点上,椭圆原点在编程坐标系 (14.15,-22)处,椭圆轮廓位于零件中处,椭圆轮廓位于零件中 间。间。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏
21、用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 三、宏程序编程实例三、宏程序编程实例 加工如图加工如图1 1所示椭圆零件。毛坯尺寸所示椭圆零件。毛坯尺寸 62mm62mm棒料,棒料, 材料为材料为45#45#钢。钢。 图图1 1 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 1. 非模态调用G65: 格式: G65 Pp Ll 其中 p:要调用的程序号 L:调用次数(默认为1) 自变量:数据传递到宏程序 例: G65 P8000 L2 A10. B2.; 调
22、用2次程序号8000,经自变量A传递到宏程序 #1=10;自变量B传递到宏程序#2=2。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 自变量指定自变量指定 根据使用的字母,CNC系统自动地决定自变量指定的类 型。 地址不需要按字母顺序指定。但应符合字地址的格式。 但是,I,J 和K 需要按字母顺序指定。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 自变量指定自变量指定 根据使用的字母,系统自动决定自变量指定的类型。 自变量指定用于传递诸如三维坐标值的变量。 I,J,K 的下标用于确定自变量指定的顺序,在实际编程 中不写。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分
23、 如果自变量指定和自变量指定混合指定的话,后指定 的自变量类型有效。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 2. 模态调用(G66): G66 Pp Ll ; 程序点 G67;(取消模态) 例:G66 P8000 L2 A10. B2.; G00 G90 Z-10. X-5. G67 一旦发出G66 则指定模态调用,即指定沿移动轴移动的程 序段后调用宏程序。移动到Z-10,调用2次程序号8000,移 动到X-5,再调用2次程序号8000 。 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 %1000%1000;长半轴;长半轴4040、短半轴、短半轴3030的椭圆的椭圆 G
24、54 G90 G00 Z30G54 G90 G00 Z30 M03 S800M03 S800 G00 X45 Y-15 G00 X45 Y-15 ; Z3Z3 G01 Z-5 F100G01 Z-5 F100 #0=0#0=0;给角度;给角度 赋赋0 0初值初值 WHILE #0 LE 360WHILE #0 LE 360; #1=40#1=40* *COS#0COS#0* *PI/180PI/180; #2=30#2=30* *SIN#0SIN#0* *PI/180PI/180; G01 X#1 Y#2 G01 X#1 Y#2 ; # #0=#0+10=#0+1; ENDWENDW X45
25、Y15X45 Y15; G00 Z30G00 Z30 X0 Y0 M05X0 Y0 M05 M30 M30 G54 G90 G00 Z30G54 G90 G00 Z30 M03 S800M03 S800 G00 X45 Y-15 G00 X45 Y-15 ; Z3Z3 G01 Z-5 F100G01 Z-5 F100 #10=0#10=0;给角度;给角度 赋赋0 0初值初值 WHILE #10 LE 360WHILE #10 LE 360 DO 1 DO 1; #1#11=401=40* *COS#10COS#10; # #12=3012=30* *SIN#10SIN#10; G01 X#11
26、 Y#12 G01 X#11 Y#12 ; # #10=#10+110=#10+1; END 1END 1 X45 Y15X45 Y15; G00 Z30G00 Z30 X0 Y0 M05X0 Y0 M05 M30 M30 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 与FANUC类似,但功能要弱一些。变量以“R” 开始,如:R0、R1、R99。不包含系统变量,系 统变量以 “$”开头。 一、格式:Rn (n的缺省取值范围为0-99) 例如:R1 R2 R99 二、运算符: 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 1.
27、 无条件跳转 GOTOB LABEL (向后跳转,向程序头跳转) GOTOF LABEL (向前跳转,向程序尾跳转) 2. 条件跳转 IF 表达式 GOTOB LABEL(向后跳转,向程序头跳转) IF 表达式 GOTOF LABEL(向前跳转,向程序尾跳转) LABEL 为程序段标示符 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 IF R1R2 GOTOF MARKE1如果R1大于R2,那么跳 跃到MARKE1 R7=(R8+R9)*743 GOTOB MARKE1作为条件的复合表达式 IF R10 GOTOF MARK1允许确定一个变量 (INT,REAL,BOOL或 CHAR)
28、。如果变量值 为0(=FALSE),条件 就不能满足;对于所有 其他值,条件为TRUE IF R1=0 GOTOF MARKE1 IF R1=1 GOTOF MARKE2 同一程序段中的几个条 件 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 单元宏单元宏 用户宏程序编程 下午下午6时时23分分 G54 G90 G00 Z30G54 G90 G00 Z30 M03 S800M03 S800 G00 X45 Y-15 G00 X45 Y-15 ; Z3Z3 G01 Z-5 F100G01 Z-5 F100 R10=0R10=0;给角度;给角度 赋赋0 0初值初值 AAAA: R11=40
29、R11=40* *COS(R10)COS(R10); R12=30R12=30* *SIN(R10SIN(R10) ); G01 X=R11 Y=R12 G01 X=R11 Y=R12 ; R10=R10+1R10=R10+1; IF R10= 360 GOTOB AAIF R10= 360 GOTOB AA X45 Y15X45 Y15; G00 Z30G00 Z30 X0 Y0 M05X0 Y0 M05 M30 M30 长半轴长半轴4040、短半轴、短半轴3030的椭圆的椭圆 G54 G90 G00 Z30G54 G90 G00 Z30 M03 S800M03 S800 G00 X45 Y
30、-15 G00 X45 Y-15 ; Z3Z3 G01 Z-5 F100G01 Z-5 F100 #10=0#10=0;给角度;给角度 赋赋0 0初值初值 WHILE #10 LE 360WHILE #10 LE 360 DO 1 DO 1; #1#11=401=40* *COS#10COS#10; # #12=3012=30* *SIN#10SIN#10; G01 X#11 Y#12 G01 X#11 Y#12 ; # #10=#10+110=#10+1; END 1END 1 X45 Y15X45 Y15; G00 Z30G00 Z30 X0 Y0 M05X0 Y0 M05 M30 M30