![图文解说 Fanuc B类宏程序高级编程手册_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/29/209bb56d-d83e-4bee-a68d-e4810542eb2f/209bb56d-d83e-4bee-a68d-e4810542eb2f1.gif)
![图文解说 Fanuc B类宏程序高级编程手册_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/29/209bb56d-d83e-4bee-a68d-e4810542eb2f/209bb56d-d83e-4bee-a68d-e4810542eb2f2.gif)
![图文解说 Fanuc B类宏程序高级编程手册_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/29/209bb56d-d83e-4bee-a68d-e4810542eb2f/209bb56d-d83e-4bee-a68d-e4810542eb2f3.gif)
![图文解说 Fanuc B类宏程序高级编程手册_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/29/209bb56d-d83e-4bee-a68d-e4810542eb2f/209bb56d-d83e-4bee-a68d-e4810542eb2f4.gif)
![图文解说 Fanuc B类宏程序高级编程手册_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/29/209bb56d-d83e-4bee-a68d-e4810542eb2f/209bb56d-d83e-4bee-a68d-e4810542eb2f5.gif)
已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宏宏 程程 序序 数控程序中含有变量的程序称为宏程序 虽然子程序对编制相同的加工程序非常有用 但用户宏程序由于允许 使用变量 算术和逻辑运算及条件转移 使得编制同样的加工程序更 简便 例如型腔加工宏程序和用户开发固定循环 使用时 加工程序 可用一条简单指令调出用户宏程序 和调用子程序完全一样 1 1 变量 普通加工程序直接用数值指定 G 代码和移动距离 例如 G01 和 X100 0 使用用户宏程序时 数值可以直接指定或用变量指定 当用变量时 变 量值可用程序或用 MDI 面板操作改变 1 2 100 G01 X 1 F300 说明 变量的表示 一般编程方法允许对变量命名 但用户宏程序不行 变量用变量符号 和后面的变量号指定 例如 1 表达式可以用于指定变量号 此时 表达式必须封闭在括号中 例如 1 2 12 变量的类型 变量根据变量号可以分成四种类型 变量值的范围 局部变量和公共变量可以为 0 值或下面范围中的值 1047 到 10 29 或 10 29 到 1047 如果计算结果超出有效范围 则发出 P S 报警 No 111 小数点的省略 当在程序中定义变量值时 小数点可以省略 例 当定义 1 123 变量 1 的实际值是 123 000 变量的引用 在地址后指定变量号即可引用其变量值 当用表达式指定变量时 要 把 表达式放在括号中 例如 G01X 1 2 F 3 被引用变量的值根据地址的最小设定单位自动地舍入 例如 当系统的最小输入增量为 1 1000mm 单位 指令 G00X 1 并将 12 3456 赋值给变量 1 实际指令值为 G00X12 346 改变引用变量的值的符号 要把负号 放在 的前面 例如 G00X 1 当引用未定义的变量时 变量及地址字都被忽略 例如 n 当变量 1 的值是 0 并且变量 2 的值是空时 G00X 1 Y 2 的执行 结果为 G00X0 双轨迹 双轨迹控制 的公共变量 对双轨迹控制 系统为每一轨迹都提供了单独的宏变量 但是 根 据参数 No 6036 和 6037 的设定 某些公共变量可同时用于两个轨 迹 未定义的变量 当变量值未定义时 这样的变量成为 空 变量 变量 0 总是空变 量 它不能写 只能读 a 引用 当引用一个未定义的变量时 地址本身也被忽略 b 运算 除了用赋值以外 其余情况下与 0 相同 当变量值是空白时 变量是空 符号 表示溢出 当变量的绝对值大于 99999999 时 或下 溢出 当变量的绝对值小于 0 0000001 时 限制 程序号 顺序号和任选程序段跳转号不能使用变量 例 下面情况不能使用变量 1 2G00X100 0 N 3Y200 0 1 2 系统变量 系统变量用于读和写 NC 内部数据 例如 刀具偏置值和当前位置数 据 但是 某些系统变量只能读 系统变量是自动控制和通用程序开发的 基 础 说明 接口信号 是可编程机床控制器 PMC 和用户宏程序之间交换的信号 刀具补偿值 用系统变量可以读和写刀具补偿值 可使用的变量数取决于刀补数 是否区分外形补偿和磨损补偿以及是 否 区分刀长补偿和刀尖补偿 当偏置组数小于等于 200 时 也可使用 2001 2400 宏程序报警 例 3000 1 TOOL NOT FOUND 报警屏幕上显示 3001 TOOL NOT FOUND 刀具未找到 停止和信息显示 程序停止执行并显示信息 时间信息 时间信息可以读和写 自动运行控制 可以改变自动运行的控制状态 当电源接通时 该变量的值为 0 当单程序段停止无效时 即使单程序段开关设为 ON 也不执行单程 序段停止 当指定不等待辅助功能 M S 和 T 功能 完成时 在辅助功能完 成 之前 程序即执行到下一程序段 而且分配完成信号 DEN 不输出 当电源接通时 该变量的值为 0 当进给暂停无效时 1 当进给暂停按钮被按下时 机床以单段停止方式停止 但是 当 用变量 3003 使单程序段方式无效时 单程序段停止不执行 2 当进给暂停按钮压下又松开时 进给暂停灯亮 但是 机床不 停 止 程序继续执行 并且机床停在进给暂停有效的第一个程序段 当进给速度倍率无效时 倍率总为 100 而不管机床操作面板上的 进给速度倍率开关的设置 当准确停止检测无效时 即使那些不执行切削的程序段也不进行准 确 停止检测 位置检测 SETTING 值 SETTING 值可用变量读和写 二进制数转换为十进制数 镜像 使用外部开关或 SETTING 操作设置的各轴镜像状态可以通过输出信 号 镜像检测信号 读出 可以检测当前的镜像状态 见 III 4 6 节 得到的二进制值转换成十进制 当用镜像信号和 SETTING 两者对某轴设置镜像功能时 信号值和 设 定值相或 然后输出 当控制轴以外的轴的镜像功能接通时 它们也被读进系统变量 3007 系统变量 3007 是写保护的系统变量 如果试图在变量中写数据 则 发出 P S116 报警 WRITE PROTECTED VARIABLE 已加工的零件数 要求的零件数 目标数 和已加工的零件数 完成数 可以读和写 模态信息 正在处理的程序段之前的模态信息可以读出 例 当执行 1 4002 时 在 1 中得到的值是 17 18 或 19 对于不能使用的 G 代码组 如果指定系统变量读取相应的模态信息 则发出 P S 报警 当前位置 位置信息不能写 只能读 第 1 位代表轴号 从 1 到 3 变量 5081 5083 存储的刀具长度补偿值是当前的执行值 不是后 面程序段的处理值 在 G31 跳转功能 程序段中跳转信号接通时的刀具位置储存在变 量 5061 到 5063 中 当 G31 程序段中的跳转信号未接通时 这些 变量中储存指定程序段的终点值 移动期间不能读是指由于缓冲 预读 功能的原因 不能读期望值 工件坐标系补偿值 工件零点偏移值的系统变量 工件零点偏移值 可以使用以下变量 1 3 算术和逻辑运算 表 15 3 a 中列出的运算可以在变量中执行 运算符右边的表达式可包 含常量和 或由函数或运算符组成的变量 表达式中的变量 j 和 k 可 以 用常数替换 左边的变量也可以用表达式赋值 表 15 3 a 算术和逻辑运算 角度单位 函数 SIN COS ASIN ACOS TAN 和 ATAN 的角度单位是度 如 90 30 表示为 90 5 度 ARCSIN i ASIN j 取值范围如下 当参数 No 6004 0 NAT 位设为 0 时 270 90 当参数 No 6004 0 NAT 位设为 1 时 90 90 当 j 超出 1 到 1 的范围时 发出 P S 报警 No 111 常数可替代变量 j ARCCOS i ACOS j 取值范围从 180 0 当 j 超出 1 到 1 的范围时 发出 P S 报警 No 111 常数可以替代变量 j ARCTAN 指定两个边的长度 并用斜杠 分开 i ATAN j k 取值范围如下 当 NAT 位 参数 No 6004 0 设为 0 时 0 到 360 例如 当指定 1 ATAN 1 1 时 1 225 当 NAT 位 参数 No 6004 0 设为 1 时 180 到 180 例如 当指定 1 ATAN 1 1 时 1 135 0 常数可以代替变量 j 注意 相对误差可能大于 10 8 自然对数 i LN j 当反对数 j 为 0 或小于 0 时 发出 P S 报警 No 111 常数可以代替变量 j 注意 相对误差可能大于 10 8 指数函数 i EXP j 当运算结果超过 3 65 1047 j 大约是 110 时 出现溢出并发出 P S 报警 No 111 常数可以代替变量 j ROUND 舍入 函数 当算术运算或逻辑运算指令 IF 或 WHILE 中包含 ROUND 函数时 则 ROUND 函数在第 1 个小数位置四舍五入 例 当执行 1 ROUND 2 时 此处 2 1 2345 变量 1 的值是 1 0 当在 NC 语句地址中使用 ROUND 函数时 ROUND 函数根据地址 的最小 设定单位将指定值四舍五入 例 编制钻削加工程序 按变量 1 和 2 的值切削 然后返回到初始位置 假定最小设定单位是 1 1000mm 变量 1 是 1 2345 变量 2 是 2 3456 则 G00 G91 X 1 移动 1 235mm G01 X 2 F300 移动 2 346mm G00 X 1 2 由于 1 2345 2 3456 3 5801 移动距离为 3 580 刀具 不会返回到初始位置 该误差来自于舍入之前还是舍入之后相加 必须指定 G00 X ROUND 1 ROUND 2 以使刀具返回到初始位置 上取整和下取整 CNC 处理数值运算时 若操作后产生的整数绝对值大于原数的绝对 值 时为上取整 若小于原数的绝对值为下取整 对于负数的处理应小心 例如 假设 1 1 2 2 1 2 当执行 3 FUP 1 时 2 0 赋给 3 当执行 3 FIX 1 时 1 0 赋给 3 当执行 3 FUP 2 时 2 0 赋给 3 当执行 3 FIX 2 时 1 0 赋给 3 算术与逻辑运算指令的缩写 程序中指令函数时 函数名的前二个字 符可以用于指定该函数 见 9 7 节 例如 ROUND RO FIX FI 运算次序 函数 乘和除运算 AND 加和减运算 OR XOR 括号嵌套 括号用于改变运算次序 括号可以使用 5 级 包括函数内部使用的括 号 当超过 5 级时 出现 P S 报警 No 118 限制 括号 用于封闭表达式 注意 圆括号用于注释 运算误差 运算时 可能出现误差 表 15 3 b 运算中的误差 注 1 相对误差取决于运算结果 2 使用两类误差的较小者 3 绝对误差是常数 而不管运算结果 4 函数 TAN 执行 SIN COS 5 如果 SIN COS 或 TAN 函数的运算结果小于 1 0 10 8 或由于 运算精度的限制不为 0 的话 设定参数 o 6004 1 为 1 则 运算结果可以规算为 0 变量值的精度约为 8 位十进制数 当在加 减运算中处理非常大的数 时 将得不到期望的结果 例 当试图把下面的值赋给变量 1 和 2 时 1 9876543210123 456 2 9876543277777 777 变量值变成 1 9876543200000 000 2 9876543300000 000 此时 当计算 3 2 1 时 结果为 3 100000 000 该计算的实际结果稍有误差 因为是以二进制执行的 还应该意识到 使用条件表达式 EQ NE GE GT LE 和 LT 时 可 能造成误差 例如 IF 1EQ 2 的运算会受 1 和 2 的误差的影响 由此会造成错误的判 断 因此 应该用 IF ABS 1 2 LT0 001 代替上述语句 以避免两个变 量的误差 当两个变量的差值未超过允许极限 此处为 0 001 时 则认为两个 变量的值是相等的 使用下取整指令时应小心 例如 当计算 2 1 1000 式中 1 0 002 时 变量 2 的结果值不是准确的 2 可能是 1 99999997 这里 当指定 3 FIX 2 时 变量 3 的结果值不是 2 而是 1 0 此 时 可先纠正误差 再执行下取整 或是用如下的四舍五入操作 即可得到正确结果 3 FIX 2 0 001 3 ROUND 2 除数 当在除法或 TAN 90 中指定为 0 的除数时 出现 P S 报警 No 112 1 4 宏程序语句和 NC 语句 下面的程序段为宏程序语句 包含算术或逻辑运算 的程序段 包含控制语句 例如 GOTO DO END 的程序段 包含宏程序调用指令 例如 用 G65 G66 G67 或其它 G 代码 M 代码调用宏程序 的程序段 除了宏程序语句以外的任何程序段都为 NC 语句 说明 与 NC 语句的不同 即使置于单程序段运行方式 机床也不停止 但是 当参数 No 6000 5 SBM 设定为 1 时 在单程序段方式中 机床停止 在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理 见 II 15 7 节 与宏程序语句有相 含有子程序调用指令 例如 用 M98 或其它 M 代码或用 T 代码调用 子程序 但没有除 O N 或 L 地址之外的其它地址指令的 NC 语句 其性质与宏程序语句相同 同性质的 NC 语句 不包含除 O N P 或 L 以外的指令地址的程序段其性质与宏程序 语 句相同 1 5 转移和循环 在程序中 使用 GOTO 语句和 IF 语句可以改变控制 的流向 有三种转 移和循环操作可供使用 无条件转移 转移到标有顺序号 n 的程序段 当指定 1 到 99999 以外的顺序号时 出 现 P S 报警 No 128 可用表达式指定顺序号 例 GOTO 1 GOTO 10 转移和循环 GOTO 语句 无条件转移 IF 语句 条件转移 IF THEN WHILE 语句 当 时循环 GOTOn n 顺序号 1 到 99999 条件转移 IF 语句 IF 之后指定条件表达式 IF GOTO n 如果指定的条件表达式满足时 转移到标有 顺序号 n 的程序段 如果指 定的条件表达式不满足 执行下个程序段 IF THEN 如果条件表达式满足 执行预先决定的宏程序语句 只执行一个宏程 序语句 条件表达式 条件表达式必须包括运算符 运算符插在两个变量中间或变量和常数 中 间 并且用括号 封闭 表达式可以替代变量 运算符 运算符由 2 个字母组成 用于两个值的比较 以决定它们是相等还是 一 个值小于或大于另一个值 注意 不能使用不等号 示例程序 下面的程序计算数值 1 10 的总和 9500 1 0 存储和的变量初值 2 1 被加数变量的初值 N1 IF 2 GT 10 GOTO 2 当被加数大于 10 时转移到 N2 1 1 2 计算和 2 2 1 下一个被加数 GOTO 1 转到 N1 N2 M30 程序结束 循环 WHILE 语句 在 WHILE 后指定一个条件表达式 当指定条件满足时 执行从 DO 到 END 之间的程序 否则 转到 END 后的程序段 说明 当指定的条件满足时 执行 WHILE 后从 DO 到 END 之间的程 序 否 则 转而执行 END 之后的程序段 与 IF 语句的指令格式相同 DO 后 的数和 END 后的数为指定程序执行范围的标号 标号值为 1 2 3 若用 1 2 3 以外的值会产生 P S 报警 No 126 嵌套 在 DO END 循环中的标号 1 到 3 可根据需要多次使用 但是 当 程序有交叉重复循环 DO 范围重叠 时 出现 P S 报警 No 124 说明 无限循环 当指定 DO 而没有指定 WHILE 语句时 产生从 DO 到 END 的无限 循 环 处理时间 在处理有标号转移的 GOTO 语句时 进行顺序号检索 反向检索的时 间要比正向检索长 用 WHILE 语句实现循环可减少处理时间 未定义的变量 在使用 EQ 或 NE 的条件表达式中 和零有不同的效果 在其它 形式的条件表达式中 被当作零 示例程序 下面的程序计算数值 1 到 10 的总和 宏程序调用 用以下方法调用宏程序 宏程序调用和子程序调用之间的差别 宏程序调用 G65 不同于子程序调用 G98 如下所述 用 G65 可以指定自变量 数据传送到宏程序 M98 没有该功能 当 M98 程序段包含另一个 NC 指令 例如 G01 X100 0 M98 Pp 时 在指令执行之后调用子程序 相反 G65 无条件地调用宏程序 M98 程序段包含另一个 NC 指令 例如 G01 X100 0 M98 Pp 时 在 单程序段方式中 机床停止 相反 G65 机床不停止 用 G65 改变局部变量的级别 用 M98 不改变局部变量的级别 非模态调用 G65 当指定 G65 时 以地址 P 指定的用户宏程序被 调用 数据 自变量 能传递到用户宏程序体中 说明 调用 在 G65 之后 用地址 P 指定用户宏程序的程序号 当要求重复时 在地址 L 后指定从 1 到 9999 的重复次数 省略 L 值 时 认为 L 等于 1 使用自变量指定 其值被赋值到相应的局部变量 自变量指定 可用两种形式的自变量指定 自变量指定 使用除了 G L O N 和 P 以外的字母 每个字母指定一次 自变量指定 使用 A B C 和 Ii Ji 和 Ki i 为 1 10 根据使用的字母 自动决定自变量指定的类型 地址 G L N 和 P 不能在自变量中使用 不需要指定的地址可以省略 对应于省略地址的局部变量为空 地址不需要按字母顺序指定 但应符合字地址的格式 I J 和 K 需 要按字母顺序指定 例 B A D J K 正确 B A D J I 不正确 自变量指定 自变量指定 使用 A B 和 C 各 1 次 I J K 各 10 次 自变量指 定 用于传递诸如三维坐标值 限制 格式 任何自变量前必须指定 G65 自变量指定 混合使用 CNC 内部自动识别自变量指定 和自变 量指定 如果自变量指定 和自变量指定 混合指定 后指定的自变量类型有效 小数点的位置 不带小数点的自变量 其数据单位为各地址的最小设定单位 传递不 带 小数点的自变量 其值会根据机床实际的系统配置变化 在宏程序调 用 中使用小数点可使程序兼容性好 调用嵌套 调用可以嵌套 4 级 包括非模态调用 G65 和模态调用 G66 但 不 包括子程序调用 M98 局部变量的级别 局部变量嵌套从 0 到 4 级 主程序是 0 级 宏程序每调用 1 次 用 G65 或 G66 局部变量级别加 1 前 1 级 的 局部变量值保存在 CNC 中 当宏程序执行 M99 时 控制返回到调用程序 此时 局部变量级别 减 1 并恢复宏程序调用时保存的局部变量值 示例程序 圆周螺纹孔 编制一个宏程序加工轮圆上的孔 圆周的半径为 I 起始角为 A 间隔 为 B 钻孔数为 H 圆的中心是 X Y 指令可以用绝对值或增量 值 指定 顺时针方向钻孔时 B 应指定负值 调用格式 G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh X 圆心的 X 坐标 绝对值或增量值指定 24 Y 圆心的 Y 坐标 绝对值或增量值指定 25 Z 孔深 26 R 趋近点坐标 18 F 切削进给速度 9 I 圆半径 4 A 第一孔的角度 1 B 增量角 指定负值时为顺时针 2 H 孔数 11 宏程序调用程序 0002 G90 G92 X0 Y0 Z100 0 G65 P9100 X100 0 Y50 0 R30 0 Z 50 0 F500 I100 0 A0 B45 0 H5 M30 宏程序 被调用的程序 9100 3 4003 储存 03 组 G 代码 G81 Z 26 R 18 F 9 K0 注 钻孔循环 注 也可以使用 L0 IF 3 EQ 90 GOTO 1 在 G90 方式转移到 N1 24 5001 24 计算圆心的 X 坐标 25 5002 25 计算圆心的 Y 坐标 N1 WHILE 11 GT 0 DO 1 直到剩余孔数为 0 5 24 4 COS 1 计算 X 轴上的孔位 6 25 4 SIN 1 计算 Y 轴上的孔位 G90 X 5 Y 6 移动到目标位置之后执行钻孔 1 1 2 更新角度 11 11 1 孔数 1 END 1 G 3 G80 返回原始状态的 G 代码 M99 变量的含义 3 储存 03 组的 G 代码 5 下个孔的 X 坐标 6 下个孔的 Y 坐标 模态调用 G66 一旦发出 G66 则指定模态调用 即在指定轴移动的程序段后调用宏程 序 G67 取消模态调用 说明 调用 在 G66 之后 用地址 P 指定模态调用的程序号 当要求重复时 在地址 L 后指定从 1 到 9999 的重复次数 与非模态调用 G65 相同 自变量指定的数据传递到宏程序体中 取消 指定 G67 代码后 其后面的程序段不再执行模态宏程序调用 调用嵌套 调用可以嵌套 4 级 包括非模态调用 G65 和模态调用 G66 但 不包括子程序调用 M98 模态调用嵌套 在模态调用期间 指定另一个 G66 代码 可以嵌套模态调用 限制 在 G66 程序段中 不能调用宏程序 G66 必须在自变量之前指定 在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序 局部变量 自变量 只能在 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 重复次数 调用宏程序的程序 0001 G28 G91 X0 Y0 Z0 G92 X0 Y0 Z50 0 G00 G90 X100 0 Y50 0 G66 P9110 Z 20 0 R5 0 F500 G90 X20 0 Y20 0 X50 0 Y50 0 X70 0 Y80 0 G67 M30 宏程序 被调用的程序 9110 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 GOTO 1 返回到 1 点 G00 Z 18 定位在 R 点 GOTO 2 N1 G00 Z 5 定位在 1 点 N2 G 1 G 3 F 4 恢复模态信息 M99 用 G 代码调用宏程序 在参数中设置调用宏程序的 G 代码 按非模态调用 G65 同样的方 法调用宏程序 说明 在参数 No 6050 到 No 6059 中设置调用用户宏程序 9010 到 9019 的 G 代码号 从 1 到 9999 调用用户宏程序的方法与 G65 相同 例如 设置参数 由 G81 调用宏程序 9010 不用修改加工程序 就 可以调用由用户宏程序编制的加工循环 参数号和程序号之间的对应关系 重复 与非模态调用一样 地址 L 中指定从 1 到 9999 的重复次数 自变量指定 与非模态调用一样 可以使用两种自变量指定类型 自变 量指定 和 自变量指定 根据使用的地址自动决定自变量的指定类型 限制 使用 G 代码的宏调用的嵌套 在 G 代码调用的程序中 不能用 G 代 码调用宏程序 这种程序中的 G 代码被处理为普通 G 代码 在用 M 或 T 代码调用的子程序中 不能 用 G 代码调用宏程序 这种程序中的 G 代码也处理为普通 G 代码 用 M 代码调用宏程序 在参数中设置调用宏程序的 M 代码 按非模态调用 G65 一样的方 法调用宏程序 说明 在参数 No 6080 到 No 6089 中设置调用用户宏程序 9020 到 9029 的 M 代码 从 1 到 99999999 调用宏程序的方法同 G65 相同 参数号和程序号之间的对应关系 重复 与非模态调用一样 地址 L 中指定从 1 到 9999 的重复次数 自变量指定 与非模态调用一样 可以使用两种自变量指定类型 自变量指定 和 自变量指定 根据使用的地址自动决定自变量指定的类型 限制 调用宏程序的 M 代码必须在程序段的开头指定 用 G 代码调用的宏程序或用 M 代码或 T 代码调用的子程序中 不 能 用 M 代码调用宏程序 这种宏程序或子程序中的 M 代码被处理为普 通 M 代码 用 M 代码调用子程序 在参数中设置调用子程序 宏程序 的 M 代码号 按与子程序调用 M98 相同的方法调用宏程序 说明 在参数 No 6071 到 No 6079 中设置调用子程序的 代码 从 到 99999999 相应的用户宏程序 9001 到 9009 可按与 M98 同样的方法调用 参数号和程序号之间的对应关系 重复 与非模态调用一样 地址 L 中指定从 1 到 9999 的重复次数 自变量指定 不允许指定自变量 M 代码 在宏程序中调用的 M 代码被处理为普通 M 代码 限制 用 G 代码调用的宏程序 或用 M 或 T 代码调用的子程序中 不能使用 M 代码调用子程序 这种宏程序或程序中的 M 代码被处理为普通 M 代 码 用 T 代码调用子程序 通过设定参数 可使用 T 代码调用子程序 宏程序 每当在加工程 序 中指定 T 代码时 即调用宏程序 说明 调用 设置参数 No 6001 的 5 位 TCS 1 当在加工程序中指定 T 代码时 可以 调用宏程序 9000 在加工程序中指定的 T 代码赋值到公共变量 149 限制 用 G 代码调用的宏程序中或用 M 或 T 代码调用的程序中 不 能用 T 代 码调用子程序 这种宏程序或程序中的 T 代码被处理为普通 T 代码 示例程序 使用 M 代码调用子程序的功能 实现测量每把刀具的累积使用时间 条件 测量 T01 到 T05 各把刀具的累积使用时间 刀号大于 T05 的刀 具不 进行测量 下面的变量用于储存刀号和测量的时间 501 刀号 1 的累积使用时间 502 刀号 2 的累积使用时间 503 刀号 3 的累积使用时间 504 刀号 4 的累积使用时间 505 刀号 5 的累积使用时间 当指定 M03 时 开始计算使用时间 当指定 M05 时 停止计算 在 循环启动灯亮期间 用系统变量 3002 测量该时间 进给暂停和单段 停止期间 不计算时间 但要计算换刀和交换工作台的时间 运行检查 参数设置 参数 No 6071 中设置 3 参数 No 6072 中设置 05 变量值设置 变量 501 到 505 中设置 0 调用宏程序的程序 0001 T01 M06 M03 M05 改变 501 T02 M06 M03 M05 改变 502 T03 M06 M03 M05 改变 503 T04 M06 M03 M05 改变 504 T05 M06 M03 M05 改变 505 M30 宏程序 被调用的程序 9001 M03 启动计算的宏程序 M01 IF 4120 EQ 0 GOTO 9 没有指定刀具 IF 4120 GT 5 GOTO 9 超出刀号范围 3002 0 计时器清 0 N9 M03 正向旋转主轴 M99 9002 M05 结束计算的宏程序 M01 IF 4120 EQ 0 GOTO 9 没有指定刀具 IF 4120 GT 5 GOTO 9 超出刀号范围 500 4120 3002 500 4120 计算累积时间 N9 M05 停止主轴 M99 宏程序语句的处理 为了平滑加工 CNC 预读下一段要执行的 NC 语句 这种运行称为 缓冲 在 AI 先行控制中 CNC 读取多个程序段 即使系统未处于 AI 先行 控制 方式 但在刀具半径补偿方式 G41 G42 中 NC 为了找到交点提 前 预读 2 或 3 个程序段的 NC 语句 算术表达式和条件转移的宏程序语 句 在它们被读进缓冲寄存器后立即被处理 因此 宏语句的执行时序并 不总是按编制顺序执行 包含 M00 M01 M02 或 M30 的程序段 包含由参数 No 3411 到 No 3432 设置的禁止缓冲的 M 代码的程序段 以及包含禁止缓冲的 G 代码 例 如 G53 的程序段 其后的程序不再预读 直到相应的 M 代码和 G 代 码 的动作执行完毕 才执行之后的宏语句 NC 语句和宏语句的执行顺序 当下个程序段不缓冲时 禁止 缓冲的 M 代码 G53 G31 等 注 如果需要在执行完程序段后再执行接下来的宏语句 则应在 此程序段中指定禁止缓冲的 M 代码或 G 代码 另外 在诸 如读取 改写系统变量 坐标值 偏置值等操作时 由于宏 语句执行时序的影响 有可能会出现偏差 此时 应在宏语 句前指定禁止缓冲的 M 代码和 G 代码 在除了刀具半径补偿方式 G41 G42 以外的方式 中 缓冲下个程序段 正 常预读一个程序段 当执行 N1 时 下个 NC 语句 N4 被读入缓冲器 N1 和 N4 之间 的宏 语句 N2 N3 在 N1 执行期间被处理 在刀具半径补偿方式 G41 G42 中缓冲下个程序段 当 N1 正在执行时 下 2 个程序段 直到 N5 中的 NC 语句被读进 缓冲 寄存器 在 N1 和 N5 之间的宏语句 N2 N4 在 N1 执行期间被处 理 在刀具半径补偿方式 C G41 G42 中 当下个程序段包含 没有移动的程序段时 当 N1 程序段正在执行时 下两个程序段 直到 N5 中的 NC 语句被 读 进缓冲寄存器 由于 N5 是不移动的程序段 不能计算交点 此时 下 面三个程序段 直到 N7 中的 NC 语句被读入 在 N1 和 N7 之间的 宏 语句 N2 N4 和 N6 在执行 N1 时被处理 使用系统变量时的注意事项 如果在宏程序中使用如下系统变量 表 15 7 2 a 并且希望在上 一程序段执行完毕后再执行宏语句 则需在上一程序段中指定禁止缓 冲 的 M 代码 参数 3411 3432 或 G53 指令程序段 在上例中 在执行主程序中的 N1 程序段时 N2 程序段读入缓冲 相应地 宏程序 O2000 被读入和执行 此时由于轴在移动状态 因此变量 1 和 2 读入的是不确定位置 这时只需在宏程序 O2000 的 N100 程序段 前指 定禁止缓冲的 M 代码或 G53 指令 变量 1 和 2 中读取的位置即为 N1 程 序段完全执行后的位置 注 在固定循环方式中不能指定 G53 代码 否则会出现 P S44 报警 因此如果要在固定循环方式中禁止缓冲程序段 可通过指定 禁止缓冲 M 代码来实现 用户宏程序的存储 用户宏程序与子程序相似 可用与子程序同样的方法进行存储和编程 存储容量由子程序和宏程序的总容量确定 限制 MDI 运行 在 MDI 方式中可以指定宏程序调用指令 但是 在自动运行期间 宏 程序调用不能切换到 MDI 方式 顺序号检索 用户宏程序不能检索顺序号 单程序段 即使宏程序正在执行 在单程序段方式 程序段也能停止 包含宏程序调用指令 G65 G66 或 G67 的程序段 即使在单程序 段 方式时也不会停止 当设定 SBM 参数 No 6000 的 5 位 为 1 时 包含 算术运算指令和控制指令的程序段可以停止 单程序段运行用于调试用户宏程序 注意 在刀具半径补偿 C 方式中 当宏程序语句中出现单程序段停止时 该语句被认为是不包含移动的 程 序段 在某些情况下 不能执行正确的补偿 严格地讲 该程序段被 当 作指定移动距离为 0 的移动 任选程序段跳过 在中间出现的 符号 在算术表达式的右边 封闭在括号 中 被认为是除法运算符 不作为任选程序段跳过代码 在 EDIT 方式中的运行 设定参数 NE8 参数 No 3202 的 0 位 和 NE9 参数 No 3202 的 4 位 为 1 可对程序号 8000 到 8999 和 9000 到 9999 的用户宏程序和子 程序 进行保护 当存储器全清时 电源接通时 同时按下 和 RESET DELET 键 存储器的全部内容包括宏程序都被清除 复位 当复位时 局部变量和 100 到 199 的公共变量被清除为空值 设定 CLV 和 CCV 参数 6001 的第 7 位和第 6 位 它们可以不被清除 系统 变量 1000 到 1133 不被清除 复位操作清除任何用户宏程序和子程序的调用状态及 DO 状态并返回 到 主程序 程序再起动的显示 和 M98 一样 子程序调用使用的 M T 代码不 显示 进给暂停 在宏程序语句执行期间 进给暂停有效时 宏语句执行之 后机床停止 当复位或出现报警时 机床也停止 中可以使用的常数值 0 0000001 到 99999999 99999999 到 0 0000001 有效数值是 8 位 十进制 如果超过这个范围 出现 P S 报警 No 003 外部输出指令 除了标准的用户宏指令外 还可用下面的宏程序指令 它们被称作外 部输出指令 BPRNT DPRNT POPEN PCLOS 通过阅读机 穿孔机接口 用这些指令输出变量值和字符 说明 按下列顺序指定这些指令 打开指令 POPEN 在指定数据输出命令之前 指定该指令 以建立与外部输入 输入设备 的链接 数据输出指令 BPRNT 或 DPRNT 指定需要的输出数据 关闭指令 PCLOS 当全部数据输出指令已经完成时 指定 PCLOS 以解除与外部输入 输 出 设备的链接 打开指令 POPEN POPEN POPEN 建立与外部输入 输出设备的链接 必须在数据输出指令之前 指 定 根据该指令 CNC 输出 DC2 控制代码 数据输出指令 BPRNT BPRNT 指令以二进制输出字符和变量值 指定的字符根据输出时的设定数据 ISO 转换成代码 可指定的字符如下 字母 A 到 Z 数字 特殊字符 等 星号 用空格输出 所有变量都带小数点存储 指定一个变量时 变量后要用括号 指定小数的有效位数 变量值处理成为 2 个字 32 位 数据 包括小数位 输出为二进制数据 从最高字节开始输出 当指定的数据输出时 根据设定代码 ISO 输出 EOB 代码 空变量认为是 0 数据输出指令 DPRNT DPRNT 指令 根据 SETTING ISO 的代码设定 以十进制输出字 符和 变量值 对 DPRNT 指令的说明 请见对 BPRNT 指令说明的 和 项 当输出变量时 要指定 和后面的变量号 然后 在括号中指定 整数部分中的位数和小数点后的位数 数据从高位输出 每位数都按相应的代码输出 代码由 ISO 设定 小数点也按 ISO 设定的代码输出 每个变量必须是最多 8 位数组成的数字值 当高位数是零时 如果 PRT 参数 6001 的 1 位 是 1 这些零不输出 如果参数 PRT 是 0 每当遇到 0 时输出空格代码 当小数的有效位数不是零时 小数部分总是输出 如果小数的 有效位数是零 则不输出小数点 当 PRT 参数 6001 的 1 位 是 0 时 输出空格代替 号表示正数 如果参数 PRT 是 1 不输出代码 关闭指令 PCLOS PCLOS PCLOS 指令解除与外部输入 输出设备的链接 当所有数据输出指令 结 束时 指定该指令 根据该指令 CNC 输出 DC4 控制代码 要求的设定 指定设定 SETTING 数据中的通道 I O 通道 根 据这些数据 指定阅 读机 穿孔机接口的数据 例如 波特率 I O 通道 0 参数 No 101 No 102 和 No 103 I O 通道 1 参数 No 111 No 112 和 No 113 I O 通道 2 参数 No 112 No 122 和 No 123 输出装置不要指定 FANUC 磁带盒或软盘盒 当指定 DPRNT 指令输出数据时 用参数 PRT 参数 6001 的 1 位 为 1 或 0 指定是否输出数据的前零 数据行结束时输出 LF 或 LF CF 用参数 6001 的第 4 位 CRO 设 定 注 1 不必总是在一起指定打开指令 POPEN 数据输出指令 BPRNT DPRNT 以及关闭指令 PCLOS 一旦在程序的开 头指定了打开指令后 除非指定了关闭指令 不需要再次指 令打开指令 2 必须成对指定打开指令和关闭指令 在程序的末尾指定关闭 指令 但是 如果没有指定打开指令 就不必指定关闭指令 3 当数据输出指令正在执行时 若执行复位操作 输出停止并 且后面的数据被清除 因此 当复位操作是由代码执行 例 如 执行数据输出程序的结束代码 M30 时 在程序的结束部 分应指定关闭指令 以确保全部数据输出后才执行 M30 处理 4 在括号中的缩写宏程序字保持不变 但是 当括号中的字符 被分开并分几次输入时 第 2 和以后的缩写被转换并输入 5 可以在括号 中指定 注意 当括号 中的字符被分开 并分几次输入时 在第 2 和以后的输入中被忽略 中断型用户宏程序 当程序正在执行时 来自机床的中断输入信号 uint 可以调用另一 个程序 该功能称为中断型用户宏程序功能 以下面的格式指定中断 指令 M96 P0000 用户宏程序中断有效 M97 用户宏程序中断无效 说明 中断型用户宏程序功能允许在程序执行期间在任一程序段调用另一个 程序 这就可使程序根据随时变化的条件实时地运行 1 当检测到刀具的异常状态时 用外部信号启动异常过程的处 理 2 加工运行的顺序由另一个加工操作中断而不取消现在的运行 3 以固定的间隔 读取与现在加工有关的信息 以上所叙为中断型用户宏程序功能中的适应控制应用 当在程序中指定 M96 P 时 输入中断信号 UINT 可中断之后 的 程序 转而执行由 P 指令的程序 注意 在 M97 指定后 中断信号 UINT 在图 15 11 中用 标记 的输入被 忽略 并且 在中断程序执行期间 不得输入中断信号 指定方法说明 说明 中断条件 用户宏程序中断只能在程序执行期间有效 在下列条件下使用 存储器运行或 MDI 运行时 STL 启动灯 亮时 目前不处理用户宏中断时 指定 一般情况下 指定 M96 使中断信号 UINT 有效 可以执行 用户宏程 序中断功能 M97 使信号无效 一旦指定 M96 输入中断信号 UINT 使用户宏程序中断开始 直到 指 定 M97 或 NC 复位后 中断型宏程序功能取消 在指定 M97 或 NC 复位 以后 即使输入中断信号 UINT 用户宏程序中断也不执行 中断 信 号被忽略直到指定另一个 M96 指定 M96 后 中断信号 UINT 生效 在 M97 方式中 即使输入信 号 也被忽略 当在 M97 方式中断信号输入并保持接通直到 M96 指定时 用状态触发形式时 立即执行宏程序中断 当使用边沿触发形式时 即使指定 M96 宏程序中断也不执行 注 状态触发和边沿触发形式 见 II 15 11 2 用户宏程序中断信号 功能的详细说明 说明 子程序型中断和宏程序型中断 有两种形式的用户宏程序中断 子程序型中断和宏程序型中断 使用 的中断类型由 MSB 参数 6003 的 5 位 选择 a 子程序型中断 中断程序作为子程序调用 这意味着在中断前后局部变量的级别保持 不变 中断不包含在子程序调用的嵌套级中 b 宏程序型中断 中断程序作为宏程序调用 这意味着在中断前后局部变量的级别要改 变 中断不包含在宏程序调用的嵌套级中 当在中断程序内执行子程 序调用或用户宏程序调用时 这个调用包含在子程序调用或宏程序调 用的嵌套级中 即使用户宏程序中断是宏程序型中断时 自变量也不 能从现在程序传递 用户宏程序中断控制的 M 代码 在一般情况下 用户宏程序中断由 M96 和 M97 控制 但是 这些代 码 可能已被某些机床制造厂用于其它用途 例如 M 功能或宏程序 M 代码 调用 由于这个原因 可用 MPR 参数 6003 的 4 位 设定用户宏 程序 中断控制的 M 代码 当设定该参数指定用 M 代码调用中断型宏程序时 应将 M 代码设在 参 数 6033 和 6034 中 在参数 6033 中设定使用户宏程序中断有效的 M 代码 而在参数 6034 中设定使用户宏程序中断无效的 M 代码 当指定不用参数设定的 M 代码时 M96 和 M97 用作中断型用户宏程 序控 制的 M 代码 而不管参数 6033 和 6034 的设定 用作用户宏程序中断控制的 M 代码被内部处理 它们不输出到外部装 置 但是 从程序的兼容性考虑 不希望使用 M96 和 M97 以外的 M 代 码控制用户宏程序中断 用户宏程序中断和 NC 语句 当执行用户宏程序中断时 用户有时希望 中断正在执行的 NC 语句 或 者希望执行完当前的程序段后再执行中断 这时 可用参数 MIN 参 数 6003 的 2 位 选择是在程序段的中间执行中断 还是等到程序段结 束 后再执行中断 型 在程序段中 执行中断 当中断信号 UINT 输入时 任何正在执行的移 动或暂停都被 立即停止 转而执行中断程序 如果在中断程序中有 NC 语句 在中断程序段中的指令被放弃 并 执行中断程序中的 NC 语句 当控制返回到被中断的程序时 程 序从被中断的程序段之后的下个程序段重新开始 如果在中断程序中没有 NC 语句 控制由 M99 返回到中断程 序 然后 程序从被中断的程序段中的指令重新开始 型 程序段结 束后执行中断 如果正在执行的程序段不是由几个循环动作组 成的程序段 例如 钻孔固定循环和自动返回参考点 G28 中断的执行过程如下 当中断信号 UINT 输入时 在中断程序中的宏程序语句立即执 行 除非在中断程序中遇到 NC 语句 此时直到当前的程序段执行 结束后 才执行中断程序中的 NC 语句 如果正在执行的程序段是由几个循环动作组成的程序段 中断 执 行如下 当循环运行中的最后的移动开始时 执行中断程序中的宏程序语 句 除非遇到 NC 语句 此时在全部循环动作完成之后执行 NC 语 句 用户宏程序中断信号 的有效和无效条件 在中断型用户宏程序的 M96 程序段执行之后 中 断信号有效 当 M97 的程序段开始执行时 该信号无效 当中断程序正在执行时 中断信号无效 当控制从中断程序返回后 主程序中紧接被中断的程序段开始执行时 该信号有效 在 I 型中断 中 如果中断程序只包含宏语句 则在控制从中断返回以后 中断程 序段开始执行时 该中断信号有效 包含循环动作的程序段执 行期间的用户宏程序中断 I 型 即使循环动作在进行中 移动也被中断 执行中断程序 如果中 断程 序不包含 NC 语句 在控制返回到被中断的程序之后 循环动作重新 开 始 如果有 NC 语句 则放弃中断循环中的剩余动作 而执行下个程 序 段 II 型 当循环动作的最后的移动开始时 执行中断程序中的宏语句 除 非遇 到 NC 语句 此时在循环动作完成后 执行 NC 语句 用户宏程序中断信号 UINT 的输入有两种方式 状态触发方式和边 沿 触发方式 使用状态触发方式时 当它接通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工项目合同纠纷处理制度
- 施工日志填写样本建筑物消防设施工程
- 教师招聘语文面试唐诗三首教学设计
- 两位好友合作经营店铺合同模板
- 个人与个人借款合同范本
- 中外合资企业采购合同中英文对照
- 中外合资经营企业合同(适用于零售连锁业务)
- 个人二手房交易合同担保协议书
- 专利交易合同协议
- 个人向企业借款合同样板
- 2024-2025学年辽宁省沈阳市沈河区七年级(上)期末英语试卷(含答案)
- T型引流管常见并发症的预防及处理
- 2024-2025学年人教新版九年级(上)化学寒假作业(九)
- 2024年计算机二级WPS考试题库(共380题含答案)
- 2022年全国医学博士英语统一考试试题
- 2024年江苏农牧科技职业学院单招职业适应性测试题库参考答案
- 知识图谱与大模型融合实践研究报告
- 卫生专业技术资格考试卫生检验技术(初级(师)211)专业知识试题及答案指导
- 0-9任意四位数手机密码排列组合全部数据列表
- 小数加减乘除计算题大全(300题大全)
- 钢筋工考试卷(满分100分)
评论
0/150
提交评论