1、一、变量的使用二、系统变量三、运算命令四、循环语句五、程序案例六、宏程序的调用七、宏语句的处理八、中断宏程序九、格式数据输入主要内容:1特制分析特制分析单元一、概述2特制分析特制分析主程序宏程序一、用户宏程序用途3特制分析特制分析 形状类似但大小不同(圆、方及其它) 其它 自动化功能(刀具长度测量)换刀功能 特殊形状(椭圆、球等) 大小相同但位置不同(组孔、阵列等)二、宏程序的适用范围加工程序编程生产管理PMC强电控制4特制分析特制分析宏程序子程序使用变量可使用变量不可以使用变量调用方式G65 P_ L _ ;M98 P_ _;程序结束M99;M99;嵌套4重0i-D:5重4重三、宏程序与子程
2、序的比较注释:为0i-D、30i系列的新增功能5特制分析特制分析四、宏程序相关的参数#5(SBM) 用户宏程序语句中, 0: 单程序段不停止 1: 单程序段停止#6(CCV) 复位(Reset)后,公共变量#100#1990: 清空1: 不清空#7(CLV) 复位(Reset)后,局部变量#1#33 0: 清空1: 不清空0i-D没有6001#7设置6特制分析特制分析#4(NE9) 编辑程序号为90009999的程序0: 不禁止1: 禁止#6(NPE) 程序登录时,对含有M02,M99,M30的程序段0: 视为登录结束1: 不视为登录结束NE8五、宏程序的保护1、参数设置7特制分析特制分析32
3、10密码锁3210密码锁设置时须谨慎,若使用G10可编程数据输入时,则出现PS0231#报警3211密码钥匙 设定值后不显示,断电后为0参数6001#5设为1 T代码调用宏程序2、密码保护、密码保护8特制分析特制分析 变量的表示 变量的种类 变量的显示与设定 变量的使用 未定义变量 公共变量名称 单元二、变量9特制分析特制分析第二章第二章 变量变量10特制分析特制分析一、变量的表示 例:#10, #1005 表达式也可以用于指定变量号,但需封闭在括号内 例:#2-1,#500/2 可在程序段结尾加注释说明变量内容,但需用括号封闭 例: #2=#3-1(TOOL NUMBER)变量符号(#)+
4、变量号变量的表示方法11特制分析特制分析变量号变量类型用 途#0、#3100空变量总为空,不能写,只能读#1#33局部变量只能用在当前用户宏程序中存储变量断电/复位后数据初始化#100#199#500#999公共变量在不同的程序中意义相同,各用户宏程序公用.断电后:#100#199初始化为空, 500#999数据保存#1000系统变量可用于读写CNC运行时的各种数据二、变量的种类12特制分析特制分析三、局部变量、公共变量、系统变量的用途和特性局部变量:#1#33,初始状态为,自变量输入可用程序或MDI方式输入,可以自由使用,属性READ/WRTIE.公共变量:#100#199、#500#999
5、,共600个,在主程序或调用的各子程序以及各个宏之间的通用.公共变量的用途没有在系统中确定,用户可自由使用.#100#199断电不保护,#500#999断电保护,属性READ/WRTIE.公共变量的写保护:参数60316032 对#500#999进行保护,属性为READ,以防止输入/全清的误操作.系统变量:在系统中固定,属性有只读、只写、可读可写三种.系统常量:其值不变的常量,属性只读.13特制分析特制分析四、变量的显示与设定四、变量的显示与设定变量的显示变量的显示1).按下MDI面板上的功能键OFFSETSETTING2).按几次 键,直至 出现14特制分析特制分析3).按下 显示宏程序变量
6、值15特制分析特制分析4).按 、 显示局部和公共变量值16特制分析特制分析公共变量的设定1.找到显示公共变量的画面。2.将光标移至欲设定的变量号上。 键入变量号并按 键 或按换页键 、 和光标 键将光标移至欲设定的变量号上3.键入数据并按17特制分析特制分析五、变量的使用 将计算结果赋值给对应的变量号常数、变量、函数和运算符的组合表示方法#1= #2 + 100 ;#1= #2 + #18 SIN#5 ;18特制分析特制分析当在程序中定义变量值时,小数点可以省略#1 = 123;#1123.000变量的引用 跟在地址后面的数值可用变量来代替。G01 X10.0 F#1;F把#1值作为F的指令
7、值G01 X-#1+#2 F#1;把表达式放在括号中变量的赋值19特制分析特制分析 变量用于地址数据时,被引用变量的值根据地址的最小设定单位自动地四舍五入例: G01 X#1;当#1赋值为12.3456时,实际指令值为G01 X12.346;设定单位1/1000mm(IS-B) 改变引用变量的值的符号时,要把负号放在#的前面例: G00 X-#1;20特制分析特制分析 当引用未定义的变量时,变量及地址字都被忽略例: G00 X#1 Y#2;当#1=0,#2为空时 实际指令为G00 X0; 程序号、顺序号和任选程序段跳转号不能使用变量.以下表述是错误的.O#1;N#3 Y200.0;/#2 G0
8、0 X10.;21特制分析特制分析参数6008#0为0时,最大值 , 最小值参数6008#0为1时,最大值 , 最小值超出范围出现PS0111#报警变量的范围角度单位为度角度单位为度( ),最小指令单位0.00122特制分析特制分析六、未定义变量当变量值未定义时,这样的变量成为变量变量#0 总是空变量,它不能写只能读未定义变量的引用当引用一个未定义的变量时,地址本身也被忽略当#1=时当#1=0时G90 X100 Y#1 G90 X100G90 X100 Y#1 G90 X100 Y023特制分析特制分析系统变量与常量可通过变量号指定,也可通过事先准备的系统变量(常量)名称来指定. 1.系统变量
9、 它由(下划线)开始8个英文字母、数字构成.对轴和刀具补偿,作为名称的标号,可用n(n为整数),n可用即运算格式指定.七、系统变量与常量的名称24特制分析特制分析注意:当n指定整数以外的数值时,n小数则按四舍五入处理.2.系统常量 属性R例# -ABSIO1.4999999:假定此值为# -ABSIO1,也即#5001例# -ABSIO1.5000000:假定此值为# -ABSIO2,也即#5002常量常量名称内容#0、#3100#-EMPTY空值#3101 #-PI圆周率=3.14159265.#3102 #-E自然对数e=2.71828182.25特制分析特制分析八、公共变量的名称由SET
10、VN指定设定变量名称,即可读取或写入.指令格式如#VAR500,必须以#公共变量名称的格式指定.公共变量名称设定和指令时,可赋值#500#549,共50个,公共变量8个字符,开头必须是字母,断电不消失.例如:SETVN nAVR500,AVR501,AVR502,.;变量号n、n+1 、 n+2的变量名称:各字符串之间以 “, ”隔开.字符除了控制出、控制入、 、EOB26特制分析特制分析九、设定和指令27特制分析特制分析单元三、系统变量28特制分析特制分析 接口信号 刀具补偿 坐标系偏移(T) CNC报警 时钟和零件数 时间信息 自动运行控制 设定单元三、系统变量29特制分析特制分析 模态信
11、息 位置信息 刀具长度补偿值 伺服位置、手轮中断、剩余运动量 工件原点偏移 系统变量读取CNC内部信息数据,如模态信息、坐标位置、刀具补偿等,系统变量对自动化程序和通用程序十分重要.系统变量及常量.n表示标号,属性R表示只读、W表示只写、R/W表示可读/可写.30特制分析特制分析一、接口信号 31特制分析特制分析32特制分析特制分析33特制分析特制分析34特制分析特制分析35特制分析特制分析36特制分析特制分析举例37特制分析特制分析38特制分析特制分析二、刀具补偿量(M)39特制分析特制分析40特制分析特制分析刀具补偿(M)刀具补偿存储器A,参数8136#6 为0i-D 适用41特制分析特制
12、分析刀补补偿存储器C,参数8136#6=0;6000#3=0 42特制分析特制分析刀补补偿存储器C刀补补偿存储器C,参数8136#6=0;6000#3=143特制分析特制分析无刀具形状/磨损补偿器,参数8136#6=1 刀具补偿个数小于等于64个刀具补偿(T)44特制分析特制分析刀具形状/磨损补偿器,参数8136#6=0刀具补偿(T)45特制分析特制分析刀补C长度补偿参数8136#6=0, 补偿个数小于等于200个,参数6000#3=0.长度补偿参数6000#3=1,补偿个数小于等于200个.长度补偿(F10/F11)46特制分析特制分析刀具半径补偿参数8136#6=0 ,补偿个数小于等于20
13、0个,参数6000#3=1 6004#5=1(F10/F11)半径补偿47特制分析特制分析补偿个数为400个(小于等于200个也可使用#2001#2800)参数6000#3=048特制分析特制分析参数参数6000#3=149特制分析特制分析长度补偿举例写入读取50特制分析特制分析范围:#20012964、#10001#19200(属性R/W)无刀具形状和磨损补偿器:8136#6=1 ,补偿个数小于等于64个刀具补偿量(T)51特制分析特制分析52特制分析特制分析补偿个数200个,补偿个数小于等于64个,也可使用#2001#2499.53特制分析特制分析有刀具形状和磨损补偿器:8136#6=1,
14、刀补个数小于等于64个磨损补偿54特制分析特制分析几何补偿55特制分析特制分析补偿个数200个,补偿个数小于等于64个,也可使用#2001#2964.56特制分析特制分析工件坐标系偏移工件坐标系偏移(T)三、工件坐标系偏移(T)可以利用系统变量 #2501 读取X 轴的工件坐标系偏移量的值,利用#2601 读取Z轴的工件坐标系偏移量的值。此外,将值代入系统变量,可以改变X 轴和Z 轴的工件原点坐标系偏移量。#2501、#2601(属性:R/W)工件坐标系偏移量57特制分析特制分析工件坐标系偏移量读取写入58特制分析特制分析四、CNC报警参数6008#1=0表达式后为不超过26个字符的报警信息屏
15、幕上显示报警号和报警信息,报警号为#3000的值加上3000#3000=1 (WRONG DATA INPUT);屏幕显示: 3001 WRONG DATA INPUT例:注释:59特制分析特制分析CNC报警有以下两种使用情况:参数MCA(No.6008#1)=0时#3000 = n (ALARM MESSAGE) ; ( n: 0200 )将3000 与变量#3000 的值相加的报警号和报警信息一起在画面上显示出来。(例) #3000=1 (ALARM MESSAGE);报警画面上显示出“3001 ALARM MESSAGE”。参数MCA(No.6008#1)=1时#3000 = n (AL
16、ARM MESSAGE) ; ( n: 04095 ),继MC 后,画面上显示出#3000 报警号和报警信息。(例) #3000=1 (ALARM MESSAGE);报警画面上显示出“MC0001 ALARM MESSAGE”。60特制分析特制分析 时钟控制 例如:2009年1月20日 下午4时17分5秒 #3011=20090112 #3012=161705五、时钟和零件数61特制分析特制分析 零件数 刀补存储器(M)#3980 主程序号62特制分析特制分析六、时间信息变量号单位功 能赋值#3001毫秒计时器。电源接通时复位为0。可以#3002小时计时器。循环启动灯亮时开始计时。即使在断电时
17、也保存该值可以计时器地址 #3001、#3002 (属性:R/W)63特制分析特制分析64特制分析特制分析七、自动运行控制#3000#3008时钟 计时器65特制分析特制分析自动运行控制当电源接通时复位,#3003的值为0.当单程序段停止无效时,即使操作面板上的单程序段开关设为ON, 也不执行单程序段停止.当不指定等待辅助功能(M 、S 和T 功能)完成信号时,在辅助功能完成之前程序执行到下列程序段,而且分配完成信号DEN不输出.注意不要在没有等待完成信号下指令下一个辅助指令.#3003(属性R/W)66特制分析特制分析可通过变量名称实现个别控制.例钻孔循环(增量编程)宏程序调用指令(相当于G
18、81)67特制分析特制分析准确停止方式G09G61#3004(属性R/W)复位被清除68特制分析特制分析变量名称指令变量名称指令69特制分析特制分析变量名称指令70特制分析特制分析当电源接通时,#3003和#3004的值为0.当进给暂停无效时.1 当进给暂停按钮被按下时,机床在单段停止方式停止,但是当用 变量#3003使单程序段方式无效时,单程序段停止不执行.2 当进给暂停按钮压下又松开时,进给暂停灯亮但是机床不停止, 程序继续执行,并且机床停在进给暂停有效的第一个程序段.当进给速度倍率无效时,总是100%的倍率,而不管机床操作面板上 的进给速度倍率开关的设置如何.#3003=1#3004=1
19、时的运行情况71特制分析特制分析攻丝案例攻丝宏程序72特制分析特制分析八、SETTING值变量号功能赋值#3005设定数据可以#3005(属性:R/W)处理的数值为将二进制转换成十进制的数值73特制分析特制分析伴随信息同时停止 #3006(属性W)宏指令发出#3006=1(MESSAGE),程序即可在一个程序段停止, 控制输入输出字符26个字符以内,并使用括弧括起来.74特制分析特制分析镜像状态#3007(属性:R)镜像的状态通过读取#3007,即可得知每个轴在该时刻的镜像(设定或DI)的状态轴与二进制显示时的各位(bit)对应:75特制分析特制分析变量号功能赋值#3007使用外部开关或SET
20、TING 操作设置的各轴镜像状态可以通过输出信号,镜像检测信号读出不可76特制分析特制分析9、模态信息1.#4001#4130 程序段前指定的模态信息2.#4201#4330 当前正在执行的程序段的模态信息3.#4401#4530 被中断型用户宏程序中断的程序段之前指定的模态信息 77特制分析特制分析模态信息(M)78特制分析特制分析模态信息79特制分析特制分析模态信息(M)80特制分析特制分析模态信息(M)81特制分析特制分析模态信息(T)82特制分析特制分析83特制分析特制分析模态信息分类(M)分类:之前的程序段、执行中的程序段、被中断的程序段84特制分析特制分析85特制分析特制分析模态信
21、息分类(T)分类:之前的程序段、执行中的程序段、被中断的程序段86特制分析特制分析87特制分析特制分析例如88特制分析特制分析十、位置信息89特制分析特制分析位置信息#5001#5065(属性:R)位置信息包括程序段的终点位置、当前位置(机械坐标系、工件坐标系)、跳过信号位置90特制分析特制分析91特制分析特制分析位置信息例:读取X轴的位置信息 程序指令X轴坐标位置变量地址号92特制分析特制分析十一、刀具长度补偿(M)93特制分析特制分析刀具长度补偿(M)#5081#5085(属性:R)当前正在执行的程序段中的刀具长度补偿量94特制分析特制分析刀具长度补偿刀具长度补偿例:使用刀具长度补偿(M)
22、95特制分析特制分析刀具位置偏置(T)96特制分析特制分析刀具位置偏置(T)#5081#5085(属性:R)97特制分析特制分析刀具位置偏置(T)#5081#5085,#5121#5125(属性:R)98特制分析特制分析99特制分析特制分析刀补C 几何补偿磨损补偿100特制分析特制分析伺服位置偏差#5101#5105(属性:R)伺服位置偏差值十二、伺服位置手轮中断剩余移动101特制分析特制分析手轮中断 #5121#5125(属性R) 手轮中断值 (T)102特制分析特制分析剩余移动量 剩余移动量#5181#5185(属性R) 103特制分析特制分析十三、工件原点偏移(基本)M系列/T系列104
23、特制分析特制分析工件原点偏移#5201#5325(属性:R/W)工件原点偏移105特制分析特制分析工件原点偏移(M/T)写入读出106特制分析特制分析 (M)107特制分析特制分析108特制分析特制分析 (T)109特制分析特制分析110特制分析特制分析附加坐标系(M)111特制分析特制分析附加坐标系(M) #7001#7945 (属性属性R/W)附加坐标系附加坐标系 系统变量号系统变量号=7000+(坐标系号坐标系号-1) 20+轴号轴号112特制分析特制分析系统变量号=14000+(坐标系号-1) 20+轴号工件坐标系组数追加48组,设定为有效参数N0.8136#2=0有效#14001#1
24、4945 附加坐标系113特制分析特制分析114特制分析特制分析单元四、运算指令 表达式 运算命令的种类 运算顺序 关于加工精度 宏语句与NC语句的区别 115特制分析特制分析运算指令右边的可以是常量、变量、函数或算符的组合表达式中使用不带小数点的常量一、表达式116特制分析特制分析种 类符 号格 式加法+#i = #j + #k 减法-#i = #j - #k乘法#i = #j#k除法/#i = #j / #k二、运算命令的种类加减乘除117特制分析特制分析种 类符 号格 式结果正弦SIN#i=SINc/a余弦COS#i=COSb/a正切TAN#i=TANc/b反正弦ASIN#i=ASINc
25、/a反余弦ACOS#i=ACOSb/a反正切ATAN#i=ATANc/b注:三角函数的角度单位为度( )。如:9030表示为90.5三角函数118特制分析特制分析反三角函数的取值范围函 数No.6004#0=0No.6004#0=1ATAN0360-180+180ASIN27090-9090ACOS1800#1=SIN90;#1=COS90;#1=TAN45;#1=ATAN1/1;#1=ATAN-1/-1;10145225#1#1#1#1#1反三角函数119特制分析特制分析种 类函数名格 式平方根SQRT#i = SQRT #k 自然对数LN#i = LN #k 指数函数幂EXPPOW #i
26、=EXP #k #i=POW#i,#j #2=2;#1=SQRT#2;1.414#1其它函数120特制分析特制分析种 类函数名格 式下取整FIX#i = FIX #k 上取整FUP#i = FUP #k 四舍五入ROUND#i =ROUND #k 绝对值ABS#i =ABS #k 下取整(FIX): 舍去小数点以下部分上取整(FUP): 将小数后部分进位到整数部分 ROUND函数:在算术运算或逻辑运算指令中使用时,在第1个小数位置 四舍五入 在NC语句地址中使用时,根据地址的最小设定单位将指 定值四舍五入数据处理函数121特制分析特制分析运算指令#2=1.2346时#2=-1.6794时#1=
27、 FIX #2 #1= FUP #2 #1=ROUND #2 #1=ABS #2 G01 XROUND#2;G01X1.235G1X-1.6791.02.0-1.0-2.01.01.2346-2.01.6794计算相应的变量值#1下取整(FIX):舍去小数点以下部分上取整(FUP):将小数后部分进位到整数部分122特制分析特制分析三、 运算顺序 函数 乘除运算( ,/,AND ) 加减运算(+, - , OR , XOR )#1=#2 + #3 SIN#4;123特制分析特制分析 可以利用 来改变运算顺序,可嵌套5次 可以使用函数名前面的两个字母来指定该函数。ROUNDRO FIXFI注意12
28、4特制分析特制分析四、关于加工精度参数6008#0=0 需要注意的是,当绝对值被减掉时,不能将相对误差控 制在 低于10-15,原因在于用户宏程序变量只有10进制15位的控制精度.加减法的运算 EQNEGTLTGELE基本上与加减法运算相同,需要注意其误差.逻辑关系 例如: IF#1EQ#2 IFABS#1-#2LT0.1,必须评价此 时的误差,如果#1和#2的差在该误差的范围内,则可以认为其值相等.三角函数 在三角函数运算后进行乘法除法运算时需要引起注意.注意事项125特制分析特制分析FIX函数 FIX 函数也要同样注意其精度. N1#1=0.002; N2#2=#1*1000; N3#3=
29、FIX#2; 此时#3不见得就成为2,为了预防此情况,应按照如下指定 N3#3=FIX#2+0.001126特制分析特制分析127特制分析特制分析注意:误差还会来自使用6个条件表达式 例 IF#1EQ#2受#1和#2的误差影响,可能导致判断错误.因此, 如IFABS#1-#2LT0.001所示,求出两个变量之差,如果该差值不超过允许 值(例子中为0.001),则可以这两变量的值相等. 对一个数值进行只舍不入时,应十分小心 例#1=0.001 计算#2=#1*1000;时,#2的结果不正好是2,而是1.99999997.此时,如果指定 #3=FIX#2;变量#3的结果不正是2.0而是1.0.在这
30、种情况下,进行误差修正 之后,对该值应进行只舍不入或四舍五入,使结果大于预期的整数值. #3=FIX#2+0.001; #3=ROUND#2;128特制分析特制分析表达式括号的使用在表达式中使用的括号为方括号 , 注意圆括号( )用于程序注释.除法运算中分母为”0”时,则会出现(PS0112#报警).当指定超出控制轴数时,则会出现(PS0115#报警变量号超限).括号的嵌套超过5位,则会出现(PS0118#报警).自然对数,当逆对数(#j)小于等于0时,则会出现(PS0119#报警).指数函数,运算结果溢出时,则会出现(PS0119#报警).129特制分析特制分析五、用户宏程序的特点 含运算指
31、令(=)的程序段含控制指令(如GOTODOEND)的程序段含宏指令(由G65G66G67G代码或M代码的宏指令的程序段。除宏语句以外的程序段称为NC语句.即使在单程序段方式,机床也不会停止,但是,当参数SBM(N0.6000#5)设为1时,在单程序运行方式中机床停止。在刀具半径补偿方式中, 宏程序语句段不作为不移动程序段处理。130特制分析特制分析 含有子程序调用指令(例如用M98 或其它M代码或用T代码调用子程序)但没有除O, N 或L 地址之外的其它地址指令的NC 语句其性质与宏程序相同 不包含除O、N、P 或L 以外的指令地址的程序段,其性质与宏程序语句相同与宏程序语句有相同性质的NC语
32、句131特制分析特制分析单元五、控制指令l无条件转移(GOTO 语句)l条件转移(IF 语句)l条件表达式l循环(WHILE 语句)l限制 132特制分析特制分析改变流程1 在程序中,可以使用GOTO语句和IF语句等来改变程序的流程.2 转移和重复有下列三种133特制分析特制分析一、无条件转移(GOTO 语句) GOTO n; n:程序段号(1- 99999)该语句使程序无条件地转移到程序段n去。例如n也可用变量或表达式来代替 例如GOTO #10;当顺序号在199999范围以外,就会出现(PS1128#报警)警告:不可在一个程序中指定多个相同顺序号的程序段,若是这样,利用GOTO语句转移时,
33、转移目的地不确定,这样十分危险.GOTO 10;134特制分析特制分析 顺序号存储型GOTO在执行控制指令GOTO语句时,对于以前执行并存储的顺序号,高速地进行顺序号检索,以前执行并存储的顺序号,指就所执行的顺序号在相同程序内没有重复的顺序号以及子程序调用的顺序号,CNC对此进行存储135特制分析特制分析存储的顺序号在下列情况下将被取消 通电、复位、程序的登录和编辑(含后台及MDI的程序编辑)时, 请勿在一个程序中指定多个相同的程序段号。这样十分危险。136特制分析特制分析 IF GOTO n; 若满足,则下步操作转移到程序段号为n的程序段去 若不满足,执行下个程序段。二、 条件转移(IF语句
34、) IF THEN ; 若满足,执行THEN后的宏程序语句,只执行一个语句。例:IF#1 EQ #2 THEN #3=0;137特制分析特制分析条件表达式条件不满足时执行的操作IFGOTO138特制分析特制分析139特制分析特制分析表 达 式含 义英 文#j EQ #k#j #kEQual#j NE #k#j #kNot Equal#j GT #k#j #kGreater Than#j LT #k#j #kLess Than#j GE #k#j #kGreater or Equal#j LE #k#j #kLess or Equal注:#j 和 #k 也可用来代替。三、条件表达式140特制分析
35、特制分析程序例子141特制分析特制分析四、循环(WHILE语句) WHILE DO m; (m=1,2,3)条件成立时执行的程序 END m; DO m和 END m必须成对使用,并以 其中的m作为识别号相互识别。 m的范围为1,2,3。可以根据需要多次使用。142特制分析特制分析143特制分析特制分析识别号( 1,2, 3)可多次使用WHILE DO 1;程序END1;WHILE DO 1;程序END1;当重复的循环相互交叉时,会发出PS0124#报警144特制分析特制分析DO的区域不能交叉下列表达是错误的WHILE DO 1;程序WHILE DO 2;END1;程序END2;DO 一定要在
36、END之前规定下列表达是错误的END1;程序WHILE DO 1;145特制分析特制分析 DO 循环可以嵌套3级WHILE DO 1; WHILE DO 2; WHILE DO 3; 程序 END3; END2; END1;146特制分析特制分析可以从DO区域的内部向外部转移,例如WHILE DO 1;程序IF GOTO n;END1;程序Nn ;不可以从DO区域的外部向内部转移,例如下列表达是错误的IF GOTO n; WHILE DO 1;程序Nn ;END1;147特制分析特制分析常用格式(当前值)=(初值);WHILE (当前值)比较(目标值) DO m;(执行循环操作);(当前值)=
37、(当前值)1;ENDm;148特制分析特制分析五、控制语句的使用限制无限循环:当指定DOm而省略WHILE语句时,程序则在DO到END之间 无限循环。处理时间:当要转移到GOTO语句中指定的顺序号时,程序先检索顺序号,反向处理数据比正向要用较长的时间,为了缩短处理时间,作为重复指令,请使用WHILE语句。未定义的变量:在使用EQ、NE的条件表达式中,空值和0(零)有不 同的效果,在别的条件表达式中,空值被看成0。149特制分析特制分析程序例子求110之和150特制分析特制分析G00 G91 X100.0;Y100.0;要求:对以上动作重复执行三次。设#1为动作执行次数,初始值为零。#1=0;
38、G00 G91 X100.0; Y100.0;#1=1; G00 G91 X100.0; Y100.0;#1=2; G00 G91 X100.0; Y100.0;#1=3;#1=0;WHILE#1 LT 3 DO 1; G00 G91 X100.0; Y100.0; #1=#1+1;END1;计数器累加重复执行的动作计数器复位151特制分析特制分析单元六、程序案例粗铣圆内腔粗车外圆自动设定坐标系152特制分析特制分析一、粗铣圆内腔#5:圆半径的增量#18:最终圆弧半径O9999; #5= 10.0; #18= 45.0; #1= 0; #2= 0; WHILE#1 LT #18 DO 1; #
39、1= #1+ #5; IF#1 LE #18 GOTO1; #1= #18; G01 G91 Y#1- #2 F300; G02 J-#1; #2= #1; END1;M30;N1当次圆弧半径当次圆弧半径前次圆弧半径前次圆弧半径153特制分析特制分析 程序案例O0099G00G90G54X0Y0G43Z5.H1S1500M3G1Z-5F300#5=10#18=45#1=0#2=0WHILE#1LT#18DO1#1=#1+#5IF#1LT#18GOTO1#1=#18N1G1G91Y#1-#2F300G2J-#1#2=#1END1G00Z100M5M30154特制分析特制分析二、粗车外圆WHILE
40、#26 GT 0 DO1; #26=#26- #6; IF#26 GE 0 GOTO 1; #6=#6 + #26; G00 W-#6+#4; G01 U-#24 F#9; #4=#3; G00 U#4*2 W#4; U#24- #4*2;END1;M30;O9999; #3=1.0; #4=0; #6=10.0; #9=300.0; #24=20.0; #26=48.0;#26#3#6#24#3: 空程量#6: 每次切削量#9: 切削速度#24: X方向切削量#26: Z方向切削量N1155特制分析特制分析 程序案例O0202T0101G00X50.Z0G98S2000M3#3=1.#4=0
41、#6=10.#9=300.#24=20.#26=48.WHILE#26GT0DO1#26=#26-#6IF#26GE0GOTO1#6=#6+#26N1G00W-#6+#4G1U-#24F#9#4=#3G00U#4*2W#4U#24-#4*2END1G00X50.Z0M5M30156特制分析特制分析 三、自动设定坐标系157特制分析特制分析O9999 IF#4111 EQ 0GOTO 9; #1= #5043; G00 G90 G43 Z50.0; M00; #11000+#4111= #5043; G00 G49 Z#1; M30;N9 #3000=9(OFFSET # ERROR);操作步骤
42、操作步骤#2200+#4111手动刀具长度测量158特制分析特制分析159特制分析特制分析160特制分析特制分析单元七、用户宏程序调用非模态调用G65两种形式的自变量赋值规定系统变量的存储模态调用G66G、M代码调用宏程序M、T代码调用子程序使用M代码计算刀具使用时间利用特定代码的子程序161特制分析特制分析一、宏程序调用限制162特制分析特制分析O9999;#21=90.0;#22=120.0;N1 G01 G91 X#21 F300;N2 Y#22;N3 X- #21;N4 Y- #22;M30;简单的四边形铣削163特制分析特制分析简单的四边形铣削O0001;M98 P9999;M30;
43、O9999;#21=90.0;#22=120.0;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;M99;O0001;#21=90.0;#22=120.0;M98 P9999;M30;O9999;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;M99;O0001;M98 P9999 #21=90.0 #22=120.0;M30;O0001;G65 P9999 U90.0 V120.0;M30;UV164特制分析特制分析 G65 Pp Ll 自变量赋值;要调用的程序号重复次数 用G65指令,把由P指令的宏
44、程序体调用L次 指定的重复次数的范围为1999999999,L的缺省值为1 按照自变量赋值的规定,将自变量的实际数值调到相应的程序体中 宏程序调用有2类:宏程序调用和子程序调用,MDI方式也有效二、非模态调用G65165特制分析特制分析O0001; G65 P9010 L2 A1.0 B2.0; M30;O9010;#3=#1+#2;IF#3 GT 360 GOTO 9;G00G90 X#3;N9 M99;指定重复次数时,在地址L后,指定重复次数(1999999999)的范围简单调用(G65)166特制分析特制分析 三、自变量赋值规定自变量赋值自变量赋值167特制分析特制分析自变量赋值地址变量
45、号地址变量号地址变量号A#1I#4T#20B#2J#5U#21C#3K#6V#22D#7M#13W#23E#8Q#17X#24F#9R#18Y#25H#11S#19Z#26168特制分析特制分析 对字母A-Z后加数值来赋值,但G,L,N,O,P除外 I,J,K须按字母顺序指定169特制分析特制分析G65 P9003 X30. Y45. Z-3. F300;#9= 300;#24= 30.0;#25= 45.0;#26= -3.0;170特制分析特制分析自变量赋值地址变量号地址变量号地址变量号地址变量号A#1I3#10I6#19I9#28B#2J3#11J6#20J9#29C#3K3#12K6#
46、21K9#30I1#4I4#13I7#22I10#31J1#5J4#14J7#23J10#32K1#6K4#15K7#24K10#33I2#7I5#16I8#25-J2#8J5#17J8#26-K2#9K5#18K8#27-注意:I,J,K的代表自变量赋值的顺序,在实际编程中不写171特制分析特制分析 限制172特制分析特制分析G65 A1.0 B2.0 I-3.0 I4.0 D5.0 P1000;CNC 内部自动识别自变量赋值和自变量赋值。如果自变量赋值和自变量赋值混合指定的话, 后指定的自变量类型有效自变量指定的混合注意:MDI方式运行程序同样可以调用程序173特制分析特制分析四、系统变量
47、的存储O0001;N10 G00 G90 X100.0 Y50.0;N11 G65 P9999 U90.0 V120.0;N12 X200.0 Y100.0;M30;O9999;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;M99;O9999;#30=#4001;#31=#4003;#32=#4109;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;G#30 G#31 F#32;M99;174特制分析特制分析例:倾斜的四边形加工Yx#21(U)#22(V)#1(A)aaCOSa SIN O0001;G
48、92 X0 Y0;G00 G90 X100.0 Y50.0;G65 P9999 U100.0 V50.0 A30.0;M30;175特制分析特制分析O9999;#30= #4001;#31= #4003;#32= #4109;#10= #21 * COS#1;#11= #21 * SIN#1;#12= #22 * COS90 + #1;#13= #22 * SIN90 + #1;N1 G01 G91 X#10 Y#11 F300;N2 X#12 Y#13;N3 X-#10 Y-#11;N4 X-#12 Y-#13;G#30 G#31 F#32;M99;176特制分析特制分析 例:深孔钻削O00
49、01;G00 G90 Z50.0;G65 P9999 Z-25.0 R3.0 Q-10.0 F300;M30;O9999;#1= #18;#2= #18;#3= 0;WHILE#1 GT #26 DO1; #1= #1+ #17; IF#1 GE #26 GOTO1; #1= #26; G00 G90 Z#2+#3; G01 Z#1 F300; G00 Z#18; #2= #1; #3= 1.0;END1;M30;N1177特制分析特制分析例:内圆铣削XYRO9999;#30= #4001;#31= #4003;#32= #4109;#1=#13000+#7;#2=#18 - #1;IF #2
50、 LE 0 GOTO9;#3=#2/2;N1 G01 G91 X#3 Y#3 F#9;N2 G02 G17 X#3 Y-#3 R#3;N3 I-#2;N4 X -#3 Y-#3 R #3;N5 G01 X -#3 Y #3;G#30 G#31 G#32;M99;N9 #3000=1(OFFSET ERROR);O0001;G92 X0 Y0 Z0;G65 P9999 R50.0 D1 F300;M30;R:圆半径(#18)D:刀具半径补偿号(#7)F:进给速度(#9)178特制分析特制分析179特制分析特制分析例:圆周上等距钻孔BBBX:圆心坐标(#24)Y:圆心坐标(#25)Z:孔的深度(#