INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Messwertüberprüfung - mit Abbruchbedingung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.11.2015, 16:21
Beitrag #1

Marbec Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2015

14.1
2015
DE_EN



Messwertüberprüfung - mit Abbruchbedingung
Hallo,

ich hoffe ich bin hier im richtigen Unterforum. Wenn nicht, bitte entschuldigt.
Bin ein ziemlicher Neuling mit Labview, also falls ich ein paar sehr doofe Fehler gemacht habe, entschuldigt auch bitte dies.

Ich habe folgende Frage:
Ich messe mit dem DAQ-Assi die Ausgangsspannung einer Stromzange. Jede sekunde möchte ich den Mittelwert des Spannungssignals in einem 30 zeiligen Array speichern. Der neuste Wert soll immer an das Ende des Array angehängt werden und der erste Wert soll gelöscht werden. Dadurch soll das Array immer nur 30 Zeilen lang sein.
Nun möchte ich, dass die Messung abbricht, wenn kein alle Werte des Arrays kleiner als 1 sind. Dazu lasse ich immer das Maximum des Arrays auslesen.
Leider funktioniert das nicht, wie gewünscht, in der Array werden immer ganz viele Nullen geschrieben.
Das VI soll übrigens später einmal in eine Sequenz eingepflegt werden.

Kann mir einer sagen, was ich falsch mache oder wie ich es besser machen kann?

Anbei das VI.

Vielen Dank.

VG


Angehängte Datei(en)
14.0 .vi  AbbruchTest.vi (Größe: 61,81 KB / Downloads: 138)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.11.2015, 16:38 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2015 16:39 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo Marbec,

willkommen im Forum!

Zitat:Jede sekunde möchte ich den Mittelwert des Spannungssignals in einem 30 zeiligen Array speichern.
Das machst du aber nicht. Du liest mit dem DAQAssi jede 0.1s neue Werte ein…

Zitat:Der neuste Wert soll immer an das Ende des Array angehängt werden und der erste Wert soll gelöscht werden. Dadurch soll das Array immer nur 30 Zeilen lang sein.
Du willst also einen Ringbuffer. Ich befülle den wie im Anhang eher am Anfang, ist einfacher…

Zitat:Nun möchte ich, dass die Messung abbricht, wenn kein alle Werte des Arrays kleiner als 1 sind.
KEIN Wert oder ALLE?
Auch der Kommentar in deinem VI ist irreführend: momentan stoppst du, wenn das Maximum im Buffer kleiner als 1 ist!

Zitat:Leider funktioniert das nicht, wie gewünscht, in der Array werden immer ganz viele Nullen geschrieben.
Dann solltest du prüfen, wo die Nullen herkommen!
Du hantierst z.B. mit vielen unglücklich gewählten Datentypen: erst DDT, dann Waveform - warum?
Du willst doch einen Mittelwert (skalar) von mehreren Messwerten (Array) bilden: mach das doch einfach!

Zitat:Das VI soll übrigens später einmal in eine Sequenz eingepflegt werden.
"Sequenzen" ist ein Reizwort!
Besser ist THINK DATAFLOW! oder eine Statemachine!

P.S.: DAQmx ist auch ohne DAQAssi ganz einfach, siehe Links in meiner Signatur…


Angehängte Datei(en)
14.0 .vi  AbbruchTest.vi (Größe: 69,07 KB / Downloads: 153)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.11.2015, 15:40
Beitrag #3

Marbec Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2015

14.1
2015
DE_EN



RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo GerdW,

danke für deine Hilfe.
Ja, das mit diesem "Rotary Array"-Block macht es natürlich deutlich einfacher. Den kannt ich vorher nicht.

Ja, sorry hatte mich im VI-Kommentar als auch im Post verschrieben... (war etwas in Eile).
Also Ziel des Ganzes ist es die Schleife zu stoppen, wenn die Messwerte der letzten 30Sekunden kleiner als 1 sind. Also falls die letzten 29 Messwerte kleiner sind und der 30. wieder über 1 müssen wieder 30 Messwerte überprüft werden.

