宏程序基础知识资料(共17页).doc

上传人:飞****2 文档编号:27100186 上传时间:2022-07-22 格式:DOC 页数:17 大小:307.50KB
返回 下载 相关 举报
宏程序基础知识资料(共17页).doc_第1页
第1页 / 共17页
宏程序基础知识资料(共17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《宏程序基础知识资料(共17页).doc》由会员分享,可在线阅读,更多相关《宏程序基础知识资料(共17页).doc(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上第一章 宏程序基础知识第一节 常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。#1#2100G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:

2、#1+#2-12 变量根据变量号可以分成四种类型 :1.空变量2.局部变量3.公共变量4.系统变量1. 空变量: #0 该变量总是空,没有值能赋给该变量. 2. 局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.3. 公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.4. 系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息,变

3、量的引用为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X#1+#2F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。例如: 当G00X#1;以1/1000mm的单位执行时,CNC把赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号()放在#的前面。例如:G00X#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。当#1= (空

4、)时G90 X100 Y#1实际与 G90 X100运行结果一样 当#10 时G90 X100 Y#1实际与 G90 X100 Y0 运行结果一样运算除了用赋值以外,其余情况下与0 相同。限制程序号,顺序号和任选程序段跳转号不能使用变量。例:下面情况不能使用变量:#1; 错误使用方法/#2G00X100.0; 错误使用方法N#3Y200.0; 错误使用方法系统变量系统变量能用来读写内部NC数据,如刀具补偿值和当前位置数据。然而,注意:有些系统变量是只读变量。对于扩展自动化操作和一般的程序,系统变量是必须的。刀具补偿值:使用这类系统变量可以读写刀具补偿值。可用的变量数取决于能使用的补偿对数,当补

5、偿对数不大于200时,可以用变量#2001#2400。用于刀具补偿内存A的系统变量补偿号系统变量1 :200#10001(#2001) :#10200(#2200)用于刀具补偿内存B的系统变量补偿号几何补偿磨损补偿 1 :200#11001(#2201) :#11200(#2400)#10001(#2001) :#10200(#2200)宏报警:用于宏报警的系统变量:变量号功能#3000当#3000中有099间的某一值时,NC停止并显示报警信息。报警信息不超过26个字符,例:#3000=1(TOOL NOT FOUND);报警屏幕显示“3001 TOOL NOT FOUND。”时间信息:时间信

6、息可以读写。用于时间信息的系统变量:变量号功能#3001这个变量是一个以1毫秒为增量一直记数的记时器,上电或达到65535毫秒时复值为0。#3002这个变量是一个以1小时为增量、当循环启动灯亮时记数的记时器,电源关闭后记时器值依然保持,达到.612小时时复值为0。#3011这个变量用于读当前年/月/日数据,该数据以十进制数显示。例:March 28,1993表示成。#3012这个变量用于读当前时/分/秒数据,该数据以十进制数显示。例:下午3点34分56秒表示成。自动操作控制:自动操作的控制状态可以改变。自动操作控制的系统变量#3003#3003单段辅助功能的完成0使能要等待1无效要等待2使能不

7、要等待3无效不要等待上电时该变量值为0。当不能执行单段停止时,单段停止操作不能执行,即使单段开关有效。当没有指定是否等待辅助功能(M、S、T)完成时,在辅助功能完成之前,程序执行到下一段,定位完成信号DEN不发出。自动操作控制的系统变量#3004#3004进给保持进给倍率精确停止0使能使能使能1无效使能使能2使能无效使能3无效无效使能4使能使能无效5无效使能无效6使能无效无效7无效无效无效上电时该变量值为0。当不能执行进给保持时:进给保持按钮按下并保持时,机床以单段停止方式停止,但单段方式若因变量#3003而无效时,不执行单段停止操作。进给保持按钮按下又释放时,进给保持灯亮,但机床不停止;程序

8、继续进行,机床停在最先含有进给保持使能的段。当进给倍率无效时,倍率定在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,

9、G42 (07组)#4008G43,G44,G49 (08组)#4009G73,G74,G76,G80G89 (09组)#4010G98,G99 (10组)#4011G50,G51 (11组)#4012G65,G66,G67 (12组)#4014G54G59 (14组)#4015G61G64 (15组)#4016G68,G69 (16组):#4022 (22组)#4102B码#4107D码#4109F码#4111H码#4113M码#4114顺序号#4115程序号#4119S码#4120T码例:当执行#1=#4001时,#1=0,1,2,3或33当前位置:位置信息变量不能写只能读。见下表:变量号

10、位置信息坐标系刀具补偿值移动期间的读操作#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里,如果不发出跳段信号,指定段的结束点位置保持在这些变量中。移动期间读变量无效时,表示

11、由于缓冲(准备)区忙,所希望的值不能读。工件坐标系补偿值(工件零点偏置值):工件零点偏置值变量可以读写,见下表:变量号功能#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工件零点偏置值第四

12、轴G59工件零点偏置值#7001#7004第一轴工件零点偏置值(G54P1)第四轴工件零点偏置值#7021#7024第一轴工件零点偏置值(G54P2)第四轴工件零点偏置值 :#7941#7944第一轴工件零点偏置值(G54P48)第四轴工件零点偏置值注:对于工件坐标系,变量#5201#5328是可选变量。算术和逻辑操作 对于附加的48工件坐标系,变量#7001#7948(G54P1G54P48) 是可选变量。在下表中列出的操作可以用变量进行。操作符右边的表达式,可以含有常数和(/或)由一个功能块或操作符组成的变量。表达式中的变量#J和#K可以用常数替换。左边的变量也可以用表达式替换。见下表:功

13、能格式注释赋值#i=#j加#i=#j+#k减#i=#j#k乘#i=#j*#k除#i=#j/#k正弦#i=SIN#j角度以度为单位,如:90度30分表示成90.5度余弦#i=COS#j正切#i=TAN#j反正切#i=ATAN#j平方根#i=SQRT#j绝对值#i=ABS#j进位#i=ROUND#j下进位 #i=FIX#j上进位#i=FUP#jOR(或)#i=#jOR#k用二进制数按位进行逻辑操作。XOR(异或)#i=#jXOR#kAND(与)#i=#jAND#k将BCD码转换成BIN码#i=BIN#j用于与PMC间信号的交换。将BIN码转换成BCD码#i=BCD#j角度单位:在SIN,COS,T

14、AN,ATAN中所用的角度单位是度。ATAN功能:在ATANT之后的两个变量用“/”分开,结果在0和360之间。例:当#1=ATANT1/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

15、.235mmG01 X#2 F300;移动2.346mmG00 X#1+#2;因为1.2345+2.3456=3.5801移动3.580mm,不能返回到初始位置。而换成G00XROUND#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算术和逻辑操作的缩写方式:取功能块名的前两个字符,例:ROUNDRO。操作的优先权:功能块。如乘除(*,/,AND,MOD)这样的操作。如加减(+,OR,XOR)这样的操作。方

16、括号嵌套:方括号用于改变操作的顺序。最多可用五层,超出五层,出现118号报警。注意:方括号用于封闭表达式#,圆括号用于注释(#)。除数:如果除数是零或TAN90,则会产生112号报警。分支和循环语句在一个程序中,控制流程可以用GOTO、IF语句改变。有三种分支循环语句如下:GOTO语句(无条件分支);IF语句(条件分支:if,then);WHILE语句(循环语句while)。无条件分支(GOTO语句)功能转向程序的第N句。当指定的顺序号大于19999时,出现128号报警,顺序号可以用表达式。格式GOTO n;n是顺序号(19999)例如:O0001N1G91G09G01Z-100.F2500

17、G91G09G01Z-100.F2500Y-0.5 Y-0.5 Z100.X-0.8F8000 无限循环,功能同右 Z100.X-0.8F8000Y0.5 Y0.5GOTO1 M99M30; 条件分支(IF 语句)功能 在IF后面指定一个条件表达式,如果条件满足,转向第N句,否则执行下一段。格式IF 条件表达式 GOTO n;其中:条件表达式一个条件表达式一定要有一个操作符,这个操作符插在两个变量或一个变量和一个常数之间,并且要用方括号括起来,既表达式 操作符 表达式。操作符见下表:操作符意义EQ=NEGTGELTLE循环(WHILE语句)功能在WHILE 后指定一个条件表达式,条件满足时,执

18、行DO到END之间的语句,否则执行END后的语句。格式WHILE 条件表达式 DO m;(m=1,2,3):: END m;m只能在1、2、3中取值,否则出现126号报警。嵌套数13可以多次使用。不能交叉执行DO语句,如下的书写格式是错误的:WHILE DO 1; 过程WHILE DO 2; 过程 END 1; END 2;嵌套层数最多3级。如下的书写格式是正确的: WHILE DO 1; IF GOTO n;: END 1; N n;如下的书写格式是错误的: IF GOTO n; WHILE DO 1; N n; END 1; 注意无限循环指定了DO m而没有WHILE语句,循环将在DO和E

19、ND之间无限期执行下去。执行时间程序执行GOTO分支语句时,要进行顺序号的搜索,所以反向执行的时间比正向执行的时间长。可以用WHILE语句减少处理时间。未定义的变量在使用EQ或NE的条件表达式中,空值和零的使用结果不同。而含其它操作符的条件表达式将空值看作零。宏调用可以用下列方式调用宏程序:简单调用G65模调用G66、G67G码宏调用M码宏调用G码子程序调用M码子程序调用宏调用和子程序调用之间的区别: 用G65,可以指定一个自变量(传递给宏的数据),而M98没有这个功能。 当M98段含有另一个NC语句时(如:G01 X100.0M98Pp),则执行命令之后调用子程序,而G65无条件调用一个宏。

20、 当M98段含有另一个NC语句时(如:G01 X100.0M98Pp),在单段方式下机床停止,而使用G65时机床不停止。 用G65地方变量的级要改变,而M98不改变。简单调用(G65)功能G65被指定时,地址P所指定的用户宏被调用,数据(自变量)能传递到用户宏程序中。格式G65 Pp Ll ;其中:P要调用的程序号L重复的次数(缺省值为1,取值范围19999)自变量传递给宏的数。通过使用自变量表,值被分配给相应的地方变量。如下列中#1=1.0,#2=2.0O0001 :G65 P9010 L2 A1.0 B2.0; :M30;O9010;#3=#1+#2;IF #3 GT 360 GOTO 9

21、;G00 G91 X#3N9 M99; 自变量分为两类。第一类可以使用除G、L、O、N、P之外的字母并且只能使用一次。第二类可以使用A、B、C(一次),也何以使用I、J、K(最多十次)。自变量使用的类别根据使用的字母自动确定。见下表。类别一:地址变量号地址变量号地址变量号A#1I#4T#20B#2J#5U#21C#3K#6V#22D#7M#13W#23E#8Q#17X#24F#9R#18Y#25H#11S#19Z#26 地址G、L、N、O、P不能当作自变量使用。 不需要的地址可以省略,与省略的地址相应的地方变量被置成空。类别二:地址变量号地址变量号地址变量号A#1K3#12J7#23B#2I4

22、#13K7#24C#3J4#14I8#25I1#4K4#15J8#26J1#5I5#16K8#27K1#6J5#17I9#28I2#7K5#18J9#29J2#8I6#19K9#30K2#9J6#20I10#31I3#10K6#21J10#32J3#11I7#22K10#33 在实际的程序中,I、J、K的下标不用写出来。注意: 在自变量之前一定要指定G65。 如果将两类自变量混合使用, NC自己会辨别属于哪类,最后指定的那一类优先。 传递的不带小数点的自变量的单位与每个地址的最小输入增量一致,其值与机床的系统结构非常一致。为了程序的兼容性,建议使用带小数点的自变量。 最多可以嵌套含有简单调用(

23、G65)和模调用(G66)的程序4级。不包括子程序调用(M98)。地方变量可以嵌套04级。主程序的级数是0。用G65和G66每调用一次宏,地方变量的级数增加一次。上一级地方变量的值保存在NC 中。宏程序执行到M99时,控制返回到调用的程序。这时地方变量的级数减1,恢复宏调用时存储的地方变量值。模调用(G66、G67)功能一旦指定了G66,那么在以后的含有轴移动命令的段执行之后,地址P所指定的宏被调用,直到发出G67命令,该方式被取消。格式G66 Pp Ll ;其中:p要调用的程序号L重复的次数(缺省值为1,取值范围19999)自变量传递给宏的数。与G65调用一样,通过使用自变量表,值被分配给相

