首页 理论教育宏程序运算指令表及注意事项

宏程序运算指令表及注意事项

【摘要】:表5.2-1 宏程序运算指令表(续)宏程序的运算次序与运算法则和数学运算相同,例如,先函数、再乘除、后加减,也可加括号改变运算次序;运算式中的除数不允许为0等。

1.运算指令

FS-0iD的宏程序算术或逻辑运算可以用表5.2-1中的运算符表示,表中的#i为存放运算结果的宏程序变量;#j、#k为参与运算的宏程序变量,常数可直接表示。

表5.2-1 宏程序运算指令表

978-7-111-41794-1-Chapter05-20.jpg

(续)

978-7-111-41794-1-Chapter05-21.jpg

宏程序的运算次序与运算法则和数学运算相同,例如,先函数、再乘除、后加减,也可加括号改变运算次序;运算式中的除数不允许为0等。

2.跳转和循环指令

1)无条件转移。无条件转移指令的格式如下:

978-7-111-41794-1-Chapter05-22.jpg

n为目标程序段号,执行指令程序将无条件转移到程序段n并执行。目标程序段号也可用变量代替,如GOTO#10等。

2)条件转移。条件转移指令的格式如下:

978-7-111-41794-1-Chapter05-23.jpg

n为目标程序段号。如条件满足,执行指令程序将转移到程序段n并执行;否则继续执行下一程序段;目标程序段号也可用变量代替。FS-0iD可使用的条件式如下。

978-7-111-41794-1-Chapter05-24.jpg

3)循环执行。循环指令的编程格式如下:

WHILE[条件式]DO m

当条件满足时,将继续执行下一程序段,直到“END m”;否则,直接跳转到指令“END m”后的程序段。指令中m的取值范围为1、2、3。指令可使用的条件式与“IF[条件式]GOTO n”指令同。

使用转移与循环指令时应注意如下几点:

1)“WHILE[条件式]DO m”指令中的m的取值范围为1、2、3,但可以重复使用,例如:

978-7-111-41794-1-Chapter05-25.jpg

2)WHILE[条件式]DO m指令中的执行范围不能交叉,即不能使用如下指令:

978-7-111-41794-1-Chapter05-26.jpg

3)“WHILE[条件式]DO m”指令可使用嵌套,嵌套最大为3层。

978-7-111-41794-1-Chapter05-27.jpg

4)“WHILE[条件式]DO m”到“END m”的程序段,可利用跳转指令跳转到外部,即允许使用下面的指令:

978-7-111-41794-1-Chapter05-28.jpg

5)外部跳转指令不能进入“WHILE[条件式]DO m”到“END m”的程序段,即不允许使用下面的指令:

978-7-111-41794-1-Chapter05-29.jpg

3.外部数据输出指令

用户宏程序可通过外部输出指令,直接在CNC的RS232C接口上输出变量或字符的ISO或EIA码。数据输出的传输速率、停止位数、代码格式(ISO/EIA)、同步信号、外部设备类型等,可通过CNC的设定参数进行设定。外部输出指令及使用方法如下。

1)接口开启与关闭。进行外部数据输出时,需要通过接口开启指令POPEN连接外部设备,数据输出完成后,利用指令PCLOS关闭接口。例如:

978-7-111-41794-1-Chapter05-30.jpg

指令POPEN与PCLOS间的程序段允许进行外部数据输出,数据输出过程中,如CNC复位信号生效,将停止数据输出并清除未输出的数据。

2)二进制数据输出。宏程序数据可按二进制格式输出,指令格式如下:

978-7-111-41794-1-Chapter05-31.jpg

a:输出字符,可以是字母A~Z、数字0~9、字符“∗”、“+”、“-”、“/”等,字符“∗”代表空格;

b:宏程序变量;

c:有效小数位,仅用于变量转换,不输出小数点

二进制数据输出的为字长32位的无符号数据,不考虑小数点、负数采用二进制补码、前0不省略、空变量视为0。例如,对于指令:

978-7-111-41794-1-Chapter05-32.jpg

当#100=0.40956、#101=-1638.4、#10=12.34时,按CNC输入格式的要求,进行小数点、空格转换后,数据为“C__X410 Y-1638400 M12;”,转换为二进制后成为“C__X0000 019A Y FFE7 0000 M 0000 000C;”,输出的ISO码为“C3 A0 A0 D8 00 00 01 9A 59 FF E7 00 00 4D 00 00 00 0C 0A”。

3)十进制数据输出。宏程序数据也可按十进制格式输出,指令格式如下:

978-7-111-41794-1-Chapter05-33.jpg

ab:含义同二进制输出;

c:整数位数;

d:小数位数。

十制数据输出数据最大为9位(不含符号位),实际位数决定于指令中的cd值;空变量视为0。小数点、前0、正/负号的输出决定于CNC参数PRM 6001.1(PRT)的设定,设定0时,不输出小数点、前0和+用空格代替,负号正常输出;设定1时,输出小数点、前0和正号不输出,负号正常输出。例如,对于指令:

DPRNT[X#2[53]Y#5[53]T#30[20]];

当#2=128.47398、#5=-91.2、#30=123.456时,按CNC输入格式的取位(X/Y为8位,T为2位)并添前0后,数据转换为“X000128.474 Y-000091.200 T23;”。因此,如设定PRM 6001.1=0,将输出“X___128.474 Y-___91.200 T_23;”,其ISO码为“D8 A0 A0 A0 B1 B2 B8 2E B4 B7 B4 59 2D A0 A0 A0 39 B1 2E B2 30 30 D4 A0 B2 33 0A”;如设定PRM 6001.1=1时,将输出“X128.474 Y-91.200 T23;”,其ISO码为“D8 B1 B2 B8 2E B4 B7 B4 59 2D 39 B1 2E B2 30 30 D4 A0 B2 33 0A”。