Archived
580 lines
34 KiB
HTML
580 lines
34 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Brand Matrix | HiAPI-C# 2025 </title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="title" content="Brand Matrix | 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 "{query}"">
|
|
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
|
<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="">
|
|
<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="Anatomy-ControllerBrandMatrix">
|
|
<h1 id="brand-matrix">Brand Matrix</h1>
|
|
|
|
<p>The Controller branch is the one branch of the equipment tree whose node set is not fixed: it is
|
|
grown from a snapshot of the active NC runner, and a node whose backing dependency the runner does
|
|
not resolve is never created at all. This page is the index of every node that branch can grow, and
|
|
it owns no node of its own — the ids it lists sit under <code>?tree=equipment/controller</code> on
|
|
<code>/general-setup</code>, on two plane stems, <code>equipment/controller/machine</code> and
|
|
<code>equipment/controller/program-data</code>.</p>
|
|
<div class="IMPORTANT">
|
|
<h5>Important</h5>
|
|
<p>Anatomy makes no claim that any id named here is stable across versions. The migration hop that
|
|
keeps an older <code>?tree=</code> value resolving is described in
|
|
<a class="xref" href="../../platform/tree-ids-and-routes.html">Tree Ids and Routes</a>.</p>
|
|
</div>
|
|
<h2 id="what-decides-the-shape">What Decides the Shape</h2>
|
|
<p>One request returns a flat snapshot of the active runner: the brand marker, the chain-driven axis
|
|
list, and a set of presence flags. Each flag is a type probe over the runner's
|
|
proxy-resolved dependency list — <a class="xref" href="../../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_GetEffectiveNcDependencyList_">GetEffectiveNcDependencyList</a><small>(API)</small>,
|
|
so what is probed is the concrete table a proxy stands in for, never the proxy. Every gate the tree
|
|
reads tests a single type; two of the fields no component reads test a pair instead. The branch
|
|
builder reads that snapshot once per build and pushes a node for each flag that reads true. A node
|
|
that fails its gate is absent, not hidden and not disabled; the branch is regrown from a fresh
|
|
snapshot whenever a panel swaps the runner. How a branch is built, rebuilt and selected is the Control-Tree
|
|
engine's own subject — see <a class="xref" href="../../platform/control-tree.html">Control Tree</a>.</p>
|
|
<p>Five brands ship as presets: Fanuc, Siemens, Heidenhain, Syntec and Mazak. Each is a property on the
|
|
engine's runner type returning a fresh instance whose dependency list is written out literally, so
|
|
what a brand grows is decided by that list and by nothing else.</p>
|
|
<p>The snapshot also carries one non-boolean field that changes a panel rather than the tree.
|
|
<code>workCoordinateKind</code> names which storage model backs the work coordinates, by a type switch over the
|
|
first <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> in the effective list: <code>fanuc</code> on Fanuc
|
|
and Mazak, <code>syntec</code> on Syntec, <code>siemens</code> on Siemens (the frame table precedes the machine-data
|
|
table, which is not an ISO coordinate provider), <code>heidenhain</code> on Heidenhain, and <code>none</code> when nothing
|
|
resolves. Its <code>generic</code> arm answers for the brand-neutral
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>, which no brand preset carries — it is
|
|
reachable only from a runner that already holds one, so the arm is defensive rather than dead.</p>
|
|
<h2 id="the-fixed-core">The Fixed Core</h2>
|
|
<p>Both plane stems are the builder's return value rather than gated entries, so they appear together
|
|
whenever a runner resolves, and neither is ever empty: each carries leaves that no flag guards.
|
|
Both are <code>Group</code> stems, so each renders an intro line and a clickable child list rather than a field
|
|
editor.</p>
|
|
<p>The machine plane's ungated leaves are Controller Brand, Machine Limits (Stroke), Rapid Feedrates,
|
|
Home / G28 Reference, Tool-Change Position and Controller Parameters. The program-data plane's are
|
|
Work Coordinates (G54…) and Tool Offsets.</p>
|
|
<p>Nothing in that core is gated, so no dependency decides whether those leaves exist — the builder
|
|
pushes them whatever resolves. What the preset lists decide is whether they have anything to show,
|
|
and on every brand they do.
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> declares the machine-config interfaces
|
|
itself — home reference, axis set, rapid feedrates, stroke limits, spindle control, M-code
|
|
declarations and the tool-change trigger — and every brand's parameter table derives from it, which
|
|
covers the limits, rapid, home and parameters leaves at once. The other two read dependencies each
|
|
preset carries in its own right: <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.CncBrandDependency.html">CncBrandDependency</a> behind
|
|
Controller Brand, and <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html">ToolingMcConfig</a> behind Tool-Change
|
|
Position. On the program-data plane, every preset proxies the generic
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a>, and each brand supplies an ISO coordinate
|
|
provider of its own.</p>
|
|
<p>The axis names the per-axis leaves list are the parameter table's own axis entries, which the
|
|
machining chain adds to and re-types when a machine tool is attached — it sets a type per chain axis
|
|
and removes nothing, so an attached chain yields the union of the two sets rather than a
|
|
replacement. Each brand's default table already seeds a linear X, Y and Z, so those rows are
|
|
populated before any chain is wired.</p>
|
|
<h2 id="with-no-runner">With No Runner</h2>
|
|
<p>The builder returns an empty child list, so both stems and every leaf disappear and only the branch
|
|
root survives. Its editor is the runner root panel, which then shows an hourglass over “No NC
|
|
controller runner on this project.” and a hint pointing at the ⋮ menu's Load command; the brand
|
|
badge is dropped and the file caption reads “No NC runner”.</p>
|
|
<p>The same empty list is returned when the snapshot request throws, so a failed fetch and a genuine
|
|
absence produce an identical tree shape, and the root panel renders the same hourglass block for
|
|
both. What separates them is transient and comes from elsewhere: the shared snapshot's own failed
|
|
read resets it to the empty value and raises an error toast. That read is a separate request from
|
|
the builder's, so the two can disagree — a branch collapsed by a thrown build fetch can sit under a
|
|
root panel still showing the brand badge of a snapshot that loaded.</p>
|
|
<p>Every leaf panel still opens with its own guard on the same flag, rendering the shared empty body
|
|
“No NC runner — load a project first.” Since a leaf node is built only when the snapshot already
|
|
reported a runner, that guard is a live defence against the shared snapshot emptying under a
|
|
mounted panel — closing the project does exactly that — rather than a state reached by navigating.</p>
|
|
<h2 id="the-matrix">The Matrix</h2>
|
|
<p>Keyed on the node id, because one tree label is itself conditional: the generic tool-offsets leaf is
|
|
relabelled when the Siemens <code>$TC_DP</code> table resolves, so an index keyed on labels would be
|
|
conditional on the very thing it indexes. Rows are in the order the builder pushes them.</p>
|
|
<p>Machine-plane rows name the page that documents the node. The program-data leaves have no page of
|
|
their own, so those rows point at the Layout section below, which names every one of them in tree
|
|
order.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Node id</th>
|
|
<th>Tree label</th>
|
|
<th>Gate</th>
|
|
<th>Dependency probed</th>
|
|
<th>Brands</th>
|
|
<th>Documented by</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/brand</code></td>
|
|
<td>Controller Brand</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/brand-switch.html">Controller Brand</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/limits</code></td>
|
|
<td>Machine Limits (Stroke)</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/per-axis-tables.html">Per-Axis Tables</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/rapid</code></td>
|
|
<td>Rapid Feedrates</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/per-axis-tables.html">Per-Axis Tables</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/home</code></td>
|
|
<td>Home / G28 Reference</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/per-axis-tables.html">Per-Axis Tables</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/tool-change</code></td>
|
|
<td>Tool-Change Position</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/per-axis-tables.html">Per-Axis Tables</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/parameters</code></td>
|
|
<td>Controller Parameters</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/interface-parameters.html">Interface Parameters</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/m-codes</code></td>
|
|
<td>M-Code Declarations</td>
|
|
<td><code>hasNativeTable</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a></td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/m-code-declarations.html">M-Code Declarations</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/canned-cycle</code></td>
|
|
<td>Canned Cycle (Peck)</td>
|
|
<td><code>hasCannedCycle</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.ICannedCycleConfig.html">ICannedCycleConfig</a></td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/interface-parameters.html">Interface Parameters</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/block-skip</code></td>
|
|
<td>Block Skip / Delete</td>
|
|
<td><code>hasBlockSkip</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html">IBlockSkipConfig</a></td>
|
|
<td>Fanuc, Siemens, Syntec, Mazak</td>
|
|
<td><a class="xref" href="machine/program-reading.html">Program Reading</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/subprograms</code></td>
|
|
<td>Subprogram Folders</td>
|
|
<td><code>hasSubprogramFolders</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html">SubProgramFolderConfig</a></td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/program-reading.html">Program Reading</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/indexing-positions</code></td>
|
|
<td>Indexing Position Tables</td>
|
|
<td><code>hasIndexingTables</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html">SiemensMachineDataTable</a></td>
|
|
<td>Siemens</td>
|
|
<td><a class="xref" href="machine/indexing-positions.html">Indexing Position Tables</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/machine/native</code></td>
|
|
<td>Parameters (Native)</td>
|
|
<td><code>hasNativeTable</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a></td>
|
|
<td>all five</td>
|
|
<td><a class="xref" href="machine/native-parameters.html">Native Parameters</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/work-coordinates</code></td>
|
|
<td>Work Coordinates (G54…)</td>
|
|
<td>always</td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/tool-offsets</code></td>
|
|
<td>Tool Offsets, read as Tool Offsets (ISO G43 H) under <code>hasSiemensToolOffsets</code></td>
|
|
<td>always; label switched by <code>hasSiemensToolOffsets</code></td>
|
|
<td>—</td>
|
|
<td>all five</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/siemens-tool-offsets</code></td>
|
|
<td>Tool Offsets ($TC_DP)</td>
|
|
<td><code>hasSiemensToolOffsets</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html">SiemensToolOffsetTable</a></td>
|
|
<td>Siemens</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/tool-names</code></td>
|
|
<td>Tool Names</td>
|
|
<td><code>hasSiemensToolOffsets</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html">SiemensToolOffsetTable</a></td>
|
|
<td>Siemens</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/datum-presets</code></td>
|
|
<td>Datum Presets (Q339)</td>
|
|
<td><code>hasDatums</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a></td>
|
|
<td>Heidenhain</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/datum-shifts</code></td>
|
|
<td>Datum Shifts (D)</td>
|
|
<td><code>hasDatums</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a></td>
|
|
<td>Heidenhain</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/frames</code></td>
|
|
<td>Frames (Siemens)</td>
|
|
<td><code>hasFrames</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html">SiemensFrameTable</a></td>
|
|
<td>Siemens</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/retained-variables</code></td>
|
|
<td>Retained Common Variables</td>
|
|
<td><code>hasRetainedVariables</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html">RetainedCommonVariableTable</a></td>
|
|
<td>Fanuc, Syntec, Mazak</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>equipment/controller/program-data/r-parameters</code></td>
|
|
<td>R Parameters</td>
|
|
<td><code>hasRParameters</code></td>
|
|
<td><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html">SiemensRParameterTable</a></td>
|
|
<td>Siemens</td>
|
|
<td>Layout below</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Three gates never read false on a shipped preset. <code>hasNativeTable</code> is true wherever any brand
|
|
parameter table resolves, which every preset provides. <code>hasSubprogramFolders</code> is true because every
|
|
one of the five lists carries <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html">SubProgramFolderConfig</a>.
|
|
<code>hasCannedCycle</code> is true on Fanuc and Mazak through
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a>, on Syntec through
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html">SyntecParameterTable</a>, and on Siemens and Heidenhain through
|
|
the <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html">FallbackConfig</a> those two presets carry. So M-Code
|
|
Declarations, Parameters (Native), Canned Cycle (Peck) and Subprogram Folders are gated in code and
|
|
unconditional in practice — they can only go missing on a runner composed by hand or loaded from a
|
|
file.</p>
|
|
<p>Two answers are decided by list <em>order</em>, not only by membership, because the snapshot takes the
|
|
first match rather than any match: the parameter table behind <code>hasIndexingTables</code> and the ISO
|
|
coordinate provider behind <code>workCoordinateKind</code> are both first-of-type lookups over the effective
|
|
list. Each has exactly one candidate in every shipped preset, so order settles nothing there; it
|
|
becomes load-bearing only on a runner carrying two.</p>
|
|
<h2 id="the-flag-that-does-double-duty">The Flag That Does Double Duty</h2>
|
|
<p><code>hasSiemensToolOffsets</code> is the only flag that both adds nodes and rewrites one. It adds Tool Offsets
|
|
($TC_DP) and Tool Names, and at the same time switches the ungated tool-offsets leaf from the label
|
|
key <code>softNc.node.toolOffsets</code> to <code>softNc.node.toolOffsetsIsoH</code>, so the row reads “Tool Offsets (ISO
|
|
G43 H)” instead of “Tool Offsets”. The node id is untouched by the relabel. The reason is that the
|
|
two ledgers coexist on Siemens — the <code>(T,D)</code>-keyed <code>$TC_DP</code> table beside the single-index ISO G43 H
|
|
table — and an unqualified “Tool Offsets” would blur them into one.</p>
|
|
<h2 id="the-one-brand-shaped-hole">The One Brand-Shaped Hole</h2>
|
|
<p>Block Skip / Delete is the only node that exists on four brands and not the fifth.
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html">GenericBlockSkipConfig</a> is the sole implementer of
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html">IBlockSkipConfig</a> in the engine, and the Heidenhain preset is the one
|
|
brand list that does not carry it. Reads of the block-skip endpoint answer absent there, and writes
|
|
answer unsuccessful with a message naming the missing dependency.</p>
|
|
<h2 id="mazak-resolves-the-fanuc-table">Mazak Resolves the Fanuc Table</h2>
|
|
<p>The Mazak preset's dependency list differs from the Fanuc one only in the brand token it carries: it
|
|
proxies the same Fanuc parameter table. Both proxies resolve the same concrete per-case table, so
|
|
every downstream consequence follows — the same native parameter numbering and prefix, the same
|
|
<code>fanuc</code> work-coordinate storage model, and the same rows under a Mazak brand badge. It is also the
|
|
one brand pair whose per-case parameter table survives a switch between them, because the sweep that
|
|
removes tables the new runner references through no proxy finds this one still referenced.</p>
|
|
<h2 id="flags-computed-and-read-by-nothing">Flags Computed and Read By Nothing</h2>
|
|
<p>Five snapshot fields are computed by the web service, typed and parsed by the client, and read by no
|
|
component. They stay part of what the endpoint returns, so a client other than this one still
|
|
receives them.</p>
|
|
<ul>
|
|
<li><code>hasProject</code> — a null check on the loaded project rather than a dependency probe. It is the only
|
|
field the early-return snapshot sets when no runner resolves. The panels gate on the runner flag
|
|
instead, and the shared state watches the project store directly.</li>
|
|
<li><code>hasCutterComp</code> — would report a cutter-comp startup type on the Fanuc and Syntec tables.</li>
|
|
<li><code>hasToolAxisDirection</code> — would report a tool-axis-direction parameter on the Heidenhain table.</li>
|
|
<li><code>hasIterationGuards</code> — would report the iteration guards.</li>
|
|
<li><code>nativeIdPrefix</code> — <code>#</code> on Fanuc and Mazak, <code>Pr</code> on Syntec, <code>MD</code> on Siemens, <code>MP</code> on Heidenhain.</li>
|
|
</ul>
|
|
<p>The screen gets the other four elsewhere. The controller-parameters panel shows its cutter-comp,
|
|
tool-axis and iteration-guard controls only where its own read returns a non-null value for each, and
|
|
the native-parameters panel renders the prefix from its own read, which recomputes the same switch
|
|
server-side.</p>
|
|
<p>Two of the snapshot's own doc comments disagree with the code that ships, and the code is what the
|
|
tree obeys.</p>
|
|
<ul>
|
|
<li>The subprogram-folder flag is annotated as a Fanuc-family trait. All five presets carry the
|
|
folder config: the Siemens entry is the <code>L</code>-call lookup root and the Heidenhain entry the
|
|
<code>CALL PGM</code> lookup root, each with its own comment saying so. The node grows on every brand.</li>
|
|
<li>The iteration-guard flag is annotated as the Fanuc GOTO / WHILE-DO guards. The probe also matches
|
|
the Siemens jump guard, and matches neither
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html">HeidenhainGotoIterationDependency</a> — which the
|
|
Heidenhain preset does carry — nor the Fanuc WHILE-DO guard. The flag would therefore misreport
|
|
Heidenhain even if something read it.</li>
|
|
</ul>
|
|
<h2 id="what-this-table-cannot-check">What This Table Cannot Check</h2>
|
|
<p>The two halves of every brand column live in different repositories and nothing in either build
|
|
joins them.</p>
|
|
<ul>
|
|
<li><strong>The flags are computed in the web service.</strong> The snapshot builder in
|
|
<code>Mech/SoftNcRunnerController.cs</code> holds one probe per flag. Changing a probe's type, or
|
|
reordering the first-of-type lookups it depends on, moves a whole row of this table.</li>
|
|
<li><strong>What each brand carries is written in the engine.</strong> The five brand presets in
|
|
<code>HiMech/NcParsers/SoftNcRunner.cs</code> are literal dependency lists. Adding or removing one entry
|
|
changes a brand column here, with no compile error and no failing test to mark it.</li>
|
|
</ul>
|
|
<p>The brand columns above are read from those preset lists. Re-deriving them means diffing those two
|
|
files against each other — the probe list on one side, the five preset lists on the other — and
|
|
nothing else reports the drift.</p>
|
|
<p>Two narrower falsifiers sit under the same join. The interface list on
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> is why the machine plane's ungated
|
|
leaves have a live table behind them on every brand; if a brand table ever implements
|
|
<a class="xref" href="../../../api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html">IBlockSkipConfig</a>, the Heidenhain hole closes silently. And the label
|
|
strings in the English locale bundle currently match the hard-coded labels in the branch builder
|
|
one for one; the tree renders the label key, so a drift there changes what the tree reads without
|
|
changing any id in this table.</p>
|
|
<h2 id="layout">Layout</h2>
|
|
<ul>
|
|
<li>Control Tree — the <strong>General Setup</strong> root
|
|
<ul>
|
|
<li><strong>Controller</strong> Node Row — the branch root; its editor carries the Object-Management ⋮ button,
|
|
the brand badge and the runner-file caption, or the hourglass no-runner block
|
|
<ul>
|
|
<li><strong>Machine / Controller</strong> Group Stem — intro line plus a clickable list of its children
|
|
<ul>
|
|
<li><strong>Controller Brand</strong> Node Row</li>
|
|
<li><strong>Machine Limits (Stroke)</strong> Node Row</li>
|
|
<li><strong>Rapid Feedrates</strong> Node Row</li>
|
|
<li><strong>Home / G28 Reference</strong> Node Row</li>
|
|
<li><strong>Tool-Change Position</strong> Node Row</li>
|
|
<li><strong>Controller Parameters</strong> Node Row</li>
|
|
<li><strong>M-Code Declarations</strong> Node Row — gated</li>
|
|
<li><strong>Canned Cycle (Peck)</strong> Node Row — gated</li>
|
|
<li><strong>Block Skip / Delete</strong> Node Row — gated; absent on Heidenhain</li>
|
|
<li><strong>Subprogram Folders</strong> Node Row — gated</li>
|
|
<li><strong>Indexing Position Tables</strong> Node Row — gated; Siemens only</li>
|
|
<li><strong>Parameters (Native)</strong> Node Row — gated</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>Program Data</strong> Group Stem — intro line plus a clickable list of its children
|
|
<ul>
|
|
<li><strong>Work Coordinates (G54…)</strong> Node Row</li>
|
|
<li><strong>Tool Offsets</strong> Node Row — reads <strong>Tool Offsets (ISO G43 H)</strong> where the Siemens <code>$TC_DP</code>
|
|
table resolves</li>
|
|
<li><strong>Tool Offsets ($TC_DP)</strong> Node Row — gated; Siemens only</li>
|
|
<li><strong>Tool Names</strong> Node Row — gated; Siemens only</li>
|
|
<li><strong>Datum Presets (Q339)</strong> Node Row — gated; Heidenhain only</li>
|
|
<li><strong>Datum Shifts (D)</strong> Node Row — gated; Heidenhain only</li>
|
|
<li><strong>Frames (Siemens)</strong> Node Row — gated; Siemens only</li>
|
|
<li><strong>Retained Common Variables</strong> Node Row — gated; absent on Siemens and Heidenhain</li>
|
|
<li><strong>R Parameters</strong> Node Row — gated; Siemens only</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>The rows marked <em>gated</em> are the ones this page's table keys; the rest are the fixed core. Every row
|
|
is a plain label with no icon and no checkbox, since the tick column belongs to the mission branch
|
|
alone.</p>
|
|
<h2 id="source-code-path">Source Code Path</h2>
|
|
<p>See <a class="xref" href="../../index.html">HiNC App Anatomy</a> for git repository links.</p>
|
|
<h3 id="web-application">Web Application</h3>
|
|
<p>HiNC-2025-webservice (Quasar CLI SPA):</p>
|
|
<ul>
|
|
<li><code>wwwroot-src/src/components/controlTree/softNcItemTypes.ts</code> — the branch builder: it mints every
|
|
node id in the table above, holds each leaf's gate, carries the tool-offsets relabel, and returns
|
|
an empty child list both when no runner resolves and when the snapshot request throws.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/useControlTreeHost.ts</code> — declares the
|
|
<code>equipment/controller</code> root that prefixes every id in the table, and rebuilds the branch when a
|
|
panel reports a structural change scoped to it.</li>
|
|
<li><code>wwwroot-src/src/api/softNcRunner.ts</code> — the snapshot type, its empty value and its parser; the
|
|
five fields with no reader are declared, defaulted and parsed here.</li>
|
|
<li><code>wwwroot-src/src/composables/useSoftNcRunner.ts</code> — the shared snapshot the leaf panels gate on,
|
|
the project watch that empties it, and the brand switch and Object-Management install that re-read
|
|
it.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcRunnerRootPanel.vue</code> — the branch root's editor and
|
|
the no-runner block the branch collapses to.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcEmptyState.vue</code> — the shared no-runner body every
|
|
leaf panel falls back to.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcWorkCoordinatesPanel.vue</code> — the one consumer of the
|
|
snapshot's work-coordinate kind.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcControllerParamsPanel.vue</code> — gates the cutter-comp,
|
|
tool-axis and iteration-guard controls on its own read rather than on the snapshot flags.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcNativeParamsPanel.vue</code> — renders the native id
|
|
prefix from its own read.</li>
|
|
<li><code>wwwroot-src/src/i18n/en/softNc.ts</code> — the node label strings the tree renders, the two group
|
|
intros, and the empty-state bodies.</li>
|
|
<li><code>Mech/SoftNcRunnerController.cs</code> — builds the snapshot: one probe per flag over the
|
|
proxy-resolved dependency list, the early-return form used when no runner resolves, and the brand
|
|
switch that swaps the whole runner and sweeps the orphaned per-case tables.</li>
|
|
</ul>
|
|
<h3 id="hiapi-engine">HiAPI Engine</h3>
|
|
<ul>
|
|
<li><code>HiMech/NcParsers/SoftNcRunner.cs</code> — the five brand presets as literal dependency lists, and the
|
|
proxy resolution every flag probe reads through.</li>
|
|
<li><code>HiMech/NcParsers/ControllerPresetWriter.cs</code> — the brand token list and the factory that turns one
|
|
token into a preset runner, for the shipped preset files.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/ControllerParameterTableBase.cs</code> — the machine-config interfaces
|
|
every brand table inherits, which is why the machine plane's ungated leaves have data on all five
|
|
brands.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/CncBrandDependency.cs</code> — the brand marker the snapshot reports, and
|
|
the five brand tokens.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Generic/GenericBlockSkipConfig.cs</code> — the sole implementer of the
|
|
block-skip interface, and therefore the whole reason one node is missing on one brand.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Generic/FallbackConfig.cs</code> — the peck-retraction provider that makes
|
|
the canned-cycle gate true on the two brands whose own table has none.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Generic/SubProgramFolderConfig.cs</code> — the folder config every preset
|
|
carries, against the snapshot comment that calls it a Fanuc-family trait.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Fanuc/FanucParameterTable.cs</code>,
|
|
<code>HiMech/NcParsers/Dependencys/Syntec/SyntecParameterTable.cs</code>,
|
|
<code>HiMech/NcParsers/Dependencys/Siemens/SiemensMachineDataTable.cs</code>,
|
|
<code>HiMech/NcParsers/Dependencys/Heidenhain/HeidenhainParameterTable.cs</code> — the four brand tables and
|
|
the extra interfaces that decide the canned-cycle, indexing and work-coordinate answers.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Fanuc/FanucParameterTableProxy.cs</code> — the per-case resolution the
|
|
Fanuc and Mazak presets share, which is why those two survive each other's brand switch.</li>
|
|
</ul>
|
|
<h2 id="see-also">See Also</h2>
|
|
<ul>
|
|
<li><a class="xref" href="index.html">Controller Branch</a> — the branch this table indexes, its two planes and the runner behind them</li>
|
|
<li><a class="xref" href="editing-contract.html">Editing Contract</a> — the rules every leaf panel in this table obeys when it reads, commits and rolls back</li>
|
|
<li><a class="xref" href="machine/index.html">Machine and Controller Plane</a> — the machine plane, whose leaves make up most of this table</li>
|
|
<li><a class="xref" href="program-data/index.html">Program Data Plane</a> — the program-data plane, whose per-case leaves are the rest of this table's rows</li>
|
|
<li><a class="xref" href="machine/brand-switch.html">Controller Brand</a> — the control that changes which rows of this table exist, and what it resets on the way</li>
|
|
<li><a class="xref" href="machine/per-axis-tables.html">Per-Axis Tables</a> — the four ungated per-axis leaves: stroke limits, rapid rates, home reference and the tool-change position</li>
|
|
<li><a class="xref" href="machine/interface-parameters.html">Interface Parameters</a> — the interface parameter form and the canned-cycle leaf, two of the rows above</li>
|
|
<li><a class="xref" href="machine/m-code-declarations.html">M-Code Declarations</a> — the M-code declaration leaf, gated by the native-table flag</li>
|
|
<li><a class="xref" href="machine/program-reading.html">Program Reading</a> — the block-skip and subprogram leaves, and the one gate that switches a node off for exactly one brand</li>
|
|
<li><a class="xref" href="machine/indexing-positions.html">Indexing Position Tables</a> — the one row that appears on a single brand only</li>
|
|
<li><a class="xref" href="machine/native-parameters.html">Native Parameters</a> — the native parameter form behind the id prefix this page reports as unread</li>
|
|
<li><a class="xref" href="../hidden-controllers.html">Hidden Controller Branches</a> — the other kind of withheld node: the two equipment branches a device preference hides, which a link can reveal where none of these can</li>
|
|
</ul>
|
|
|
|
</article>
|
|
|
|
<div class="contribution d-print-none">
|
|
</div>
|
|
|
|
<div class="next-article d-print-none border-top" id="nextArticle"></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>
|