Technical Article

Mastercam 圆弧报警怎么查:IJK、R、加工平面与小数精度

以 Haas MILL 为例,拆解 G90 终点与增量 IJK 的关系、G17/G18/G19 平面、正负 R 和整圆规则,并用几何算例检查 NC 小数舍入后的半径一致性。

Mastercam 里看着顺滑的圆弧,输出后却报 I、J、K 无效,先把报警段的起点、终点和圆心算出来。控制器读的是 NC 数字;刀路画面上的圆,到了输出文件里未必仍满足同一组几何关系。

本文按 Haas MILL 的 G02/G03 规则说明,数字例使用毫米、G17 与 G90,Z 不变,不叠加坐标旋转或刀具半径补偿。Haas 的 304 报警说明把 IJK 数值及符号、加工平面、起终点列为排查项,正好可以沿这条线检查。

一、G90 管终点,IJK 仍从起点量

在 Haas 铣床上,G90 下的 X、Y、Z 是当前坐标系中的终点位置;I、J、K 则分别是圆弧起点到圆心的 X、Y、Z 有符号距离。G90 不会把 IJK 变成圆心绝对坐标。这两套定义要分开读。(绝对与增量定位;圆心偏移定义)

例如起点 S=(10,0),终点 E=(20,10),圆心 C=(10,10)。终点字段对应 X=20、Y=10,圆心偏移为 I=10−10=0、J=10−0=10;从 +Z 看,G03 逆时针走 90°。若把圆心坐标直接填成 I=10、J=10,控制器得到的圆心会变成 (20,10),几何已经改了。

Haas MILL G17 G90 几何图:起点 S 为 10,0,圆心 C 为 10,10,终点 E 为 20,10,G03 逆时针走 90 度;终点字段 X=20、Y=10,圆心偏移 I=0、J=10;下方列出三种平面对应的 IJK 分量。
图 1:终点从当前坐标系原点量,IJK 从圆弧起点量。两条半径均为 10 mm。

二、先追生效平面,再看圆心分量

Haas G17 对应 XY,用 I/J;G18 对应 XZ,用 I/K;G19 对应 YZ,用 J/K。平面选择是模态的,因此报警行没有 G17,不等于当前就在 G17。应向前追到最近生效的平面指令,核对工序切换时是否保留了上一段状态。

判断顺逆时针也要认准所选平面的观察方向。不能把 XY 视图里看见的顺逆,直接套到 XZ 或 YZ。若圆弧只在换加工面后报警,优先核对平面和地址组合,再检查偏移的正负。

三、R 的正负决定弧段,整圆另处理

按 Haas G02/G03 文档,正 R 对应不超过 180°的圆弧,负 R 对应超过 180°的圆弧。仍用上例起终点和 G03:R=+10 得到 90°短弧;R=−10 得到 270°长弧,但圆心改为 (20,0)。所以,改正负号会改变实际路径,不能只为消除报警而试着换符号。

相同起点 10,0、终点 20,10 和 G03 方向,R 正 10 时绕圆心 10,10 走 90 度,R 负 10 时绕另一圆心 20,0 走 270 度,两图等比例。
图 2:同起终点、同方向下,正负 R 选择的圆心不同,不能画成同一个圆上的长短两段。

Haas 的整圆须用 IJK 定义,官方写法省略所选平面的终点地址,R 方式不能表达整圆。排查跨象限、大于 180°和整圆输出时,应分别保留样例;某条短弧正常,并不能说明这几类输出都正确。

四、小数位要检查几何一致性

对 G17 的 I/J 输出,先由起点加偏移求圆心,再分别计算“起点到圆心”和“终点到圆心”的距离。两者应表示同一半径。计算要使用 NC 中实际输出的数字,起点也要按前序运动及 G90/G91 状态还原,不能拿 CAM 内部的高精度点替代。

若两条半径差得很大,先查起点还原、圆心定义和正负号;若差异集中在末几位,再比对输出前后的舍入。对 R 方式,还可先量起终点的弦长:理想几何中,弦长不能超过两倍半径绝对值。超过了,给定半径就无法连接这两个点,单改顺逆方向也解决不了。

举一个纯几何例:S=(0,0),C=(1,1),理想终点 E=(1+√2,1),半径为 √2 mm。终点横坐标舍入为 2.41 后,终点半径为 1.41 mm,与起点半径相差约 0.004214 mm;保留到 2.414,差值约 0.000214 mm。增加一位使本例误差缩小;排查时再将半径差与目标系统的圆弧判定条件对照。

回到后处理,要一起查坐标与圆心偏移的输出精度、舍入后的小段,以及圆弧拆分边界。只加 IJK 位数,或把所有圆弧改成小直线,都需要再核对轮廓和输出变化。具体字段要沿当前 PST 的计算和格式定义追查,可参考后处理修改与 NC 对照方法。

找人处理时,把报警号、系统版本、问题段及前序定位、Mastercam 工程和原后处理一起整理,资料范围见后处理修改前的资料准备。需要后处理适配,应先明确目标控制器采用哪套圆弧定义,再落到具体输出。