LabVIEWForum.de - Nullabgleich/Speicherung von Daten

LabVIEWForum.de

Normale Version: Nullabgleich/Speicherung von Daten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bin im Moment dabei einen Prüfstand an meinem Institut zu entwickeln. Die Ansteuerung soll über LabVIEW erfolgen. Nun hab ich zwei Probleme an meiner Programmierung:

  1. Ich würde gerne vor Messungen einen Nullabgleich durchführen. Im Moment liefert mir mein Kraftaufnehmer (im VI einfachhalber durch ein Bedienelement mit Namen "generierte Kraft" ersetzt) aufgrund Temperaturschwankungen einen Wert ungleich Null, den ich aber gerne vor der Messung auf Null zurücksetzen würde. Meine Versuche mit einer Rückkopplung waren nur teilweise erfolgreich, da der Nullabgleich nur das erste Mal funktionierte, danach jedoch kein weiterer Nullabgleich möglich war (der Wert sprang dann immer auf den Wert vor dem ersten Nullabgleich...). Bin ich mit der Rückkopplung auf einem Holzweg oder passt meine Herangehensweise?
  2. Ein weiteres Problem ergibt die kurzfristige Speicherung von Werten. Ich würde gerne den Wert meines Kraftaufnehmers in einem numerischen Anzeigeelement (im VI als "gemessene Kraft" bezeichnet) anzeigen/speichern, und zwar 10 Sekunden nachdem eine definierte Ansprechschwelle überschritten worden ist. Der Wert im Anzeigeelement soll solange darin gespeichert bleiben, bis die Anspechschwelle wieder unterschritten wurde. Im Moment fehlt mir dazu noch der richtige Ansatz, der im VI gefällt mir noch nicht wirklich...


Ich hoffe ihr könnt mir weiterhelfen. Ist wahrscheinlich gar nicht schwer, aber irgendwie steh ich da auf dem Schlauch Confused

Gruß Twobobbels
Hallo Twobobbels,

herzlich willkommen!

Manchmal ist es ja hilfreich, Beiträge anderer User zu lesen: Bambi hat quasi die gleiche Frage gestellt und sich den September über daran abgearbeitet!

Zitat:Meine Versuche mit einer Rückkopplung waren nur teilweise erfolgreich
Weil du einige Dinge noch nicht verinnerlicht hast…

- THINK DATAFLOW: Lokale Variablen sind in LabVIEW meist unnötig - so auch bei dir.
- Ungebremst laufende Schleifen, die auf Usereingaben reagieren, sind auch eher verpönt.
- Das Verstecken von Terminal-Labels im Blockdiagramm hilft nur selten, die Übersichtlichkeit im VI zu erhöhen…

Zitat:Ich würde gerne den Wert meines Kraftaufnehmers in einem numerischen Anzeigeelement (im VI als "gemessene Kraft" bezeichnet) anzeigen/speichern, und zwar 10 Sekunden nachdem eine definierte Ansprechschwelle überschritten worden ist.
Genau das macht doch dein VI: Es wird geprüft, ob ein Limit überschritten wurde. Wenn dem so ist, wird 10s gewartet und dann der (dann gerade aktuelle) Wert angezeigt… Big Grin

Beim Programmieren ist es auch immer hilfreich, das Problem zu analysieren und dann möglichst genau in Worte zu fassen. Vielleicht solltest du deine Aufgabenstellung besser formulieren?
Hallo Gerd,

erstmal danke für deine schnelle Antwort. Zum Punkt Nullabgleich/Kalibrierung werde ich auf jeden Fall noch den Beitrag von Bambi lesen. Ich hoffe der hilft mir dann weiter.

Beim Punkt "kurzfristige Speicherung" ist im Moment bei mir noch folgendes Problem: Der Wert wird alle zehn Sekunden nach überschreiten der Ansprechschwelle angezeigt und danach immer wieder aktualisiert. Das heißt nach 20, 30, etc. Sekunden wird der jeweils aktuelle Wert angezeigt und der Vorherige überschrieben. Da es sich bei meinem Prüfstand um Messungen von Dichtungen mit Relaxation (die gemessene Kraft wird also immer kleiner) handelt, brauche ich zu Vergleichszwecken nur den Wert nach den 10 Sekunden, keine Weiteren! Erst nachdem die Ansprechschwelle wieder unterschritten wird, soll wieder "0" angezeigt werden.

