Fix live MMXU power measurements - #165
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 05f3efa2d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if ((lnClass is "MMXU" or "MMXN") && IsFundamentalScalarMeasurementObject(name)) | ||
| { | ||
| yield return new FallbackPoint(name, "MX", "mag.f", "Float32", "Measurement", InferUnitFromDataObject(name)); |
There was a problem hiding this comment.
Probe shallow power fallbacks before filtering them
For a non-OperationalValues IED that exposes only a shallow item such as MMXU1$MX$TotW, this creates TotW.mag.f with source Native MMS shallow object fallback and a non-readable probe status. SasOperationalSignalPolicy.IsUnprovenSyntheticCandidate consequently rejects it, while the discovery pipeline only proof-reads the special OperationalValues/PPRE candidates, so the UI pruning path removes the newly recovered measurement. Either proof-read these shallow scalar candidates or avoid marking them as unproven fallbacks once their MMS object was actually discovered.
Useful? React with 👍 / 👎.
| if (IsFundamentalScalarMeasurementObject(first)) | ||
| { | ||
| if (current.Any(p => string.Equals(p, "mag", StringComparison.OrdinalIgnoreCase) || | ||
| string.Equals(p, "instMag", StringComparison.OrdinalIgnoreCase))) | ||
| yield return Append(current, "f"); |
There was a problem hiding this comment.
Expand scalar paths that stop at mag
When discovery supplies the structural path MMXU1$MX$TotW$mag without the final f, the earlier LooksLikeReadableLeaf check treats mag as a complete leaf and returns before this new expansion runs. The mapper then creates TotW.mag, which ShouldKeepCandidate discards, so this common partially expanded form still loses the power measurement; the readable-leaf decision needs to allow fundamental scalar mag paths to reach this branch.
Useful? React with 👍 / 👎.
Use honest customer-facing terminology for the full decoded IEC 61850 timestamp while preserving #165 live MMXU work and the validated ARIEC61850 precision integration.
Summary
Restore fundamental MMXU/MMXN power and frequency measurements in the Live Value Viewer without changing FAT, control, report, or UX architecture.
Root cause
Fundamental measurements such as
TotW,TotVAr,TotVA,TotPF,Hz, and phaseW/VAr/VA/PFwere being filtered or resolved inconsistently before they reached the live monitor. Scalar MV objects also lacked themag.f ↔ instMag.fsibling recovery already available for CMVcVal ↔ instCValmeasurements.Changes
TotW/TotVAr/TotVA/TotPF/Hzmag/instMagleaves as operational measurements;mag.f ↔ instMag.fread fallback and correct q/t companion-parent resolution;Safety / regression containment
main(75041e9832742fd5c9cae448af87b340c7094ff7), including the latest ARIEC61850 UTC-time precision integration;