## 为什么要进行此次更新
一位用户向我们反馈,模拟器拒绝了一个书写正确的G71粗车循环,提示缺少某个参数,而该参数实际上就存在于该行中。他是对的。我们核实了这个案例,随后将检查范围扩展到车床所有的固定循环,进行了一次系统性的测试活动:针对每个循环,我们采用了发那科(Fanuc)手册
(0T/6T/10T/11T/15T系列以及0i/16i/18i/21i/31i系列)和教科书中出现的语法变体,逐一在模拟器中执行,观察实际结果。
结果是一系列修正,使解释器的行为更贴近真实控制系统:在车间中能够正常运行的语法,在模拟器中也必须能够正常运行;而当某一行代码确实存在错误时,警报必须准确指出缺失的内容,而不是其他无关信息。
这些修正涉及解释引擎,该引擎对所有平台通用:因此在桌面版(Windows、macOS、Linux)、平板电脑和智能手机上均已生效,且版本一致。
---
## G71 / G72 — 纵向及端面粗车循环
**此前。** 循环的第一段只有在同时包含切深(G71为U,G72为W)和退刀R时才会被识别。像`G71 U2`这样不带R的写法——这在发那科系统中是有效语法,此时退刀量取自参数5133——却无法被识别:到下一行时,模拟器会报告"缺少U参数",而该行中U其实是写着的。同样的问题也出现在早期发那科控制系统及许多教科书中常见的单行格式`G71 P.. Q.. U.. W.. D.. F..`,其中D代表切深。
**现在。**
- 仅含U(或G72的W)即可识别第一段;R为可选项,缺省时默认退刀量为0.5毫米。
- 支持含D的单行格式。D不带小数点时单位为微米(`D2000` = 2毫米),带小数点时单位为毫米(`D2.0` = 2毫米),与控制系统一致。
- 若第一段确实缺失,警报会明确指出:"G71 P.. Q..之前缺少G71第一段(G71 U.. R..),或单行格式中缺少切深D"。
- 新增检查:D必须大于零。
已通过对等测试验证:三种语法(带R的两段式、不带R的两段式、单行式)在工件上留下的轮廓完全一致,逐点比对,主轴通道和副主轴均验证通过。
---
## G76 — 螺纹切削循环
这里的问题更为严重,因为在某些情况下模拟器完全没有任何提示,只是不执行螺纹加工。
**此前。** 两段代码采用整行严格匹配的方式识别:`G76 P Q R`和`G76 X Z P Q F`必须按此精确顺序排列,且所有参数均为必填。
- 第一段若不带R、R写在Q之前,或Q带小数点:会报警"P必须为6位数字,但检测到P010060",而实际上P完全正确。
- 第二段若F写在P和Q之前、含有锥度R、使用增量式U/W、Z写在X之前、Q写在P之前、P和Q以毫米为单位,或者使用发那科0T/10T的单行格式`G76 X Z K D F A`:均无任何警报,也不执行循环。螺纹根本没有被切削。
- 第二段若缺少Z:警报正确,但循环仍会启动。
**现在。**
- 各字母顺序任意,可有或无空格,大小写均可。
- 第一段:`G76 P{mmrraa} [Q..] [R..]`。Q和R均为可选项。P必须为6位数字,按原样读取,包括开头的零。
- 第二段:`G76 X|U.. Z|W.. P|K.. Q|D.. F|E.. [R|I..] [A..]`。同时支持0i/31i系列的两段式格式(P为螺纹高度,Q为首次切深)以及0T/10T/15T系列的单行格式(K为高度,D为首次切深,A为角度)。E作为精加工螺距被接受。
- P、Q、K、D不带小数点时单位为微米(`P920` = 0.92毫米),带小数点时为毫米。
- 增量式U和W会根据刀具当前位置解析。
- 若缺少终点轴、螺距、螺纹高度或首次切深,警报会指明缺失的参数,且循环不会启动。
- 锥度(两段式格式中的R,单行格式中的I)会被读取但尚未纳入模拟:螺纹按圆柱形执行。
已通过对等测试验证:第二段的八种不同语法及第一段的三种语法,在两个通道上均生成相同的M48×3螺纹,每隔0.25毫米采样比对一致。
---
## G74、G75、G83、G84、G85、G88、G89 — 钻孔、切槽、攻丝、镗孔循环
**此前。**
- 第二段仅接受绝对坐标X和Z。使用增量式U或W时循环不会启动,该行会被当作普通工进直线运动执行,且无任何警报。
- P和Q始终按微米解释:以毫米书写的`Q5.0`会变成0.005毫米的进给量。
- G89(径向直径镗孔)虽已实现,但未列入可识别代码之中,会触发"不支持的G代码"警报。
**现在。**
- 所有这些循环的第二段均支持U和W,并根据当前通道中刀尖的当前位置解析为绝对坐标。
- P和Q遵循统一规则:不带小数点为微米,带小数点为毫米。该规则对所有循环(G71、G72、G74、G75、G76、G83)保持一致。
- G89已被识别。
已通过对等测试验证:使用`Z-30`、从Z5位置使用`W-35`、以及使用`Q10.0`进行的G83钻孔,结果一致;使用`X80 Z-20`及从X104 Z-10位置使用`U-24 W-10`进行的G75切槽,结果一致。
---
## G代码解析器 — 以小数点开头的数字
诸如`X.5`、`R.05`或`U-.2`这类省略了小数点前零的数值写法,在发那科系统中是有效的,但解析器此前无法读取,会将其当作零处理。现在所有字母的此类写法均能被正确读取。
---
## 不受影响的部分
- 循环的计算逻辑(切深、进给次数、退刀量、螺纹加工规则)与此前保持一致。此次修正仅涉及语法识别和警报质量。
- 已按标准两段式格式编写的程序,运行方式完全不受影响。
---
## 正在开发中
发那科车床**G代码A系统**的固定循环(G90车削循环、G92螺纹切削循环、G94端面切削循环),在教学中被广泛使用,目前尚未纳入模拟范围,是我们下一步的计划内容。
---
## 如何反馈异常
如果您发现模拟器拒绝执行某行程序,或者其执行方式与真实控制系统不同,请通过应用内支持功能("支持"菜单,提交工单)提交反馈,并附上该程序:我们会直接将其用作测试用例。此次更新中修正的每一个循环,都源于这样的反馈。




