宏程式编写.docx
《宏程式编写.docx》由会员分享,可在线阅读,更多相关《宏程式编写.docx(55页珍藏版)》请在冰豆网上搜索。
宏程式编写
宏程式编写
宏指令内容
含运算指令的程序段。
·含控制指令(GOTO,DO,END)的程序段。
·调出宏指令的程序段(G65,G66,G67)。
以上程序段在单勾程序状态下也不停止。
另外,被认为含有刀具径向补正移动的程序段。
制限事项
MDI运转模式只能进行变数的定义指令。
7.1简单的调出功能
由主程序或从上一宏指令程序中调出并执行宏指令程序。
指令形式
P:
调出宏指令程序的编号
L:
重复调出次数(9999次以下)
如省略则被看做为1次。
(引数):
连到宏指令程序的引数(参照7.3)
(注)G65中所有的引数都需预先指定。
文本框:
G65 PU ULU U(引数);
7.2常态调出功能
调出宏指令程序的模态指令后,在按轴移动指令执行轴的移动后,仍继续执行宏
指令程序,直到取消宏指令。
指令形式
P:
调出宏指令程序的编号
L:
重复调出次数(9999次以下)
如省略则被看做为1次。
(引数):
连到宏指令程序的引数(参照7.3)。
若取消则指行下面的指令。
指令形式
(程序的实行顺序)
文本框:
G01 ZU U ;
M99 ;
文本框:
G66 P1 ;
XU UYU U;
G67 ;
文本框:
G67;
文本框:
G66 PU ULU U(引数);
(注1)G66中所有的引数都属预先指定。
(注2)G66与G67必须在同一程序内指令。
G66常态执行中,即使不指令G67也可
用M30取消。
(注3)G66模式中不可再用G66指令。
(注4)G66的程序段不可用宏指令调出
7.3可指定引数
需向宏指令指定局部变数时,用引数指定。
引数指定
引数指定的位置
宏指令内的变数
A
#1
B
#2
C
#3
D
#7
E
#8
F
#9
G
-
H
#11
I
#4
J
#5
K
#6
L
-
M
#13
N
-
O
-
P
-
Q
#17
R
#18
S
#19
T
#20
U
#21
V
#22
W
#23
X
#24
Y
#25
Z
#26
0701.tbl
文本框:
(注意)
除G,L,N,O,P以外可用所有的位置
来指定引数。
对无需指定的位置就不必指定。
与省略的位置对应的局部变数值是空值。
7.4G65与M98的不同处
1.G65可用引数指定,而M98不能。
2.G65可通多重指定,使其含有各不相同的局部变数,而M98没有。
3.G65的调出重复次数与M98合起来可达到8重,单独重复可达4重。
7.5多重调出
宏指令调出可最多重复达4重调出。
按宏指定等级分配局部变数(#1~#6)。
用G65
等调出时,调出等级的局部变数被保存,而调出的宏指令程序的局部变数被重新分配。
执行M99时,被保存的局部变数会回复。
对于普通变数,等级不同其读写也可共通。
等级0等级1等级2等级3等级4
等级0的局部变数等级1的局部变数等级2的局部变数等级3的局部变数等级4的局部变数
对于普通变数,任何等级都可共同读写。
文本框:
G65P8030
I7.J8.;
M99;
文本框:
G65P8020
I5.J6.;
M99;
文本框:
主程序
文本框:
G65P8010
I3.J4.;
M30;
文本框:
G65P8040
I9.J10.;
M99;
文本框:
M99;
文本框:
程序8010
文本框:
程序8020
文本框:
程序8030
文本框:
程序8040
文本框:
#1
.
.
#4
#5
.
.
#9
#11
#13
#17
.
.
#26
文本框:
#1
.
.
#43.0
#54.0
.
.
#9
#11
#13
#17
.
.
#26
文本框:
#1
.
.
#45.0
#56.0
.
.
#9
#11
#13
#17
.
.
#26
文本框:
#1
.
.
#47.0
#58.0
.
.
#9
#11
#13
#17
.
.
#26
文本框:
#1
.
.
#49.0
#510.0
.
.
#9
#11
#13
#17
.
.
#26
文本框:
#100~#199
#500~#599
7.6变数
变数的种类
变数编号
变数的种类
功能
#0
通常<空>
通常不能用变数值代入<空>中
#1~#26
局部变数
各不同等级的宏指令可独自使用的变数。
切断电源初始化后,则变为<空>。
此变数的数值范围为
-1.0×10~-1.0×10﹑0﹑-1.0×10~-1.0×10﹑
#100~#199
普通变数
不同的宏指令间可共同使用的变数。
切断电源初始化后,则变为<空>。
此变数的数值范围为
-1.0×10~-1.0×10﹑0﹑-1.0×10~-1.0×10﹑
注意:
画面上不能将全部数位表示出来,但实际的变数
值,可在以上范围内记存。
参照「宏指令画面的表示,设定」
#500~#599
不同的宏指令程序间可共同使用的变数。
切断电源后其数据仍被保存。
此变数的数值范围的有效数位。
米:
-999999.999~999999.999
(整数6位,小数点后3位)
英寸:
-99999.9999~99999.9999
(整数5位,小数点后4位)
小数点后位数超出有效位数时,以四舍五入法取整,代
入值超出范围时,则报警。
变数的表现方法
(例1)#1=9#9=20#20=30
#5=#[#[#1]]
时、#5=30
(例2):
,N,及O不能加工变数前。
同时,不能进行N#20的指令
(例3)变数为位置数据时,小于位置数据可用数值位数的部分四舍五入。
大于位
置数据的最大指令时,报警。
(注)变数编号中可使用变数或数式,但必须以[]括起来。
#100=#[100+10];
未定义变数···尚未定义的变数称为<空>。
#0通常作为<空>使用。
文本框:
99-99-9999
文本框:
99-99-9999
(例1)#1为<空>时
G01X#1Y100.→G01Y100.
G01X[#1+10.]Y100.→G01X10.Y100.
(例2)计算
#0+#0→0
#0﹡5→0
(例3)条件式
#1=<空>时
#1=0时
#1EQ#0→成立
#1NE0→成立
#1GE#0→成立
#1GT0→不成立
#1EQ#0→不成立
#1NE0→不成立
#1GE#0→成立
#1GT0→不成立
EQ,NE不同等于<空>,"0"。
7.7计算指令
变数的定义、置换
#i=#j
定义、置换
加法计算
#i=#j+#k
#i=#j—#k
#i=#jOR#k
#i=#jXOR#k
加
减
逻辑和
排他的逻辑和
乘法计算
#i=#j*#K
#i=#j/#K
#i=#jAND#K
乘
除
逻辑积
函数#i=SIN[#K]
#i=COS[#K]
#i=TAN[#K]
#i=ATAN[#K]
#i=SQRT[#K]
#i=ABS[#K]
#i=BIN[#K]
#i=BCD[#K]
#i=ROUND[#K]
#i=FIX[#K]
#i=FUP[#K]
正弦
余弦
正切
反切
平方值
绝对值
BCD—BIN变换
BIN—BCD变换
四舍五入
小数点后数值舍去
小数点后数值进1到整数位
(注1)等式右边的#j,#K也可用固定的数值。
在此情况下,如数值无小数点,仍将数值视为末尾有小数点。
7.8计算顺序
·计算优先顺序为1.函数,2.乘法计算,3.加法计算。
·需优先计算的部分可以[]括起来。
包括函数在内,[]可重复使用5重。
7.9控制指令
IF[条件式]GOTOn;(n:
1~9999)
条件式成立时,进入序号n处;条件式不成立时,执行下一段程序。
如省略IF[条件式]
时,则无条件进入序号n处。
WHILE[条件式]DOm~ENDm;(m=1~4)
条件式成立时,重复执行下一段到END程序段;不成立时,执行END程序段的下一句
程序。
如省略WHILE[条件式]时,则无限重复执行DOm~ENDm。
条件式的种类
#iEQ#j
#i与#j相等
#iNE#j
#i与#j不相等
#iGT#j
#i超过#j
#iLT#j
#i小于#j
#iGE#j
#i大于#j
#iLE#j
#i小于#j
0703.tbl
(注1)条件式的全部内容都用[,]括起来。
(注2)#i、#j也可用定数或数式,若用数式则必须以[]括起来。
(注3)在同一程序内可任意次使用识别数号。
文本框:
IF [#100EQ50]GOTO123;
IF [#101GT102]GOTO123;
GOTO124;
N123
N124
(注4)DOm~ENDm必须一对一使用。
(注5)DOm~ENDm不能交叉使用
文本框:
WHILE [#100LT10]DO1;
WHILE [#101EQ50]DO2;
END1;
END2;
文本框:
WHILE [#100LT10]DO1;
WHILE [#101EQ50]DO1;
END1;
(注6)DOm~ENDm最多可4重使用。
文本框:
WHILE[#100LT10]DO1;
WHILE[#101LT20]DO2;
WHILE[#102LT30]DO3;
WHILE[#103LT40]DO4;
4重3重2重1重
END4;
END3;
END2;
END1;
(注7)IF~