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
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
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
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
axisNamestringAxis name (e.g., “C”).
Returns
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
axisNamestringAxis name (e.g., “C”).
Returns
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
axisNamestringAxis name (e.g., “C”).
Returns
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
axisNamestringAxis name (e.g., “C”).