单元宏用户宏程序编程下午2时8分数控加工编程及操作1用户宏程序编程在数控编程中,宏程序编程灵活、高效、快捷,是加工编程的重要补充。宏程序不仅可以实现象子程序那样,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。华中数控宏程序FANUC数控宏程序SIEMENS数控参数编程单元宏用户宏程序编程下午2时8分数控加工编程及操作2•华中数控用户宏程序HNC-21/22T、HNC-21M为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。一、基础知识1.宏变量及常量(1)宏变量HNC-21/22T华中世纪星数控系统变量表示形式为#后跟1~4位数字,变量种类有三种:①局部变量:#0~#49是在宏程序中局部使用的变量,用于存放宏程序中的数据,断电时丢失为空。单元宏用户宏程序编程下午2时8分数控加工编程及操作3一、基础知识②全局变量:用户可以自由使用#50~#199,它对于由主程序调用的各子程序及各宏程序来说是可以公用的,可以人工赋值。HNC-21/22T子程序嵌套调用的深度最多可以有8层,每一层子程序都有自己独立的局部变量(变量个数为50)。③系统变量:系统变量为#1000~#1199,它能获取包含在机床处理器或NC内存中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。(2)常量PI:圆周率π;TRUE:条件成立(真);FALSE:条件不成立(假)1、宏变量及常量单元宏用户宏程序编程下午2时8分数控加工编程及操作42、运算符与表达式(1)算术运算符:+,-,*,/(2)条件运算符:EQ(=),NE(≠),GT(>),GE(≥),LT(<=),LE(≤)(3)逻辑运算符:AND,OR,NOT(4)函数:SIN,COS,TAN,ATAN,ATAN2,ABS,INT,SIGN,SQRT,EXP(5)表达式:用运算符连接起来的常数,宏变量构成表达式。例如:175/SQRT[2]*COS[55*PI/180];#3*6GT14单元宏用户宏程序编程下午2时8分数控加工编程及操作53、赋值语句格式:宏变量=常数或表达式把常数或表达式的值送给一个宏变量称为赋值。例如:#2=175/SQRT[2]*COS[55*PI/180;#3=124.0单元宏用户宏程序编程下午2时8分数控加工编程及操作64、条件判别语句IF,ELSE,ENDIF格式(i):格式(ii):IF条件表达式IF条件表达式……ELSEENDIF…ENDIF单元宏用户宏程序编程下午2时8分数控加工编程及操作75、循环语句WHILE,ENDW格式:WHILE条件表达式…ENDW单元宏用户宏程序编程下午2时8分数控加工编程及操作86、宏程序/子程序调用的参数传递规则G代码在调用宏(子程序或固定循环,下同)时,系统会将当前程序段各字段(A~Z共26个字段,如果没有定义则为零)的内容拷贝到宏执行时的局部变量#0~#25,同时拷贝调用宏时当前通道九个轴(轴0~轴8)的绝对位置(机床绝对坐标)到宏执行时的局部变量#30~#38。宏程序的调用格式为:M98P(宏程序名)变量赋值或G65P(宏程序名)变量赋值。……#25Z单元宏用户宏程序编程下午2时8分数控加工编程及操作9%1000;长半轴、短半轴分别为40、30的椭圆G54G90G00Z30M03S800G00X45Y-15;快速定位至下刀点Z3G01Z-5F100#0=0;给角度赋0初值WHILE#0LE360;当角度≤360度时,执行循环体内容#1=40*COS[#0*PI/180];用椭圆的标准参数方程求动点M的X坐标值#2=30*SIN[#0*PI/180];用椭圆的标准参数方程求动点M的Y坐标值G01X[#1]Y[#2];用直线插补指令加工至M点,即用直线段逼近椭圆#0=#0+1;角度的递增步长取1度ENDWX45Y15;切出椭圆G00Z30M05X0Y0M307、用户宏程序编程思路单元宏用户宏程序编程下午2时8分数控加工编程及操作10%1000;长半轴、短半轴分别为40、30的椭圆G92X0Y0Z30M03S800G00X45Y-15M08;快速定位至A点Z3G01Z-5F100#2=0;给角度赋0初值WHILE#2LE360;当角度≤360度时,执行循环体内容#11=40*COS[#2*PI/180];用椭圆的标准参数方程求动点M的X坐标值#12=30*SIN[#2*PI/180];用椭圆的标准参数方程求动点M的Y坐标值G42G64G01X[#11]Y[#12]D01;用直线插补指令加工至M点,即用直线段逼近椭圆#2=#2+1;角度的递增步长取1度ENDWG40G01X45Y15;切出椭圆至C点Z3M09G00Z30X0Y0M05M30二、数控铣床用户宏程序编程单元宏用户宏程序编程下午2时8分数控加工编程及操作11单元宏用户宏程序编程下午2时8分数控加工编程及操作12单元宏用户宏程序编程下午2时8分数控加工编程及操作13宏程序编程实例ZH7640立式加工中心由北京第三机床厂产生,采用华中铣床、加工中心数控系统。加工范围600mm×400mm×500mm。刀库可容纳20把刀。可用于镗、铣、钻、铰、攻丝等各种加工。实例为在预先处理好的100mm×100mm×80mm合金铝锭毛坯上加工如图所示的零件,其中正五边形外接圆直径为80mm。单元宏用户宏程序编程下午2时8分数控加工编程及操作14O5000;FANUCG54G90G00Z40X70Y20M08M03S600G43Z3H01G01Z-5F100#0=18N10#1=80*COS#0#2=80*SIN#0G41X#1Y#2D01#0=#0+72IF[#0LT360]GOTO10G40X70Y70Z40M05M30O5000;HNC-21M%1000G54G90G00Z40X70Y20M08M03S600G43Z3H01G01Z-5F100#0=18IF[#0LT360]#1=80*COS#0#2=80*SIN#0G41X#1Y#2D01#0=#0+72ENDIFG40X70Y70Z40M05M30宏程序编程实例单元宏用户宏程序编程下午2时8分数控加工编程及操作15三、数控车床用户宏程序编程%3015#10=0;X坐标(直径值)#11=0;Z坐标T0101M03S600G00X0Z34WHILE#10LE32G90G64G01X[#10]Z[#11]F100#10=#10+0.32#9=#10/2;求出X坐标的半径值,便于求解#11#11=32-[#9*#9/8]ENDWG00X80Z100M05M30用宏程序编制如图所示抛物线的精加工程序。单元宏用户宏程序编程下午2时8分数控加工编程及操作16用宏指令编制椭圆部分的精加工程序。%3016;精加工椭圆程序T0101M03S800G00X39Z22#1=60;A点的角度#2=0;X坐标#3=0;Z坐标WHILE#1LE120;120是通过计算得来的B点角度#2=2*23*SIN[#1*PI/180];直径编程#3=40*COS[#1*PI/180]G64G01X[#2]Z[#3]F100#1=#1+1;步长取1度ENDWG00X100Z100M05M30单元宏用户宏程序编程下午2时8分数控加工编程及操作17用户宏程序训练单元宏用户宏程序编程下午2时8分数控加工编程及操作18单元宏用户宏程序编程下午2时8分数控加工编程及操作19单元宏用户宏程序编程下午2时8分数控加工编程及操作20一、构成1.包含变量2.包含算术或逻辑运算(=)的程序段3.包含控制语句(例如:GOTO,DO,END)的程序段4.包含宏程序调用指令(G65,G66,G67或其他G代码,M代码调用宏程序)的程序段•FANUC数控系统用户宏程序单元宏用户宏程序编程下午2时8分数控加工编程及操作21二、FANUC宏程序的变量FANUC数控系统变量表示形式为#后跟1~4位数字,变量种类有四种:变量号变量类型功能#0空变量该变量总是空,没有任何值能赋给该变量#1——#33局部变量局部变量只能用在宏程序中存储数据,例如运算结果。当断电时局部变量被初始化为空,调用宏程序时自变量对局部变量赋值。单元宏用户宏程序编程下午2时8分数控加工编程及操作22变量号变量类型功能#100—#199#500—#999公共变量公共变量在不同的宏程序中的意义相同当断电时变量#100#199初始化为空变量#500#999的数据保存即使断电也不丢失#1000——系统变量系统变量用于读和写CNC运行时各种数据的变化例如刀具的当前位置和补偿值等单元宏用户宏程序编程下午2时8分数控加工编程及操作23三、刀具补偿存储器C用G10指令进行设定H代码的几何补偿值G10L10PR;D代码的几何补偿值G10L12PR;H代码的磨损补偿值G10L11PR;D代码的磨损补偿值G10L13PR;P:刀具补偿号R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。单元宏用户宏程序编程下午2时8分数控加工编程及操作24四、FANUC宏程序的转移和循环1.无条件转移:GOTOn(n为顺序号,1——99999)例:GOTO10为转移到N10程序段。2.条件转移:(IF语句)1)IF[条件表达式]GOTOn当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段。单元宏用户宏程序编程下午2时8分数控加工编程及操作252)IF[条件表达式]THEN当指定的条件表达式满足时,执行预先决定的宏程序语句。例:IF[#1EQ#2]THEN#3=0;3.WHILE[条件表达式]DOm;(m=1,2,3)条件满足条件不满足ENDm…………注:循环允许嵌套,最多3层,但不允许交叉单元宏用户宏程序编程下午2时8分数控加工编程及操作26单元宏用户宏程序编程下午2时8分数控加工编程及操作27单元宏用户宏程序编程下午2时8分数控加工编程及操作28五、运算符运算符含义EQ等于NE不等于GT大于GE大于或等于LT小于LE小于或等于单元宏用户宏程序编程下午2时8分数控加工编程及操作29六、FANUC宏程序的调用1.非模态调用G65:格式:G65PpLl自变量指定其中p:要调用的程序号L:调用次数(默认为1)自变量:数据传递到宏程序例:G65P8000L2A10.B2.;调用2次程序号8000,经自变量A传递到宏程序#1=10;自变量B传递到宏程序#2=2。单元宏用户宏程序编程下午2时8分数控加工编程及操作30自变量指定Ⅰ•根据使用的字母,CNC系统自动地决定自变量指定的类型。•地址不需要按字母顺序指定。但应符合字地址的格式。•但是,I,J和K需要按字母顺序指定。单元宏用户宏程序编程下午2时8分数控加工编程及操作31自变量指定Ⅱ•根据使用的字母,系统自动决定自变量指定的类型。•自变量指定Ⅱ用于传递诸如三维坐标值的变量。•I,J,K的下标用于确定自变量指定的顺序,在实际编程中不写。单元宏用户宏程序编程下午2时8分数控加工编程及操作32如果自变量指定Ⅰ和自变量指定Ⅱ混合指定的话,后指定的自变量类型有效。单元宏用户宏程序编程下午2时8分数控加工编程及操作33六、FANUC宏程序的调用2.模态调用(G66):G66PpLl自变量指定;程序点G67;(取消模态)例:G66P8000L2A10.B2.;G00G90Z-10.X-5.G67一旦发出G66则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序。移动到Z-10,调用2次程序号8000,移动到X-5,再调用2次程序号8000。单元宏用户宏程序编程下午2时8分数控加工编程及操作34%1000;长半轴40、短半轴30的椭圆G54G90G