Namespace Hi.NcParsers.Dependencys.Heidenhain
Classes
- HeidenhainGotoIterationDependency
Watchdog for Heidenhain FN 9–12
GOTO LBLjumps — the label-keyed sibling of the Siemens SiemensGotoIterationDependency, with the same “soft-cap + runtime counter + session-init ISessionResettable” shape. Kept per-brand for diagnostic clarity and because klartext targets areLBLnumbers-or-names, matched in their canonical form (“01”≡1on a TNC, quotes stripped).The counter key is
(FileName, Label)whereFileNameis the source-level file path of the jump host (the relative form carried on FilePath) andLabelis 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.The consuming syntax (HeidenhainGotoSyntax) counts after the condition gate and before the label scan; above MaxIterationsPerLabel the jump warns
HeidenhainGoto--IterationLimitExceededand falls through. A missing dependency disables the cap (Fanuc parity) — the brand preset wires one by default.
- HeidenhainParameterTable
Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values, under keys numbered after the TNC's MP numbering; the keys known not to be the TNC's number for the value they hold are marked by IsStorageKeyOnly(int).
The table groups its keys as MP100–MP199 for the general machine configuration and MP400–MP499 for per-axis values.
- HeidenhainParameterTableProxy
Get-or-create INcDependencyProxy for HeidenhainParameterTable: a placeholder in the shared PipelineNcDependencyList 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 Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no HeidenhainParameterTable 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.
The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder.
- HeidenhainQParameterTable
Heidenhain Q-parameter table for the ranges that persist on a real TNC: free parameters
Q0-Q99(survive power cycles) and the permanentQR0-QR499range (nonvolatile, backed up with the machine). Like the Siemens sibling SiemensRParameterTable, this table is not session-reset and is serialised into the project file.The other Q ranges deliberately live elsewhere:
Q100-Q199are controller-written system parameters — Get(string) returnsnullfor them (read fail-soft, no fabricated values) and the reading syntax refuses writes;Q200+are volatile cycle/user parameters carried block-to-block inVars.Volatile(JSON dataflow, cleared at program end) — Get(string) also returnsnullso the evaluator's chain falls through to HeidenhainVolatileQLookup.Reads flow through Get(string) (registered automatically because the table sits on the runner's effective
NcDependencyList); writes flow through HeidenhainQParameterReadingSyntax, which consumes literalParsing.Assignments.Qnentries after VariableEvaluatorSyntax has normalized expression RHS to literals.Vacant is represented by
null: either the dictionary has no entry for the key, or the entry maps tonull— both read identically. A vacant read failing loud (Variable--Vacant via the evaluator) surfaces missing setup data instead of silently machining with 0.
- HeidenhainQParameterTableProxy
Get-or-create INcDependencyProxy for HeidenhainQParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case Q parameters (
Q0–Q99+QR0–QR499).