24、应的局部变量。O0001 :G66 P9010 L2 A1.0 B2.0;G00 G90 X100.0;Y200.0;X150.0 Y300.0;G67;:M30;O9010; :;G00 Z#1;G01 Z-#2 F300;:M99;注意: 最多可以嵌套含有简单调用(G65)和模调用(G66)的程序4级。不包括子程序调用(M98)。模调用期间可重复嵌套G66。 在G66段,不能调用多个宏程序。 在自变量前一定要指定G66。 制定G67时取消G66,即其后面的程序不再执行宏成序模态调用。G66和G67应成对使用 在含有像M码这样与轴移动无关的段中不能调用宏。 地方变量(自变量)只能在G66段设

25、定,每次执行模态调用时,不能设定局部变量。附加说明 用户宏程序与子程序相似,也能寄存和编辑。 可以在自动操作方式下指定宏调用。但在自动操作期间不能转换到MDI方式。也能在MDI操作B方式下应用宏调用。 不能用顺序号搜索用户宏程序。 即使当宏程序正在执行,也能以单段方式停止(除了含有宏调用命令、算术操作命令、控制命令的段外)。含有宏调用命令(G65、G66、G67)的段,在单段方式下不能停止。而将参数011的第5位置1,含有算术操作命令、控制命令的段能停止。单段停止方式常用于测试用户宏程序。注意,在切削补偿方式C下,如果在宏语句处执行了单段停止,该语句被看作是与移动命令无关的段,这时补偿可能不正

