Skip to main content
CNC.wiki

数控宏程序算术函数 SIN、COS 与 SQRT 编程与系统参数配置指南

本指南详述 Fanuc、西门子和三菱数控系统宏程序中 SIN、COS、SQRT 等算术函数的编程语法与参数配置。针对批量加工,深入解析 6004#1、#1273 等参数与 STOPRE 指令在规避浮点偏差、防止撞刀碰撞中的关键作用,助您缩短加工节拍并实现零废品率。

Hakan Gündoğdu
Hakan Gündoğdu

CNC CARE 联合创始人

引言

数控机床主轴或刀塔在快速移动时猛烈撞击虎钳钳口、夹具或机床卡盘,是未经验证的宏程序在量产中累积浮点误差或 LookAhead 预读缓冲区不同步导致的严重物理后果。当加工程序依赖 SINCOSSQRT 等数学函数动态计算刀具路径坐标时,微小的舍入误差(即浮点尘埃)会在连续循环中不断累积。该参数未经验证就投入量产,每个加工循环的尺寸偏差会逐渐累积,直到终检才发现废品。如果控制系统直接读取这些带有累积误差的变量执行定位移动,会导致刀具严重偏离预定轨迹,造成数十小时的非计划停机时间和居高不下的零件废品率。为了在高节拍的批量生产中保障设备安全与高合格率,必须对这些算术运算实施严格的取值范围限制,并配置合理的系统参数以实现精密加工。

技术摘要

特性详情
命令代码SIN, COS, SQRT, SQR, POT, POW
模态组数学/算术宏函数(非模态)
支持品牌Fanuc, Siemens, Mitsubishi
关键参数Fanuc: 6004#1 (MFZ), 6004#0 (NAT), 6008#0 (F16);Siemens: R0 to R299;Mitsubishi: #1273 (ASIN 输出范围), #1259 (宏优先级)
主要限制角度必须以度为单位;禁止除以零和 TAN[90.0];Fanuc 和 Mitsubishi 的括号嵌套限制为 5 层。

快速阅读

  • 在 Fanuc 和 Mitsubishi 上,将数学函数的参数包在方括号 [] 中,在 Siemens 上包在圆括号 () 中。
  • 确保所有三角函数输入(SINCOSTAN)严格以度为单位指定,因为弧度会导致计算错误。
  • 在将变量值传递给 SQRT 函数之前,使用逻辑检查对变量值进行净化,以防止负数开方计算。
  • 在 Siemens 控制器上编写预处理停止(STOPRE)指令,在引用计算出的变量之前冻结 LookAhead 预读解码。
  • 遵守嵌套限制,在 Fanuc 和 Mitsubishi 上保持括号最多 5 层嵌套,以避免缓冲区溢出。
  • 使用 Fanuc 6004#0 或 Mitsubishi #1273 等参数全局切换反三角函数结果的象限范围。

基本概念

自定义宏程序引擎允许 CNC 控制器实时执行复杂的三角和算术运算。通过使用 SINCOSSQRT 等函数,开发人员可以构建参数化主程序,在机床上动态计算刀具路径。这种能力消除因微小设计更改而需要从外部 CAD/CAM 软件输出成千上万个固定坐标的需求。相反,直径、角度增量或深度等参数被直接传递到宏程序中,允许机床计算其自身的坐标向量。

在使用 g65-custom-macro-b 编写自定义宏程序时,数学函数通常与 macro-logical-operators 结合使用以执行安全检查。在进行 g65-macro-argument-assignment 期间,也需要正确的参数映射,以确保数学变量被正确填充。

然而,三角函数计算可能会产生微小的数学异常,而不是精确的数值,这被称为浮点尘埃(floating-point dust)。如果不对这些微小的舍入误差进行管理,连续的计算会随着时间的推移累积坐标漂移。如果 CNC 控制器基于未净化的变量执行定位移动,就有可能导致刀具偏离路径。为了防止这种坐标漂移,程序员必须实施数学净化和错误检查逻辑,以确保所有变量在执行移动指令之前都落在安全范围内。

命令结构

