编辑软件测量程序必须按照其特定的编程规范。掌握了编程规范后,我们可以编缉出与实际测量相关的测量程序,使我们的工作更方便、快捷。
变量的赋值
数值变量的赋值
语句:Vn=w
功能介绍:给数值变量赋值。
参数说明:n表示常量,范围为0≤n≤499,Vn为要被赋值的数值变量,W为数学表达式。
应用举例:
V2=6
运行结果:
将6赋给V2。
字符串变量的赋值
语句:S$n=Str
功能介绍: 给字符串变量赋值。
参数说明: S$n为要被赋值的字符串变量,Str为字符串或字符串变量。
应用举例:
S$1=STR$(65)
运行结果:
S$1=65
变量的输入
数值变量的输入
语句:INPUT-VAR(Vn, "… ")
通过键盘输入为数值变量赋值,Vn为要被赋值的数值变量,其后可以在引用号中输入一些字符作为提示。
字符串变量的输入
语句:INPUT-STR(Sn, "… ")
通过键盘输入为字符串变量赋值,Sn为要被赋值的字符串变量,其后可以在引用号中输入一些字符作为提示。
条件
有两种不同的条件语句,即简单条件句和选择条件句。
简单条件句
语句: IF(条件)
......
ENDIF
说明:如果括号中的条件被满足,则执行IF……ENDIF之间的程序段M;否则,将跳过程序段M而执行ENDIF后面的程序段。
选择条件句
语句: IF(条件)
......
ELSE
......
ENDIF
说明:如果括号中的条件被满足,则执行IF…… ELSE之间的程序段M;否则,跳过程序段M而执行ELSE后面的程序段N,最后再执行ENDIF以后的程序段。
注意:条件可嵌套使用但不要超过六层。
理论测点
在程序中可使用理论测点来构造任意的理论元素,这些理论测点及由此构造的理论元素都是理想的测点或元素,不会带有任何测量误差,并且他们总是在当前坐标系下的。
语句:VALUE(Cx,Cy,Cz)
说明:指令后的括号中为所需理论测点的坐标值,这些点总是在当前坐标系下表示的,而且其坐标形式(直角坐标或极坐标)也与当前的状态一致。
循环
有两种不同的循环语句,即无条件循环和条件循环。
无条件循环
语句: FOR (Vn,S,E)
......
NEXT
说明:
①循环允许FOR….NEXT之间的程序段M被循环执行多次,循环的次数由循环量决定,循环变量等于起始值S时循环开始,循环变量超过终止值E时循环结束。
②循环次数只能由循环变量的起始值S和终止值E事先设定 。
③循环变量的起始值S和终止值E均为自然数而且满足不等式S<=E。
④在循环内不允许给循环变量重新赋值。
条件循环
语句: REPEAT
......
UNTIL(条件)
说明:
①REPEAT…UNTILL(条件)之间的程序段M将被循环执行直到预定的条件满足。
②循环次数取决于条件何时满足,如果条件始终无法满足,则程序将会形成环。
例:V1=1
REPEAT
V1=V1+1
UNTIL(V1>10)
注意:
循环可嵌套使用但不要超过六层。
手控采点
在手动测量机上可以使用手控采点的指令来引导操作者完成采点,而其他的计算、存取、输出等与机器运动无关的语句则与数控测量机上一样是自动执行的。这些指令也可用于自动测量程序中,以实现在自动测量程序中进行手控采点,从而增加测量程序的灵活性。
语句:READ-MAN(n,“提示”)
说明:指令后的括号中为需要手控采集的测量点的个数,当手控采点达到该语句要求的个数后,该语句才算执行完毕,这时程序自动转入下一行并继续运行。
等待
使用等待语句可以使程序执行到流程中的某一处时,停顿规定的时间后再自动继续运行后续的程序行。
语句:WAIT(n)
说明:指令后括号中的n为规定的停顿时间,其单位为秒。
暂停
使用暂停语句可以使程序执行到流程中的某一处时被中断,以便您进行必要的观察或作某些操作处理。
语句:PAUSE
说明:程序中断后,如果您没有改变程序编辑器中的光标位置,则点击运行图标(连续或单步)即可使程序从中断处重新开始运行;如果您需要从其他地方重新开始运行,则可使用鼠标将程序编辑器中的光标移动到所需的位置,再点击运行图标(连续或单步)。
字符串显示
使用字符串显示语句可以在计算机屏幕上显示规定的字符串(或字符串变量的值)。
语句:DISP(“str”) str为要显示的字符串
说明:当程序执行该指令后,计算机屏幕上将弹出一个显示窗显示规定的字符串,同时程序运行被中断,直到关闭显示窗之后,程序才能继续运行 或停止运行。
应用举例:DISP(“请移动机器到安全位置”)
运行结果:弹出如下图对话框,选择“是”程序继续运行,选择“否”程序停止运行。
移动
有两种形式的移动语句,即绝对移动和相对移动用于驱动测量机向指定的位置移动。
绝对移动
语句:MOVE-TO(Cx,Cy,Cz)
说明:指令后的括号中为移动目标位置,它们总是当前坐标系下的坐标值,而且其坐标形式(直角坐标或极坐标)也与当前的状态一致。
相对移动
语句:MOVE(Dx,Dy,Dz)
说明:指令后的括号中为当前坐标系下各个方向的位移量,其坐标形式(直角坐标或坐标)与当前的状态一致。
采点
语句:READ-PROBE(Cx,Cy,Cz)
说明:指令后括号中为采点目标位置的坐标值(指与被测工件接触时测球中心的位置),它们总是当前坐标系下的坐标值,而且其坐标形式(直角坐标或极坐标)也与当前的状态一致。
语句:READ-PROBE-IJK(x,y,z,I,J,K)
说明:指令后括号中为采点目标位置的坐标值(指与被测工件接触面的位置)和测点的矢量方向。坐标值总是当前坐标系下的值,而且其坐标形式(直角坐标或极坐标)也与当前的状态一致。
两者对比关系如下图所示:
补偿关闭/开启
补偿关闭/开启语句可以对一段程序中所有的采点是否补偿进行转换。
语句:PROBE-CENT-COOR(ON)
PROBE-CENT-COOR(OFF)
说明:
a)如果程序中遇到PROBE-CENT-COOR(ON),则从此行之后直到第一次遇到PROBE-CENT-COOR(OFF)之前,所有的采点都不进行测球半径补偿。
b)如果程序中遇到PROBE-CENT-COOR(OFF),则从此行之后直到第一次遇到PROBE-CENT-COOR(ON)之前,所有的采点都进行测球半径补偿。
子程序
为使测量程序层次清晰、有条理、易于理解,常采用子程序编程技巧,来解决一个问题或过程。
子程序结构
SUBROUTINE 子程序名
……
SUBEND
例:SUBROUTINE CEYUAN
OFFSET(P0,P1,P2)
SUBEND
说明:
①SUBROUTINE为子程序起始语句,其后为子程序的名称;M为子程序的主体而SUBEND为子程序结束语句。
②子程序必须位于主程序之后,即主程序结束语句END之后。
③每个子程序必须有一个以拉丁字母为首字母的由字母和数字组成的名称。
④应避免使用各种常量、变量、函数名、语句名及指令作为子程序名称。
⑤子程序可以使用传递变量Pn((0≤n≤49),在调用子程序时可以用附带参数给这些变量赋值。
子程序的调用
语句:CALL子程序名(Var1,Var2……)
说明:括号中附带的参数可以给子程序中的传递变量(Pn)赋值。
例:FOR(V1,1,10)
CALL CEYUAN(V1,2,3)
NEXT
END
SUBROUTINE CEYUAN
OFFSET(P0,P1,P2)
SUBEND
调用如上子程序时,其传递变量P0、P1、P2分别被赋值为V1、2、3。即各次循环都将当前坐标系的原点沿Y方向平移2,沿Z方向平移3,而沿X方向的平移量则从1到10依次递增。
文件操作
打开文件
语句:Vn=OPEN(“文件名”,“R/W/A”)
功能介绍:打开(或创建)一个文件进行某种操作。
参数说明:其中Vn为一个变量,R/W/A为文件的操作种类。“R”为读取,即由打开的文件中读取一行数据。“W”为写入,即往打开的文件中写入一行数据。执行此操作时,文件中原有的数据将全部被删除。“A”为添加,即给文件添加一行数据。执行此操作时,文件中原有的数据将被保留,而新添加的数据将被写在文件的最后一行。
应用举例:
V98=OPEN(“TULUN”,“w”)
运行结果:
打开写文件。
注意:为了保证文件不被破坏,程序中打开的文件,在不需进一步操作时应及时关闭。
关闭文件
语句:CLOSE(Vn)
功能介绍:关闭已打开的文件,与OPEN语句配合使用。
参数说明:Vn为一个变量。
应用举例:
CLOSE(V1)
运行结果:
写入
语句:WRITE(Vn ,S$n)
功能介绍:将字符串变量S$n写入由Vn打开的文件中,根据该文件打开的方式,写入时可删除或保留原有数据。
参数说明:Vn为一个变量,S$n为字符串变量。
应用举例:
S$1=“123456”
V98=OPEN(“点”,“W”)
WRITE(V98,S$1)
运行结果:
向由V98打开的“点”文件中写入“123456”数据。
说明:该语句只能在文件的打开方式为“W”或“A”的情况下执行。
读出
语句:RAED(Vn ,S$n)
功能介绍:从由Vn打开的文件中读取一行数据,将其赋值给字符串变量S$n,与OPEN语句配合使用。
参数说明:Vn为数值变量。S$n为字符串变量。
应用举例:
V98=OPEN("点","R")
READ(V98,S$1)
运行结果:从由V98打开的“点”文件中读取一行数据,将其赋值给字符串变量S$1。