26、确。(严格地讲,这句被看作是移动命令为0的段)。“/”如果出现在算术表达式的中间,则被认为是除号。 将参数010的第4位置1,可禁止对程序号为90009999的程序进行编辑和删除。同时按住RESET 和DELET键重新启动电源时,整个内存将被删除,包括宏程序。 复位操作可使地方变量和公共变量#100#199清成空值。但是,通过设置参数040的第6第7位,可以避免这些参数的复位。系统变量#1000#1133不受复位影响。 象M98一样,不显示用作子程序调用的M码和T码。 在表达式中使用的常数取值范围是+0.+和-0.,如果超出此范围,将发出003号报警。宏程序案例:1层切程序O0001M3S80

27、0 主轴启动G68R0. 坐标系旋转G65P7202A150.Z1.L10F3000 调用子程序O7202循环10次层切20MMG69 旋转结束M05M30%O7202(CENG_QIE) 层切子程序G91G01Z-#26F#9 Z轴下刀1MMX#1 X正方向移动150MM Z-#26 Z轴下刀1MMX-#1 X负方向移动150MM M99 子程序结束返回主程序该程序适合导板,导滑面,挡墙的粗加工%2层切主程序O0001M3S800 主轴启动G68R0. 坐标系旋转G65P7202A150.B45.Z1.L10F3000 调用子程序O7202循环10次层切10MMG65P7203A150.B4

