Table of Contents

Interface IRotaryAbsoluteWordConfig

Namespace
Hi.NcParsers.Dependencys
Assembly
HiMech.dll

How a controller moves a modular rotary axis to an absolute word that carries no direction of its own — a plain C350 under G90, or an explicitly absolute AC() / CAC() word — and what it does with an absolute word outside the modulo range. Read per axis by McAbcCyclicPathSyntax for the words the RotaryWords record lists that have no directive of their own (DC(), ACP(), ACN(), an increment and the Heidenhain M127 gate come first). A dependency list without an implementation takes Shortest, the engine's default for a modular axis: the Fanuc manuals (No. 1008 RABx = 0 “In which the distance to the target is shorter”, B-64310EN/02 p.38) and Mitsubishi #8213 = 1 describe the shortest path for an absolute word, so the Fanuc table does not implement this interface. A HEIDENHAIN control's own default is the long path — without M126, and with the machine parameter shortestDistance (300401) off, “the control moves a rotary axis whose position display is reduced to less than 360° along a long path” (TNC 640 ISO 892909-2C p.440), which is the displayed difference below — but the engine has always assumed that parameter on, or the program under M126, until M127 says otherwise (the modal RotaryWrap gate the tail pass reads); that standing assumption is why the Heidenhain table does not implement this interface either.

SiemensMachineDataTable implements it from MD30455 ($MA_MISC_FUNCTION_MASK). The rule itself: "When programming AC exclusively or with G90, the traversing direction depends on the rotary-axis actual position. If the target position is greater than the actual position, the axis traverses in the positive direction, otherwise it traverses in the negative direction." (SINUMERIK 840D sl / 828D Function Manual Extended Functions 09/2011, 6FC5397-1BP40-2BA0, R2 Rotary axes §13.3.2 p.857; example ④ of that section: POS[C] = AC(0) from 240° "traverses to position 0° in the negative direction of rotation", a −240° turn where the shortest way is +120°). Bit 2 configures what a plain G90 word means — PlainWordPath(string): "Bit 2 = 0: with G90, modulo axis positioned as standard using AC; Bit 2 = 1: with G90, modulo axis positioned as standard using DC (shortest path)" (same page) — 0 is the factory setting and an absent row; an explicitly written AC() or CAC() is the AC rule itself whatever the bit says (ExplicitAbsoluteWordPath(string)). Bit 0 answers ConvertsOutOfRangeAbsoluteWord(string): "Bit 0 = 0: Modulo rotary axis/spindle: Programmed positions must be within the modulo range. Otherwise, an alarm is output. Bit 0 = 1: If positions outside the modulo range are programmed, no alarm is output. The position is modulo-converted internally. Example: B-5 is equivalent to B355" (Machine data and parameters, Parameter Manual 03/2013, 6FC5397-7AP40-3BA1, MD30455, p.449). The range the engine assumes is the factory one, 0°–359.999° (FB2 p.856); a range moved by MD30340 / MD30330 (−180°…+180°, FB2 p.855) is not modeled. Whether the axis is a modulo axis at all is IsModularRotary(string), which that table reads from MD30310: a modulo axis only when the row is 1 — the control's factory value is 0, and an axis without the row is not one.

public interface IRotaryAbsoluteWordConfig : INcDependency, IMakeXmlSource
Inherited Members
Extension Methods

Properties

ModuloSetting

The setting that makes the axis a modulo axis or not, as the messages name it (“MD30310”).

string ModuloSetting { get; }

Property Value

string

OutOfRangeConversionSetting

The setting behind ConvertsOutOfRangeAbsoluteWord(string), as the messages name it and as the user enters it ("MD30455 bit 0 (1)").

string OutOfRangeConversionSetting { get; }

Property Value

string

PlainWordPathSetting

The setting behind PlainWordPath(string), as the messages name it and as the user enters it — the bit and the integer it adds to the row ("MD30455 bit 2 (4)").

string PlainWordPathSetting { get; }

Property Value

string

Methods

ConvertsOutOfRangeAbsoluteWord(string)

True when the control converts an absolute word outside the modulo range (0°–360°) into it and positions as if the converted value had been written; false when it stops with an alarm — the tail pass then still converts, and says so once per axis.

bool ConvertsOutOfRangeAbsoluteWord(string axisName)

Parameters

axisName string

Axis name (e.g., “C”).

Returns

bool

ExplicitAbsoluteWordPath(string)

The controller's path to an explicitly absolute word — Siemens AC() / CAC(), the Absolute override — on the axis: the AC rule as written, which the setting behind PlainWordPath(string) does not change.

RotaryAbsoluteWordPath ExplicitAbsoluteWordPath(string axisName)

Parameters

axisName string

Axis name (e.g., “C”).

Returns

RotaryAbsoluteWordPath

IsPlainWordPathConfigured(string)

True when PlainWordPath(string) is read from a row the user set for the axis, false when it is the controller's factory setting assumed for an axis without the row — the case the tail pass reports once per axis when the assumed path is not the shortest way.

bool IsPlainWordPathConfigured(string axisName)

Parameters

axisName string

Axis name (e.g., “C”).

Returns

bool

PlainWordPath(string)

The controller's path to a plain absolute word — one the modal G90 makes absolute, with no coordinate function of its own — on the axis.

RotaryAbsoluteWordPath PlainWordPath(string axisName)

Parameters

axisName string

Axis name (e.g., “C”).

Returns

RotaryAbsoluteWordPath