Das mit den verschiedenen Datentypen DDT und Waveform war nicht unbedingt so gewollt, wusste einfach nicht wie ich es anders machen sollte. Außerdem versteh ich auch nicht so ganz den Unterscheid bzw. warum denn dann plötzlich am Ausgang der Mittelwertbildung eine Waveform ist. Vielleicht kann mir das ja mal jemand schnell erklären.


Das mit der State machine klingt recht interessant. Gibt es hier gute Beispiele für die bessere Verständis?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.11.2015, 19:20
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo Marbec,

Zitat:Das mit der State machine klingt recht interessant. Gibt es hier gute Beispiele für die bessere Verständis?
Einfach in LabVIEW ein neues Projekt erstellen und dazu die vorhandenen Beispielprojekte durchschauen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.11.2015, 20:46 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2015 07:25 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
Vorgestern hatte ich schon ein alternatives VI gemacht, dann aber hatte ich keine Zeit mehr zum posten.
Der Grundgedanke ist: Mit dem 30 zeiligen Array auf dem Frontpanel, bei dem die Messwerte ständig weiterrutschen, wird das Gehirn des Betrachtes überfordert sein. Man kann da nichts Vernünftiges mehr herauslesen. Besser wäre es doch, die Daten als Streifendiagramm darzustellen. Und wenn man die Historienlänge auf 30 eintstellt, dann wird alles ganz einfach, weil der Ringpuffer entfällt.

14.0 .vi  AbbruchTest.vi (Größe: 11,16 KB / Downloads: 182)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2015, 09:25 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2015 09:27 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo,

Zitat:Und wenn man die Historienlänge auf 30 eintstellt, dann wird alles ganz einfach, weil der Ringpuffer entfällt.
Wenn man von der RaceCondition und dem erzwungenen Wechsel in den UI-Thread absieht: Ja.

Ich hätte eher die PtByPt-DataQueue empfohlen. Oder gleich das PtByPt-MaxMin…
(Die bisherige Lösung mit Schieberegister und Array-Handling bietet aber den ungleich höheren Lerneffekt. Big Grin)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.11.2015, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2015 13:54 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
(23.11.2015 09:25 )GerdW schrieb:  Wenn man von der RaceCondition und dem erzwungenen Wechsel in den UI-Thread absieht: Ja.
Die RaceCondition ist kein Argument gegen Lösung an sich. Es handelt sich hier um einen Flüchtigkeitsfehler von mir, der mit einer winzig kleinen Codeänderung behebbar ist.
Und selbstverständlich verbietet es sich, Eigenschaftsknoten in einer zeitkritischen Hauptschleife dauernd aufzurufen. Diese Schleife ist das aber nicht: sie wird nur ein Mal pro Sekunde durchlaufen, wodurch das Argument gegenstandslos wird. Der Zeitverbrauch von weniger als 1 ms für den Aufruf des Eigenschaftsknotens spielt da keine Rolle.
Und den Lerneffekt, der darin besteht, dass eine Lösung auch überraschend einfach sein kann, möchte ich auch nicht unterschätzt haben wollenBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2015, 15:52
Beitrag #8

Marbec Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2015

14.1
2015
DE_EN



RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo,

danke für euer Feedback.

Verstehe ich das richtig, dass beim While-Schleifen Durchlauf Nummer 31 in der Case-Struktur überprüft wird ob das Maximum aller bisherigen Werte kleiner als 1 sind? Wenn ja erhält die While-Schleife das True zum stoppen ansonsten False.

Ein paar Fragen habe ich aber noch Big Grin

1. Ich verstehe nicht ganz, warum die Schleife 1 Sek. pro Durchlauf benötigt. In der Schleife ist doch eine Wait von 200ms?

2. Warum ist der Fehler-Ausgang der History-Property an die While-Schleife angeschlossen?

