从一个简单常用的例子说起,循环可能是我们在高级应用服务中运用最多的语句,DMIS标准中的循环语句为主字DO。
语法格式为:
DO/变量,启始值,终止值,步幅
那么一个语句如果为DO/I,1,10,1的意义就为,执行一个循环,I的值+1,增加10次之后,循环结束.
来看一个实例:
假设我的工件有一个孔,名为CIR1,我需要把它测量5次,取其中的最小值.那么测量部分的循环语句即为
AUTO/AUTO,PROG,MAN
DO/I,1,5
MEAS/CIRCLE,CIR1,4
ENDMES
ENDDO
运行这段语句,测量机就会自动去测量圆CIR1,直到5次结束后位置.
需要注意的地方:
1.所有的变量在使用前都必须声明,上面的I是一个整型变量,每循环一次,I+1
2.每一个DO语句都必须跟一个ENDDO表示该循环的结束.
3.步幅表示每次循环I的增量,如果步副是2,那么下次I就为3,再循环一个为5,以此类推.
RationalDMIS 7.0 DO循环实例如下:
当程序运行时,操作软件就会提醒操作者输入需要测量被测特征的次数,界面如下:
这就要操作者自行输入需要的数字,当输入的数字完毕,软件就会执行这段程序输入数字相应的次数,测量特征一次之后,界面如下:
这样,操作者就很清楚测量的进度。
通过这一方法,还可以确定测量的重复性,帮助我们判断测量结果的准确度和可靠性。
DECL/COMMON,INTGR,I
DECL/COMMON,INTGR,NUM
NUM = PROMPT/'要测量特征多少次!'
DECL/COMMON,CHAR,255,C1
DO/I,1,NUM
F(J-1)=FEAT/CIRCLE,INNER,CART,15.9115,22.5000,-2.0000,0.0000,0.0000,1.0000, 10.0000
$$ Empty Meas Block
MEAS/CIRCLE, F(J-1), 5
ENDMES
C1 = ASSIGN/CONCAT('已测量',STR(I),'次,','共',STR(NUM),'次。')
TEXT/OUTFIL, C1
T(TCOR1)=TOL/CORTOL,XAXIS,-0.0300,0.0300
OUTPUT/FA(J-1),TA(TCOR1)
T(TCOR2)=TOL/CORTOL,YAXIS,-0.0300,0.0300
OUTPUT/FA(J-1),TA(TCOR2)
T(TDM1)=TOL/DIAM,0.0000,0.0210
OUTPUT/FA(J-1),TA(TDM1)
TEXT/OPER, C1
ENDDO
能实现同样效果的程序如下:
软件示例(傅海鑫):
1. 下面的例子将提示语句循环执行4次,每次提示循环到第几遍
DO/KNPTN1,1,4,1
$$将数字转化为字符并与提示合并
KNPTC1=ASSIGN/CONCAT('这是第',STR(KNPTN1),'遍循环')
TEXT/OPER, KNPTC1
ENDDO
2. 下面的程序控制机器在500X500的范围内走S形轨迹
DECL/LOCAL,REAL,XPOS,YPOS
DECL/LOCAL,INTGR,XN,YN
DO/YN,0,500,100
$$RL函数将整数转换为实数
YPOS=ASSIGN/RL(YN)
DO/XN,0,500,100
XPOS=ASSIGN/RL(XN)
GOTO/XPOS,YPOS,50
ENDDO
ENDDO