简单的R参数2

昨天的小文排版看着有点儿乱,建议横屏看。

今天继续说说R参数。昨天提到R参数有两种写法,实际上对应了两类变量:

一类叫做预处理变量(Preprocessing variables);另一类叫做主运行变量(Main run variables)。

什么叫预处理变量呢?都知道NC程序执行时都有预处理,在预处理时就读写了的变量就是预处理变量。而主运行变量是些只有在程序运行时才读写的变量。不好理解?举例说明。

编写主程序mymain.mpf,内容如下:

g0 x0

R1=0

M0

R1=R1+1

M02

编写主程序mymain2.mpf,内容如下:

g0 x0

R1=0

M0

do $R1=$R1+1

M02

两个有差别吗?

先看第一个程序,运行到M0时,R1=1,即已经执行了R1=R1+1

再看运行第二个程序,运行到M0时,R1=0,即程序还没运行到计算读写R参数的语句,所以R1的数值不会变

预处理变量有:

$M:机床数据

$S:设定数据,保护区

$T :刀具管理数据

$P:编程值

$C:ISO封装循环的循环变量

$O:选项数据

R:R参数(计算参数)

主运行变量有:

$$M:机床数据

$$S:设定数据

$A:当前主运行数据

$V:位置控制器数据

$R:R参数(计算参数)

有人会问,R参数在预处理时就计算了,像第一个例子,还没执行到计算,系统就都算完了,那会不会导致错误?比如:

g0 x0

R1=0

mylabel:

R1=R1+1

g01 x=R1*10 F500

g4f1

if R1<10 gotob mylabel

M02

语句比较简单,就不解释了。这个程序会不会导致X轴直接走到X100呢?

看下用伺服跟踪功能记录的程序执行过程:

黄色曲线是R1的数值,绿色曲线是X轴的实际位置。

可以看到R1在程序执行时,就一下累加到了10,但X轴并不是直接走到X100,而是X10,X20, X30... X100,按照编程的原意一步一步执行的,这是因为预处理是计算语句和轴移动语句按照先后顺序都预处理了,所以执行结果是对的。

虽然都是R参数,但是R1是预处理变量,而$R1是主运行变量。

看下面的程序:

g0 x0

every r1>0 do $r2=123

m0

mylabel:

M02

执行结果是什么?看视频的执行结果,程序运行到M0后,修改R1,R2参数没有变化。

修改下程序:

g0 x0

every $r1>0 do $r2=123

m0

mylabel:

M02

同样运行到M0,这次修改R1,会引起R2的变化。

这就是预处理变量和主运行变量的差别。

程序中用到的“EVERY ... DO ...”,叫做同步动作(Synchronized actions)。以后专门实验讲解。

(0)

相关推荐