28、5.Z1.L10F3000 调用子程序O7203循环10次层切10MMG69 旋转结束M05M30子程序O7201(凸台加工子程序) (两刀) G91G01Z-#26.F#9 Z轴下刀1MM X#1 X轴正方向移动150MMY#2 Y轴正方向移动45MMX-#1 X轴负方向移动150MMY-#2 Y轴负方向移动45MM M99 该程序适合小凸台的层切粗加工O7203(平面加工子程序)(四刀) G91G01Z-#26.F#9 Z轴下刀1MM X#1 X轴正方向移动150MMY#2 Y轴正方向移动45MMX-#1 X轴负方向移动150MMY#2 Y轴负方向移动45MM X#1 .Y#2 .X-#1

29、 .Y-#2*3 Y轴返回下刀点M99 该程序适合中等平面的层切粗加工以上程序是简单的子程序赋值加工,方便程序的修改和加工3划圆程序此程序适合多孔位且等高的螺旋铣粗精加工O0001 主程序名M3S800 主轴转速G54G90G0X0Y0Z200. 刀具定位到第一个孔位安全高度G66P6000B100.R0.3Z-90.Q1.F2500 模态调用划圆子程序X0Y0 第一个孔位螺旋加工X-100. 孔位依次加工X-200. .Y-100. .Y-200. .G67 模态调用结束M05 主轴停止M30 程序结束返回程序头G66P6000:调用孔加工宏程序B:孔直径 R:下刀点高度 (绝对尺寸) Q:

