This repository has been archived on 2026-10-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.html
T

227 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Namespace Hi.NcParsers.Dependencys.Heidenhain | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Namespace Hi.NcParsers.Dependencys.Heidenhain | HiAPI-C# 2025 ">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.NcParsers.Dependencys.Heidenhain">
<h1 id="Hi_NcParsers_Dependencys_Heidenhain" data-uid="Hi.NcParsers.Dependencys.Heidenhain" class="text-break">Namespace Hi.NcParsers.Dependencys.Heidenhain</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html">HeidenhainGotoIterationDependency</a></dt>
<dd><p>Watchdog for Heidenhain FN 9–12 <code>GOTO LBL</code> jumps — the
label-keyed sibling of the Siemens
<a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html">SiemensGotoIterationDependency</a>, with the same
&ldquo;soft-cap + runtime counter + session-init <a class="xref" href="Hi.NcParsers.ISessionResettable.html">ISessionResettable</a>&rdquo;
shape. Kept per-brand for diagnostic clarity and because klartext
targets are <code>LBL</code> numbers-or-names, matched in their canonical
form (<code>&ldquo;01&rdquo;</code> ≡ <code>1</code> on a TNC, quotes stripped).</p>
<p>
The counter key is <code>(FileName, Label)</code> where <code>FileName</code> is
the source-level file path of the jump host (the relative form carried
on <a class="xref" href="Hi.NcParsers.Sentence.html#Hi_NcParsers_Sentence_FilePath">FilePath</a>) and <code>Label</code> is the normalised
target. Klartext has no direction mnemonic — a backward jump is the
language's loop primitive, a forward jump can only fire once per
arrival — so all jumps to one label share one bucket and the cap stays
generous.
</p>
<p>
The consuming syntax
(<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainGotoSyntax.html">HeidenhainGotoSyntax</a>)
counts after the condition gate and before the label scan; above
<a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html#Hi_NcParsers_Dependencys_Heidenhain_HeidenhainGotoIterationDependency_MaxIterationsPerLabel">MaxIterationsPerLabel</a> the jump warns
<code>HeidenhainGoto--IterationLimitExceeded</code> and falls through. A
missing dependency disables the cap (Fanuc parity) — the brand preset
wires one by default.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html">HeidenhainParameterTable</a></dt>
<dd><p>Heidenhain TNC/iTNC machine parameter table.
Stores machine parameters (MP numbers) as system and per-axis values.</p>
<p>
MP100–MP199: General machine configuration.
MP400–MP499: Axis-specific parameters.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html">HeidenhainParameterTableProxy</a></dt>
<dd><p>Get-or-create <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> for
<a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html">HeidenhainParameterTable</a>: a placeholder in the shared
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> that resolves the host
project's own machine parameter table. Like the Fanuc-family parameter
table, the Heidenhain MP table mixes machine config (axis types /
reference positions / rapid rates / tool axis direction) with per-project
edits, so the proxy carries a fixed machine-config <a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html#Hi_NcParsers_Dependencys_Heidenhain_HeidenhainParameterTableProxy_Seed">Seed</a> that
is serialized into the shared runner file. On wire, the host receives a
deep clone of the seed only when it has no
<a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html">HeidenhainParameterTable</a> yet; a loaded project's own full
table wins, so a same-brand re-flash re-binds to the project's parameters
instead of resetting them. The resolved host table is fully serialized on
the project.</p>
<p>
The proxy deliberately does <b>not</b> implement the machine-config
interfaces (<a class="xref" href="Hi.NcParsers.Dependencys.IMachineAxisConfig.html">IMachineAxisConfig</a> etc.) — every machine-config
consumer must go through
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_GetEffectiveNcDependencyList">GetEffectiveNcDependencyList()</a> so it sees the
resolved host table, never this placeholder.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html">HeidenhainQParameterTable</a></dt>
<dd><p>Heidenhain Q-parameter table for the ranges that persist on a real TNC:
free parameters <code>Q0-Q99</code> (survive power cycles) and the permanent
<code>QR0-QR499</code> range (nonvolatile, backed up with the machine). Like
the Siemens sibling <a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html">SiemensRParameterTable</a>, this
table is not session-reset and is serialised into the project file.</p>
<p>
The other Q ranges deliberately live elsewhere: <code>Q100-Q199</code> are
controller-written system parameters — <a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html#Hi_NcParsers_Dependencys_Heidenhain_HeidenhainQParameterTable_Get_System_String_">Get(string)</a> returns
<code>null</code> for them (read fail-soft, no fabricated values) and the
reading syntax refuses writes; <code>Q200+</code> are volatile cycle/user
parameters carried block-to-block in <code>Vars.Volatile</code> (JSON
dataflow, cleared at program end) — <a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html#Hi_NcParsers_Dependencys_Heidenhain_HeidenhainQParameterTable_Get_System_String_">Get(string)</a> also returns
<code>null</code> so the evaluator's chain falls through to
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html">HeidenhainVolatileQLookup</a>.
</p>
<p>
Reads flow through <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_IVariableLookup_Get_System_String_">Get(string)</a> (registered
automatically because the table sits on the runner's effective
<code>NcDependencyList</code>); writes flow through
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html">HeidenhainQParameterReadingSyntax</a>,
which consumes literal <code>Parsing.Assignments.Qn</code> entries after
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a> has normalized
expression RHS to literals.
</p>
<p>
Vacant is represented by <code>null</code>: either the dictionary has no entry
for the key, or the entry maps to <code>null</code> — both read identically. A
vacant read failing loud (Variable--Vacant via the evaluator) surfaces
missing setup data instead of silently machining with 0.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html">HeidenhainQParameterTableProxy</a></dt>
<dd><p>Get-or-create <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> for <a class="xref" href="Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html">HeidenhainQParameterTable</a>:
a placeholder in the shared <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> that
resolves the host project's own per-case Q parameters (<code>Q0–Q99</code> + <code>QR0–QR499</code>).</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>