Hi Leute
Ich habe eine Problem mit dem zwischen Speichern von Werten.
Ich berechne kontinuierlich aus einem Spannungs- und Stromverlauf den Widerstandswert. Unterschreitet dieser Wert einen Vorgabe Wert,
wird eine Timer gestartet der nach 5 sek sowohl Strom wie auch Spannung abschaltet.
Ab diesem Augenblick ergibt meine Widerstandsberechnung nur noch NaN.
Ich brauche aber gerade diesen letzten Wert bevor Strom und Spannung abgeschaltet werden um eine Längenangabe zu machen.
Dazu möchte ich das im Fenster Entfernung L1 erst etwas angezeit wird wenn die Abschaltung erfolgt.
Über einen Button soll das Fenster dann zuruck gesetzt werden.
Ich hoffe das ist nicht zu verwirrend beschrieben.
Das Programm habe ich mit angehängt.
Schon mal vielen Dank für eure Hilfe.
Hallo Spearmint,
lade das VI mal bitte Abwärtskompatibel hoch, dann erhälst du sicherlich von mehr Nutzern Hilfe.
Hi
Danke für den Hinweis.
Hier die kompatible Version
Hallo Spearmint ,
wie du schon erkannt hast ergibt deine Berechnung ab dem Abschalten des Strom- & Spannung- Signals nur noch NaN! Also hast du doch die Lösung eig. schon!
Frage woran kann das liegen?
Das NaN tritt auf sobald du deine leere Waveform(wegen Abschalten der Signale) dem ‚Averaged DC-RMS‘ übergibst.
Lösung:
Frage nach beiden ‚Averaged DC- RMS‘ ob ein NaN auftritt (unter Programming>Comparison zu finden)! Wenn nicht berechne mir R, wenn True behalte den vorherigen Wert bei (also ein Case-Structure).
Zur zweiten Frage:
Was verstehst du unter Fenster? Meinst du damit deine Numberic Indicator? Falls es so ist hast du die Frage eig. auch schon beantwortet!
Zitat: wenn die Abschaltung erfolgt
Diese Wort WENN hört sich fast schon wieder nach einer Case-Structure an. ^^
Grüße Oscar
Hi
Also das mit der Case-Struktur beim berechnen verstehe ich nicht so ganz ... wie behält der denn den letzten brechneten Wert?
hil
Für das zweite Problem war der Case-gedanke sehr hilfreich. Damit bekomme ich es hin.
Ich habe jetzt noch mal das VI mit angehängt wo ich das ganz für brauche. Dort habe ich jetzt schon mal eine
Case für die Berechnung gemacht. Die Caseauswahl mache ich über einen Medle Signal aus meinem Aufbau, denn
die beschriebene Lösung funktioniert leider mit meinen Signalen nicht. 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.
Gruß
Spearmint
Hallo Spearmint,
RACE CONDITIONS AHEAD!
Bitte sofort alle lokalen Variablen durch Drähte ersetzen!
Zitat:wie behält der denn den letzten brechneten Wert?
In einer Schleife merkt man sich Werte aus vorherigen Iterationen in Schieberegistern/FeedbackNodes!
Bitte
unbedingt die Links in meiner Signatur beachten…
Wozu verwendest du eine While-Loop, wenn diese sofort wieder abgebrochen wird?
Ich dachte du bekommst ein NaN.
Zitat:Ab diesem Augenblick ergibt meine Widerstandsberechnung nur noch NaN.
Wenn es so ist schau wo er auftritt! Entweder du teils mal durch 0 oder nimmst denn Mittelwert von einem leerem Array,…
Hab dein jetziges VI noch nicht wirklich durchgeschaut, aber schnell mal dein erstes so erweitert wie ich es gemeint hatte. War aber wirklich nur auf die schnelle, also nur als Gedanken Anstoß!
Gruß Oscar
(27.03.2014 19:47 )GerdW schrieb: [ -> ]Hallo Spearmint,
RACE CONDITIONS AHEAD!
Bitte sofort alle lokalen Variablen durch Drähte ersetzen!
Zitat:wie behält der denn den letzten brechneten Wert?
In einer Schleife merkt man sich Werte aus vorherigen Iterationen in Schieberegistern/FeedbackNodes!
Bitte unbedingt die Links in meiner Signatur beachten…
Wozu verwendest du eine While-Loop, wenn diese sofort wieder abgebrochen wird?
Die Variablen habe ich durch Drähte ersetzt.
Aber warum ist das so wichtig? Ich dachte die gibt es gerade dafür sie lokal zu nutzen um etwas übersicht zubewahren.
Die While-Loop hatte ich drin um das Programm alleine testen zu können. wenn ich es über eine andere VI aufrufe entferne ich sie.
Das mit dem Schieberegister werde ich mal ausprobieren.
Hallo Spearmint,
Zitat:Ich dachte die gibt es gerade dafür sie lokal zu nutzen um etwas übersicht zubewahren.
Falsch gedacht.
Hast du meinen Hinweis zum Lesen der Links in meiner Signatur beachtet? Ich habe da extra einen Eintrag für
RACE CONDITION…
Zitat:Die While-Loop hatte ich drin um das Programm alleine testen zu können. wenn ich es über eine andere VI aufrufe entferne ich sie.
Da die Schleife sowieso nach der ersten Iteration abbricht, ist es egal, ob sie vorhanden ist oder nicht! Es macht auch keinen Unterschied, ob das VI als subVI aufgerufen wird oder du es einzeln testen willst…
(28.03.2014 08:50 )Spearmint schrieb: [ -> ] (27.03.2014 19:47 )GerdW schrieb: [ -> ]Hallo Spearmint,
RACE CONDITIONS AHEAD!
Bitte sofort alle lokalen Variablen durch Drähte ersetzen!
Zitat:wie behält der denn den letzten brechneten Wert?
In einer Schleife merkt man sich Werte aus vorherigen Iterationen in Schieberegistern/FeedbackNodes!
Bitte unbedingt die Links in meiner Signatur beachten…
Wozu verwendest du eine While-Loop, wenn diese sofort wieder abgebrochen wird?
Die Variablen habe ich durch Drähte ersetzt.
Aber warum ist das so wichtig? Ich dachte die gibt es gerade dafür sie lokal zu nutzen um etwas übersicht zubewahren.
Die While-Loop hatte ich drin um das Programm alleine testen zu können. wenn ich es über eine andere VI aufrufe entferne ich sie.
Das mit dem Schieberegister werde ich mal ausprobieren.
Wenn du alles durch lokale Variablen übersichtlicher gestalten willst, solltest du dein Blockdiagramm in Sequenzen aufteilen. Und in jeder Sequenz lokale Variablen nur einmal als Eingang bzw. Ausgang benutzen. Sonst wirst du meines Erachtens Probleme mit Race Conditions bekommen.