DMIS5.2标准如下:
在对一个工件实施曲面测量时,三坐标测量机的测头正是沿着该点的法线方向接触工件的。由于存在着制造误差,很显然,被测工件的实际曲面是不会与CAD模型中的理论曲面相重合的,而且实际测量点(即测头与工件的接触点)的法线向量也不一定会与过该名义点的法线向量重合。关于曲面测量中的误差表述正是基于此而确定的。人们有时候把工件曲面是某一点的误差简单地说成是“法向偏差”,严格地讲这种讲 法欠严密。虽然法向偏差的称谓并没有错,但它的真正含义乃是从名义点到实测点的向量在前者法线方向上的投影。
在曲面测量中,测头是沿着某点的法向接触工件的,该点的名义值和过该点的切平面的法线向量(指向工件外)三个方向余弦值已经存贮在软件数据库中。
由于测量误差及计算误差,从名义点到实际测量点的向量并不一定与过该名义点的法线向量重合,法向偏差应该是从名义点到实测点的向量在法线方向上的投影。
在车身及薄壁件的测量当中,经常需要评价点轮廓公差并给出报告,但是点轮廓的具体意义是什么呢?很多人误以为是理论点和实际点的距离,这个理解是错误的;比较常用的一个说法将点轮廓公差叫做点的综合误差,也就是在法矢方向的误差,这个误差值有正负区分;当实际点相对于理论点及理论法矢在正方向,点轮廓为正;否则为负;
如下图:黑色原点及箭头为理论点和理论法矢,红色原点和蓝色原点分别为在正方向和负方向的2个实测点,那么点轮廓绝对值就是将实测点投影到过理论点以理论法矢为方向的直线上得到的投影点和理论点之间的距离;
例如:
从CAD模型中拾取一个点GP-1(记为M1)的坐标为(单位:mm)
X=218.4287,Y=66.4460,Z=-13.2920
过该点的切平面的法线向量与X,Y,Z三个坐标轴的正向的夹角分别设为α,β,γ,从CAD模型中得到该法线向量的方向余弦是:
COSα=-0.0895 , COSβ=0.1444 , COSγ=0.9855
对名义点GP-1进行测量,得到实测值(记录该点为M2)具体坐标为:
X1=218.425300,Y1=66.4520,Z=-13.2913000
实测值与名义值在x,Y,Z三个坐标轴上的差值分别为:
DX=X1-X=-0.0034
DY=Y1-Y=0.022
DZ=Z1-Z=0.0007
以名义点M1为起点,以实测点M2为终点的向量M1M2为:
MI M2={ DX, DY, DZ}
={-0.0034,0.022, 0.0007}
向量M1 M2的模为:
GP-1点的单位向量为:{ COSα, COSβ, COSγ}
其方向和过该点的法线方向一致,而指向工件外,即测头那一方。按两向量的夹角余弦公式,向量与向量m的夹角中的余弦为:
如前所述,工件曲面上M1点的误差,或简单以“法向偏差”称之,即为向量在m上的投影,等于的模乘以向量与向量m的夹角Φ的余弦,令该法向偏差为p:
P=|M1M2|=DX*COSα+DY*COSβ+DZ*COSγ
=DX*I+DY*J+DZ*K
=-0.0034X(-0.0895)+0.022X0.1444+0.0007X0.9855
=0.0042
若COSΦ为正值,则0≤Φ<90,实测点在过该点的切平面的外侧,此时法向偏差p也为正值,说明工件做大了。如果COSΦ为负值,则90<Φ≤180,实测点在过该点的切平面的内侧,此时法向偏差为负,说明工件做小了。因此,我们可以从法向偏差p的符号上直观地看出零件是偏大还是偏小,这与我们的思维习惯是一致的。
值得一提的是,实际测量点可能偏离希望的测量点,由于曲面的关系,由此引起的法向偏差是不可知的,本文将其全部归入为加工误差,是对结果的一种近似。
不同的测量软件采用不用的文本显示:
DMIS程序代码(傅海鑫):
以下给出演示算法的DMIS程序:
$$ Calc point profile$$ By FuHaixin, Ver:20170511
M(PtProfile)=MACRO/'PtLabel'
DECL/COMMON,DOUBLE,NOMX, NOMY, NOMZ, NOMI, NOMJ, NOMK
DECL/COMMON,DOUBLE,ACTX, ACTY, ACTZ
DECL/COMMON,DOUBLE,PtDist
NOMX = OBTAIN/F(@PtLabel),3
NOMY = OBTAIN/F(@PtLabel),4
NOMZ = OBTAIN/F(@PtLabel),5
NOMI = OBTAIN/F(@PtLabel),6
NOMJ = OBTAIN/F(@PtLabel),7
NOMK = OBTAIN/F(@PtLabel),8
ACTX = OBTAIN/FA(@PtLabel),3
ACTY = OBTAIN/FA(@PtLabel),4
ACTZ = OBTAIN/FA(@PtLabel),5
$$ 计算理论点实际点距离 PtDist = ASSIGN/ SQRT( (NOMX-ACTX)*(NOMX-ACTX) + (NOMY-ACTY)*(NOMY-ACTY) + (NOMZ-ACTZ)*(NOMZ-ACTZ) )
DECL/COMMON,VECTOR,VcAct2Nom
DECL/COMMON,DOUBLE, VcAct2NomI, VcAct2NomJ, VcAct2NomK
$$ 得到实际点和理论点连线的向量,并将向量单位化;
VcAct2Nom = ASSIGN/ VCART( NOMX-ACTX, NOMY-ACTY, NOMZ-ACTZ )
VcAct2Nom = ASSIGN/ VUNIT( VcAct2Nom )
VcAct2NomI = ASSIGN/ VECX( VcAct2Nom )
VcAct2NomJ = ASSIGN/ VECY( VcAct2Nom )
VcAct2NomK = ASSIGN/ VECZ( VcAct2Nom )
$$ 计算点轮廓结果; DECL/COMMON,DOUBLE,COSAngle , PtProf
COSAngle = ASSIGN/ (NOMI*VcAct2NomI +NOMJ*VcAct2NomJ +NOMK*VcAct2NomK) / SQRT( NOMI*NOMI+ NOMJ*NOMJ+ NOMK*NOMK ) / SQRT( VcAct2NomI*VcAct2NomI+ VcAct2NomJ*VcAct2NomJ+ VcAct2NomK*VcAct2NomK )
PtProf = ASSIGN/ COSAngle * PtDist * -1 $$ WRITE/DID(DefaultScreen),PtProf ENDMAC
CALL/M(PtProfile),'PT1'CALL/M(PtProfile),'PT2'