算术宏指令遵循结构化语法,其中评估的数学结果被直接分配给局部、公共或系统变量。对于 Fanuc 和 Mitsubishi 控制器,该语法通过使用方括号包围三角函数或平方根函数的参数来执行变量赋值。Siemens 则采用不同的方法,将数学语法直接集成到其高级 NC 编程语言中,允许使用标准的圆括号表示法来评估变量。

这三个平台上的运算优先级均遵循标准的数学惯例。函数首先被评估,其次是乘法和除法,最后是加法 and 减法。必须使用括号或圆括号来覆盖此默认顺序并定义明确的计算路径。如果程序员忽视在多步公式中使用括号,控制器将顺序处理算术运算,这可能会极大地改变最终的坐标输出。

每个品牌的标准语法格式:

  • Fanuc: #i = SIN[#j], #i = COS[#j], #i = SQRT[#j]#i = SQR[#j]
  • Siemens: R_var = SIN(x), R_var = COS(x), R_var = SQRT(x), R_var = POT(x), R_var = ATAN2(y, x)
  • Mitsubishi: #i = SIN[#j], #i = COS[#j], #i = SQRT[#j]#i = SQR[#j], #i = POW[#j, #k]

各系统的关键数学控制参数:

品牌参数描述有效设置
Fanuc6004#1 (MFZ)处理微小的三角函数结果下溢。0 = 下溢;1 = 净化为 0
Fanuc6004#0 (NAT)规定反三角函数输出定义域。0 = 0° 到 360.0°;1 = -180.0° 到 180.0°
Fanuc6008#0 (F16)控制与旧版计算精度的兼容性。0 = 新规范;1 = 兼容 FS16i / FS0i-C
SiemensR0 to R299预定义算术参数(浮点格式)。±0.0000001 到 99999999
Mitsubishi#1273 (ext09/bit0)切换反正弦(ASIN)的输出范围。0 = -90° 到 90°;1 = 270° 到 90°
Mitsubishi#1259 (set31/bit7)决定内部宏优先级和处理速度。自定义位设置

品牌应用

Fanuc

Fanuc 控制器使用参数 6004#16004#0 管理数学精度和下溢。参数 6004#1 控制是否将极微小的计算正常化为零,而 6004#0 则切换反三角函数的输出定义域。

算术变量使用方括号来评估表达式并赋值:

; Fanuc 示例:
#100 = SQRT[#1 * #1 + #2 * #2] ; 计算斜边
#101 = SIN[45.0] * 50.0       ; 确定正弦分量
#102 = #101 + COS[#3]         ; 与余弦分量相加
  • 参数: 6004#1 (MFZ) 正常化下溢计算;6004#0 (NAT) 切换 ATAN/ASIN 定义域;6008#0 (F16) 强制兼容模式。
  • 报警: 报警 119(负数 SQRT 的非法参数)、报警 112(除以零或 TAN[90])、报警 118(括号嵌套错误)、报警 111(计算数据溢出)。
  • 版本差异: 标准宏程序使用标准指令。PMC Ladder/结构化文本使用类型化的功能块:单精度(16 字节)使用 SINRCOSRSQRTR;双精度(20/28 字节)使用 SINLCOSLSQRTL

警告:在单行指令中超过五层括号嵌套 [] 将立即触发报警 118,从而挂起机床的执行缓冲区。

Siemens

Siemens Sinumerik 控制器利用预定义的变量 R0 到 R299 来存储计算出的算术值。浮点值在内部使用标准的 64 位 IEEE 格式存储,这在进行精确的逻辑比较时容易产生精度漂移。

公式可以使用圆括号计算并存储,或者直接集成在运动程序段中:

; Siemens 示例:
R40 = ATAN2(30.5, 80.1)       ; 计算象限感知反正切
R15 = SQRT(R1 * R1 + R2 * R2) ; 计算斜边
STOPRE                        ; 预处理停止指令
N40 G1 Z=SIN(25.3)-R5 F200    ; 直接内联三角函数移动
  • 参数: R 参数(R0R299)存储浮点数。使用 DEF REAL 定义自定义实数变量。
  • 报警: 报警 1019(浮点算术错误 / FPU 异常)、报警 1020(编译循环中的浮点算术错误)。
  • 版本差异: 入门级 SINUMERIK 808D 仅分配 300 个 R 参数。先进型号如 840D sl 和 SINUMERIK ONE 支持庞大的动态变量数组和多轴方向变换。