Hoffe mein Problem ist jetzt besser beschrieben Big Grin Und Danke schon mal für die Antworten!

PS: Noch eine weiter Frage wegen deiner Antwort: Wie würest du die Schleifen stoppen in diesem einfachen VI außer mit einem Button? In meinen richtigen VI hab ich noch eine Error-Verbindung zum stoppen der Schleifen, meinst du so was?

Gruß Twobobbels
Hallo zusammen,

das mit dem Nullabgleich funktioniert jetzt wunnderbar! Der Tipp mit dem Beitrag von Bambi war gold wert!

Leider bin ich ich mit meiner Speicherung nach einer bestimmten Messzeit immer noch nicht wirklich weitergekommen... Habt ihr dazu evtl. Tipps?

Gruß Twobobbels
Hallo Twobobbels,

Zitat:Speicherung nach einer bestimmten Messzeit
- Startzeit merken, in der Messschleife die "Messzeit" ausrechnen, wenn Limit überschritten: Daten speichern…
- mit DAQmx-Timing arbeiten und einfach die Anzahl der Samples abzählen…

Kanst du deine Frage konkretisieren? Wo hapert es? Was hast du schon ausprobiert?
Hallo Gerd,

Zitat:Kanst du deine Frage konkretisieren? Wo hapert es? Was hast du schon ausprobiert?

Hab im Post davor das Problem beschrieben. Hab es hier nochmals eingefügt:
Zitat:Beim Punkt "kurzfristige Speicherung" ist im Moment bei mir noch folgendes Problem: Der Wert wird alle zehn Sekunden nach überschreiten der Ansprechschwelle angezeigt und danach immer wieder aktualisiert. Das heißt nach 20, 30, etc. Sekunden wird der jeweils aktuelle Wert angezeigt und der Vorherige überschrieben. Da es sich bei meinem Prüfstand um Messungen von Dichtungen mit Relaxation (die gemessene Kraft wird also immer kleiner) handelt, brauche ich zu Vergleichszwecken nur den Wert nach den 10 Sekunden, keine Weiteren! Erst nachdem die Ansprechschwelle wieder unterschritten wird, soll wieder "0" angezeigt werden.

Hoffe mein Problem ist jetzt besser beschrieben Big Grin Und Danke schon mal für die Antworten!

Hab inzwischen in meinem VI noch bisschen herumprobiert, auch eine For-Schleife eingebaut, damit "die Speicherung" nur einmal erfolgt. Leider besteht das Problem weiterhin... ich vermute weil die Case-Schleife wiederholt ausgeführt wird.

Weiter bin ich leider noch nicht Noe
Hallo Twobobbels,

Zitat:auch eine For-Schleife eingebaut, damit "die Speicherung" nur einmal erfolgt.
Hmm
Du hast jetzt eine Sequenz mit einer FOR-Loop drum herum, die genau einmal iteriert. Was soll die FOR-Loop hier bringen, wenn die Sequenz so oder so genau einmal ausgeführt wird?
Hmm

Zitat:ich vermute weil die Case-Schleife wiederholt ausgeführt wird.
Wenn du etwas "vermutest", dann hast du zwei Probleme:
Erstens solltest du "wissen", was dein von dir erstelltes VI so macht und zweitens könntest du dir das auch mittels Highlight-Debugging anschauen!

Zitat:Da es sich bei meinem Prüfstand um Messungen von Dichtungen mit Relaxation (die gemessene Kraft wird also immer kleiner) handelt, brauche ich zu Vergleichszwecken nur den Wert nach den 10 Sekunden, keine Weiteren! Erst nachdem die Ansprechschwelle wieder unterschritten wird, soll wieder "0" angezeigt werden.

Pseudocode:
Code:
bool := value > limit
IF RisingEdge(bool) THEN
  time := CurrentTime()
ENDIF
IF CurrentTime() - time ~= 10s THEN
  Anzeige := value
ENDIF
IF FallingEdge(bool) THEN
  Anzeige := 0
ENDIF
Für RisingEdge und FallingEdge kann ich dir die "PtByPt-BooleanCrossing"-Funktion empfehlen!
Referenz-URLs