1. 什么场合会用到宏程序编程?
* E# r V* M- k
其实说起来宏就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加一个量,那么宏就会自动算出X坐标并且进行切削, 实际上宏在程序中主要起到的是运算作用。
P0 ]8 }7 H9 D" k* k
6 D1 e& t( H) k. M( e8 J手工编程加工公式曲线(计算简单,输入快捷)
有规律的切削路径(作为一个切削模块)
程序间的控制(程序的调度)
刀具的管理(刀具的磨损)
自动测量(机内测头)
1 F+ B9 H3 \" M0 t( J
2. 什么叫宏程序?
. y- k, N6 X6 W" ~在编程时,我们会把能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来调用它们,使用时只需给出这个总指令就能执行其功能所存入的这一系列指令称作用户宏程序本体,简称宏程序。
" h# z' F' _+ {/ S7 V
这个总指令称作用户宏程序调用指令。在编程时,编程员只要记住宏指令而不必记住宏程序。
" R0 R: C/ \! j8 U3. 用户宏程序与普通程序的区别
- c9 I+ z( i5 ]0 I
1)在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转。
2)普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。
3)用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。
! X7 j4 M N% O m+ B) j/ b# A
4. 变量的三种类型
. M8 J+ R2 p% o: H6 u* x6 l e, O数控系统变量表示形式为“#”后跟1~4位数字,变量种类有三种:
: n) Z' k7 {, s(1)局部变量:#1~#33是在宏程序中局部使用的变量,它用于自变量转移。
; o8 ?! |% N; @$ e9 S/ v2 v% v$ D; P
(2)公用变量:用户可以自由使用,它对于由主程序调用的各子程序及各宏程序来说是可以公用的。#100~#149在关掉电源后,变量值全部被清除,而#500~#509在关掉电源后,变量值则可以保存。
. k/ t: s: Y" q) T a% r(3)系统变量:由后跟4位数字来定义,它能获取包含在机床处理器或NC内存中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。
6 z' C8 J" |( A, U2 V5. 宏程序的特点
. J! b, }( |+ w1 `3 s1 {宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
一、FANUC—0M宏程序的H代码宏程序标准格:G65 Hm P#i Q#j R#k
H代码 | 意 义 | H代码 | 意 义 |
H01 | #i=#j | 条件转移格式 | G65 H8× P程序段号码n Q#j R#k |
H02 | #i=#j+#k | H80 | 无条件转移 GoTo n |
H03 | #i=#j-#k | H81 | #i=#j GoTo n |
H04 | #i=#j×#k | H82 | #i≠#j GoTo n |
H05 | #i=#j÷#k | H83 | #i>#j GoTo n |
H21 | #i=#j^1/2 | H84 | #i<#j GoTo n |
H22 | #i=‖j‖ | H85 | #i≥#j GoTo n |
H23 | 求余(丢弃小于1的分数) | H86 | #i≤#j GoTo n |
H26 | #i=(#i×#j)/#k |
" C F# D" @4 i$ a8 d | . e! w+ e( B8 E5 W8 N$ {( u
|
H27 | #i=(#j^2+#k^2)^1/2 | 2 \7 }9 f$ A4 a: S
|
$ b4 W+ c4 z" F G6 l |
H28 | #i=(#j^2-#k^2)^1/2 |
4 q) B% Q- o+ ? | " o% U& n$ @" T/ G: {
|
H31 | #i=#j×SIN #k | / @5 [" z# J( D9 r0 b
| 2 z7 A6 S: H4 h" q
|
H32 | #i=#j×COS #k | , a( D1 Y& H1 y4 Z, u. v. H, k
| - `' c2 g* l: d/ K. O6 H
|
H33 | #i=#j×TAN #k |
! O, g1 l. R7 O0 Q5 h6 u | * ~- n8 g P9 q. s6 L
|
H34 | #i=#j×ATAN #k |
( ]& z0 e1 B% e | / q7 C, G& ]/ X; @. g" L! U
|
二、FANUC—18M宏程序的格式1.变量的类型:* k5 U3 W% w& {4 F
#0 | Always null(总是零) |
#1-#33 | Local variables(局部变量) |
#100-#149(#199);#500-#531(#999) | Common variables(公用变量) |
#1000- | System variables(系统变量) |
NOTE(注意):common variables #150 to #199 and #532 to #999 are optional。 (从#150到 #199 和#532到#999是可选的) |
2.非模态调用宏程序:
程序的标准格式:G65 P(宏程序号) L(重复次数) <指定引数值>
注:每次调用都要重新写G65的标准格式,用后自动取消。
3.模态调用宏程序:
程序的标准格式:G66 P(宏程序号) L(重复次数) <指定引数值>
注:不用指定G66直接输入引数值。
4. 关于G65、G66中的引数赋值
⑴.引数赋值Ⅰ的地址和变量号码的对应关系:
p9 c" S& B2 z' w$ C
A | #1 | D | #7 | H | #11 | K | #6 | R | #18 | U | #21 | X | #24 |
B | #2 | E | #8 | I | #4 | M | #13 | S | #19 | V | #22 | Y | #25 |
C | #3 | F | #9 | J | #5 | Q | #17 | T | #20 | W | #23 | Z | #26 |
⑵.引数赋值Ⅱ的地址和变量号码的对应关系:
6 q+ n; N/ A( V0 M" C% G
A | #1 | I2 | #7 | I4 | #13 | I6 | #19 | I8 | #25 | I10 | #31 |
B | #2 | J2 | #8 | J4 | #14 | J6 | #20 | J8 | #26 | J10 | #32 |
C | #3 | K2 | #9 | K4 | #15 | K6 | #21 | K8 | #27 | K10 | #33 |
I1 | #4 | I3 | #10 | I5 | #16 | I7 | #22 | I9 | #28 | 引数赋值Ⅰ、Ⅱ可以连用, 以后的为准 |
J1 | #5 | J3 | #11 | J5 | #17 | J7 | #23 | J9 | #29 |
K1 | #6 | K3 | #12 | K5 | #18 | K7 | #24 | K9 | #30 |
5. 关于G65、G66中的算术和逻辑运算:
, w0 y' f1 {5 U6 |& _. p9 A/ f/ B数 学 意 义 | 标准格式 | 数 学 意 义 | 标准格式 |
定 义 | #I=#j | 平 方 根 | #I=SQRT[#J] |
加 法 | #I=#J+#K | 绝 对 值 | #I=ABS[#J] |
减 法 | #I=#J-#K | 舍 入 | #I=ROUND[#J] |
乘 法 | #I=#J*#K | 上 取 整 | #I=FIX[#J] |
除 法 | #I=#J/#K | 下 取 整 | #I=FUP[#J] |
正 弦 | #I=SIN[#J] | 自然对数 | #I=LN[#J] |
反正弦 | #I=ASIN[#J] | 指数函数 | #I=EXP[#J] |
余 弦 | #I=COS[#J] | 或 | #I=#J OR #K |
反余弦 | #I=ACOS[#J] | 异或 | #I=#J XOR #K |
正 切 | #I=TAN[#J] | 与 | #I=#J AND #K |
反正切 | #I=ATAN[#J] | + Y( Z: g- T) u) [* X/ t$ A; c
|
" I. F( z2 S* w( ? |
从BCD转为 BIN | #I=BIN[#J] 用于与PMC信号交换 | 从BIN转为BCD | #I=BCD[#J] 用于与PMC信号交换 |
Remaindering (余数) | #I=#J MODE #K | the Remainder is determined指定的 after以后 the specified精确确定的values值 are是rounded四舍五入的 to integers整数。 |
6. G67宏程序的模态调用宏程序取消。
7.宏程序可以用 G×× <指定引数值> 的格式调用:
说明:①程序号用O9010~O9019;
②将程序号对应的参数设置为G代码的数值;
③调用的形式为:G(参数设定值) <指定引数值>。
宏程序主体号码与对应的参数号:
: z) Y5 M# z1 n
O9010 | 7550 | O9012 | 7552 | O9014 | 7554 | O9016 | 7556 | O9018 | 7558 |
O9011 | 7551 | O9013 | 7553 | O9015 | 7555 | O9017 | 7557 | O9019 | 7559 |
8.条件转移指令:
) `- m- X( S0 X8 k% Y2 `
意 义 | 标准格式 | 条 件 表 达 式 |
⑴无条件转移指令 | GOTO n(程序号) |
⑵有条件转移指令 | IF【<条件表达式>】GOTO n 意思:满足条件返回程序号为n的单节加工, 不满足条件加工后面的程序。 | 标准格式 | 数学意义 |
#i EQ #j | #i=#j GoTo n |
#i NE #j | #i≠#j GoTo n |
⑶无条件循环 | DO m……END m | #i GT #j | #i>#j GoTo n |
⑷条件循环 | WHILE【<条件表达式>】DO m……END m(m=1.2.3…..) 意思:满足条件调用WHILE与END之间的程序 m次,WHILE与END后面的m数必须相同。 | #i LT #j | #i<#j GoTo n |
#i GE #j | #i≥#j GoTo n |
#i LE #j | #i≤#j GoTo n |
0 ~4 \' Y0 ~ M/ r三、西门子(SIEMENS)宏程序的格式1.计算参数R:R0—R99 ——可以自由使用;
R100R249 ——加工循环传递参数;
R250—R299——用于加工循环传递的内部计算参数。
计算:遵循通常的数学运算规则,括号内的优先,乘除优先与加减。
如:R15=SQRT(R1*R1+R2*R2);意义:R15=(R1^2+R2^2)^1/2;
N10 Z=R3 表示为Z赋值;其余同18M。
2.条件跳跃:
⑴.标准格式:IF条件GoToF Label 向前跳跃
IF条件GoToB Label 向后跳跃
# R8 f0 A9 K. @' f. @
其中:标记符(Label):由2-8个字母或数字组成开始的两个字符必须是字母或下划线。
跳跃目标标记符的后面必须是冒号。
⑵.比较运算:
8 {) p; L! \2 A8 o% r8 c
运算符 | 意义 |
= = | 等于 |
< > | 不等于 |
> | 大于 |
< | 小于 |
> = | 大于或等于 |
< = | 小于或等于 |
3.算术:
/ s5 r2 V( V- O0 x7 p4 b' N数学意义 | 标准格式 | 数学意义 | 标准格式 |
定 义 | R1=R2 | 正切 | R1=TAN(R2) |
加法 | R1=R2+R3 | 反正切 | R1=ATANZ(R2) |
减法 | R1=R2-R3 | 平方根 | R1=SQRT(R2) |
乘法 | R1=R2*R3 | 平方 | R1=POT(R2) |
除法 | R1=R2/R3 | 舍去小数位 | R1=TRUNC(R2) |
正弦 | R1=SIN(R2) | 舍入 | R1=ROUND(R2) |
反正弦 | R1=ASIN(R2) | 绝对值 | R1=ABS(R2) |
余弦 | R1=COS(R2) | 自然对数 | R1=LN(R2) |
反余弦 | #I=ASCOS(R2) | 指数函数 | R1=EXP(R2) |
四、西门子(SIEMENS)编程语言的格式
4 C3 Y( M% P; R( O8 z1 s6 l编程语言 | 名称 | 格式 | 含义 |
G110(相对)、 G111(绝对)、 G112 | 带极坐标 的移动命令 | G110,G111,G112,X_Y_Z_ | 指定极点 |
G0 AP=_RP=_(模态) | AP极角RP极半径 |
AC/IC | 绝对/增量 | AP=IC(70) |
7 Y7 p( l* {( T |
CIP |
0 ~4 k) G1 ]( X. Y | CIP X_ Y _ Z_ | 圆终点及中点 |
| 三轴坐标 |
4 a% X2 U7 w' Q9 N子程序和程序段重复 |
| | 子程序调用“L100.SPF”;还可用程序名调用子程序 |
| |
| |
| | |
| |
| |
6 u+ L- a# s/ z: l/ i$ u0 Z/ X