FluxControl-tiny-mods
Geschrieben von Mathias Lindner 2015.
Änderungen von Henrik Haftmann, September 2016.
Änderungen
- Alle Fehlergeneratoren in allen Sub-VIs mit Aufrufpfad zur Lokalisierungsmöglichkeit
- VI-Terminierung per Fensterschließknopf (= Ereignisstruktur)
- Pfade sowie Schriftgröße für Pfade (kleiner, damit man sieht, dass sie lang sind)
- Bedingtes SPCM-Start.vi im Case "Measure", nicht bei fehlendem Trigger,
dadurch Fehlermeldung weg
- Diverse Tunnel mit Default (kosmetisch)
- aux_buildXYGraph.vi: Durchgehende Daten entfernt (kein Datenmodifizierer!)
- Abbruch bei fehlendem Trigger mit „Wiederholen“ (automatsich nach 5 Sekunden) und „Abbrechen“,
nicht „Wiederholen“ und „Beenden“
- Signaldarstellungen mit sofort wirksamen Ein/Aus-Schaltern (ähnlich LV2015+),
Buttons mit OFF-Text
- "Switch_Full_Traces" und "Help" in Ereignisstruktur gesetzt (wo's hingehört)
- Zustände "Switch_Full_Traces" und "Help" entfernt, Wait→Idle und auf Platz 0
(für später: Default-Case 0)
- Hilfe-Dialog darf mit Klick oben rechts beendet werden (= Ereignisstruktur),
Aufruf der CHM-Datei mit Extra-Knopf eingebunden
- Alle versteckten Steuerelemente außer XY-Diagramm „Single_Traces_full“
sichtbar gemacht (für Klarheit!) im Freibereich des Tabs „Parametrize“.
Diese dienen schlicht als lokale Variablen.
Wenn man sie dereinst nicht mehr benötigt, ist es besser,
sie außerhalb des Fensterbereiches zu platzieren statt sie zu verstecken,
um das Programmverständnis nicht allzu sehr in Mitleidenschaft zu ziehen.
- Enabled-Status über Referenz-Array statt Namen schalten (bei Idle) — reaktivere GUI
- Temperaturanzeigen im Statusbereich als
double
, nicht als int
- Einige interne Terminals bei Analog Output als Signalgraf statt als Double-Array (kosmetisch)
- 15-Minuten-Warmup-Timer zählt nun ab Windows-Start, nicht ab VI-Start. [1611xx]
- Temperaturleitungen mit Einheit (intern Kelvin) [161117]
- „Start“-Knöpfe wechseln zu „Fortsetzen“ wenn der (nun editierbare) Iterationszähler ungleich Null ist.
Die Konsequenz ist nichts weiter als dass gespeicherte Dateien mit diesem Zählerstand weitermachen
und nicht so viele unübersichtliche Backups generiert werden. [161118]
- Status-Änderungen per GUI-Referenz verbessert GUI-Reaktionsverhalten (immer noch nicht perfekt)
- Skalen mit weniger signifikanten Ziffern (kürzer) und Graph-Korrekturen
- Zeit- und Frequenzeinheiten (kosmetisch, für besseren Durchblick, weniger Hz-kHz-Umrechnungen)
- ni-errors.txt wieder gelöscht (ist eher etwas für LabVIEW-Bibliotheken) [170110]
- Wählbarer Shunt mitsamt Induktivität
- freq_correction.m angepasst
- Alle Rechenoperationen, insbesondere beim Magnetismus, mit Einheit (erhebliche interne Änderungen, 170118~170120)
- Setzen der AI-Skalierungs-Strings im Event: Nachvollziehbare Reaktion; nahezu leere Idle-Funktion
- Skalierung der Y-Diagrammachsen (für gleiche Nulllinie) als Event: Funktioniert so auch beim Rücksetzen der Skalierung
- Magnetisierungs-Schalterstellungen setzen deaktivierte Eingabefelder grau (zz. keine Nachberechnung)
- Kompaktere Speicherung der Einstellungen (Laden funktioniert auch) [170123]
- Automatisches Laden und Speichern in Registry
- Bugfix: Von mir vertauschte Array-Indizes beim Laden der Amp-Charakteristik
- Alle Dateioperationen werden mit
OutputDebugString()
ausgegeben. Mit DebugView (dbgview) zu betrachten
- Schalter Auto Scale aus wenn Skalierung (von Hand) eingestellt wird
- Schalter Static Bode aus wenn Amp-Datei eingegeben wurde
- Betrachtungsmöglichkeit für Amp-Datei
- Iterationsnummer in results.txt
- Automatische Drehschalterabfrage [170213]
- Triggerschwellenangabe direkt (wie bisher) oder umgerechnet
- Achsenskalierung (der Waveform-Grafen) auf Null in der Mitte und 1,2 signifikanten Stellen für Endwert [170222]
- [170719] Rückstellung (von 170118) auf LV-Standardmathebibliothek ohne Einheiten
(bspw. Integration von V über s nach Wb nun bei jedem Aufruf zu Fuß)
erlaubt Umzug zu frisch installiertem LabVIEW
- [170731] Keine Analogausgabe für Widerstandsmessung (Gleichstromquelle; calc_setpoint_res.vi raus),
Gleichstromquelle mit Hardware-Zeitlimit versehen,
Relaissteuerung ohne 50-ms-Wartezeit (Quatsch bei Relais; Programmstruktur vereinfacht),
einige SubVIs auf Dynamisches Signal umgestellt (Programmstruktur vereinfacht)
- [170803] Bugfix: OffsetPI konnte nicht beendet werden, Race-Condition bei Measure_Close beseitigt
- [170804] Tooltip für ausgegraute Startbuttons, „richtige“ Logik für Verstärker-Relais
- [170804] Vier-Auswahl-Dialog (ungetestet!)
- [170807] Warteschleifen mit Abbruchmöglichkeit im Zustand Measure_Init
- [180321] (trnka) Zusätzlichen Spannungsanteil bei Berechnung der Vorsteuerung in calc_feedforward.vi eingefügt, Anfangs- und Endbedingungen bei Integration korrigiert, Auswahl Correct Stray in Software und Handbewickelt für Berechnung berücksichtigt
- [180321] (trnka) case save in case Measure Check integriert
- [180321] (trnka) case Analyze in case Measure Check integriert, damit Verluste zu sehen sind wenn Popup aufgeht
- [180321] (trnka) Beschreiben der Graphen über Eigenschaftsknoten Wert (signalisierend), damit Autoskalierungsevent aufgerufen wird
- [180321] (trnka) HotFix: calc_sine_phase_matlab.vi angepasst: Ansatzfunktion für Fit um linearen Anteil erweitert. Dieser wird nach Integration von U2 in calc_dynamic_hysteresis.vi abgezogen, um Drift von J zu beseitigen (dürfte eig. gar nicht vorh. sein!)
- [180321] (trnka) Eingang Hysteresis Settings von aux_calc_results.vi in case Save_Gen_Data mit false,false belegt, damit Hysteresekennlinie wie im Graph zu sehen gespeichert wird
- [180321] (trnka) Häufiger Fehler in aux_review_fieldstrength_lf_offset.vi behoben: Als Frequenz nicht Frequency aus Frontpanel sondern f_Fit aus aux_data_trim.vi eingesetzt.
- [180321] (trnka) Automatisches Speichern von Signalverläufen und Hysteresekurve beim Drücken von cancel deaktiviert
Bearbeitungshinweis
Achtung! Niemals gleichnamige VI-Dateien aus verschiedenen Ordnern zugleich öffnen!!
(Also nicht aus FluxControl-tiny-mods und FluxControl-backup zugleich!)
Das danach entstehende Chaos ist kaum mehr zu entflechten.
Die Bezeichner („Label“) der Steuerelemente darf nicht geändert werden,
da die Bezeichner an einigen tiefen Stellen hartkodiert sind
(= schlechter Programmierstil).
Bei Änderung oder Übersetzung ist „Caption“ zu aktivieren.
Außerdem können die Typdefinitionen nicht auf „strikt“ gestellt werden,
sonst geht der tiefe Komponentenzugriff beim Laden/Speichern in die Hose
(ebenfalls schlecht).
Datendurchlauf
Die Messwerte (4 AI-Kanäle) und „Sec. Voltage Setpoint“
durchlaufen folgende VIs (Case „Measure_Check“ im Fall „Single Test“):
- aux_data_conditioning.vi
- aux_data_conversion.vi
- Skalierung (= Multiplikation mit Werten aus Rig.Conversion), außer Uset
- Aus „Sec. Voltage Setpoint“ wird irgendwie ein periodisches Signal neu gebaut (unklar!)
- aux_data_add_time.vi
- Fügt den 4+1 Signalen jeweils eine Zeitachse (als Spalte 0) hinzu.
In Millisekunden über die Dauer von "Rig.AO.Test Time".
Da die beiden Signalgruppen verschiedene Längen (= Anzahl Abtastwerte) haben,
ergibt sich so ein unterschiedliches Δt der beiden Gruppen.
Ansonsten ist alles äquidistant und man könnte mit dem LabVIEW-Datentyp „Signal“
viel komfortabler arbeiten.
- aux_data_trim.vi
- “trim switch on effects and cut end to get full periods” (für alle 4+1 Signale)
- calc_sine_phase_matlab.vi
- “Calc polarization from field strength based on static magnetization curve”
- aux_data_stray_correction.vi
- Nur für den Fall “stray correction in software”, nur die vier AI-Signale:
- aux_lowpass.vi
- IIR-Tiefpassfilter, hier mit 1. Ordnung, ohne Fensterung, True für “Zero Phase with IC”
- aux_data_filter.vi
- Filtern der 4 AI-Signale mit den "Filter"-Parametern (Struktur des Hauptfensters),
nur wenn Filter.FFT = false und entsprechender Filter-Schalter (pro Signal) ein:
- aux_lowpass.vi
- IIR-Tiefpassfilter, hier mit 1. Ordnung, ohne Fensterung
- aux_data_freq_correction.vi
- Filtern der 4 AI-Signale mit den "Filter"-Parametern (Struktur des Hauptfensters),
nur wenn Filter.FFT = true und entsprechender Filter-Schalter (pro Signal) ein,
mittels Matlab
freq_correction()
- aux_data_trim.vi
- “trim switch on effects and cut end to get full periods” (für alle 4+1 Signale),
noch einmal mit “one period trimmed automatically”
- calc_sine_phase_matlab.vi
- “Calc polarization from field strength based on static magnetization curve”
- aux_calc_results.vi (nur für die vier AI-Kanäle)
- calc_formfactor.vi
- calc_dynamic_hysteresis.vi,
generiert H-J-Array, Tests folgen:
- aux_review_fieldstrength_lf_offset.vi
- aux_review_ranges.vi
- aux_adjust_ranges.vi
- Verändert etwas in der Benutzeroberfläche
- aux_review_polarization_overlap.vi
- aux_sort2Darray.vi
- aux_sortUpDown.vi
- aux_detectUpDown.vi
- aux_detect_amplitudes.vi
- “detect indexes of local amplitudes of periodic signals with appox equal amplitude highs
including boundaries (local amplitude at start/end)”
- calc_amplifier_characteristics
- “create amp characteristics”
Nützlich zu wissen: calc_amplifier_correction.vi hat eine feste Pfadreferenz auf
C:\Users\limat\Desktop\IBN_Regler_Printed_FeCo_P1_1650mT_amp_1_U1soll.csv!