本使用手册及样例包目录内所包含文档、PLC程序、机床可执行程序(MPF、SPF、…)、电气图,可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系济南友联控制工程有限公司技术支持与服务部门。
对于在使用中发生的人员、财产损失本公司不承担任何责任,由使用者自行承担风险。
以上声明内容的最终解释权归济南友联控制工程有限公司所有,后续内容更新不做另行通知。
通过圆弧上某一点的机床坐标计算出该点的角度,并将该角度设置为HOLES2循环的起始角度。
硬件 | ||||
工艺 | PPU24x/NCU710 | PPU26x/NCU720 | PPU28x/NCU730 | PPU28x.Advance |
铣床 | ● | ● | ● | ● |
• 无
该机型为龙门移动式数控钻床,与常规机型不同之处在于,龙门前后移动轴为Y轴,立柱左右移动为X轴,上下移动为Z轴。


如图所示,已知圆心坐标X0,Y0和圆弧上某一点的坐标X1,Y1,通过反正切函数求取角度α。也可计算出边长c然后求反余弦。
反正切2指令:ATAN2 计算功能可以从两个互相垂直的矢量计算出总矢量的角度。结果位于四个象限的范围内 (-180°< 0 < +180°)。

首先通过手动方式下的测量工件,圆形凸台来设置工件零偏,找到工件圆心位置。

为了便于理解,在此将机床坐标X100,Y100设置为圆心:

新建一个子程序命名为LL01.SPF,编辑内容如下:
N10 PROC LL01 SAVE DISPLOF
;-----------------------------
N20 DEF REAL XX0,YY0,XX1,YY1,XX_SUB,YY_SUB,_ANG,ST_ANG
N30 DEF REAL _XX0,_YY0,_XX1,_YY1,_XX_SUB,_YY_SUB
;-----读取当前G54内XY的值,以及起始点XY的坐标值----------------
N40 XX0=$P_UIFR[1,X,TR];
N50 YY0=$P_UIFR[1,Y,TR];
N60 XX1=$AA_IM[X];
N70 YY1=$AA_IM[Y];
N80 G04 F0.3
N90 STOPRE
由于SINIUMERIK 828D采用80 位浮点数纳米计算精度 NANOFP 技术,计算精度很高,所以我们将读取的数据进行一下取小数点后四位的处理,为什么这么处理呢?原因如下:
如下图所示,我们先将以下几个变量,写入到R参数中

通过比较R参数显示的数值发现,系统只显示了小数点后三位,而R参数中读取的系统变量却有很多位。实际使用中发现假如将某一点的XY坐标值设置为G54的零偏,在不移动的情况下执行上图中的程序,理论上R0=R2,R1=R3,但由于电机受到外部机械作用力等原因,XY轴的实际坐标会有少些变动,但是G54零偏内的数值已经设为了固定值,实际发现R0和R2,R1和R3在最末尾的几位数存在很小的偏差,为防止这种极端情况对后续计算的影响,我们采取取小数点后四位的方法。

数据处理编程如下:
;-----将读出的数据进行取小数点后四位的处理----------------
N100 _XX0=TRUNC(XX0*10000)*0.0001
N110 _YY0=TRUNC(YY0*10000)*0.0001
N120 _XX1=TRUNC(XX1*10000)*0.0001
N130 _YY1=TRUNC(YY1*10000)*0.0001
N140 STOPRE
;-----------------------------
N150 _XX_SUB=(_XX1-_XX0);
N160 _YY_SUB=(_YY1-_YY0);
N170 STOPRE
;-----如果圆心和圆弧上的点是同一个点------------------------
N180 IF (_XX_SUB==0)AND(_YY_SUB==0) GOTOF END
根据方案解析中的方法,编辑如下程序:
;-----用圆弧上XY的坐标减去圆心坐标------------------------
N190 XX_SUB=(XX1-XX0); X
N200 YY_SUB=(YY1-YY0);Y
N210 STOPRE
;-----计算矢量角度------------------------
N220 _ANG=ATAN2(YY_SUB,XX_SUB);
N230 STOPRE
N240 IF _ANG>=0
N250 ST_ANG=_ANG
N260 ENDIF
N270 IF _ANG<0
N280 ST_ANG=(360+_ANG)
N290 ENDIF
;-----将角度值送入R20------------------------
N300 MSG("零件加工起始角度为:"<<ST_ANG<<"度;")
N310 M0
N320 MSG("请校对零件加工参照点;第一孔角度R20为"<<ST_ANG<<"度;")
N330 R20=ST_ANG
N340 M17
N350 END:
N360 MSG("圆心和起点是同一个点,请重新找正")
N370 M0
N380 M17
验证:
我们现在MDA方式下,以机床坐标X100,Y100为圆心,R100为半径编辑一个整圆的程序,然后运行该程序,在中间任意一点复位,则该点坐标即为圆弧上任一点的坐标,然后执行LL01.SPF的程序,计算出该点的角度,并将该角度赋值到HOLES2循环中的起始角度中,执行HOLES2即可验证角度是否正确。
如下图所示XY分别停留在-49.557和86.857的位置

保持当前位置不动,在AUTO方式下,执行LL01.SPF,计算出该点的起始角度为119.7072849度

在零件程序中新建ASK.MPF程序,编辑内容如下:


执行ASK.MPF程序如下:第一个孔位置正确,验证成功。

后在四个象限区域和四个象限点共计采取八个位置,经过验证都没有问题。
HOLES2循环中起始角度是可以使用负角度的,其中正角度为逆时针旋转,负角度为顺时针旋转,本例中为方便操作工进行操作,将最终的计算角度都转换为了正角度值。

例如下图中的两个零件是风电设备中的变桨轴承,该零件经过热处理,由于工艺原因留下一处软带位置,钻孔加工时就需以该软带为基准,由于工件体积较大仅靠工装定位到该点费时费力,并且位置不准确,使用此方法既方便又高效。


SINUMERIK 840D sl工作准备部分 编程手册 12/2018
SINUMERIK 840D sl System variables Parameter Manual 03/2013
SINUMERIK 840D sl铣削操作手册 06/2019
王镇
济南友联控制工程有限公司
2020.07.17
版本 | 日期 | 修改内容 |
V1.0 | 2020.07.17 | |