警告:在依赖计算出的数学值之前未能编写预处理停止(STOPRE)指令,会导致 LookAhead 预读不匹配,从而导致严重的刀具碰撞。

Mitsubishi

Mitsubishi 宏程序编程通过参数 #1273 和 #1259 管理三角函数输出范围和优先级设置。参数 #1273 决定反正弦函数的计算范围,而参数 #1259 则优化执行速度。

三角函数值使用方括号进行评估并分配给变量:

; Mitsubishi 示例:
#501 = SIN[14]                                              ; 分配 14 度的正弦值
#573 = SQRT[10. * 10. + 20. * 20.]                         ; 计算斜边
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]]      ; 复杂嵌套三角函数
#107 = POW[2.5, 3.5]                                        ; 幂计算(仅限 M8 系列)
  • 参数: 参数 #1273 切换 ASIN 输出范围;参数 #1259 配置内部处理方法 and 宏计算优先级。
  • 报警: 程序错误 P282(算术失败 / 负数 SQRT)、程序错误 P225(格式错误 / 未闭合的括号)、程序错误 P241(负变量引用)。
  • 版本/系列差异: 通过 POW 函数进行的指数幂运算需要 M8 系列。扩展通用变量 III 文件在 M800VW/M80VW 上存储在控制单元内部的 SD 卡上,但在 M800VS/M80V 上存储在显示单元中。

警告:将数学运算符直接插入到轴字母中(例如 X123+0)会使解释的坐标小数点发生移位,从而导致毫米与微米读取错误。

品牌对比

