昨天的小文排版看着有点儿乱,建议横屏看。 今天继续说说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)。以后专门实验讲解。 |
|
来自: LiuShouling > 《R参数》