30、单循环深度 (相对尺寸) 各代码均需注意小数点的输入Z:孔底深 (绝对尺寸)F:铣削速度一级子程序%O6000 子程序名 #28=#5043 记忆当前刀具安全高度(当前Z.绝对坐标)#30=#4003 记忆当前主程序加工状态(G91或G90:G00或G01)#31=#4001 #1=#2/2 计算孔半径 IF#2LE0THEN#3000=102(B=?) 如果B小于等于0引发机床报警102 号 IF#2002EQ0THEN #3000=100(D2=0?) 如果2号刀补是0的情况下引发机床100号报警IF#2002GE#1THEN#3000=101(D2GE B?) 如果2号刀补大于等于孔半径

31、 引发机床报警101 IF#18LT#26THEN#3000=103(Z?&R?) 如果R值小于Z引发机床103号报警 #100=ABS#18-#26 计算孔深并存储在#100G90G0Z#18 刀具快速移动到R点G91G01X#1G41D2F#9/3 G91模式偏移一个刀具半径补加2号刀补IF#17EQ0GOTO2 如果Q是0,自动跳转到N2处顺序运行#101=FIX#100/ABS#17 计算循环次数,存储在#101。如果#100=0机床报警IF#101EQ0GOTO1 如果#101等于0自动跳转到N1处继续运行M98P6001L#101 调用O6001二级子程序,L#101循环次数N1#

32、102=#100-#101*#17 计算剩余深度存储到#102G03I-#1Z-#102F#9 螺旋加工至孔底N2G03I-#1F#9/2 孔底平整加工G40G01X-#1 取消刀补回到圆心处G90G0Z#28 Z轴回到安全高度G#30G#31 恢复主程序加工状态(G91或G90:G00或G01)M99 子程序结束,返回主程序%二级子程序%O6001 二级子程序O6001G91G03I-#1Z-#17F#9 G03螺旋铣削M99 二级子程序结束返回到一级子程序%此程序适合多孔位且等高的螺旋铣粗精加工1. 此程序需要注意的是G98和G99功能无法使用2. 第一个孔位坐标前调用模态程序3. 当2号刀补等于0时机床报警 100 (D2=0?) 提示是否加刀补4. 如果2号刀补小于等于孔半径机床101(D2GE B?)报警5. 如果B小于等于0引发机床102(B=?)号报警6. R值必须高于Z值,如果R值小于Z引发机床103(Z?&R?)号报警7. R值和Z值不能用相对值。Z值永远比R点低,否则会出现过切等无法预见的情况8. Q值是绝对值无负号。Q等于0时刀具在R点划圆一次Z轴不下刀9. 当R值和Z值相同时,刀具在R点划圆两次Z轴不下刀。(适用于孔壁的半精和精加工) 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com