Table of Contents

Class SetupAngleEstimate

Namespace
Hi.MillingForces.Training
Assembly
HiNc.dll

Result of Estimate(IEnumerable<KeyValuePair<int, List<List<TrainingSample>>>>, double[], SampleFlag, int, double, double, IProgress<IMessage>, CancellationToken): the rotation of the measured spindle-rotation-frame transverse moment (Mx, My, or one of them) relative to the model built from a known cutting parameter, i.e. the cutter setup angle the model is missing, plus the diagnostics that say how much to trust it.

public sealed class SetupAngleEstimate
Inheritance
SetupAngleEstimate
Inherited Members
Extension Methods

Properties

AlternativeAngle_deg

With ScaleFixed: the other angle (deg, folded like Angle_deg) the fit allows. The channel reads the projection |M|·cos(φ+α') of the model moment's line, so two angles give the same reading, symmetric about −α' (the rotation that lays that line on the channel), which put the line at mirror positions about the channel axis. NaN when the objective holds one minimum only: the channel reads as much as the model can give along its line or more (ChannelToModelRatio at 1 or above, no angle makes the magnitudes agree), the model moment's share off its line rules the mirrored angle out (a deep helical cut), or the two coincide (the channel reads nearly nothing: the moment runs across it); and NaN without ScaleFixed.

public double AlternativeAngle_deg { get; set; }

Property Value

double

AlternativeObjectiveRatio

With ScaleFixed and an AlternativeAngle_deg: the objective there over that at Angle_deg (1 or more: the angle reported is the lower one). The preference rests on the model moment's share off its line (ModelIsotropy) — the helix sweeping the direction within a pulse, the edge force turning against the shear — which the pulses as sampled distort by more: on the engine's own 1 ms recording of two shop-floor two-flute cutters it went either way (the 45° helix on Mx put the mirror 1.45× below the truth), so it is no basis to choose. NaN otherwise.

public double AlternativeObjectiveRatio { get; set; }

Property Value

double

Angle_deg

Estimated rotation (deg) that carries the model's (Mx, My) onto the measured (Mx, My), folded into [0, Period_deg). Positive = the Mx→My sense of the spindle-rotation frame.

public double Angle_deg { get; set; }

Property Value

double

ChannelToModelRatio

With ScaleFixed: the selected channel's amplitude over the model moment's along the line it swings on at the pinned scale s, |Re(ΣwZc·e^{−iα'})| / (½·s·(|ΣwQ| + ΣwB)) at the estimate's begin angles (α' = arg(ΣwQ)/2) — the |cos(φ+α')| the fit reads; with the scale assumed 1 it is s'·|cos(φ+α')| for a recording s' times the model, with the scale measured from Mz the magnitude cancels. At 1 or more no angle makes the magnitudes agree and the fit is pulled onto the line; below √LowSignalEnergyRatio the channel reads nearly nothing, which a live channel across the moment and a dead bridge do alike. NaN otherwise.

public double ChannelToModelRatio { get; set; }

Property Value

double

Contrast

Contrast of the objective over the angle grid, (Jmax − Jmin) divided by the measured energy of the used steps: how much the fit worsens at the worst angle of the period. A property of the cut geometry rather than of the noise; near 0 means the data does not constrain the angle (a cut whose running-frame moment is constant over the turn, e.g. a full slot with all flutes engaged).

public double Contrast { get; set; }

Property Value

double

CorrelationR

Pearson correlation R between the measured samples of the selected transverse channels and the rotated, scaled model.

public double CorrelationR { get; set; }

Property Value

double

Curve

Grid samples of the objective: angle (deg) and objective value.

public List<(double Angle_deg, double Objective)> Curve { get; }

Property Value

List<(double Angle_deg, double Objective)>

FixedScaleAngle_deg

The angle (deg) re-estimated with the scale pinned to 1 (free-scale fits) — agrees with Angle_deg when the parameter magnitude is right; the angle itself when ScaleFixed.

public double FixedScaleAngle_deg { get; set; }

Property Value

double

FluteNum

Flute count of the cutter the samples came from; 0 when unknown.

public int FluteNum { get; set; }

Property Value

int

LowSignalChannel

The channel the low-signal warning named; Virtual when none.

public SampleFlag LowSignalChannel { get; set; }

Property Value

SampleFlag

MagnitudeSensitivity_deg

With ScaleFixed: how far (deg) the angle moves for each 1 % of error in the pinned scale — with the scale assumed 1 the coefficients' magnitude, the observation height, the holder calibration and the sampled pulses together; with the scale measured from Mz the observation height against the effective radius, the torque-to-bending ratio of the coefficients and of the holder's two calibrations, and the sampled pulses once more, by less: the torque's zero is read from the samples between the flutes' pulses and the ratio keeps the torque's undistorted mean, so its loss nearly matches the bending's and mostly cancels (a cut that leaves no gap wide enough in the turn — a full slot leaves none — takes the slope with an intercept, which keeps the harmonics alone, and they lose more to the sampling than the bending's fundamental: about 2 % more at 50 samples a turn on the side cuts measured) — at the estimate: |∂φ*/∂ln s| of the pooled objective, |cot(φ+α')| × 0.573° in the line picture (about 0.8° for a 45° helix and 1.1° for a 25° one near 0°; 0 when the moment runs across the channel). NaN when the channel reads more than the model (ChannelToModelRatio at 1 or above) and without ScaleFixed.

public double MagnitudeSensitivity_deg { get; set; }

Property Value

double

MeanModelRipple

Energy-weighted mean of the used steps' ModelRipple: how strongly the cut modulates the transverse moment within a turn, the model-side identifiability measure.

public double MeanModelRipple { get; set; }

Property Value

double

MirrorAngle_deg

Best angle (deg) under the mirrored-frame hypothesis; NaN with one transverse channel.

public double MirrorAngle_deg { get; set; }

Property Value

double

MirrorObjectiveRatio

Objective of the mirrored hypothesis over the plain one (< 1 favours the mirror); NaN with one transverse channel.

public double MirrorObjectiveRatio { get; set; }

Property Value

double

MirrorPreferred

True when a mirrored measurement frame (My negated) fits markedly better than the plain rotation — the sensor axes are likely swapped/negated rather than rotated; MirrorAngle_deg is the angle under that hypothesis. Never set with one transverse channel (no mirror check is possible there).

public bool MirrorPreferred { get; set; }

Property Value

bool

ModelIsotropy

1 − |Σw·Q|/Σw·B over the used steps (Q = ΣP², B = Σ|P|², model side): 1 = the model moment covers every direction over a turn (N ≥ 3 whole turns), 0 = it runs along one line (a two-flute cutter), where one channel cannot separate the rotation from the gain, so the scale is pinned there (ScaleFixed: to 1, or to the ratio Mz measures).

public double ModelIsotropy { get; set; }

Property Value

double

Note

Human-readable summary.

public string Note { get; set; }

Property Value

string

Objective

Objective value at the estimate (residual energy of the used steps).

public double Objective { get; set; }

Property Value

double

Period_deg

Ambiguity period of the estimate (deg): 360/N for an N-flute uniform fluting (the flute pitch), 360 otherwise.

public double Period_deg { get; set; }

Property Value

double

ScaleFixed

True when the angle was fit with the scale pinned: one transverse channel on a one- or two-flute cutter. Its holder-frame moment swings along one line, so the channel reads scale·|M|·cos(φ+α) and a free scale would fold into the angle; the scale is pinned instead — to 1, the magnitude being known (the holder delivers calibrated N·m, the coefficients have fixed units), or to the ratio the torque measures when a selected Mz gives a usable one, its correlation with the model torque at or above MzCorrelationFloor (Mz = R·Ft reads the tangential force's size whatever the setup angle, so the measured Mz over the model's is the recording's magnitude against the model's, ScaleRatio) — which pins cos(φ+α) and leaves two angles mirrored about the line, Angle_deg and AlternativeAngle_deg. While two angles fit, or the channel reads as much as the model can give or nearly nothing, such an estimate is never applied automatically (GetApplyRefusal(SetupAngleEstimate, double)); a unique angle passes to the other gates.

public bool ScaleFixed { get; set; }

Property Value

bool

ScaleRatio

Measured-over-model magnitude ratio of the fit (a free scale absorbs coefficient magnitude and moment-arm errors so they cannot bias the angle). With ScaleFixed: the ratio the torque measured when Mz was selected and usable (the pinned scale the angle was read at), NaN when the scale was assumed 1.

public double ScaleRatio { get; set; }

Property Value

double

Scatter_deg

Energy-weighted circular standard deviation (deg) of the per-step angles around the estimate; with one transverse channel on partial-turn data it runs about 1.6× the two-channel value. With the scale pinned by Mz each step's angle is read at its own torque scale, so a magnitude error the torque and the bending share cancels step by step and the scatter carries the torque's noise and the steps' torque-to-bending ratios.

public double Scatter_deg { get; set; }

Property Value

double

SelectedChannels

The moment channels the estimate was read on: TransverseChannels plus Mz when it entered the per-step phase and the scale – the call's selection, or, when the call named none, the tool's declared channels.

public SampleFlag SelectedChannels { get; set; }

Property Value

SampleFlag

StepNum

Steps that entered the fit (a selected channel's readings present throughout, model signal present).

public int StepNum { get; set; }

Property Value

int

Steps

Per-step diagnostics.

public List<SetupAngleStepEstimate> Steps { get; }

Property Value

List<SetupAngleStepEstimate>

Succeeded

False when no estimate could be formed; Note says why.

public bool Succeeded { get; set; }

Property Value

bool

ToolId

Tool id of the cutter the samples came from; -1 when unknown.

public int ToolId { get; set; }

Property Value

int

TransverseChannels

The transverse channels the angle was fit on: Mx|My, Mx or My.

public SampleFlag TransverseChannels { get; set; }

Property Value

SampleFlag

TransverseEnergyRatio

Synchronous energy of the folded My over that of Mx (used steps, folded onto one turn, turn-mean removed); NaN when only one channel was selected or a channel has no folded sample.

public double TransverseEnergyRatio { get; set; }

Property Value

double

UsedStepNum

Steps that survived the signal and outlier gates.

public int UsedStepNum { get; set; }

Property Value

int