This commit is contained in:
2026-09-09 17:35:23 +08:00
parent 2a98ae7556
commit 161af68fe3
1271 changed files with 58251 additions and 98639 deletions
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCannedCycleSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Bridges the klartext machining-cycle vocabulary onto the shared ISO canned-cycle machinery. Owns the self-carrying store (single-step lookback + rewrite on every block — the P1 datum-shift pattern) and the call-once vs modal split: Definition (Parsing.MachiningCycle from ): mapped to ISO slots at definition time — 200 → G81/G82/G83 (peck when Q202 &amp;lt; |Q201|), 232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), 251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, plunge feed Q206, step-down Q202). A definition never executes by itself. Unsupported numbers (19, …) are recognized-but-not-simulated: consumed whole with HeidenhainCycl--Unsupported, stored unarmable so a later call warns instead of moving. Required parameters that are missing or non-literal make the store unarmable with HeidenhainCycl--ParamsNotLiteral.Call-once (CYCL CALL [POS] record from , or an M99 flag on a positioning block — the TNC block-wise call, unrelated to the Fanuc return M99): writes the mapped cycle as a direct Parsing.G8x sub-section on this block, which resolves and the shared cycle syntaxes expand into a . POS coordinates override the stored X/Y; the POS Z is a pre-position, recorded but never fed into the hole-bottom slot. The ISO modal-lookback branch is deliberately bypassed: it has no positioning gate, so an armed would re-execute on flag-only blocks — wrong for klartext.Modal (M89): sets ; each subsequent block carrying root axis words (and no CArc statement) fires the same direct-section path with the block&#39;s X/Y consumed into the cycle. M99 fires once and clears the modality; a new CYCL DEF replaces the store.Seal: on every non-firing block whose previous block carries an active term, a G80 flag is injected (the P0 G00/G01 injection pattern) so writes the cancel sentinel — the one-shot execution never leaks into ISO modal repetition. Known divergences (recorded, corpus-benign): the cycle&#39;s mapped feed enters the modal section during expansion (ISO semantics; the Siemens MCALL precedent accepts the same leak); the final retract plane is the ISO G98 initial level, not Q204&#39;s second set-up clearance (Q204 is recorded in the definition store only). Must run after the tilt/RTCP family and immediately before .">
<meta name="description" content="Bridges the klartext machining-cycle vocabulary onto the shared ISO canned-cycle machinery. Owns the self-carrying store (single-step lookback + rewrite on every block — the P1 datum-shift pattern) and the call-once vs modal split: Definition (Parsing.MachiningCycle from ): mapped to ISO slots at definition time — 200 → G81/G82/G83 (peck when Q202 &amp;lt; |Q201|), 232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), 251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, plunge feed Q206, step-down Q202). A definition never executes by itself. Unsupported numbers (19, …) are recognized-but-not-simulated: consumed whole with HeidenhainCycl--Unsupported, stored unarmable so a later call warns instead of moving. Required parameters that are missing or non-literal make the store unarmable with HeidenhainCycl--ParamsNotLiteral.Call-once (CYCL CALL [POS] record from , or an M99 flag on a positioning block — the TNC block-wise call, unrelated to the Fanuc return M99): writes the mapped cycle as a direct Parsing.G8x sub-section on this block, which resolves and the shared cycle syntaxes expand into a . POS coordinates override the stored X/Y; the POS Z is a pre-position, recorded but never fed into the hole-bottom slot. Words carrying the klartext incremental stamp — POS words (CYCL CALL POS IX+20) and root words on the M99/M89 forms (L IX+20 R0 FMAX M99 — the manual&#39;s hole-group shape), see — are resolved against the last programmed position here, on the spot: this syntax runs ahead of the shared and consumes the words, so the per-word override would otherwise be lost and the hole drilled at the raw distance. The ISO modal-lookback branch is deliberately bypassed: it has no positioning gate, so an armed would re-execute on flag-only blocks — wrong for klartext.Modal (M89): sets ; each subsequent block carrying root axis words (and no CArc statement) fires the same direct-section path with the block&#39;s X/Y consumed into the cycle. M99 fires once and clears the modality; a new CYCL DEF replaces the store.Seal: on every non-firing block whose previous block carries an active term, a G80 flag is injected (the P0 G00/G01 injection pattern) so writes the cancel sentinel — the one-shot execution never leaks into ISO modal repetition. Known divergences (recorded, corpus-benign): the cycle&#39;s mapped feed enters the modal section during expansion (ISO semantics; the Siemens MCALL precedent accepts the same leak); the final retract plane is the ISO G98 initial level, not Q204&#39;s second set-up clearance (Q204 is recorded in the definition store only) — and an incremental Z word chained off a cycle end (L IZ.., CYCL CALL POS IZ..) inherits that gap, since it adds to the simulated end plane. Must run after the tilt/RTCP family and immediately before .">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -120,7 +120,15 @@ sub-section on this block, which
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> resolves and the shared cycle
syntaxes expand into a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a>. POS coordinates
override the stored X/Y; the POS Z is a pre-position, recorded but
never fed into the hole-bottom slot. The ISO modal-lookback branch is
never fed into the hole-bottom slot. Words carrying the klartext
incremental stamp — POS words (<code>CYCL CALL POS IX+20</code>) and root
words on the M99/M89 forms (<code>L IX+20 R0 FMAX M99</code> — the
manual's hole-group shape), see
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a> — are resolved
against the last programmed position here, on the spot: this syntax
runs ahead of the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> and
consumes the words, so the per-word override would otherwise be lost
and the hole drilled at the raw distance. The ISO modal-lookback branch is
deliberately bypassed: it has no positioning gate, so an armed
<a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> would re-execute on flag-only blocks —
wrong for klartext.</li><li><b>Modal</b> (<code>M89</code>): sets <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html#Hi_NcParsers_Keywords_Heidenhain_MachiningCycleDef_Modal">Modal</a>;
@@ -137,7 +145,10 @@ Known divergences (recorded, corpus-benign): the cycle's mapped feed
enters the modal <a class="xref" href="Hi.NcParsers.Keywords.Feedrate.html">Feedrate</a> section during expansion (ISO
semantics; the Siemens MCALL precedent accepts the same leak); the
final retract plane is the ISO G98 initial level, not Q204's second
set-up clearance (Q204 is recorded in the definition store only).
set-up clearance (Q204 is recorded in the definition store only) —
and an incremental Z word chained off a cycle end (<code>L IZ..</code>,
<code>CYCL CALL POS IZ..</code>) inherits that gap, since it adds to the
simulated end plane.
</p>
Must run after the tilt/RTCP family and immediately before
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a>.