(02.04.2014 08:13 )GerdW schrieb: Hallo Joe,
ich will nicht mit dir über die Vorzüge von FGVs diskutieren, die dürften uns beiden bekannt sein…
Mein Kritikpunkt war, dass im VI des OP lokale Variablen missbraucht wurden, weil man anscheinend von einer textbasierten Programmierung die Verwendung von Variablen gewohnt ist. Hier geht es schlicht um DATAFLOW-Programmierung mit Drähten, die im gezeigten VI ganz klar missachtet wurde…
Hallo Gerd,
das ging auch nicht an dich sondern an den Vorposter
Aber zum eigentlichen Problem:
Zitat:Ich habe einen Modellaufbau
und selbst bei unterbrochener Leitung erfasst meine Messkarte über die benutzten Messwandler noch minimal kleine Werte.
So habe ich keine NaN was ich auswerten könne.
Wenn ich das so richtig verstehe ist das doch dann kein Problem der Auswertung, sondern ein Problem das du noch Daten erfasst nach der Abschaltung und diese noch auswerten lässt. In diesem Fall musst du verhindern das deine erfassten Daten in die Auswertung übergeben werden bzw. die Aufwertung darf nach der Abschaltung nicht mehr ausgeführt werden und muss dir eigentlich das letzte gültige Ergebnis von vor der Abschaltung liefern.
Einfachster Weg zum testen ob dann das gewünschte Ergebnis herauskommt:
Den gesamten Inhalt der While Schleife im Distanzschutz.vi in eine Case Structur.
- Im True Fall ist die Messung aktiv, dort werden die Berechnungen durchgeführt und alle Ergebnisse werden in "nicht Initialisierte" Shift-Register geschrieben.
- Im False Fall (Abschaltung durchgeführt) werden die Shift-Register einfach durchverdrahtet. Somit werden die ungültigen Messwerte nicht ausgewertet und die Ergebnisse der letzten gültigen Messwerte werden beibehalten.
Man musst jetzt von außen vorgeben wann deine Abschaltung aktiv ist bzw. wann die Messung noch gültig ist.
Da die Shift Register nicht initialisiert sind, stehen da beim ersten Durchlauf noch die alten Ergebnisse drin, was aber nur ein Problem wär wenn bei einem Neustart der Messung die Abschaltung direkt aktiv wäre, sollte aber eigentlich nicht auftreten. Das könnte man dann noch verhindern indem man den Case über ein Enum steuert welches 3 States beinhaltet (init = Initialisierung der Shiftregister, Messung = Berechnung der Daten, Abschaltung = Mach nichts und gebe alte Daten aus)