3. Ich würde in Zukunft gerne den Zeitbereich der Messwertüberprüfung variabel einstellen können. Also zum Beispiel anstatt 30 Sekunden möchte ich die letzten 30 Minuten überwachen. Ist dies mit dieser Methode im Moment so möglich?

VG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2015, 16:02
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
Hallo Marbec,

3. Nein.
Oben stehen ja schon andere Optionen, die dies aber erlauben…
(Es wäre schön, wenn nicht unwesentliche Randbedingungen gleich vorab genannt würden.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2015, 17:39 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2015 17:40 von Lucki.)
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Messwertüberprüfung - mit Abbruchbedingung
(23.11.2015 15:52 )Marbec schrieb:  Verstehe ich das richtig, dass beim While-Schleifen Durchlauf Nummer 31 in der Case-Struktur überprüft wird ob das Maximum aller bisherigen Werte kleiner als 1 sind? Wenn ja erhält die While-Schleife das True zum stoppen ansonsten False.
Richtig, aber da die Null mitgezählt wird, wären es sogar ab Arraylämge 32. Ab Arraylänge 30 sollte die Überprüfung beginnen, also sollte man in dem Case besser die beiden Bereichs "..28" und "29.." haben

Zitat:1. Ich verstehe nicht ganz, warum die Schleife 1 Sek. pro Durchlauf benötigt. In der Schleife ist doch eine Wait von 200ms?
Die 1 Sek bezieht sich auf Deine eigene Aussage in #1. Das Wait von 200ms habe ich nur genommen, damit das Beispiel nicht so langweilig ist
Zitat:2. Warum ist der Fehler-Ausgang der History-Property an die While-Schleife angeschlossen?
Die History muß gelöscht werden, bevor das Programm in die Schleife eintritt. Das wird damit erreicht. Allerdings wird das vielleicht nur ein fauler Programmierer so machen. Denn man würde glatt 30 sec länger zum Programmieren brauchen, wenn man "History löschen" und "Schleife" in die zwei Cases einer Sequenzstruktur setzen würde. Das empfinde ich aber irgendwie sauberer, und solche Fragen nach dem Warum des Ganzen könnten dann gar nicht erst aufkommen.
Zitat:3. Ich würde in Zukunft gerne den Zeitbereich der Messwertüberprüfung variabel einstellen können. Also zum Beispiel anstatt 30 Sekunden möchte ich die letzten 30 Minuten überwachen. Ist dies mit dieser Methode im Moment so möglich?
Wie Gerd schon sagte, ist das nicht möglich. Die History-Länge läßt sich im Programm nicht ändern. Das heißt aber nicht, dass Du auf das Diagramm verzichten müßtest oder dass das Programm dann merklich komplizierter würde. Wie Gerd auch schon sagte, wäre es wünschesnwert, wenn Du Deine Anforderungen möglichst zeitig und vollständig klar benennen würdest.
Jetzt weiß man von Dir z.B nicht einmal, ob du das Diagramm nun haben willst oder ob Du lieber bei der usprünglichen Array-Darstellung bleiben willst.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Abbruchbedingung while-Schleife führt zu Fehler toxicomanie 159 49.822 13.03.2015 11:20
Letzter Beitrag: toxicomanie
  Abbruchbedingung While Schleife KingLui 6 5.317 07.11.2014 13:25
Letzter Beitrag: jg
  Abbruchbedingung meiner While Schleife LabVI 9 6.453 19.09.2014 15:20
Letzter Beitrag: LabVI
  Abbruchbedingung wird nicht immer eingehalten myth 8 4.627 21.03.2013 19:37
Letzter Beitrag: Lucki
  Timerfunktion für Abbruchbedingung Jansen83 1 3.070 20.10.2009 13:54
Letzter Beitrag: SeBa
  Fehler als Abbruchbedingung für eine While-Schleife TSC 3 4.141 30.09.2008 10:06
Letzter Beitrag: TSC

Gehe zu: