宏程序使用说明
宏程序编程教程范文

宏程序编程教程范文一、什么是宏程序编程?宏程序是一种程序开发技术,它允许程序员在编写源代码时使用宏指令,用于执行一系列预定义的操作。
它通常用于简化重复性的工作,并提高代码的可维护性和可读性。
二、宏程序的基本语法1.定义宏指令在宏程序中,可以使用"#define"指令定义宏指令。
宏指令定义的基本语法格式如下所示:#define MACRO_NAME(parameter1, parameter2, ...) code其中,MACRO_NAME是宏指令的名称,parameter1、parameter2等是宏指令的参数,在code中可以使用这些参数。
宏指令的参数可以是任意的数据类型,如整数、字符串等。
2.调用宏指令在源代码中,可以使用宏指令进行调用。
宏指令的调用形式如下所示:MACRO_NAME(argument1, argument2, ...)其中,MACRO_NAME是宏指令的名称,argument1、argument2等是宏指令的参数,这些参数将替换宏指令定义中的参数。
三、宏程序的应用实例下面是一个简单的宏程序示例,用于计算两个数的和:#define ADD(a, b) ((a) + (b))int maiint num1 = 10;int num2 = 20;int sum = ADD(num1, num2);printf("The sum is %d\n", sum);return 0;上面的示例中,"ADD(a, b)"是一个宏指令,它的定义是将参数a和b相加。
在main函数中,调用了ADD宏指令,传入了num1和num2作为参数,它将替换成"((num1) + (num2))",最终计算出两个数的和并赋值给sum变量。
四、宏程序的优点和注意事项1.优点宏程序可以提高代码的可读性和可维护性,通过使用宏指令可以将复杂的操作封装为简单的函数,提高代码的可读性。
新代数控车床宏程序说明

一.用户宏程序的基本概念用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。
在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。
其代表指令称为用户宏命令,也称作宏程序调用指令。
用户宏有以下四个主要特征:1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;2)能够进行变量之间的各种运算;3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参;4)容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。
二.基本书写格式数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。
当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。
如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。
而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。
“@MACRO”关键词必须是大写字母。
对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。
例一:MACRO格式文档% @MACRO //用户宏程序文档,必须包含“@MACRO”关键词IF @1 = 1 THENG00 X100.;ELSEG00 Z100.;END_IF;M99;例二:ISO格式文档% 这是标题行,可当作档案用途说明,此行可有可无G00 X100.;G00 Z100.;G00 X0;G00 Z0;M99;三.用户宏程序的编写如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏程序时进行赋值的符号#i (i=1,2,3,…)。
使用变量可以使用户宏程序具有通用性。
FANUC宏程序详解

FANUC宏程序详解在FANUC系统中,宏程序是一种非常重要的功能,通过编写宏程序,我们可以让机器在无人值守的情况下完成一系列复杂的操作。
本文将对FANUC宏程序进行详细地介绍,包括宏程序的作用、编写方法、语法规则等方面。
1. 宏程序的作用宏程序是指一组可以重复使用的指令序列,通常用于执行一些常见的任务,例如生产线上的自动化操作、零件加工等。
通过编写宏程序,我们可以节省大量的时间和人力成本,提高整个生产线的效率和产能。
在FANUC系统中,宏程序主要有以下两个作用:1.1 缩短程序编写时间FANUC系统使用G代码编写程序,编写复杂的G代码序列会消耗大量的时间和精力。
而宏程序可以将常用的代码封装起来,减少了程序的编写时间。
例如,在加工中心上,我们可以编写一个宏程序来完成换刀操作,这样就可以省去手动编写换刀程序的时间。
1.2 提高工作精确度宏程序可以确保在每一次执行相同的任务时保持一致性,从而提高工作的精确度和可靠性。
例如,在装配生产线上,我们可以编写一个宏程序来完成紧固螺丝的操作,这样就可以确保每次紧固力度一致,避免螺丝过紧或过松的情况发生。
2. 编写宏程序在FANUC系统中,我们可以通过两种方式来编写宏程序:手动编写和自动生成。
手动编写是指通过手工输入代码来编写宏程序,而自动生成则是指通过FANUC系统自动生成宏程序。
2.1 手动编写手动编写是编写宏程序的最常见方式。
在手动编写宏程序时,我们需要按照FANUC系统的语法规则来编写G代码序列,并保存在一个文件中。
一般情况下,宏程序的文件扩展名为“.mac”。
以下是一个简单的宏程序:O1234G00 X10 Y10G01 Z-5 F500M30上述宏程序的功能是将机器头移动到坐标(10,10)点处,然后向下移动5个单位,同时切削速度为500,最后停止机床。
2.2 自动生成除了手工编写宏程序,我们还可以通过FANUC系统自动生成宏程序。
在FANUC系统中,系统提供了各种预制宏程序,我们可以在需要的时候直接调用这些宏程序。
FANUC用户宏程序编程操作说明

FANUC用户宏程序编程操作说明一、宏程序的概念和作用宏程序是一种FANUC机器人控制器中的编程语言,用于定义和执行一系列操作指令。
宏程序可以通过使用特定的编程语法,实现自动化的工作过程。
在机器人控制器上创建和调用宏程序可以有效提高生产效率,减少人力成本。
4.确认并保存宏程序。
确保没有语法错误,并将其保存在机器人控制器的内存中。
三、宏程序的调用和执行1.在主程序中调用宏程序。
可以使用特定的指令来调用已创建的宏程序,以便在工作流程中执行相关的任务。
2.配置宏程序的输入参数。
在调用宏程序之前,可以设置相关的输入参数,以便宏程序能够根据不同的情况执行不同的动作。
3.执行宏程序。
一旦宏程序被调用和配置完成,机器人控制器将根据宏程序中定义的指令序列依次执行相应的动作。
4.检查宏程序执行结果。
可以通过监视机器人、制作运动轨迹的视觉效果或通过输出信号检查机器人执行宏程序后的运动状态,确保宏程序的执行效果符合预期。
四、宏程序的调试和优化1.进行宏程序的语法和逻辑检查。
在调用和执行宏程序之前,可以使用FANUC机器人控制器提供的调试工具对宏程序进行语法和逻辑检查,以确保程序的正确性。
2.调整宏程序的时间和空间复杂度。
根据实际应用需求和机器人控制器的性能,可以对宏程序进行适当的优化,以减少程序执行时间和占用的内存空间。
3.进行宏程序的场景仿真。
在实际生产环境之前,可以使用机器人控制器提供的仿真工具对宏程序进行虚拟场景的测试,以确保宏程序的执行效果满足预期,同时减少实际生产中的错误和故障。
五、宏程序的应用示例1.示教和运动控制:通过将示教动作转化为相应的宏指令,可以实现机器人在特定位置和角度上的运动控制,以完成精确的操作。
2.任务自动化:将一系列任务步骤组织成宏程序,可以实现从物料处理到产品组装等一系列任务的自动化执行。
3.智能感应:通过编写合适的宏指令,可以实现机器人对环境的感知和判断,并根据实际情况自动调整动作和运动轨迹。
MACRO Menu 宏程序编辑手册

