
宏程序基础知识.doc
17页瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材第一章 宏程序基础知识第一节 常量与变量的含义常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序虽然子程序对编制相同的加工程序非常有用,但 用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更 简便常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0变量使用用户宏程序时,数值可以直接指定或用变量指定当用变量时,变量值可用程序或用MDI 面板上的操作改变1=#2+100G01 X#1 F300 变量用变量符号(#)和后面的变量号指定例如:#1 表达式可以用于指定变量号此时,表达式必须封闭在括号中例如:#[#1+#2-12] 变量根据变量号可以分成四种类型 :1.空变量 2.局部变量 3.公共变量 4.系统变量1.空变量:#0 该变量总是空,没有值能赋给该变量. 2.局部变量:#1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量#100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500- #999的数据保存,即使断电也不丢失.4.系统变量:#1000 以上的变量系统变量用于读和写 CNC 的各种数据,例如刀具补偿,当前位置信息,变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 2 2在括号中 例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入例如: 当 G00X#1;以 1/1000mm 的单位执行时,CNC 把 123456 赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略例如:当变量#1 的值是 0,并且变量#2 的值是空时,G00X#1 Y#2 的执行结果为 G00X0未定义的变量当变量值未定义时,这样的变量成为空变量变量#0 总是空变量它不能写,只能读当#1= (空)时G90 X100 Y#1 实际与 G90 X100 运行结果一样 当#1=0 时G90 X100 Y#1 实际与 G90 X100 Y0 运行结果一样运算 除了用赋值以外,其余情况下与 0 相同瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 3 3限制程序号,顺序号和任选程序段跳转号不能使用变量。
例: 下面情况不能使用变量: ○#1; 错误使用方法 /#2G00X100.0; 错误使用方法 N#3Y200.0; 错误使用方法系统变量系统变量系统变量能用来读写内部 NC 数据,如刀具补偿值和当前位置数据然而,注意:有些系统 变量是只读变量对于扩展自动化操作和一般的程序,系统变量是必须的刀具补偿值: 使用这类系统变量可以读写刀具补偿值可用的变量数取决于能使用的补偿对数,当补偿 对数不大于 200 时,可以用变量#2001~#2400用于刀具补偿内存 A 的系统变量补偿号系统变量1: 200#10001(#2001): #10200(#2200)用于刀具补偿内存 B 的系统变量补偿号几何补偿磨损补偿1: 200#11001(#2201): #11200(#2400)#10001(#2001): #10200(#2200)瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 4 4宏报警: 用于宏报警的系统变量:变量号功能#3000当#3000 中有 0~99 间的某一值时,NC 停止并显示报警信息。
报警信息不超过 26 个字符,例:#3000=1(TOOL NOT FOUND);报警屏幕显示“3001 TOOL NOT FOUND ”时间信息: 时间信息可以读写用于时间信息的系统变量:变量号功能#3001这个变量是一个以 1 毫秒为增量一直记数的记时器,上电或达到 65535毫秒时复值为 03002这个变量是一个以 1 小时为增量、当循环启动灯亮时记数的记时器,电源关闭后记时器值依然保持,达到 1145324.612 小时时复值为 03011这个变量用于读当前年/月/日数据,该数据以十进制数显示例:March 28,1993 表示成 199303283012这个变量用于读当前时/分/秒数据,该数据以十进制数显示例:下午 3点 34 分 56 秒表示成 153456自动操作控制: 自动操作的控制状态可以改变自动操作控制的系统变量#3003#3003单段辅助功能的完成0使能要等待1无效要等待2使能不要等待3无效不要等待☆上电时该变量值为 0 ☆当不能执行单段停止时,单段停止操作不能执行,即使单段开关有效 ☆当没有指定是否等待辅助功能(M、S、T)完成时,在辅助功能完成之前,程序执行到下 一段,定位完成信号 DEN 不发出。
自动操作控制的系统变量#3004#3004进给保持进给倍率精确停止0使能使能使能1无效使能使能2使能无效使能3无效无效使能瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 5 54使能使能无效5无效使能无效6使能无效无效7无效无效无效☆上电时该变量值为 0 ☆当不能执行进给保持时: 进给保持按钮按下并保持时,机床以单段停止方式停止,但单段方式若因变量#3003 而无效时,不执行单段停止操作 进给保持按钮按下又释放时,进给保持灯亮,但机床不停止;程序继续进行,机床停 在最先含有进给保持使能的段 ☆当进给倍率无效时,倍率定在 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,G42 (07 组) #4008G43,G44,G49 (08 组) #4009G73,G74,G76,G80~G89 (09 组)瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 6 6#4010G98,G99 (10 组) #4011G50,G51 (11 组) #4012G65,G66,G67 (12 组) #4014G54~G59 (14 组) #4015G61~G64 (15 组) #4016G68,G69 (16 组) :: #4022 (22 组) #4102B 码#4107D 码#4109F 码#4111H 码#4113M 码#4114顺序号 #4115程序号 #4119S 码#4120T 码例:当执行#1=#4001 时,#1=0,1,2,3 或 33当前位置: 位置信息变量不能写只能读。
见下表:变量号位置信息坐标系刀具补偿值移动期间的读操作#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 里,如 果不发出跳段信号,指定段的结束点位置保持在这些变量中 ☆移动期间读变量无效时,表示由于缓冲(准备)区忙,所希望的值不能读工件坐标系补偿值(工件零点偏置值): 工件零点偏置值变量可以读写,见下表:变量号功能#5201~#5204第一轴外部工件零点偏置值~第四轴外部工件零点偏置值#5221~#5224第一轴 G54 工件零点偏置值~第四轴 G54 工件零点偏置值#5241~#5244第一轴 G55 工件零点偏置值~第四轴 G55 工件零点偏置值#5261~#5264第一轴 G56 工件零点偏置值~第四轴 G56 工件零点偏置值瑞瑞鹄鹄汽汽车车模具有限公司内部教材模具有限公司内部教材 7 7#5281~#5284第一轴 G57 工件零点偏置值~第四轴 G57 工件零点偏置值#5301~#5304第一轴 G58 工件零点偏置值~第四轴 G58 工件零点偏置值#5321~#5324第一轴 G59 工件零点偏置值~第四轴 G59 工件零点偏置值#7001~#7004第一轴工件零点偏置值(G54P1)~第四轴工件零点偏置值#7021~#7024第一轴工件零点偏置值(G54P2)~第四轴工件零点偏置值:#7941~#7944第一轴工件零点偏置值(G54P48)~第四轴工件零点偏置值注:对于工件坐标系,变量#5201~#5328 是可选变量。
算术和逻辑操作对于附加的 48 工件坐标系,变量#7001~#7948(G54P1~G54P48) 是可选变量 在下表中列出的操作可以用变量进行操作符右边的表达式,可以含有常数和(/或)由一 个功能块或操作符组成的变量表达式中的变量#J 和#K 可以用常数替换左边的变量也可 以用表达式替换见下表:功能格式注释赋值#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]角度以度为单位,如:90 度 30 分表 示成 90.5 度平方根#i=SQRT[#j] 绝对值#i=ABS[#j] 进位#i=ROUND[#j] 下进位 #i=FIX[#j] 上进位#i=FUP[#j] OR(或)#i=#jOR#k XOR(异或)#i=#jXOR#k AND(与)#i=#jAND#k用二进制数按位进行逻辑操作将 BCD 码转换成 BIN 码#i=BIN[#j] 将 BIN 码转换成 BCD 码#i=BCD[#j]用于与 PMC 间信号的交换角度单位: 在 SIN,COS,TAN,ATAN 中所用的角度单位是度。
ATAN 功能: 在 ATANT 之后的两个变量用“/”分开,结果在 0°和 360°之间 例:当#1=ATANT[1]/[—1]时,#1=135.0ROUN。