特性 / 主题FanucSiemensMitsubishi
参数括号语法方括号 [](例如,SIN[45.0]圆括号 ()(例如,SIN(45.0)方括号 [](例如,SIN[45.0]
公式嵌套限制最大 5 层方括号嵌套([]由圆括号 () 确定优先级,无严格低嵌套限制最大 5 层方括号嵌套([]
反三角函数范围切换参数 6004#0 将 ATAN 范围从 0-360.0° 切换到 -180.0° 到 180.0°ATAN2(,) 原生返回所有四个象限中的矢量角(-180° 到 180°)参数 #1273 将 ASIN 范围从 -90° 到 90° 切换到 270° 到 90°
浮点精度异常参数 6004#1 (MFZ) 将 <= 1.0*10^-8 的计算结果正常化为 0原生 TRUNC() 指令在逻辑比较前截断浮点 REAL 精度漂移参数 #1259 设置宏计算的优先级和处理速度
幂 / 指数函数标准宏乘法;EXP 用于自然指数预定义的 POT(x)(平方)或自定义指数幂原生 POW[底数, 指数](仅限 M8 系列)
内联运动计算不支持(必须先分配给变量)完全支持(在移动程序段内内联数学表达式,例如 Z=SIN(25.3)不支持(必须先分配给变量)

技术分析

分析 Fanuc、Siemens 和 Mitsubishi 的算术引擎,可以发现它们在语法集成、精度管理和预处理器缓冲方面存在明显差异。Fanuc 和 Mitsubishi 采用经典的宏程序设计,在孤立的程序段中计算数学运算,然后将其存储到系统或用户变量中。这种结构将计算与轴运动隔离开来,保护了运动解析器,但需要额外的代码行。相比之下,Siemens 将先进数学计算直接集成到其 NC 内核中,允许在移动程序段中进行内联计算。这使开发人员能够将三角函数和线性运动组合在单行中,从而减少处理开销并提高程序的可读性。

精度管理在这三个品牌中也有所不同。Fanuc 通过参数 6004#1 处理浮点噪声,该参数将下溢值直接正常化为零以防止路径漂移。Siemens 使用原生 TRUNC() 函数解决其 64 位 IEEE 变量中的浮点漂移,允许程序员在执行坐标逻辑比较之前去除十进制噪声。对于反三角函数,Fanuc 使用参数 6004#0 切换 ATAN 象限,Mitsubishi 使用参数 #1273 旋转 ASIN 输出。Siemens 通过使用 ATAN2(,) 指令解决跨所有四个象限的矢量角,完全绕过了这些参数。

最后,执行同步代表了主要的架构差异。虽然 Fanuc 和 Mitsubishi 按顺序处理宏并因错误而停止,但 Siemens 的活动 LookAhead 缓冲区可以在物理刀具运动之前很早地解码数学段。如果在活动循环完成该变量之前,Siemens 缓冲区解析了动态几何变量,就会发生不匹配。为了保持路径完整性,Siemens 要求程序员编写一个 STOPRE 预处理停止指令来同步缓冲区,这种约束在 Fanuc 或 Mitsubishi 控制器上并不以相同的方式存在。

程序示例

Fanuc 示例

#100 = SQRT[#1 * #1 + #2 * #2] ; 计算三角形斜边
#101 = SIN[45.0] * 50.0       ; 计算正弦偏移分量
#102 = #101 + COS[#3]         ; 与余弦分量组合

空运行 (dry run)

  • 程序段 1: 控制器计算变量 #1#2 的平方和的平方根,并将结果分配给变量 #100。如果 #1#2 的计算结果为负数,或者开方参数为负数,CNC 将触发报警 119。
  • 程序段 2: 计算 45.0 度的正弦值并乘以 50.0。结果被分配给变量 #101
  • 程序段 3: 计算变量 #3 的余弦值(以度为单位进行评估),并与 #101 中的值相加。最终的和被存储在变量 #102 中。

Siemens 示例

R40 = ATAN2(30.5, 80.1)       ; 计算象限感知反正切
R15 = SQRT(R1 * R1 + R2 * R2) ; 计算三角形斜边
STOPRE                        ; 挂起预处理缓冲区
N40 G1 Z=SIN(25.3)-R5 F200    ; 使用内联数学移动 Z 轴
R14 = R1 * R2 + R3            ; 优先级:R1 乘以 R2,然后加上 R3

空运行

  • 程序段 1: ATAN2 函数根据坐标 30.5 (Y) 和 80.1 (X) 形成的矢量计算角度,确定 -180 到 +180 度之间的确切象限,并将其存储在参数 R40 中。
  • 程序段 2: 控制器计算参数 R1R2 的平方和的平方根,将结果存储在参数 R15 中。
  • 程序段 3: STOPRE 指令挂起 LookAhead 预处理缓冲区,迫使 CNC 等待所有先前的算术运算完全被评估,然后再读取下一程序段。
  • 程序段 4: 控制器以 200 mm/min 的进给率执行沿 Z 轴的线性移动,移动到通过从 25.3 度的正弦值中减去参数 R5 的值计算出的位置。
  • 程序段 5: 控制器首先将 R1 乘以 R2(由于标准运算符优先级),然后加上 R3,将结果存储在参数 R14 中。

Mitsubishi 示例

#501 = SIN[14]                                              ; 评估 14 度的正弦值
#573 = SQRT[10. * 10. + 20. * 20.]                         ; 计算斜边
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]]      ; 复杂嵌套三角函数
#107 = POW[2.5, 3.5]                                        ; 将 2.5 提升到 3.5 次幂

空运行

  • 程序段 1: 计算 14 度的正弦值并存储在变量 #501 中。
  • 程序段 2: 控制器计算 10.0 和 20.0 的平方和 of 10.0 and 20.0,并将结果分配给变量 #573
  • 程序段 3: 控制器从最内层开始评估嵌套括号:将 #113#114 相加,乘以 #115,取正弦值,乘以 #111#112 的差值,最后计算平方根,将结果存储在 #101 中。支持多达 5 层的嵌套级别。
  • 程序段 4: 使用 M8 系列独有的 POW 函数,将值 2.5 提升至 3.5 次幂,结果分配给变量 #107

错误分析

报警代码触发条件操作员屏幕表现根本原因 / 解决方法
Fanuc Alarm 119SQRT 函数中指定了负数参数,或者 BCD 参数为负数。轴运动冻结,屏幕显示“119 ILLEGAL ARGUMENT”并停止执行。根本原因:输入变量评估为负数。
解决方法:在计算前使用 IF 逻辑语句对变量进行净化,以确保基数 >= 0。
Fanuc Alarm 112尝试除以零,或者在恰好 90 度时发出正切指令(TAN[90.0])。机床在循环中途停止,在操作面板上弹出“112 DIVIDED BY ZERO”报警。根本原因:变量分母解析为零,或者在 90.0° 执行了 TAN
解决方法:在处理前插入条件检查,以验证分母不为零且角度不为 90.0°。
Fanuc Alarm 118自定义宏程序 B 数学公式中的括号嵌套超过五层。程序在违规程序段上立即执行失败,显示“118 PARENTHESIS NESTING ERROR”。根本原因:公式使用了超过 5 层嵌套括号([])。
解决方法:通过使用中间变量将计算拆分为多行来简化公式。
Siemens Alarm 1019处理器 FPU 由于致命的计算错误(例如,负数 SQRT 参数或除以零)而触发异常。执行停止,弹出“Alarm 1019: Floating point arithmetic error”报警,NC 通道需要复位。根本原因:运行期间评估了数学上不可能的值。
解决方法:检查日志文件(通过 <Ctrl>+<Alt>+<D> 获取)并插入检查语句,以防止负数平方根输入或除以零。
Mitsubishi P282算术运算发生数学上的失败,例如向 SQRT 传递负值或除以零。CNC 立即停止,屏幕上闪烁“程序错误 (P282)”。根本原因:宏程序执行期间发生数学违规(负平方根底数或除以零)。
解决方法:使用范围检查验证输入参数,以确保数值在有效的数学限制之内。
Mitsubishi P225在宏程序段中插入了换行符而没有闭合括号 ],或者在括号内发现了无效字符。解析器拒绝该程序段,弹出“程序错误 (P225)”并阻止循环启动。根本原因:语法错误或缺少闭合括号。
解决方法:验证括号是否平衡,并确保每个开括号 [ 都有匹配的闭括号 ]

应用指南

刀具在快速移动时猛烈撞击虎钳钳口、工件夹具或主轴卡盘,导致刀具瞬间粉碎并迫使整条生产线因长达数天的非计划停机而陷入瘫痪,是程序员在批量生产中未能妥善处理浮点尘埃或 LookAhead 预读缓冲区的最严重物理后果。在 Fanuc 和 Mitsubishi 上,三角函数计算会在 64 位 IEEE 浮点变量中留下难以察觉的尾数残留。该参数未经验证就投入量产,每个加工循环的尺寸偏差会逐渐累积,直到终检才发现废品。换班后确认6004#1和#1273号参数,可消除该指令最常见的非计划停机原因。具体而言,将 Fanuc 参数 6004#1 (MFZ) 设为 1,能够强制系统将极微小的三角运算结果净化为 0,防止累积偏差。同样,在 Siemens 系统中,如果在调用包含动态三角计算的轴移动段前遗漏了 STOPRE 预处理停止指令,LookAhead 解码器将在未完成前序运算时强行预读,导致严重的计算步距错位和刀具碰撞。此外,程序员应通过 TRUNC() 指令消除 64 位双精度浮点数中的小数噪声,从根本上防止逻辑 IF 判断因微小精度漂移而失效。在量产前,技术员必须强制运行 Graphic Check 轨迹校验,并结合系统的卡盘和尾座屏障参数,确保动态刀具轨迹安全限制在合理包络线内。

相关命令网络

  • TAN / ATAN2:SINCOS 配合使用,以解决角度计算和象限位置。
  • ABS: 评估表达式的绝对值,以防止向 SQRT 函数传递负数。
  • ROUND / TRUNC: 在进行精确的逻辑比较之前纠正浮点精度异常和十进制漂移。
  • STOPRE: 强制 Siemens 预处理停止,以同步动态数学变量与活动轴运动。
  • POW / POT: 在支持的控制器架构上实现原生指数幂计算。

结论

在大批量数控生产线中,建立标准化的数学变量净化规范是实现零废品率和最大化合格率的决定性因素。工艺开发人员必须将所有的 SQRT 输入值和分母值纳入严格的 IF 条件校验范围,避免因致命计算错误触发 P2821019` 报警而挂起设备。同时,针对复杂的多轴或变角度零件加工,规定必须将长串公式拆分为多个简单段,控制括号嵌套在 5 层以内以防溢出。换班后确认6004#1和#1273号参数,可消除该指令最常见的非计划停机原因。将浮点数据净化与 LookAhead 同步逻辑固化于工艺规范中,能显著减少调试与非计划停机时间,确保量产周期的精确执行与高效产出。

常见问题

在 Fanuc 系统中批量加工带斜度零件时,为什么计算出的加工尺寸会随循环次数增加而产生漂移?

这是由于递归计算中公共变量(如 #100-#199 或 #500-#999)累积的浮点尘埃(rounding error)所致。在大批量量产中,如果未在每个工件循环开始时清空或重新初始化累积变量,微小的舍入误差会在连续运算中不断累加,最终导致刀具轨迹偏离产生尺寸漂移。实际操作:在主程序循环的起始端,编写宏变量清零段(如将所有累积变量强制赋值为初始常量值),并在关键点引入 G90 绝对坐标定位指令进行强置对齐。

西门子 840D sl 系统在大批量型腔铣削时,弹出 FPU 1019 浮点算术错误报警如何排查?

报警 1019 是由浮点运算单元(FPU)执行了数学上非法或不可能的指令(例如对负数进行 SQRT 开方或除以零)引起的。在大批量型腔加工中,刀具半径补偿在拐角处动态修正坐标,可能导致临时计算出来的参数差值变为微小负数,进而触发 FPU 异常导致非计划停机。实际操作:使用 <Ctrl>+<Alt>+<D> 组合键导出系统诊断日志,定位报错的程序段行号,然后在程序中对应的算术公式前加入 IF R1 < 0 THEN R1 = 0 类的限幅语句,确保运算基数合法。

三菱 M80 系统中怎么利用参数提升大批量算术宏程序的执行速度,缩短零件加工周期?

在批量生产中,频繁执行深层嵌套和三角函数计算会增加控制器的译码器延迟。三菱 M80 系统参数 #1259 的 bit 7 决定了宏计算的内部处理优先级,配合 M8 系列专属的 POW 原生指数幂运算函数,可以大幅缩短算术块解析时间。实际操作:进入参数画面,确认将 #1259 号参数的 bit 7 设为 1,将宏优先处理模式激活,同时将多步乘积运算改用 M8 专属的 POW 幂函数指令,可将宏程序段的处理延迟降低 20% 以上。

仍未解决?

使用自然语言向我们的AI助手咨询该话题。基于经验证的来源,无幻觉。

咨询AI助手
Hakan Gündoğdu
Hakan Gündoğdu
  • CNC CARE Co-Founder (May 2025 - Present)
  • Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
  • Reis CNC Service Engineer (2003 - 2005)
  • Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)

在CNC机床行业拥有超过25年的丰富经验,我继续作为CNC CARE of the 联合创始人开展活动,我们提供独立于品牌的咨询、工程和原厂备件服务。

相关文章

关于该主题的其他文章

发那科 3D 干扰检查配置指南:关键参数设置与 CNC 防撞安全

详述发那科 (Fanuc) 内置 3D 干扰检查的 10930 参数配置。解析如何通过位参数启用监控、规避 Alarm PS0492/PS0495 错误及通过 PMC 信号 TDICHG 刷新。换班后确认 10930 号参数,消除撞机与停机隐患,提升加工合格率。

FanucProgramming

Fanuc数控系统宏程序启用参数0932与8135配置与防撞机指南

掌握发那科CNC核心宏程序启用参数0932与8135配置。详解如何开启Custom Macro A/B功能、利用8135#6进行变量寄存器扩展、排除DNC模式下Alarm 123报警,规避坐标漂移与机械撞刀风险,提升批量生产合格率与节拍。

FanucProgramming

Fanuc数控系统刀具寿命管理参数配置与撞机故障预防指南

本指南详细介绍如何配置Fanuc数控系统中的刀具寿命管理参数。重点讲解参数6800#2与6810的设置方法,通过标准化G10 L3数据块注册流程,在批量生产中实现刀具自动分度与安全监控,消除M06换刀故障,有效预防撞机并降低废品率与停机时间。

FanucProgramming

Fanuc刚性攻丝优化加速度参数配置指南:缩短生产节拍与提高合格率

本指南详细阐述如何通过启用Fanuc参数11420#0激活刚性攻丝优化转矩加速度,优化1至4档齿轮参数,并解决伺服跟踪误差报警SP0741。通过合理配置刚性攻丝加速度曲线和安全限制,有效缩短批量生产节拍,降低废品率,规避机械碰撞风险,提升零件加工合格率。

FanucProgramming