间接宏程序编辑
可使用任何的 TEXT EDITOR 文字编写器作编写, 或使用 MEGASYS 下的 编写器作编写, 如下:
“ ’ ”作说明行 一行命令 Tab 7 (不可用 Tab) 所有程序的结束必须 加入 “END” ◦
大写英文字
Evertech Electronics Ltd.
1
January, 2004
特殊命 令
一般为直接使用的命令, 只可写在直接输入处, 不可写在 MACRO 檔中◦ 例如: 报警说明连动档, 这档是直接被使用, 一般只能写在直接使用处, 如下: MAC001, MSG {M1} MSG: 为报警连动交件, 文件为 M1.MSG 存放于\MEGASYS\目录下: 请参考 MSG 命令的编写方法◦
vii. viii. ix. 在文件名称方框内, 输入文件名称◦ 按下存盘键, 把这组设定储存起来◦ 在[编辑系统参数], 选择[系统参数编辑]里的[操作 员密码编辑] ◦ 出现一个窗口 – 操作员授权编辑◦ 选按需要设置指令的操作员档案, 在该操作员档 案里, 在登陆宏程序内输入指令◦
x. xi.
宏程序编辑手册
页数
錯誤! 尚未定義書籤。 錯誤 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 尚未定義書籤。 錯誤
錯誤! 錯誤 尚未定義書籤。 錯誤! 尚未定義書籤。 錯誤 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 尚未定義書籤。 錯誤 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 尚未定義書籤。 錯誤 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 錯誤 尚未定義書籤。 錯誤! 尚未
台湾新代宏程序(Macro)用户手册

鑫泰科技 2007/02/10
�
目录
第一章 用户宏编程的基本概�和基本书写格式 ----------------------------------------4 第一节 用户宏编程的基本概� -------------------------------------------------------4 第二节 基本书写格式-------------------------------------------------------------------6 一、用户宏文档格式 --------------------------------------------------------------6 二、普通数控程序段格式 --------------------------------------------------------6 三、用户宏程序段格式 -----------------------------------------------------------8
变量�1 及�4 来代表。
用户宏有以下四个主要特征�
1�在用户用户宏程序中可以使用变量�即宏程序体中能含有复杂的表达式�
2�能够进行变量之间的各种运算�
3�可以用用户宏指令对变量进行赋值�就象许多高级语言中的带参函数或过程�
实参能赋值给形参�
4�容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值�因而在加工
第三章 宏程序的调用----------------------------------------------------------------------- 27 第一节 简单宏调用-------------------------------------------------------------------- 27 一、简单宏调用指� ------------------------------------------------------------ 27 二、模态信息的回复 ------------------------------------------------------------ 27 第二节 模态宏调用-------------------------------------------------------------------- 27 一、模态宏调用指� G66 ------------------------------------------------------ 27
法兰克fanuc系统编程用户宏程序教程

法兰克Fanuc系统编程用户宏程序教程一、认识法兰克Fanuc系统法兰克Fanuc系统是数控机床领域中广泛应用的一种控制系统,其强大的编程功能为用户提供了极大的便利。
在本教程中,我们将重点介绍用户宏程序的编写与应用,帮助您更好地掌握法兰克Fanuc系统的编程技巧。
二、宏程序基础知识1. 宏程序概念宏程序是一种简化编程过程的方法,它允许用户将复杂的操作步骤封装成一个程序,以便在后续编程中重复调用。
通过使用宏程序,可以大大提高编程效率。
2. 宏程序分类法兰克Fanuc系统中的宏程序分为两类:系统宏程序和用户宏程序。
本教程主要针对用户宏程序进行讲解。
3. 宏程序编写原则(1)简洁明了:尽量使宏程序结构清晰,便于阅读和维护。
(2)通用性强:编写宏程序时,要考虑其在不同场景下的适用性。
(3)易于扩展:预留接口,方便后期对宏程序进行功能扩展。
三、用户宏程序编写步骤1. 确定宏程序功能在编写宏程序之前,要明确宏程序需要实现的功能。
例如,可以实现一个用于加工圆形轮廓的宏程序。
2. 设计宏程序结构(1)宏程序参数:定义输入输出参数,以便在不同场景下调用。
(2)宏程序主体:实现宏程序功能的代码部分。
(3)宏程序调用:在其他程序中调用宏程序。
3. 编写宏程序代码(1)宏程序参数定义:100 = 圆心X坐标101 = 圆心Y坐标102 = 半径103 = 起始角度104 = 终止角度(2)宏程序主体:200 = 100 + 102 COS[103]201 = 101 + 102 SIN[103]G01 X[200] Y[201]IF [103 LT 104] THEN103 = 103 + 1GOTO 100ENDIF(3)宏程序调用:G65 P1000 A100 B101 C102 D103 E104法兰克Fanuc系统编程用户宏程序教程五、实战演练:编写一个钻孔宏程序在这一部分,我们将通过一个具体的实例,来实践如何编写一个用于钻孔的宏程序。
宏程序编程实例与技巧方法

宏程序编程实例与技巧方法宏程序是一种解决重复性工作的自动化工具,通过编写宏代码,可以一次性完成繁琐的操作,提高工作效率。
下面是关于宏程序编程的实例和技巧方法。
一、宏程序编程实例:1.宏程序自动填充表格例如,在Excel中有一个表格需要填写,每一行都有一系列的列需要填写相同的内容。
可以通过编写宏程序来自动填充表格。
首先,录制宏,选择填写表格的第一行,然后在宏中添加循环语句,使其重复执行填写操作,直到填写完所有行。
2.宏程序数据处理例如,有一个包含大量数据的Excel表格,需要进行一系列的数据处理操作,如排序、筛选、转换等。
可以通过编写宏程序来批量执行这些操作。
首先,录制宏,选择第一个数据处理操作,然后在宏中添加其他操作,使其顺序执行。
再将宏应用于需要处理的表格,即可自动进行数据处理。
3.宏程序自动生成报告例如,在Word中需要编写包含大量数据的报告,需要根据数据的不同生成不同的内容。
可以通过编写宏程序来自动生成报告。
首先,录制宏,选择第一个数据生成操作,然后在宏中添加条件语句,根据数据的不同生成不同的内容,最后将宏应用于需要生成报告的位置,即可自动生成报告。
二、宏程序编程技巧方法:1.合理规划宏程序结构在编写宏程序之前,应该先规划好宏程序的结构。
将整个操作分解为多个步骤,然后为每个步骤编写相应的宏代码。
这样可以使代码结构清晰,易于维护和修改。
2.使用合适的循环语句和条件语句在宏程序中,经常需要对一组数据或一系列操作进行重复执行或根据条件进行判断。
因此,在编写宏程序时,应该熟练掌握循环语句(如for循环、while循环)和条件语句(如if语句、switch语句),以便灵活运用。
3.添加错误处理机制在宏程序中,有时会遇到意外情况,如数据不完整、文件不存在等。
为了提高宏程序的健壮性,需要添加错误处理机制。
可以使用Try...Catch语句来捕获异常,并给出相应的错误提示。
4.使用合适的变量和函数命名在宏程序中,合适的变量和函数命名可以使代码更易读、易懂。
系统宏程序使用说明

EN3D8系统宏程序使用说明1 接触式测量 (2)1.1 公共宏变量参数 (2)1.1.1 测头信号参数 (2)#1296 测头信号索引 (2)#1297 测头信号报警开启属性 (2)#1298 测头信号报警关闭属性 (2)1.1.2 测针几何参数 (2)#1285 测球名义半径 (2)1.1.3 标定标准块几何参数 (2)#1286 标定圆环(或圆台、圆球)半径 (2)1.1.4 测头定向参数 (2)#1290 测头定向参考角度 (2)1.1.5 测量运动参数 (2)#1291 首次触碰进给速度 (2)#1292 二次触碰回退距离 (2)#1293 二次触碰进给速度 (2)1.1.6 标定补偿量参数 (2)#1280 测头定向触碰方式的测量标定补偿量 (2)#1281 测头非定向触碰方式的+X向测量标定补偿量 (2)#1282 测头非定向触碰方式的—X向测量标定补偿量 (2)#1283 测头非定向触碰方式的+Y向测量标定补偿量 (3)#1284 测头非定向触碰方式的—Y向测量标定补偿量 (3)1.2 基础的测量宏程序 (3)O9100 测头任意方向测量 (3)1.3 测头标定宏程序 (4)1.3.1 非定向触碰方式的标定 (4)O9119 标定圆环原点自动校正和测头4方向标定 (4)1.3.2 定向触碰方式的标定 (5)O9129 标定圆环原点自动校正和测头标定 (5)1.4 非定向触碰方式的测量宏程序 (6)O9111 测头+X向测量 (6)O9112 测头+Y向测量 (7)O9114 测头—X向测量 (8)O9115 测头—Y向测量 (9)1.5 定向触碰方式的测量宏程序 (10)O9120 测头XY平面任意方向测量 (10)1 接触式测量1.1 公共宏变量参数1.1.1 测头信号参数#1296 测头信号索引按照目前的测头标准接线设为354。
#1297 测头信号报警开启属性按照测头厂商类型,马波斯设为834,雷尼绍设为578。
数控宏程序编程方法技巧与实例

数控宏程序编程方法技巧与实例一、数控宏程序编程的基本方法:1.定义宏变量:宏变量是宏程序中使用的变量,用于传递参数或保存临时数据。
定义宏变量可以使用#VAR指令,例如“#VARx=10”表示定义一个宏变量x并赋值为10。
2. 定义宏:宏是一个带有参数的程序段,可以通过调用宏来实现一系列操作。
定义宏可以使用#MACRO指令,例如“#MACRO move(x,y) G0Xx Yy”表示定义一个名为move的宏,参数为x和y,宏体为“G0 Xx Yy”。
3. 调用宏:调用宏可以使用#CALL指令,例如“#CALLmove(100,200)”表示调用名为move的宏,并传递参数为100和200。
4.结束宏程序:使用#END指令结束宏程序的编写。
二、数控宏程序编程的技巧:1.使用循环结构:可以使用循环结构来简化重复性的操作,提高程序的效率。
例如,使用FOR循环可以实现多次重复执行同样的操作。
2.使用条件判断:在宏程序中可以使用条件判断来根据不同的情况执行不同的操作。
例如,使用IF-THEN-ELSE语句可以根据条件的结果选择执行不同的指令。
3.使用局部变量:在宏程序中可以定义局部变量,用于保存临时数据。
使用局部变量可以减少全局变量的使用,提高程序的可读性和可维护性。
4.通过参数传递数据:宏程序可以通过参数来传递数据,使得宏的使用更加灵活。
在调用宏时,可以传递不同的参数来实现不同的操作。
三、数控宏程序编程的实例:以制作一个矩形的宏程序为例,实现自动绘制不同尺寸的矩形。
```#VAR width=100#VAR height=200#MACRO rectangle(x,y)G0XxYyG1 X(x+width) YyG1 X(x+width) Y(y+height)G1 Xx Y(y+height)G1XxYy#END#CALL rectangle(0,0)```上述的宏程序定义了一个名为rectangle的宏,参数为x和y,表示矩形的左上角坐标。
标准宏程序

