Archived
225 lines
14 KiB
HTML
225 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Controller | HiAPI-C# 2025 </title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="title" content="Controller | 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="">
|
||
<h1 id="controller">Controller</h1>
|
||
|
||
<p>The controller is the NC parser a project reads its programs with: a brand, the machine and control
|
||
settings that brand assumes, and the coordinate, offset and variable tables an NC program addresses.
|
||
Setting it up is picking the brand first, then filling in the tables that brand grew.</p>
|
||
<h2 id="where-it-is">Where it is</h2>
|
||
<p>The General Setup page, at <code>/general-setup</code>, reached from the menu bar's <strong>Page</strong> dropdown. Select
|
||
the <strong>Controller</strong> branch of the Control Tree (<code>/general-setup?tree=equipment/controller</code>); it sits
|
||
after Workpiece, and whichever node you select opens its editor below the tree in the same dock.</p>
|
||
<p>The branch grows children only with a project open and a controller resolved on it, so a Controller
|
||
node standing alone is the state before a project is open rather than a fault; a project file
|
||
naming no controller keeps the Fanuc preset. Once a runner resolves, the root's own panel badges the
|
||
brand in force and enables an <strong>Object Management</strong> (<code>⋮</code>) menu, whose <strong>Load</strong> installs a
|
||
<code>.Controller</code>, <code>.SoftNcRunner</code> or <code>.xml</code> runner file in place of the whole controller and whose
|
||
<strong>Save As</strong> writes the current one out, offered as <code>NcRunner.Controller</code>.</p>
|
||
<h2 id="pick-the-brand-first">Pick the brand first</h2>
|
||
<p>Select <strong>Controller Brand</strong> (<code>equipment/controller/machine/brand</code>), pick one of <strong>Fanuc</strong>,
|
||
<strong>Siemens</strong>, <strong>Heidenhain</strong>, <strong>Syntec</strong> and <strong>Mazak</strong>, and press <strong>Apply brand</strong>. Until you do the
|
||
pick is only staged: <strong>Revert</strong> drops it, and so does selecting another tree row.</p>
|
||
<p>Do it before anything else, because it replaces the whole controller rather than one field:</p>
|
||
<ol>
|
||
<li><strong>The dialect changes.</strong> Each brand is a different reader; what its G and M words actually do is
|
||
<a href="../../technique/nc-dialects/index.html">NC Dialects</a>.</li>
|
||
<li><strong>The node set changes.</strong> The branch is regrown, so nodes the new brand has no concept of stop
|
||
existing and its own appear.</li>
|
||
<li><strong>Machine settings reset</strong> to the new preset's defaults. The runner-owned ones — the tool-change
|
||
position, block-skip layers, subprogram folders and the macro iteration guards — reset on every
|
||
apply. The travel limits, rapid feedrates, home reference, M-code declarations and native
|
||
parameters live in the brand's parameter table and reset only where the switch also sweeps that
|
||
table; Fanuc and Mazak share one, so a switch between those two leaves them where they are.</li>
|
||
<li><strong>The old brand's own program-data tables are removed</strong> — the ones only that brand proxies:
|
||
Siemens frames, <code>$TC_DP</code> offsets and R parameters, Heidenhain datum presets and shifts. Tool
|
||
offsets survive every switch, and retained common variables survive among Fanuc, Syntec and
|
||
Mazak. What is swept does not come back: switching back builds those tables fresh from the new
|
||
preset's defaults.
|
||
<strong>Carry work-coordinate XYZ (G54…) into the new brand's table</strong>, ticked by default, moves the
|
||
work offsets across — only those, and only for ids the new brand also holds: Fanuc to Siemens
|
||
keeps G54–G57 and drops the rest.</li>
|
||
</ol>
|
||
<p>A brand switch and an Object-Management load are both refused while an NC program is playing — see
|
||
<a href="../run/playing-a-program.html">Playing a Program</a>.</p>
|
||
<p>The <strong>Controller Brand</strong> leaf on a demo project, at
|
||
<code>/general-setup?tree=equipment/controller/machine/brand</code>. The machine plane above it is expanded, so
|
||
the eleven leaves this brand grows are all visible; the panel below carries the <strong>Controller brand</strong>
|
||
select reading <em>Fanuc</em>, the carry checkbox ticked, and the <strong>Apply brand</strong> and <strong>Revert</strong> buttons
|
||
that are enabled only while a different brand is staged.</p>
|
||
<p><img src="controller-img/controller-brand.en.png" alt="The Controller branch of the Control Tree with its Machine / Controller plane expanded, listing Controller Brand, Machine Limits (Stroke), Rapid Feedrates, Home / G28 Reference, Tool-Change Position, Controller Parameters, M-Code Declarations, Canned Cycle (Peck), Block Skip / Delete, Subprogram Folders and Parameters (Native); the panel below shows a Controller brand select reading Fanuc, a ticked checkbox reading carry work-coordinate XYZ into the new brand's table, and the Apply Brand and Revert buttons"></p>
|
||
<h2 id="the-two-planes">The two planes</h2>
|
||
<p>Every other node hangs on one of two group stems, and which one it is on says what it describes;
|
||
selecting a stem lists its children.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Plane</th>
|
||
<th>Tree id</th>
|
||
<th>What sits on it</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><strong>Machine / Controller</strong></td>
|
||
<td><code>equipment/controller/machine</code></td>
|
||
<td>What the machine is wired to do: travel limits, rapid feedrates, the home / G28 reference, the tool-change position, the controller parameters in both a grouped and a native form, the peck clearance, M-code declarations, block-skip layers, subprogram folders and, on Siemens, the indexing position tables</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Program Data</strong></td>
|
||
<td><code>equipment/controller/program-data</code></td>
|
||
<td>The tables a program reads and writes: work coordinates (G54…) and tool offsets on every brand, plus the brand's own — Siemens frames, <code>$TC_DP</code> offsets and R parameters, Heidenhain datum presets and shifts, Fanuc-family retained common variables</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>The machine plane's per-axis rows are driven by the machine tool's chain: every brand preset already
|
||
declares X, Y and Z, and attaching a machine tool adds that chain's own axes beside them. Program
|
||
data stays with the project, so loading a controller file of the brand already in force leaves those
|
||
tables as they are.</p>
|
||
<p><strong>Work Coordinates</strong> always lists the plain <code>G54</code>–<code>G59</code> rows its brand's table holds — Siemens seeds
|
||
only G54–G57 — and, on Fanuc, Mazak and Syntec, the extended <code>G59.1</code>–<code>G59.9</code> rows of the
|
||
brand-neutral table that sits behind the brand table; it shows the <code>G54.1P</code> and <code>G505</code>–<code>G599</code> rows
|
||
once a value is non-zero or the <strong>Show all</strong> toggle is on. Each row carries <strong>P0</strong>, which writes the machine coordinate the
|
||
workpiece's program-zero anchor sits at, and <strong>M0</strong>, which writes machine zero; clicking anywhere in
|
||
a row also marks that coordinate on the canvas. Both write into the table; neither moves the part.
|
||
The other direction — moving the part so that program zero lands on the offset a row already
|
||
holds — is not offered on the runner path: this branch is the runner's own settings face and has
|
||
no such control, and the Legacy-Controller screen that used to carry one (Align P0) was removed on
|
||
2026-09-11. Placing the part on a recorded offset is done by hand —
|
||
<a href="program-zero-alignment.html">Program Zero Alignment</a>.</p>
|
||
<h2 id="a-table-that-is-not-there">A table that is not there</h2>
|
||
<p>A node the active brand has no concept of is never created rather than shown and disabled — Frames
|
||
on Fanuc, Retained Common Variables on Siemens, Block Skip / Delete on Heidenhain — and a <code>?tree=</code>
|
||
link naming one does nothing on the wrong brand, so name the brand alongside any id shared. Nor is an
|
||
id promised to survive a version change — see <a href="../basics/finding-your-way.html">Finding Your Way</a>.</p>
|
||
<p>Two further rows may differ from a colleague's tree for an unrelated reason: <strong>CSV Controller</strong> and
|
||
<strong>CL Controller</strong> are separate non-brand controllers, absent until their box in the <strong>Preference</strong>
|
||
dropdown is switched on, and which box is on is a per-device setting — see
|
||
<a href="../basics/preferences.html">Preferences</a>. Unlike a brand-gated node, though, these two are still
|
||
reachable by link: a <code>?tree=equipment/controller-csv</code> or <code>?tree=equipment/controller-cl</code> mints the
|
||
node and selects it whatever the box says, so a shared bookmark never dead-ends.</p>
|
||
<p><strong>The Preference menu answers whether you need either of them.</strong> Under each of the two checkboxes it
|
||
reads <em>This project plays CSV</em> / <em>This project plays CL</em>, or <em>Not used by this project</em>, worked out
|
||
from what the open project actually plays — the kinds its mission commands name, the play verbs its
|
||
scripts call, and, for CL, a machine chain that can only be driven from CL. Neither node is a setup task in its own right:
|
||
both are childless leaves with no Object Management, because a CSV or CL pipeline is not loaded,
|
||
pasted or saved as a file the way a brand controller is. Switching a box on reveals the pipeline's
|
||
settings; leaving it off on a project that plays neither costs nothing.</p>
|
||
<h2 id="see-also">See Also</h2>
|
||
<ul>
|
||
<li><a href="../../technique/nc-dialects/index.html">NC Dialects</a> — what each brand's G and M vocabulary actually does, once the brand is picked</li>
|
||
<li><a href="machine-tool.html">Machine Tool</a> — the chain whose axes fill the per-axis rows on the machine plane</li>
|
||
<li><a href="program-zero-alignment.html">Program Zero Alignment</a> — the other half of a work offset: where program zero sits on the workpiece</li>
|
||
<li><a href="index.html">Setup</a> — the rest of the pre-simulation configuration</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>
|