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
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
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
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
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
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
Curve
Grid samples of the objective: angle (deg) and objective value.
public List<(double Angle_deg, double Objective)> Curve { get; }
Property Value
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
FluteNum
Flute count of the cutter the samples came from; 0 when unknown.
public int FluteNum { get; set; }
Property Value
LowSignalChannel
The channel the low-signal warning named; Virtual when none.
public SampleFlag LowSignalChannel { get; set; }
Property Value
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
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
MirrorAngle_deg
Best angle (deg) under the mirrored-frame hypothesis; NaN with one transverse channel.
public double MirrorAngle_deg { get; set; }
Property Value
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
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
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
Note
Human-readable summary.
public string Note { get; set; }
Property Value
Objective
Objective value at the estimate (residual energy of the used steps).
public double Objective { get; set; }
Property Value
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
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
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
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
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
StepNum
Steps that entered the fit (a selected channel's readings present throughout, model signal present).
public int StepNum { get; set; }
Property Value
Steps
Per-step diagnostics.
public List<SetupAngleStepEstimate> Steps { get; }
Property Value
Succeeded
False when no estimate could be formed; Note says why.
public bool Succeeded { get; set; }
Property Value
ToolId
Tool id of the cutter the samples came from; -1 when unknown.
public int ToolId { get; set; }
Property Value
TransverseChannels
The transverse channels the angle was fit on: Mx|My, Mx or My.
public SampleFlag TransverseChannels { get; set; }
Property Value
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
UsedStepNum
Steps that survived the signal and outlier gates.
public int UsedStepNum { get; set; }