A- 2
圆周上的点阵(2) O9688 #11=FIX[ABS[#11]] #13=FIX[#13] IF[#1LT1]GOTO11 IF[ABS[#11-5]GT4]GOTO12 IF[ABS[#13]LT1]GOTO13 IF[#11GTABS[#13]]GOTO14 IF[#24EQ#0]GOTO16 IF[#25EQ#0]GOTO16 IF[#18GT0]GOTO50 N10#3000=175(L10 ERR. R) N11#3000=175(L10 ERR. A) N12#3000=175(L10 ERR. H) N13#3000=175(L10 ERR. M) N14#3000=175(L10 H GT M) N15#3000=175(L10 C-SEQ.) N16#3000=175(L10 ERR. X,Y) N50#33=1 WHILE[#33LE[#11-1]]DO1 IF[#33]GE#[#33+1]GOTO15 #33=#33+1 END1 #10=360/#13 #31=#4003 #32=1 #33=1 WHILE[#33LEABS[#13]]DO1 IF[#33NE#[#32]]GOTO60 #32=#32+1 GOTO70 N60#12=#17+#10*[#33-1] #14=#18*COS[#12] #15=#18*SIN[#12] G90X[#24+#14]Y[#25+#15] N70#33=#33+1 END1 G#31M99
反复粗加工(X-Y 平面)
因为切深没到 Z 点,增加切深
如图
X[#24-#10*#28] #14=#21-#27 #15=#22-#27 #28=#15/2 #7=#15+#1-#22 IF[#7GT0]GOTO170 #7=#0 #12=#14 #13=#15
数控加工宏程序概述及用法

数控加工宏程序概述及用法宏程序的定义:由用户编写的专用程序,它类似于子程序,可用规定的指令作为代号,以便调用。
宏程序的代号称为宏指令。
宏程序的特点:宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
1、宏程序的简单调用格式宏程序的简单调用是指在主程序中,宏程序可以被单个程序段单次调用。
调用指令格式:G65 P(宏程序号)L(重复次数)(变量分配)其中:G65――宏程序调用指令P(宏程序号)――被调用的宏程序代号;L(重复次数)――宏程序重复运行的次数,重复次数为1时,可省略不写;(变量分配)――为宏程序中使用的变量赋值。
宏的书写调用1)直接调用:主程序体的一部分2)子程序调用:M98、M99(不含参数)3)含变量调用4)自定义调用:可以自己定义一个代码,G71、G72、G76均由宏程序编写宏程序与子程序相同的一点是,一个宏程序可被另一个宏程序调用,最多可调用4重。
2、宏程序的编写格式宏程序的编写格式与子程序相同。
宏程序内容中,除通常使用的编程指令外,还可使用变量、算术运算指令及其它控制指令。
变量值在宏程序调用指令中赋给。
3、变量变量用变量符号# 和后面的变量号指定。
例如#1表达式可以用于指定变量号此时表达式必须封闭在括号中例如#[#1+#2-12]当在程序中定义变量值时小数点可以省略例当定义#1=123 变量#1的实际值是123.000改变引用的变量值的符号要把负号一放在#的前面例如G00X—#1(1)变量的分配类型I, 这类变量中的文字变量与数字序号变量之间有如下表确定的关系。
上表中,文字变量为除G、L、N、O、P以外的英文字母,一般可不按字母顺序排列,但I、J、K例外;#1~#26为数字序号变量。
例:G65 P1000 A1.0 B2.0 I3.0则上述程序段为宏程序的简单调用格式,其含义为:调用宏程序号为1000的宏程序运行一次,并为宏程序中的变量赋值,其中:#1为1.0,#2为2.0,#4为3.0。
宏程序使用说明

第五章用户宏程序5.1变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:●变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]●变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量.#1-#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199 #500-#999 公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000--- 系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.●变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警NO.111.●小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
●变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
宏程序while的用法实例

宏程序while的用法实例一、程序设计语言中的循环结构在编程中,循环结构是一种重要的控制流程,它可以使程序按照预定条件重复执行特定的代码块。
而在宏程序设计中,循环结构同样起着重要的作用。
宏程序通过使用while循环来实现重复执行某些任务,以提高代码的可维护性和可读性。
本文将介绍宏程序中while循环的用法,并给出几个实例说明其应用场景。
二、while循环基本语法及作用while循环是一种顺序结构,在满足指定条件时会一直重复执行代码块,直到条件不再满足才会跳出循环。
其基本语法如下:```while (condition) {// 待执行代码块}```其中`condition`是一个逻辑判断式,当`condition`为真时,就会执行代码块;否则就会跳出循环。
通过合理设置`condition`条件,我们可以灵活控制循环次数和退出条件。
三、宏程序中简单实例:打印九九乘法表为了详细解释while循环在宏程序中的应用,我们来看一个简单示例:打印九九乘法表。
```vbaSub PrintMultiplicationTable()Dim i As Integer, j As Integeri = 1While i <= 9j = 1While j <= iDebug.Print j & " * " & i & " = " & (i * j)j = j + 1WendDebug.Print ""i = i + 1WendEnd Sub```在这个宏程序中,我们通过两个嵌套的while循环来实现打印九九乘法表的功能。
外层的循环控制行数,内层的循环控制列数。
四、宏程序中复杂实例:数据处理与导出while循环在宏程序中还可以用于实现复杂的数据处理和导出功能。
例如,我们有一个包含学生信息的电子表格,并且需要根据一定条件筛选出满足条件的学生信息并导出到另一个电子表格中。
宏程序的技巧

宏程序的技巧宏程序是一种能够自动执行一系列命令和操作的程序,通常用于简化复杂或重复的任务。
它们可以通过运行宏代码来实现,这些代码通常由一系列的命令组成,可以在需要的时候轻松地调用。
以下是使用宏程序的一些技巧,可以提高效率和准确性:1. 宏代码的组织结构:在编写宏程序之前,先确定好程序的组织结构。
可以按照任务的逻辑顺序,将宏代码分成多个模块或子过程,以便于编写、调试和维护。
2. 参数的使用:宏程序可以接受参数,这样可以增加其灵活性。
通过传递参数,可以根据需求修改宏的行为,从而使其适应不同的场景。
在编写宏代码时,应该事先考虑到可能需要修改的变量,并将其作为参数。
3. 错误处理:在宏程序中,可能会遇到各种异常情况。
为了提高程序的稳定性和可靠性,应该考虑这些异常情况,并编写相应的错误处理机制。
可以使用条件语句来检测错误,并执行相应的错误处理代码。
4. 注释和文档:编写宏程序时,应该尽量添加注释,以便其他人能够理解程序的功能和设计思路。
注释应该清晰明了,避免过于冗长。
此外,还可以编写宏程序的文档,以便用户了解如何调用和使用宏。
5. 代码重用:在编写宏程序时,尽量重用已有的代码。
如果有一段代码在多个宏中都要使用,可以将其提取到单独的子过程中,并在需要的地方进行调用。
这样可以减少代码的重复性,提高代码的可维护性。
6. 调试和测试:编写宏程序时,要养成良好的调试和测试习惯。
在编写完成后,应该进行充分的测试,确保程序的功能正常,并且在各种情况下都能正确处理。
当程序遇到问题时,要学会使用调试工具来定位和修复错误。
7. 性能优化:在编写宏程序时,还应该考虑程序的性能问题。
可以采用一些技巧来提高程序的执行效率,如减少不必要的计算、合并相邻的操作、使用更高效的算法等。
但在优化的过程中,也要注意不要过度优化,以免影响代码的可读性和可维护性。
8. 版本控制:对于复杂的宏程序,尤其是在团队中开发时,使用版本控制工具是非常重要的。
新代数控车床宏程序说明书

