Archived
561 lines
35 KiB
HTML
561 lines
35 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Native Parameters | HiAPI-C# 2025 </title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="title" content="Native Parameters | 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-ControllerNativeParameters">
|
||
<h1 id="native-parameters">Native Parameters</h1>
|
||
|
||
<p>Parameters (Native) is the machine plane's escape hatch: the brand parameter table rendered as the
|
||
flat numbered form an operator reads off the real control, with no domain vocabulary and no unit
|
||
conversion in between. It lives on the General Setup page at <code>/general-setup</code> under the Control-Tree
|
||
id <code>equipment/controller/machine/native</code>, and it is one of the two leaves the <code>hasNativeTable</code>
|
||
snapshot flag grows — the other, M-Code Declarations, edits a different part of the same object.
|
||
Every value the domain-grouped leaves beside it edit <em>that is a row of the brand parameter table</em> is
|
||
a row here; the ones stored elsewhere — the tool-change pose, the block-skip layers, the subprogram
|
||
folders and the indexing position lists among them — reach no native form at all. Several rows here
|
||
reach no domain-grouped face.</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>
|
||
<p>The leaf is pushed behind <code>hasNativeTable</code>, which reports whether any
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> resolves in the runner's effective
|
||
dependency list. All five shipped presets carry one, so the flag is a gate in code and unconditional
|
||
in practice — see <a class="xref" href="../brand-matrix.html">Brand Matrix</a>.</p>
|
||
<h2 id="how-a-parameter-is-addressed">How a Parameter Is Addressed</h2>
|
||
<p>The table stores its numbers in three dictionaries, and the panel is those three dictionaries with a
|
||
heading over each:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Section heading the user reads</th>
|
||
<th>Backing storage</th>
|
||
<th>Cell</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><strong>System parameters</strong></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_SystemParams">SystemParams</a></td>
|
||
<td>one value per id</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Axis parameters</strong></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_AxisParams">AxisParams</a></td>
|
||
<td>one floating-point value per id <strong>per axis</strong></td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Axis parameters (integer)</strong></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_IntAxisParams">IntAxisParams</a></td>
|
||
<td>one integer value per id <strong>per axis</strong></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>An id is a bare number in storage. What the panel prints in front of it is the brand's prefix, and
|
||
that prefix is the whole of the addressing convention:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Brand marker</th>
|
||
<th>Prefix shown</th>
|
||
<th>Table that answers</th>
|
||
<th>Example row</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Fanuc</td>
|
||
<td><code>#</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a></td>
|
||
<td><code>#1420</code> rapid traverse rate</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Mazak</td>
|
||
<td><code>#</code></td>
|
||
<td>the <strong>Fanuc</strong> table</td>
|
||
<td><code>#1420</code> rapid traverse rate</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Syntec</td>
|
||
<td><code>Pr</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html">SyntecParameterTable</a></td>
|
||
<td><code>Pr1420</code> rapid traverse rate</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Siemens</td>
|
||
<td><code>MD</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html">SiemensMachineDataTable</a></td>
|
||
<td><code>MD32000</code> max axis velocity</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Heidenhain</td>
|
||
<td><code>MP</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html">HeidenhainParameterTable</a></td>
|
||
<td><code>MP1010</code> rapid traverse rate</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p><strong>Mazak borrows the Fanuc table outright.</strong> The Mazak preset carries the Fanuc parameter-table proxy
|
||
rather than one of its own, so the prefix resolves to <code>#</code> and every number on this leaf is a Fanuc
|
||
parameter number under a <code>Mazak</code> brand badge. The prefix is not taken from the brand marker string
|
||
but from the type of the parameter table that resolved, so the two cannot drift apart the way a
|
||
brand-marker label can — see <a class="xref" href="../brand-matrix.html">Brand Matrix</a>.</p>
|
||
<p>A <code>ControllerParameterTableBase</code> subclass outside those four resolves an empty prefix, and the ids
|
||
then render bare. No shipped preset produces that.</p>
|
||
<p>The prefix the panel renders comes from the leaf's <strong>own</strong> read of the parameter form. The shared
|
||
runner snapshot carries a prefix field of its own, and nothing renders it.</p>
|
||
<h3 id="the-caption-under-the-id">The caption under the id</h3>
|
||
<p>Each id cell carries the number in bold and, beneath it, a short usage caption — <em>Rapid traverse rate
|
||
(mm/min or deg/min)</em>, <em>Axis type (0 linear / 1 rotary / 2 spindle)</em>, <em>G54 X offset</em>, <em>Tool change M
|
||
function code</em>. The same text repeats as the cell's hover title.</p>
|
||
<p>The caption is the brand table's own description of a well-known number, produced by
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_DescribeSystemParam_">DescribeSystemParam</a><small>(API)</small>
|
||
and its two per-axis counterparts, and it travels down the wire with the row. It is therefore
|
||
<strong>engine text, not an interface string</strong>: it is written in English in the brand table and belongs to
|
||
no locale bundle, so it reads the same under every language the application offers. An id the brand
|
||
table does not model has no caption at all, which is how a modelled row and a free extra are told
|
||
apart on screen.</p>
|
||
<h2 id="raw-values-raw-units">Raw Values, Raw Units</h2>
|
||
<p>The caption at the top of the panel states the rule: <em>"Raw stored values in native units — no unit
|
||
conversion is applied here. The interface-form nodes edit the same backing table."</em></p>
|
||
<p>No cell carries a unit suffix, and none can: the unit belongs to the number, not to the column. What
|
||
a cell means is whatever the brand stores at that address — millimetres or degrees on a stroke limit,
|
||
mm/min or deg/min on a rapid rate, rpm on a spindle limit, an enumeration ordinal on an axis type, a
|
||
count on a controlled-axis parameter.</p>
|
||
<p><strong>The peck clearance is the case where the two forms visibly disagree, and it ships.</strong> Canned Cycle
|
||
(Peck) always speaks millimetres; the Fanuc-family table stores millimetres at <code>#4002</code>, and the
|
||
Syntec table stores <strong>microns</strong> at <code>Pr4002</code>. A machine at a 5 mm clearance therefore reads <code>5</code> on
|
||
<a class="xref" href="interface-parameters.html">Interface Parameters</a> on every brand, and reads <code>5</code> here on Fanuc
|
||
and Mazak but <code>5000</code> here on Syntec. The write endpoint converts on the way in; this leaf does not,
|
||
which is the point of it — an operator copying from a real Syntec control reads the micron form.</p>
|
||
<p>Two further asymmetries follow from where a value is stored rather than from its unit:</p>
|
||
<ul>
|
||
<li><strong>On Siemens and Heidenhain the peck clearance has no row here at all.</strong> Those two presets supply
|
||
it through a generic fallback config, a plain runner entry rather than a parameter table, so the
|
||
interface leaf shows a field whose backing has no place in this form.</li>
|
||
<li><strong>On the Fanuc-family and Syntec tables the work-coordinate offsets are rows of this table.</strong> The
|
||
G54–G59 triads start at <code>#5221</code> and the G54.1 P1–P48 triads at <code>#7001</code>, both on a stride of 20, all
|
||
in the System parameters section. That mixing is why the machine plane's parameter table is stored
|
||
on the project rather than on the runner — see
|
||
<a class="xref" href="index.html">Machine and Controller Plane</a>. On the Fanuc-family table those two
|
||
address ranges are also what an NC program's <code>#</code>-variable read resolves against, so those rows are
|
||
live in both directions.</li>
|
||
</ul>
|
||
<h2 id="what-only-this-leaf-reaches">What Only This Leaf Reaches</h2>
|
||
<p>Most rows have a domain-grouped twin. These do not.</p>
|
||
<p><strong>The axis roster itself.</strong> Every per-axis leaf of the branch — Machine Limits (Stroke), Rapid
|
||
Feedrates, Home / G28 Reference, Tool-Change Position — lists the axes named by the <strong>axis-type row</strong>
|
||
of this table (<code>#1006</code>, <code>Pr1006</code>, <code>MD30300</code>, <code>MP400</code>), because
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_AxisNames">AxisNames</a> is that row's key set. None of
|
||
those leaves can add an axis, rename one, remove one, or change one from linear to rotary; their
|
||
columns are handed to them. Inside the Controller branch the axis-type row is editable here and
|
||
nowhere else, through the footer with the section set to <strong>Axis (integer)</strong>, the brand's axis-type
|
||
number as the id, an axis name, and a value of <code>0</code> linear, <code>1</code> rotary or <code>2</code> spindle. The one other
|
||
writer is outside the branch entirely:
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_ConfigureByMachiningChain_">ConfigureByMachiningChain</a><small>(API)</small> stamps the machining
|
||
chain's axis codes into the same row when a machine tool is attached to the project; an axis the
|
||
chain does not name stays in the row. That call does not stop at the axis-type row: a chain axis it
|
||
marks rotary also has its reference position set to <code>0</code> and its rapid rate to <code>36000</code> deg/min,
|
||
whatever those two Axis parameters rows held.</p>
|
||
<p>The inverse holds, with one exception. Deleting the axis-type row leaves the table with no named
|
||
axes, so Machine Limits (Stroke), Rapid Feedrates and Home / G28 Reference have no rows left to
|
||
draw. Tool-Change Position keeps its own: its reader falls back to the tool-change configuration's
|
||
own axis keys when the axis set is empty, and every shipped preset seeds that configuration with X,
|
||
Y and Z. Rows recovered that way carry no axis type and are reported linear.</p>
|
||
<p><strong>The Siemens indexing machine data, all four numbers.</strong> <code>MD30500</code>, the per-axis assignment that
|
||
decides which axis consumes which position table, is <em>shown</em> on
|
||
<a class="xref" href="indexing-positions.html">Indexing Position Tables</a> as display-only text and is
|
||
written here as an <strong>Axis parameters (integer)</strong> row; the REST surface carries no assignment writer
|
||
at all. The equidistant definition — the numerator <code>MD30501</code> and the offset <code>MD30503</code> as axis
|
||
parameters, the denominator <code>MD30502</code> as an integer axis parameter — has no endpoint that reads or
|
||
writes it and no panel that offers a cell for it: it is three ordinary rows on this leaf. The engine is its reader: an axis whose <code>MD30500</code> is 3 resolves its station spacing from
|
||
the trio, and Indexing Position Tables prints that axis' assignment as <em>Equidistant
|
||
(MD30501–MD30503)</em>, naming the three numbers it offers no cell for. The two position lists
|
||
themselves are the mirror image, stored as list properties outside all three dictionaries and so
|
||
absent from this form entirely.</p>
|
||
<p><strong>Numbers with no interface field.</strong> The controlled-axis count (<code>#1020</code>, <code>Pr1020</code>) is read by nothing
|
||
in the web service. The Siemens fixed-point position <code>MD30600</code>, the G75 target, likewise. So is the
|
||
Siemens tool-change M function <code>MD22560</code>, whose presence overlays a tool-change effect onto the named
|
||
code in the declaration view the parsers resolve against. M-Code Declarations renders the stored map
|
||
rather than that view, so the overlaid row is on no screen at all: the effect is honoured in every
|
||
program the machine runs, and the one number that shows anywhere is this row. The Siemens tool-change
|
||
mode <code>MD22550</code> is a half case: where the row already exists, the <em>T word performs the tool change
|
||
itself</em> toggle on M-Code Declarations writes it, and where it does not, that toggle writes a
|
||
brand-neutral flag instead; creating the row is possible only here.</p>
|
||
<p><strong>Any number the model does not name.</strong> The three writers are get-or-create, so an id outside the
|
||
brand's well-known set is accepted, stored, serialized into the project file and read back. It
|
||
carries no usage caption, and the engine consumes only the numbers its brand table models — a free
|
||
extra is a record, not a setting.</p>
|
||
<h2 id="a-fractional-number-has-three-fates">A Fractional Number Has Three Fates</h2>
|
||
<p>The <strong>Axis parameters (integer)</strong> section is the one place on the branch where a value can be typed,
|
||
accepted by the field, and silently discarded.</p>
|
||
<p>The cell is the shared numeric widget, which commits on blur or Enter and carries no integer rule.
|
||
Typing <code>2.5</code> parses cleanly: the widget clears its own error state, emits <code>2.5</code> to the panel, and
|
||
rewrites its text to the parsed form. The panel's integer handler is where the value stops — it
|
||
returns without assigning and without raising anything when the number is not whole. Because the
|
||
bound value never changed, nothing pushes the stored integer back into the box. <strong>The cell goes on
|
||
reading <code>2.5</code> over a table that still holds the old integer</strong>, with no error message, no toast and no
|
||
console line. The row corrects itself only when the panel refetches: after an add, after a removal,
|
||
or on a fresh mount when the selection leaves this leaf and comes back.</p>
|
||
<p>The footer does not behave the same way. <strong>Add / Set</strong> with <strong>Axis (integer)</strong> selected <em>truncates</em> a
|
||
fractional value toward zero and writes the truncation, so the same <code>2.5</code> becomes a stored <code>2</code>; and
|
||
the same button refuses a fractional <strong>Parameter id</strong> outright, with the message <em>"Enter a
|
||
non-negative integer id and a value."</em> That refusal belongs to the button, not to the box — the
|
||
<strong>Parameter id</strong> field is the shared numeric widget with a minimum of 0 and no integer rule, so it
|
||
accepts and keeps <code>2.5</code> the way any other cell does, and the one message answers an empty <strong>Value
|
||
(raw)</strong> as well. Three controls, one number, three outcomes.</p>
|
||
<p><strong>Clearing any cell ends the same way for a different reason.</strong> An emptied field commits <code>null</code>, and
|
||
all three handlers return early on <code>null</code>, so the box is blank and the stored value is untouched.
|
||
There is no way to unset one cell of a table; the value stands until it is overwritten or its whole
|
||
row is removed. The general rule for a box that disagrees with its model is
|
||
<a class="xref" href="../../../widget/numeric-input.html">Numeric Input</a>; what is particular here is that the widget did nothing
|
||
wrong — the panel accepted the commit and dropped it.</p>
|
||
<h2 id="adding-overwriting-and-removing-a-row">Adding, Overwriting and Removing a Row</h2>
|
||
<p>The footer is one control set for both adding and overwriting, and the button says so: <strong>Add / Set</strong>.
|
||
The write is get-or-create at every level — an unknown id creates its row, an unknown axis name
|
||
creates its column — so setting an existing cell and creating a new one are the same request.</p>
|
||
<ul>
|
||
<li>The <strong>Axis</strong> field appears only while the section is not <em>System</em>, is free text, and is trimmed and
|
||
checked for emptiness only. It is not validated against the machine's axes: any name is accepted
|
||
and becomes a new column.</li>
|
||
<li>A successful add re-reads the whole form. The footer's own fields are <strong>not</strong> cleared, and Enter
|
||
does not submit — see <a class="xref" href="../editing-contract.html">Editing Contract</a> for how the
|
||
branch's add footers differ from one another.</li>
|
||
<li>The two client-side refusals are the id, which must be a non-negative whole number, and, for the
|
||
two per-axis sections, a non-empty axis name. Each raises a negative toast and sends nothing.</li>
|
||
</ul>
|
||
<p><strong>Delete is per row, not per cell.</strong> The trailing button on a row of either per-axis table removes
|
||
the id from that dictionary entirely — every axis column of it at once, not the cell it sits beside.
|
||
A confirmation dialog comes first, titled <em>Remove parameter</em> and reading <em>Remove <code><prefixed id></code> from
|
||
the <code><section></code> section?</em>, where the section word is the storage kind — <em>system</em>, <em>axis</em>, <em>int-axis</em> —
|
||
rather than the heading printed above the table. The removal is not optimistic: the request is
|
||
awaited and the whole form is re-read.</p>
|
||
<p><strong>A deleted well-known row can come back on its own.</strong> The brand tables' modelled accessors are
|
||
get-or-create with a default, so a read through a sibling leaf re-materializes the row it wants. The
|
||
clearest case is the maximum spindle speed: delete <code>#3741</code> here, open Interface Parameters, and that
|
||
read stores the brand's default back — 60000 on Fanuc, Mazak, Siemens and Heidenhain, 24000 on
|
||
Syntec — so the row reappears at that value. The cutter-compensation type, the tool-axis direction
|
||
and the peck clearance behave the same way. A free extra id has no accessor and stays deleted.</p>
|
||
<h2 id="what-a-freshly-switched-brand-shows">What a Freshly Switched Brand Shows</h2>
|
||
<p>The seed each brand's proxy clones decides what the three tables open with. All five declare a linear
|
||
X, Y and Z in the axis-type row, a reference position of zero per axis and a rapid rate per axis, so
|
||
on every brand the Axis parameters section opens with two rows and the Axis parameters (integer)
|
||
section with one. The System section is where they part company.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Brand</th>
|
||
<th>System parameters</th>
|
||
<th>Axis parameters</th>
|
||
<th>Axis parameters (integer)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Fanuc, Mazak</td>
|
||
<td>166 rows — controlled axes, max spindle speed, peck retraction, cutter-comp type, and 162 seeded work-offset addresses at zero</td>
|
||
<td>reference position, rapid rate</td>
|
||
<td>axis type</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Syntec</td>
|
||
<td>166 rows — the same four under <code>Pr</code> numbering, the peck retraction in microns, and the same 162 offsets</td>
|
||
<td>reference position, rapid rate</td>
|
||
<td>axis type</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Siemens</td>
|
||
<td>1 row — max spindle speed</td>
|
||
<td>reference position, max axis velocity</td>
|
||
<td>axis type</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Heidenhain</td>
|
||
<td>2 rows — max spindle speed, tool-axis direction</td>
|
||
<td>reference position, rapid rate</td>
|
||
<td>axis type</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>The 162 offset rows are
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html#Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_SeedAllDefaults_">SeedAllDefaults</a><small>(API)</small> writing
|
||
every G54–G59 and G54.1 P1–P48 triad as zero, so that a managed address always has a value the way a
|
||
real control with a fresh battery reads zero rather than nothing. They dominate the System section on
|
||
the three brands that carry them, and their captions — <em>G54 X offset</em>, <em>G54.1P12 Z offset</em> — are what
|
||
separates them from machine configuration in the same list.</p>
|
||
<p>No brand seeds a stroke limit, so the positive and negative stroke-limit rows are absent from the
|
||
Axis parameters section until Machine Limits (Stroke) or this leaf creates them.</p>
|
||
<h2 id="the-two-empty-layers-and-which-one-is-reachable">The Two Empty Layers, and Which One Is Reachable</h2>
|
||
<p>The panel opens through the branch's shared two-layer gate. The first layer is the shared <em>"No NC
|
||
runner — load a project first."</em> from the runner snapshot; the second is <em>"No controller parameter
|
||
table on the active runner."</em> from the leaf's own read — the same line M-Code Declarations and
|
||
Interface Parameters show, and honest in all three, because every one of those reads reports presence
|
||
from the same parameter-table lookup.</p>
|
||
<p>Neither line is normally reached by navigating, because the node itself exists only while the
|
||
snapshot reported a parameter table. The second line is also what a failed read leaves on screen: the
|
||
presence flag starts false and the failure path only raises a toast. A failed write answers inside a
|
||
success envelope — HTTP 200 carrying <code>No ControllerParameterTableBase on the active runner</code> — and
|
||
surfaces as one negative toast, three seconds, the panel's localized context followed by that raw
|
||
English sentence. The full rule is <a class="xref" href="../editing-contract.html">Editing Contract</a>.</p>
|
||
<h2 id="layout">Layout</h2>
|
||
<ul>
|
||
<li><strong>General Setup</strong> Control Tree — the left dock of <code>/general-setup</code>
|
||
<ul>
|
||
<li><strong>Controller</strong> Node Row
|
||
<ul>
|
||
<li><strong>Machine / Controller</strong> Group Row
|
||
<ul>
|
||
<li><strong>Parameters (Native)</strong> Node Row — <code>equipment/controller/machine/native</code>, the last leaf of the
|
||
plane, after <strong>Indexing Position Tables</strong></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>Editor Row — the panel of the selected node
|
||
<ul>
|
||
<li><strong>Parameters (Native)</strong> Panel — one column, gutter-spaced
|
||
<ul>
|
||
<li>Hint Caption — <em>"Raw stored values in native units — no unit conversion is applied here. The
|
||
interface-form nodes edit the same backing table."</em></li>
|
||
<li><strong>System parameters</strong> Section Heading</li>
|
||
<li>System Table — dense, flat, bordered
|
||
<ul>
|
||
<li>Header Row — <strong>Id</strong>, <strong>Value</strong>, and an unlabelled action column</li>
|
||
<li>Data Row — the prefixed id in bold over its usage caption (absent on a free extra), a numeric
|
||
cell, and a delete button</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Axis parameters</strong> Section Heading</li>
|
||
<li>Axis Table — dense, flat, bordered
|
||
<ul>
|
||
<li>Header Row — <strong>Id</strong>, then one column per axis name, then an unlabelled action column</li>
|
||
<li>Data Row — the prefixed id in bold over its usage caption, one numeric cell per axis column
|
||
(blank where the row has no entry for that axis), and a delete button that removes the whole
|
||
id</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Axis parameters (integer)</strong> Section Heading</li>
|
||
<li>Integer Axis Table — the same shape as the Axis Table, over the integer dictionary</li>
|
||
<li>Separator</li>
|
||
<li>Add Row — one line, bottom-aligned
|
||
<ul>
|
||
<li><strong>Section</strong> Select — <em>System</em> / <em>Axis (double)</em> / <em>Axis (integer)</em></li>
|
||
<li><strong>Parameter id</strong> Numeric Field — minimum 0</li>
|
||
<li><strong>Axis</strong> Text Field — present only while the section is not <em>System</em></li>
|
||
<li><strong>Value (raw)</strong> Numeric Field</li>
|
||
<li><strong>Add / Set</strong> Button — primary</li>
|
||
</ul>
|
||
</li>
|
||
<li>No-Table Body — replaces everything above: <em>"No controller parameter table on the active
|
||
runner."</em></li>
|
||
<li>Shared Empty State — replaces the whole body while the snapshot reports no runner: <em>"No NC
|
||
runner — load a project first."</em></li>
|
||
</ul>
|
||
</li>
|
||
<li>Remove Dialog — <em>Remove parameter</em> over <em>Remove <code><prefixed id></code> from the <code><section></code> section?</em>,
|
||
with a cancel</li>
|
||
<li>Toast — negative, three seconds, the panel's context followed by the server's own message</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>The axis columns of the two per-axis tables are computed independently of each other, and each is the
|
||
union of the shared snapshot's axis names with every axis key present in that table's own rows. An
|
||
axis created here therefore gets its column from the rows even before the shared snapshot is next
|
||
refreshed, and an axis the snapshot knows about with no entry in a row shows an empty cell rather
|
||
than being omitted.</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/SoftNcNativeParamsPanel.vue</code> — this panel: the three tables
|
||
over the three dictionaries, the prefixed id column with its usage caption, the axis-column union,
|
||
the three commit handlers with the integer test that drops a fractional value, the
|
||
confirm-then-remove flow, and the add footer with its truncation and its two refusals.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/softNcItemTypes.ts</code> — the node's id, label and label key,
|
||
and the snapshot flag it is pushed behind, last on the machine plane.</li>
|
||
<li><code>wwwroot-src/src/api/softNcRunner.ts</code> — the reader that parses the prefix and the three row
|
||
families, the three per-cell writers and the three per-id removals, and the snapshot field carrying
|
||
a prefix this panel does not use.</li>
|
||
<li><code>wwwroot-src/src/composables/useSoftNcRunner.ts</code> — the shared snapshot the first empty layer and the
|
||
axis-column union read.</li>
|
||
<li><code>wwwroot-src/src/components/widgets/NumericInput.vue</code> — the cell: commit on blur or Enter, the
|
||
parsed value written back into the box, and the absence of any integer rule.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcEmptyState.vue</code> — the shared no-runner line.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcIndexingPositionsPanel.vue</code> — the sibling that
|
||
displays the MD30500 assignment this leaf writes, and points here for it.</li>
|
||
<li><code>wwwroot-src/src/api/http.ts</code> — the shared fetch helper that turns both a non-2xx status and a
|
||
<code>success: false</code> body into one thrown error.</li>
|
||
<li><code>wwwroot-src/src/i18n/en/softNc.ts</code> — the node label, the raw-units hint, the three section
|
||
headings, the three add-footer section options, the two footer refusals and the five error
|
||
contexts — one read and four writes, the two per-axis savers sharing a context.</li>
|
||
<li><code>wwwroot-src/src/i18n/en/common.ts</code> — the shared <strong>Id</strong>, <strong>Value</strong>, <strong>Axis</strong> and <strong>Add / Set</strong>
|
||
strings.</li>
|
||
<li><code>wwwroot-src/src/i18n/en/dialog.ts</code> — the remove dialog's title, its message, and the three storage
|
||
kind words it interpolates.</li>
|
||
<li><code>Mech/SoftNcRunnerController.cs</code> — the REST surface: the read that orders each dictionary by id and
|
||
attaches the brand's usage description to every row, the prefix computed from the resolved table's
|
||
type, the three get-or-create writers and the three whole-row removals, the shared dependency
|
||
wrapper that answers a missing table inside a success envelope, and the neighbouring readers this
|
||
form's rows also feed — the three per-axis reads that take the axis-type row's key set bare, the
|
||
tool-change read that falls back to its own configuration's keys when that set is empty, and the
|
||
M-code read bound to the stored declaration map rather than the overlaid view.</li>
|
||
</ul>
|
||
<h3 id="hiapi-engine">HiAPI Engine</h3>
|
||
<ul>
|
||
<li><code>HiMech/NcParsers/Dependencys/ControllerParameterTableBase.cs</code> — the three dictionaries this leaf
|
||
is, the get-or-create bucket accessors, the role interfaces that let the domain-grouped leaves read
|
||
the same rows, the axis-name set taken from the axis-type row, the three usage-description methods,
|
||
the rotary-axis helper that writes type, reference position and rapid rate in one call, and the XML
|
||
round-trip that persists every row including free extras.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Fanuc/FanucParameterTable.cs</code> — the <code>#</code> vocabulary: the well-known
|
||
numbers, the get-or-create defaults behind the modelled accessors, the macro-variable lookup over
|
||
the work-offset address ranges, and the seed a fresh Fanuc or Mazak runner opens on.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Syntec/SyntecParameterTable.cs</code> — the <code>Pr</code> vocabulary, and the peck
|
||
clearance stored in microns with the conversion kept in its accessor.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Siemens/SiemensMachineDataTable.cs</code> — the <code>MD</code> vocabulary: the
|
||
indexing assignment, the three equidistant numbers this leaf alone edits and the spacing
|
||
resolution that reads them, the tool-change mode, the tool-change M function with the read-time
|
||
declaration overlay that never enters the stored map, the fixed-point position, and the seed that
|
||
declares one system row.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Heidenhain/HeidenhainParameterTable.cs</code> — the <code>MP</code> vocabulary and its
|
||
two-row seed.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/IsoCoordinateAddressMap.cs</code> — the work-offset address scheme shared by
|
||
the Fanuc and Syntec tables, the per-address description that captions those rows, and the seeding
|
||
of every triad to zero.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/IMachineAxisConfig.cs</code> — the axis contract, and the axis-type
|
||
enumeration a cell of the integer section stores.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Generic/ToolingMcConfig.cs</code> — the tool-change pose, stored outside
|
||
the three dictionaries, whose own X / Y / Z keys are what Tool-Change Position falls back to when
|
||
the axis-type row is gone.</li>
|
||
<li><code>HiMech/NcParsers/SoftNcRunner.cs</code> — the five brand presets and which parameter-table proxy each
|
||
carries, the Fanuc proxy inside the Mazak preset among them, the tool-change configuration every
|
||
preset seeds, and the chain configuration that is the only other writer of the axis-type row and,
|
||
on a rotary chain axis, of that axis' reference position and rapid rate.</li>
|
||
</ul>
|
||
<h2 id="see-also">See Also</h2>
|
||
<ul>
|
||
<li><a class="xref" href="index.html">Machine and Controller Plane</a> — the plane this leaf sits on, and why the table it exposes is
|
||
stored on the project rather than on the runner file</li>
|
||
<li><a class="xref" href="../brand-matrix.html">Brand Matrix</a> — the flag that grows this node, why it never reports false on
|
||
a shipped preset, and why Mazak resolves the Fanuc table</li>
|
||
<li><a class="xref" href="../editing-contract.html">Editing Contract</a> — the commit, rollback, confirm and toast rules this panel
|
||
shares with the branch, and the add-footer details it differs on</li>
|
||
<li><a class="xref" href="interface-parameters.html">Interface Parameters</a> — the same values in domain vocabulary, including the peck
|
||
clearance this leaf shows in the brand's own unit</li>
|
||
<li><a class="xref" href="indexing-positions.html">Indexing Position Tables</a> — the leaf that displays the MD30500 assignment and the
|
||
equidistant definition that are written here</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>
|