
新代数控车床宏程序说明.doc
38页一.用户宏程序的基本概用一 指令构成某功能, 并且象子程序一 存 在存 器中, 再把 些存 的功能由一个指令来代表, 行 只需写出 个代表指令, 就可以 行其相 的功能 在 里,所存 的一 指令叫做宏程序体 (或用 宏程序 ), 称 用 宏 其代表指令称 用 宏命令,也称作宏程序 用指用 宏有以下四个主要特1)在用 用 宏程序中可以使用 量,即宏程序体中能含有复 的表达2)能 行 量之 的各种运3)可以用用 宏指令 量 行 , 就象 多高 言中的 参函数或 程, 参能 形4)容易 程序流程的控制 使用用 宏 的主要方便之 在于由于可以用 量代替具体数 ,因而在加工同一 的工件 .只得将 的 予 量既可,而不需要 每个不同的零件都 一个程序 二. 基本书写格式 数控程序文档中,一般以“ %”字符作 第一行的起 , 行将被 行当 行含有关 字“ @MACRO ” 整个文档就会以系 所定 的 MACRO 法 理如果 行无 “ @MACRO ”关 此档案就会被 一般 ISO 程序文档格式 理,此 将不能 写用 宏和使用其 MACRO 法。
而当 写 ISO 程序文档 行一般可以省略,直接 写数控程序 @MACRO ”关 必 是大写字 于程序的注 可以采用“ //??”的形式, 和高 言 C++一 例一: MACRO 格式% @MACRO //用 宏程序文档,必 包含“ @MACRO ”关IF @1 = 1 THEG00 X100ELSG00 Z100END_IM99; 例二: ISO 格式文% 是 行,可当作档案用途 明,此行可有G00 X100G00 Z100G00 XG00 ZM99; 第 1 页 三. 用户宏程序的编写 如前所述, 量是指可以在用 宏程序中的地址 后代替具体数 ,在 用宏程序 行 的符号# i (i = 1,2,3,? )使用 量可以使用 宏程序具有通用性用 宏程序中可以使用多个 量,以 量 号 行 1、 量的形 量是用符号#或 @后面加上 量 号所构成的,即# i(i = 1, 2, 3,? 例如:# 5#10#1005也可用# [ <表达式> ] 的形式来表示例如:# [#100] # [#1001-1] # [#6/2其 ,通 用符号 @后面加上 量 号也可构成的 量,@ i(i =1,2,3,? 例如: @5@ [@5] 但一般地,由符号 @后面加上 量 号构成的 量称 全局 量,不提倡在用 宏程序中使用,具体 后面的介 2、 量的在地址符后的数 可以用 量置 例如若写成 F#33, 当# 33=1.5 ,与 F1.5 相同若写成 Z-#18, 当# 18=20.0 ,与 Z-20.0 相同但需要注意,作 地址符的 O、N、/等,不能引用 量例如, O#27、N#1 等,都是 3、未定 尚未被定 的 量,被称 空( VACANT ) 量# 0,@0 始 空, 常被用作空 量使用。
3.变量赋值和引数 量 :用 宏程序中 量 使用 运算符 “:=”,不可 用 “ =”符号因 在本系 中符号“ =” 是被 定 关系运算符,用来比 是否相等的 例如 #30:=100,会将 量 #30 整数 100;而 #30=100,将不能 量 #30 , 上是量 #30 是否与整数 100 相等 第 2 页 四.变量运算及变量表达式 1.用户宏运算符 要对变量进行各种运算操作就要用到运算符 ,它是“能对变量所存数据进行运算的符号” 本系统的 运算符及其优先级如表 3-2 所示 表 3-2 运算符及其优先级 运算名 符号 优先级 括号 (),[] 1 函数调用运算 <函数名 >(<参数列表 > ) 2 取负 - 3 求补运算 NOT 3 乘法运算 * 4 除法运算 / 4 模运算 /求余运算 MOD 4 加法运算 + 5 减法运算 - 5 关系运算 <,>,<=,>= 6 相等运算 = 7 不等运算 <> 8 布尔逻辑 /按位与 & ,AND 9 布尔逻辑 /按位 异或 XOR 10 布尔逻辑 /按位 或 OR 11 2、基本算数运算符 (1) +(加法运算符,如 3+5,#12+(2) -(减法运算符,或取负运算符,如 #33-16,-#1(3) *(乘法运算符,如 9*2 ,#13*8 ) (4) /(除法运算符,如 10/3, #43/15(5)MOD (模运算符,或称求余运算符,其两侧均应为整型数据,如 7 MOD4 的值为 3,当 #18=20 时 #18 MOD4 的值为 2) 3、算术表达式和运算符优先级 用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术 表达式,运算对象 可以是常数、变量、函数 等例如: #6*8/#32-1.5+#18+ ROUND (# 1) 这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表达式中的一个运算对象本系统按表表 3-2 规定了运算符的优先级和结合性。
在表达式求值时,先按运 算符的优先级别高低次序执行, 例如先乘除后加减如表达式 #12-#41*5 的左侧为减, 右侧为乘号,而乘号优先于减号,因此,相当于 #12-( #41*5) 如果在一个运算对象两侧的运算符的优先级别相同,如 #2-5+#23,则按规定的结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右 因此 5 先与减号结合,执行 #2-5 的运算,再执行加 #23 的运算这样“自左至右的结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也有“右结合性”的运算符,例如赋值运算符“: =”就是 4、关系运算符和关系表达式 关系运算符是逻辑运算中比较简单的一种所谓“关系运算”实际上就是“比较运算”将两个值进行比较,判断比较的结果是否符合给定的条件 例如,#3>10 是一个关系表达式, 大于号(>)是一个关系运算符, 如果 #3=12,则满足给定的“ #3>10”条件,因此关系表达式的值为“真”(即“条件满足”);如果 #3=6,不满足“ #3>10”条件,则称关系表达式的值为“假”本系统提供 6 种关系运算符: (1) < (小(2) <= (小于或等(3) > (大(4) >= (大于或等(5) = (等于) (6) <> (不等于) 优先级相同(高) 优先级(较高) 优先级(低) 关于优先次序: 1、前 4 种关系运算符(<,<=,>, >=)的优先级别相同,它们却高于关系运算符“ =”,而“ =”又高于“ <>2、关系运算符的优先级低于算术运算符3、关系运算符的优先级高于赋值运算用两个关系运算符将两个表达式连接起来的式子,称为关系表达式例如: #6> 36,#13+4<>#23 关系表达式的值是一个逻辑值,即“真”或“假”。
例如,若 #12 为 8,则关系表达式“ #12=10”的值为“假”,“ #12>=6”的值为“真” 5、逻辑运算和逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式本系统提供 6 种逻辑运算符和逻辑运算 (1) & ,AND 逻辑与 (2) XOR逻(3) OR 逻辑异或 它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算举例如#1 AND #2 若#1 、 #2 为真,则 #1 AND #2 为真 #1 OR #2 若#1 、 #2 之一为真,则 #1 XOR #2 为真 逻辑运算符低于关系运算符,见图 3-1 算术运算符 (高) 关系运算符 逻辑运算符 (低) 赋值运算符 图 3-1 五. 用户宏程序的流程控制 所谓程序的流程( Flow Control )是通过控制程序的执行方向,进而掌握程序动态这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编写数控代码的一大理由用户宏程序的流程控制包括无条件判断、循环控制、无条件转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。
1、条件判断 判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方面的语句有 IF 和 CASE 语句 1、IF 条件语句 1)基本语法: IF <条件表达式 > THEN →<操作 >→ELSEIF <条件表达式 > THEN → <操作 >→ ELSE→ <操作 >→END_IF ;说明: IF 条件判断,根据真假情况到指定的地方去执行程序 例% @MACRO // 启动 MACRO #1 := 3.0;G01 X20. Z15. F200;IF #1 = 1 THEN;X(1.0*1); Z(1.0*1)ELSEIF #1 = 2 THEN;X(1.0*2); Z(1.0*2)ELSEIF #1 = 3 THEN;X(1.0*3); Z(1.0*3)ELSE;X(1.0*4); Z (1.0*4END_IF;X(1.0) Z(1.0)M30;然而在实际使用中,可以有以下一些变形: 2)变形 1语法: IF <条件表达式 > THE N→ <操作 >→ELSE→<操作 >→ END_IF ; 3)变形 2语法IF <条件表达式 > THEN →<操作 >→END_IF 编程时可根据需要选择合适的语法格式。
2、循环控制 1、REPEAT 直到型循语REPEAT<循环体 UNTIL <条件表达式 > END_REPEAT 说明: REPEAT 直到型循环控制,先执行循环体,后判断条件表达式,当条件 满足时退出循环 例如% @MACRO // 启动 MACRO #10 := 30#11 := 22.5.#12 := #10/#13 := #11/2#14 := 2.#15 := 1.5;G01 X#12 Z#13 F200.REPEATG00 X(#12+#14) Z (#13+#15)G01 X(#12+#14) Z (#13-#15)X(#12-#14) Z (#13-#15)X(#12-#14) Z (#13+#15X(#12+#14) Z(#13+#15#14 := #14 + 2.#15 := #15 + 1.5;UNTIL (#14 > #12) OR (#15 > #13) END_REPEATX(1.0) Z(1.0M30; 3 . WHILE 当型循环语法WHILE <条件表达式 > DO →<循环体 >→END_WHILE ; 说明: WHILE 当型循环控制,先判断条件表达式,当条件满足时执行循环体, 否则退出循环。
例如: % @MACRO; #10 := 20.; #11 := 15.; #12 := #10/2; #13 := #11/2; #14 := 2.0#15 := 1.5;G01 X#12 Z#13 F200.0WHILE (#14 <= #12) AND (#15 <= #13) DOG00 X。