一.用户宏程序的基本概念用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。
在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。
其代表指令称为用户宏命令,也称作宏程序调用指令。
用户宏有以下四个主要特征:1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;2)能够进行变量之间的各种运算;3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参;4)容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。
二.基本书写格式数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。
当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。
如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。
而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。
“@MACRO”关键词必须是大写字母。
对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。
例一:MACRO格式文档% @MACRO //用户宏程序文档,必须包含“@MACRO”关键词IF @1 = 1 THENG00 X100.;ELSEG00 Z100.;END_IF;M99;例二:ISO格式文档% 这是标题行,可当作档案用途说明,此行可有可无G00 X100.;G00 Z100.;G00 X0;G00 Z0;M99;三.用户宏程序的编写如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏程序时进行赋值的符号#i (i=1,2,3,…)。
使用变量可以使用户宏程序具有通用性。
宏程序使用说明范文

宏程序使用说明范文首先,宏程序的使用需要借助宏语言或者脚本语言。
这些语言提供了一系列命令和函数,用于编写自动化操作的代码。
宏程序可以记录、保存和回放用户的操作,还可以进行条件判断和循环操作。
在使用宏程序之前,我们需要先了解一些基本概念和术语。
首先是录制操作。
录制操作是指将用户在软件中的一系列步骤记录下来,以便将来再次执行。
录制操作可以帮助用户快速自动化重复性工作。
其次是宏命令。
宏命令是指一系列被录制和保存的操作,可以在需要时一次性执行。
用户可以为每个宏命令定义一个独立的快捷键或者按钮,以便快速调用和执行。
下面以电子表格软件为例,来演示如何使用宏程序。
我们假设我们有一个由多个单元格组成的表格,需求是将每一行的数据相加,并在最后一列显示总和。
首先,我们需要录制一个宏,用于执行这个操作。
1.打开电子表格软件,并创建一个新的表格。
2.在第一行输入需要相加的数据。
3.选择第一行中的单元格,点击工具栏中的录制宏按钮(通常是一个圆红点)。
5.停止录制宏,并保存宏命令。
现在,每当我们需要计算一行数据的总和时,只需点击宏命令按钮,即可自动执行录制的操作并显示结果。
宏程序不仅可以用于简化重复性操作,还可以应用于更复杂的任务。
2.图像处理:在图形设计软件中,可以使用宏程序批量处理图像,例如自动调整大小、应用滤镜效果或者修改颜色平衡。
3.办公自动化:在办公套件中,可以使用宏程序自动创建邮件、生成报告、生成幻灯片等。
4.网络自动化:在网络管理工具中,可以使用宏程序执行一系列网络操作,例如自动登录和配置路由器、自动执行网络测试和监控等。
总结起来,宏程序是一种强大的自动化工具,可以帮助我们快速、高效地完成重复性工作。
通过对宏语言或者脚本语言的学习和理解,我们可以更好地利用宏程序来简化工作流程,并提高工作效率。
但是在使用宏程序时,我们也需要注意安全性和兼容性问题,以确保宏程序的正常使用和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章用户宏程序变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:●变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0空变量该变量总是空,没有值能赋给该变量.#1-#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199 #500-#999公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000---系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警.小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是。
变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。
双轨迹(双轨迹控制)的公共变量对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数和6037的设定,某些公共变量可同时用于两个轨迹。
未定义的变量当变量值未定义时,这样的变量成为空变量。
变量#0总是空变量。
它不能写,只能读。
引用当引用一个未定义的变量时,地址本身也被忽略。
当#1=<空>当#1=0G90 X100 Y#1↓G90 X100G90 X100 Y#1↓G90 X100 Y0(b) 运算除了用<空>赋值以外,其余情况下<空>与0相同。
当#1=<空>时当#1=0时#2=#1↓#2=<空>#2=#1↓#2=0#2=#*5↓#2=0#2=#*5↓#2=0#2=#1+#1↓#2=0#2=#1+#1↓#2=0(c)条件表达式EQ和NE中的<空>不同于0。
当#1=<空>时当#1=0时#1EQ#0↓成立#1EQ#0↓不成立#1 NE #0↓成立#1 NE #0↓不成立#1 GE #0↓成立#1 GE #0↓不成立#1 GT #0↓不成立#1 GT #0↓不成立限制程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:0#1;/#2G;N#;算术和逻辑运算下面表中列出的运算可以在变量中执行。
运算符右边的表达式可包含常量和或由函数或运算符组成的变量。
表达式中的变量#j和#k可以用常数赋值。
左边的变量也可以用表达式赋值。
功能格式备注定义#i=#j加法减法乘法除法#i-#j+#k; #i-#j-#k; #i-#j*#k; #i-#j/#k;正弦反正弦余弦反余弦正切反正切#i=SIN[#j];#i=ASIN[#j];#i=COS[#j];#i=ACOS[#j];#i=TAN[#j];#i=ATAN[#j];角度以度数指定,90°30’表示为度。
平方根绝对值舍入上取整下取整自然对数指数函数#i=SQRT[#j];#i=ABS[#j];#i=ROUNND[#j]; #i=FIX[#j];#i=FUP[#j];#i=LN[#j];#i=EXP[#j];或异或与#i-#jOR#k;#i-#jXOR#k;#i-#jAND#k;逻辑运算一位一位地按二进制数执行。
从BCD转为BIN 从BIN转为BCD #i=BIN[#j];#i=BCD[#j];用于与PMC的信号交换。
说明:角度单位函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。
如90°30’表示为度。
●ARCSIN # i= ASIN[#j](1)取值范围如下:当参数(#0)NAT位设为0时,270°~90°当参数(#0)NAT位设为1时,-90°~90°(2)当#j超出-1到1的范围时,发出P/S报警.(3)常数可替代变量#jARCCOS #i=ACOS[#j]取值范围从180°~0°当#j超出-1到1的范围时,发出P/S报警.常数可替代变量#jARCTAN #i= ATAN[#j]/ [#k]指定两个边的长度,并用斜杠(/)分开取值范围如下:当NAT位(参数,#0)设为0时;0°到360°当NAT位(参数,#0)设为1时;-180°到180°(3) 常数可替代变量#j●自然对数#i=LN[#j];(1) 注意,相对误差可能大于10-8.(2) 当反对数(#j)为0或小于0时,发出P/S报警.(3) 常数可替代变量#j。
●指数函数#i=EXP[#j](1) 注意,相对误差可能大于10-8。
(2) 当运算结果超过(j大约是110)时,出现溢出并发出P/S报警.。
(3) 常数可替代变量#j。
●ROUND(舍入)函数(1) 当算术运算或逻辑运算指令IF或WHILE中包含ROUND函数时,则ROUND函数在第一个小数位置四舍五入. 当执行#1= ROUND[#2];此处#2=,变量1的值是。
(2) 当在NC语句地址中使用ROUND函数时,ROUND函数根据地址的最小设定单位将指定值四舍五入●上取整下取整CNC处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小于原数的绝对值为下整数.对于负数的处理应小心.算术与逻辑运算指令的缩写程序中指令函数时,函数名的前两个字符可以用于指定该函数.ROUND→ROFLX→FI运算次序函数乘和除运算加和减运算括号嵌套括号用于改变运算次序,括号可以使用5级,包括函数内部使用的括号.当超过5级时,出现P/S报警.限制●括号([,])用于封闭表达式.注意,圆括号用于注释.●运算误差运算时,可能出现误差.注: 1.相对误差取决于运算结果.2.使用两类误差的较小者.3.绝对误差是常数,而不管运算结果.4.函数TAN执行SIN/COS.5.如果SIN/COS或TAN函数的运算结果小于10X10-8或由于运算精度的限制不为0的话,设定参数#1为1,则运算结果可以规算为0.(1) 变量值的精度约为8位十进制数.当在加/减速中处理非常大的数时,将得不到期望的结果.(2) 还应该意识到,使用条件表达式EQ,NE,GE,和LT时可能造成误差.(3) 使用下取整指令时应小心.●除数当在除法或TAN[90]中指定为0的除数时,出现P/S报警宏程序语句和NC语句下面的程序段为宏程序语句:◆包含算术或逻辑运算(=)的程序段.◆包含控制语句的程序段◆包含宏程序调用指令的程序段除了宏程序以外的任何程序段都为NC语句.说明:与NC语句的不同即使置于单程序段运行方式,机床也不停止.但是,当参数#5SBM设定为1时,在单程序段方式中,机床停止.在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理.与宏程序语句有相同性质的NC 语句含有子程序调用指令,但没有除O,N或L地址之外的其它地址指令的NC语句其性质与宏程序相同.不包含除ONP或L以外的指令地址的程序段其性质与宏程序语句相同.转移和循环在程序中,使用GOTO 语句和IF语句可以改变控制的流向.有三种转移和循环操作可供使用;转移和循环----------GOTO语句(无条件转移)↓→IF语句(条件转移)WHILE语句(当…时循环)5.4.1无条件转移(GOTO语句)转移到标有顺序号n的程序段.当指定1到99999以外的顺序号时,出现P/S报警.可用表达方式指定顺序号.GOTOn;n:顺序号(1到99999)5.4.2条件转移(IF)语句IF之后指定条件表达式.IF[<条件表达式>]GOTOn 如果指定的条件表达式满足时,转移到标有顺序号n的程序段.如果指定的条件表达式不满足,执行下个程序段.IF[<条件表达式>]THEN 如果条件表达式满足,执行预先决定的宏程序语句.只执行一个宏程序语句.说明:条件表达式条件表达式必须包括算符.算符插在两个变量中间或变量和常数中间,并且用括号([,])封闭.表达式可以替代变量.运算符运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值.注意,不能使用不符号.运算符含义EQ等于NE不等于GT大于GE小于或等于LT小于LE小于或等于典型程序:下面的程序计算数值1-10的总和5.4.3循环(WHILE语句)在WHILE后指定一个条件表达式.当指定条件满足时,执行从D0到END之间的程序.否则,转到END后的程序段.说明:当指定的条件满足时,执行WHILE从D0到END之间的程序.否则,转而执行END之后的程序段,这种指令格式适用于IF语句.D0后的号和END后的号是指定程序执行范围的标号,标号值为1,2,3.若用1,2,3以外的值会产生P/S报警.嵌套在DO-END循环中的标号可根据需要多次使用.但是,当程序有交叉重复循环(DO范围的重叠)时,出现P/S报警.说明:◆无限循环当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环.◆处理时间当在GOTO语句中有标号转移的语句时,进行顺序号检索.反向检索的时间要比正向检索长.用WHILE语句实现循环可减少处理时间.◆未定义的变量在使用EQ或NE的条件表达式中,<空>和零有不同的效果,在其它形式的条件表达式中,<空>被当作零.◆典型程序下面的程序计算数值1到10的总和.00001;#1=0;#2=1;WHILE[#2LE10]DO 1;#1=#1+#2;#2=#2+1;END 1;M30;宏程序调用用下面的方法调用宏程序:宏程序调用------------非模态调用(G65)-----------模态调用(G66,G67)------------用G代码调用宏程序------------用M代码调用宏程序------------用M代码调用子程序------------用T代码调用子程序限制用宏程序调用和子程序调用之间的差别宏程序调用用(G65)不同于子程序用(G68),如下所述:用(G65),可以指定自变量(数据传送到宏程序).M98没有该功能.当M98程序段包含另一个NC指令时,在指令执行之后调用子程序.相反,G65无条件地调用宏程序. M98程序段包含另一个NC指令时,在单程序段方式中,机床停止.相反,G65机床不停止.用G65,改变局部变量的级别.用M98,不改变局部变量的级别.5.5.1 非模态调用(G65)当指定G65时,以地址P指定的用户宏程序被调用.数据能传递到用户宏程序体中.说明:呼调:(1) 在G65之后,用地址P指定用户宏程序的程序号.(2) 当要求重复时,在地址L后指定从1到9999的重复次数.省略L值时,认为L等于1.(3) 使用自变量指定,其值被赋值到相应的局部变量.●自变量指定可用两种形式的自变量指定,自变量指定I使用除了G,L,O,N和P以外的字母,每个字母指定一次.自变量指定II使用A,B,C和I,J和K(i为1-10).根据使用的字母,自动地改变自变量指定的类型.自变量指定I地址变量号地址变量号地址变量号A B C D E F H #1#2#3#7#8#9#11IJKMQRS#4#5#6#13#17#18#19TUVWXYZ#20#21#22#23#24#25#26地址G,L,N,Q和P不能在自变量中使用.不需要指定的地址可以省略,对应于省略地址的局部变量设为空.地址不需要按字母顺序指定,但应符合字地址的格式.但是I,J和K需要按字母顺序指定.自变量地址II自变量指定II使用A,B,和C各一次,I,J,K10次.自变量指定II用于传递诸如三维坐标值的变量.地址变量号地址变量号地址变量号A B C I1 J1 K1 I2 J2 K2 L3 J3#1#2#3#4#5#6#7#8#9#10#11K3I4J4K4I5J5K5I6J6K6I7#12#13#14#15#16#17#18#19#20#21#22J7K7I8J8K8I9J9K9I10J10K10#23#24#25#26#27#28#29#30#31#32#33I,J,K的下标用于确定自变量指定的顺序,在实际编程中不写.限制:格式: 任何自变量前必须指定G65自变量指定I,II的混合CNC内部自动识别自变量指定I&自变量指定II.如果自变量指定I和自变量指定II混合指定的话,后指定的自变量类型有效.小数点的位置没有小数点的自变量数据的单位为各地址的最小设定单位.传递的没有小数点的自变量的值根据机床实际的系统配置变化.在宏程序调用中使用小数点可使程序兼容性好.调用嵌套:调用可以嵌套4级,包括非模态调用(G95)和模态调用(G66).但不包括子程序调用(M98).局部变量的级别:1.局部变量嵌套从0到4级.2.主程序是0级.3.宏程序每调用1次,局部变量级别加1.前1级的局部变量值保存在CNC中.4.当宏程序中执行M99时,控制返回到调用的程序.此时,局部变量级别减1;并恢复宏程序调用时保存的局部变量值.典型程序: 编制一个宏程序加工轮圆上的孔.圆周的半径为I.起始角为A,间隔为B,钻孔数为H,圆的中心是(X,Y)指令可以用绝对值或增加量指定.顺时针方向钻孔时B应指定负值.调用格式:G95 P9100 Xx Yy Zz Rr Li Aa Bb Hh ;X:圆心的X坐标(绝对值或增量值的指定)(#24)Y:圆心的Y坐标(绝对值或增量值的指定)(#25)Z:孔深(#26)R:快速趋近点坐标(#18)F:切削进给速度(#9)I:圆半径(#4)A:第一孔的角度(#1)B:增量角(指定负值时为顺时针)(#2)H:孔数(#11)宏程序调用程序:O0002;G90 G92 X0 Y0 Z100,0;G65 p9100 X100 500 I100.0 A0 H5;M30;宏程序09100;#3=#4003;存储03组G代码G81 Z#26 R#18 F#9 K0;(注)钻孔循环注:也可以使用L0IF[#3 EQ 90] GOTO 1;在G90方式转移到N1#24=#5001+#24;计算圆心的X坐标#25=#5001+#25;计算圆心的Y坐标N1 WHILE[#11 GT O] DO 1;直到剩余孔数为0#5=#24+#4*COS[#1];计算X轴上的孔位#6=#25+#4*SIN[+1]; 计算X轴上的孔位G90 X#5 Y#6 ;移动到目标位置之后执行钻孔#1=#1+#2;更新角度#11=#11-1;孔数-1END 1;G#3 G80 ;返回原始状态的G代码M995.5.2 模态调用(G66)一旦发出G66则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序.G97取消模态调用.说明:●调用1.在G66之后,用地址P指定模态调用的程序号.2.当要求重复时,地址L后指定从1到9999的重复次数.3.与非模态调用(G65)相同,自变量指定的数据传递到宏程序体中.●取消指定G97代码时,其后面的程序段不再执行模态宏程序调用.●调用嵌套调用可以嵌套4级.包括非模态调用(G65)和模态调用(G66).但不包括子程序调用(M98)限制: 1.在G66程序段中,不能调用多个宏程序.必须在自变量之前指定.3.在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序.4.局部变量(自变量)只能在G66程序段中指定.注意,每次执行模态调用时,不再设定局部变量.典型程序用宏程序编制G81固定循环的操作.加工程序使用模态调用,为了简化程序,使用绝对值指定全部的钻孔数据.调用格式G65 P9110 Xx Yy Zz Rr Ff Ll;X:孔的X坐标(由绝对值指定)(#24)Y:孔的Y坐标(由绝对值指定)(#25)Z: Z 点坐标(由绝对值指定) (#26)R: R点坐标(由绝对值指定) (#18)F:切削进给速度(#9)L:重复次数●调用宏程序的程序00001;G28 G91 X0 Y0 ZO;G92 X0 Y0 ;G00 G90 ;G66 P9110 R.0 F500;G90 ;;;G67;M30;宏程序(被调用的程序) 09110;#1=#4001;贮存G00/G01#2=#4003; 贮存G90/G91#3=#4109; 贮存切削进给速度#5=#5003; 贮存钻孔开始的Z坐标G00 G90 Z#18; 定位在R点G01 Z#26 F#9 ; 切削进给到Z点IF[#4010 EQ 98]GOTO1;返回到1点G00 Z#18 ;定位在R点GOTO 2;N1 G00 Z#5 ;定位在1点N2 G#1 G#3 F#4; 恢复模态信息.M99;5.5.3 用G代码调用宏程序在参数中设置调用宏程序的G代码,与非模态调用(G65)同样的方法用该代码调用宏程序.说明:在参数到中设置调用用户宏程序(09010到09019)的G代码号(从1到9999),调用户宏程序的方法与G65相同.例如,设置参数,使宏程序09010由G81调用,不用修改加工程序,就可以调用由用户宏程序编制的加工循环.参数号和程序号之间的对应关系程序号参数号09010 09011 09012 09013 09014 09015 09016 09017 09018 090196050 6051 6052 6053 6054 6055 6056 6057 6058 6059重复与非模态调用一样,地址L可以指定从1到9999的重复次数.自变量指定与非模态调用一样,两种自变量指定是有效的;自变量指定I和自变量指定II.根据使用的地址自动地决定自变量的指定类型.使用G代码的宏调用的嵌套在G代码调用的程序中,不能用一个G代码调用多个宏程序.这种程序中的G代码被处理为普通G代码.在用M或T代码作为子程序调用的程序中,不能用一个G 代码调用多个宏程序.这种程序中的G代码也处理为普通G代码.5.5.4 用M代码调用宏程序在参数中设置调用宏程序的M代码,与非模态调用(G65)的方法一样用该代码调用宏程序.说明: 在参数到中设置调用用户宏程序(09021到09029)的M代码(从1到),用户宏程序能与G65同样的方法调用.参数号和程序号之间的对应关系程序号参数号09020 0902 09022 09026080 6081 6082 608309024 09025 09026 09027 09028 090296084 6085 6086 6087 6088 6089重复与非模态调用一样,地址L可以指定从1到9999的重复次数.自变量指定与非模态调用一样,两种自变量指定是有效的;自变量指定I和自变量指定II.根据使用的地址自动地决定自变量的指定类型.限制: 1.调用宏程序的M代码必须在程序段的开头指定.代码调用的宏程序或用M代码或T代码作为子程序调用的程序中,不能用一个M 代码调用多个宏程序.这种宏程序或程序中的M代码被处理为普通M代码.5.5.5 用M代码调用子程序在参数中设置调用子程序(宏程序)的M代码号,可与子程序调用(M98)相同的方法用该代码调用宏程序.说明:在参数到中设置调用子程序的M代码(从1到),相应的用户宏程序(09001到09009)可与M98同样的方法用该代码调用.参数号&程序号之间的对应关系程序号参数号09001 09002 09003 09004 09005 09006 09007 09008 090096071 6072 6073 6074 6075 6076 6077 6078 6079重复与非模态调用一样,地址L可以指定从1到9999的重复次数.自变量指定不允许自变量指定.M代码在宏程序中调用的M代码被处理为普通的M代码.限制: 用G代码调用的宏程序,或用M或T代码调用的程序中,使用一个M代码不能调用几个子程序.这种宏程序或程序中的M代码被处理为普通的M代码.5.5.6 用T代码调用子程序在参数中设置调用的子程序(宏程序)的T代码,每当在加工程序中指定该T代码时,即调用宏程序.说明:调用: 设置参数的5位TCS=1,当在加工程序中指定T代码时,可以调用宏程序09000.在加工程序中指定的T代码赋值到公共变量#149.限制:用G代码调用的宏程序中或用M或T代码调用的程序中,一个M代码不能调用多个子程序.这种宏程序或程序中的T代码被处理为普通T代码.5.5.7 典型程序用M代码调用子程序的功能,调用测量每把刀具的累积使用时间的宏程序.条件: 1.测量T01到T05各把刀具的累积使用时间.刀号大于T05的刀具不进行测量.2.下面的变量用于贮存刀号和测量的时间.#501刀号1的累积使用时间#502刀号2累积使用时间#503刀号3累积使用时间#504刀号4累积使用时间#505刀号5累积使用时间3.当指定M03时,开始计算使用时间,当指定M05时,停止计算.在循环起动灯亮期间,用系统变量#3002测量该时间.进给暂停&单段停止期间,时间不计算,但要计算换刀和交换工作台的时间.进行检查◆参数设置参数中设置3,参数中设置05.◆变量值的设置变量#501到#505中设置0.◆调用宏程序的程序00001;T01 M06;M03;M05;改变#501T02 M06;M03;M05; 改变#503T05 M06;M03;M05;改变#504T05 M06;M03;M05;改变#505M30;◆宏程序(被调用的程序) 09001 (M03);启动计算的宏程序N01;IF[#4120 EQ 0]GOTO9;没有指定刀具IF[#4120 GT 5]GOTO9;超出刀号范围#3002=0;计算器清0N9 M03;以正向旋转主轴M99;09002(M05);结束计算的宏程序M01;IF[#4120 EQ 0]GOTO9;没有指定刀具IF[#4120 GT 5]GOTO9;超出刀号范围#[500+#120]=#3002+#[500+4120];计算累积时间N9 M05;停止主轴M99;宏程序语句的处理为了平滑加工,CNC预读下一个要执行的NC语句.这种运行称为缓冲.在刀具半径补偿方式(G41,G42)中,NC为了找到交点提前预读2或3个程序段的NC后语句,算术表达式和条件转移的宏程序语句在它们被读进缓冲寄存器后立即被处理.包含M00,M01,M02或M30的程序段,包含由参数到设置的禁止缓冲的M代码的程序段,以及包含G31的程序段不预读.说明:当下个程序段不缓冲时(不缓冲的M代码,G31等)●在除了刀具半径补偿方式(G41,G42)以外的方式中,缓冲下个程序段(正常预读一个程序段)当执行N1时,下个NC语句(N4)被读入缓冲器.N1和N4之间的宏语句(N2,N3)在N1执行期间被处理.在刀具半径补偿方式(G41,G42)中缓冲下个程序段当N1正在执行时,在下2个程序段(直到N5)中的NC语句被读进缓冲寄存器.在N1和N5之间的宏语句(N2,N4)在N1的执行期间被处理.在刀具半径补偿方式C(G41,G42)中,当下个程序段包含没有移动的程序段时当NC1程序段正在执行时,下两个程序段(直到N5)中的NC语句被读进缓冲寄存器.由于N5是不移动的程序段,不能计算交点.此时,下面三个程序段(直到N7)中的NC语句被读入.在N1和N7之间的宏语句(N2,N4和N6)在执行N1时被处理.用户宏程序的存储用户宏程序与子程序相似,可用与子程序同样的方法进行存储和编程,存储容量由子程序和宏程序的总容量确定.限制●MDI运行在MDI方式中可以指定宏程序调用指令.但是,在自动运行期间,宏程序调用不能切换到MDI方式.●顺序号检索用户宏程序正在执行,在单程序段方式,程序段也能停止.包含宏程序调用指令(G65,G66或G67)的程序段中,即使在单程序段方式时也不能停止.当设定SBM()参数的5位)为1时,包含算术运算指令和控制指令的程序段可以停止.单程序段运行用于调试用户宏程序.注意,在刀具半径补偿C方式中,当宏程序语句中出现单程序段停止时,该语句被认为不包含移动的程序段,并且,在某些情况下,不能执行正确的补偿.●任选程序段跳过在<表达式>中间出现的符号被认为时除法运算符;不作为任选程序段跳过代码.●在EDIT方式中的运行设定参数NE8和NEP为1,可对程序号8000到8999和9000到9999的用户宏程序和子程序进行保护.当存储器全清时,存储器的全部内容包括宏程序都被清除.●复位当复位时,局部变量和#100到#149的公共变量被清除为空值.设定CLV和CCV,它们可以不被清除.系统变量#1000到#1333不被清除.复位操作清除任何用户宏程序和子程序的调用状态及DO状态并返回到主程序.●程序再起动的显示和M98一样,子程序调用使用的M,T代码不显示.●进给暂停在宏程序语句的执行期间,进给暂停有效时,当宏语句执行之后机床停止.当复位或出现报警时,机床也停止.●<表达式>中可以使用的常数值+到+-到有效数值是8位(十进制),如果超过这个范围,出现P/S报警.。