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.
MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters.
- 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).