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 

Dieses Thema hat akzeptierte Lösungen:

Ausgelesener Wert als konstante in SubVi



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!

24.08.2020, 10:05 (Dieser Beitrag wurde zuletzt bearbeitet: 24.08.2020 10:11 von jg.)
Beitrag #1

mikadm Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: May 2020

LV 2015
2019
DE



Ausgelesener Wert als konstante in SubVi
Hallo Zusammen,

habe mal wieder eine Frage Cool:

Ich schreibe ein Programm um analoge Sauerstoffsensoren zu kalibrieren. Es handelt sich dabei um eine 2 PunktKalibrierung, bei der einmal bei 100% Sauerstoff und einmal bei 21% Sauerstoff gemessen wird. Aus den beiden Punkten wird dann die Steigung und der Achsenabschnitt berechnet. Diese beiden Werte sollten dann als Konstante in ein SubVI: analog-digital-Wandler eingebracht werden.
Bei diesem habe ich aber 2 Eingänge:Steigung und Achsenabschnitt.
Wenn ich das SubVi a/d-Wandler zu einem späteren Zeitpunkt benutzte sind die Eingänge ja unbesetzt.


Ich wollte lokale Variablen zum verbinden nutzten, habe aber in der Beschreibung von NI (http://zone.ni.com/reference/de-XX/help/...nd_global/ ) gelesen, dass diese umsichtig verwendet werden müssen.
Ich hätte pro Sensor 2 lokale Variable also 6 insgesamt... das ist doch ziemlich viel... gibt es eine andere Möglichkeit?

LG mikadm


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.08.2020, 11:49 (Dieser Beitrag wurde zuletzt bearbeitet: 24.08.2020 11:50 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ausgelesener Wert als konstante in SubVi
Hallo mikadm,

Zitat:Diese beiden Werte sollten dann als Konstante in ein SubVI: analog-digital-Wandler eingebracht werden.
Wird diese Kalibriermessung zum Start jeder Messung durchgeführt? Oder erfolgt diese "Kalibrierung" nur ein einziges mal und du willst diese Werte dann die nächsten Tage/Wochen/Monate benutzen?

Zitat:Ich wollte lokale Variablen zum verbinden nutzten,
Erst willst du "Konstanten" erstellen, dann zeigst du Controls in deinem Bild und jetzt willst du auch noch lokale Variablen dieser Controls verwenden?
Wie passt das alles zusammen?

Zitat:Ich hätte pro Sensor 2 lokale Variable also 6 insgesamt... das ist doch ziemlich viel... gibt es eine andere Möglichkeit?
Je nach Antwort oben:
- Schieberegister
- ein 1D-Array mit allen Parametern
- ein 1D-Array of Cluster of [a, b], d.h. ein Paar Skalierungsfaktoren pro Sensor/Kanal
- ein 2D-Array mit 2 Columns (zwei Parameter pro Kanal)
- ein 2D-Array mit mehr als 2 Columns, weil du vorausschauend eine Mehrpunkt-Kalibrierung mit höherer Polynom-Ordnung vorbereitest und deshalb gleich mehr Skalierungsparameter vorsiehst…
- …

Zum Bild: anstatt mehrere Frames aneinanderzureihen solltest du an eine Statemachine denken!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2020, 11:55
Beitrag #3

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 171
Registriert seit: Oct 2013

2020 SP1
2013
EN


Deutschland
RE: Ausgelesener Wert als konstante in SubVi
Wenn Kalibrierung und Messung zeitlich unabhängig sind, d.h., die Messung beliebig später erfolgen kann, bleibt nur eine persistente Speicherung z.B. in einer Datei, aus der dein analog-digital-Wandler die Werte liest.

Das hat auch den Vorteil, dass deine Kalibrierung dokumentiert ist, wenn du zusätzlich Dinge wie Datum, Prüfer oder SerienNr des Sensors mit in die Datei schreibst.

Und etwas weiter gedacht, kann dein Wandler dann auch feststellen, wenn die Kalibrierung zu lange her ist und eine neue empfehlen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2020, 12:26
Beitrag #4

mikadm Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: May 2020

LV 2015
2019
DE



RE: Ausgelesener Wert als konstante in SubVi
Die Kalibriermessung muss vor jeder Messung durchgeführt werden. Die Controls habe ich einfach vorläufig eingefügt um zu zeigen wo welche ein/Ausgänge sind.
Was spricht denn gegen die Flache Sequenzstruktur?
Bei der Statemachine habe ich das Problem, dass ich Tunnel habe, die nicht bei jedem Zustand verbunden werden können und dann kann man das Programm nicht starten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2020, 12:42
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ausgelesener Wert als konstante in SubVi
Hallo mikadm,

Zitat:Die Kalibriermessung muss vor jeder Messung durchgeführt werden. Die Controls habe ich einfach vorläufig eingefügt um zu zeigen wo welche ein/Ausgänge sind.
Dann hast du also ein VI, welches diese Kalibriermessung durchführt und die Faktoren ausspuckt und ein VI, welches diese Werte dann benutzt.
Dazwischen sollte man Drähte verwenden…

Zitat:Was spricht denn gegen die Flache Sequenzstruktur?
Unübersichtlich. Verhindert parallele Abarbeitung. Lässt sich durch THINK DATAFLOW! ersetzen…

Zitat:Bei der Statemachine habe ich das Problem, dass ich Tunnel habe, die nicht bei jedem Zustand verbunden werden können und dann kann man das Programm nicht starten.
Man kann Tunnel immer verdrahten. Muss man eben nur machen!
(Hast du an Schieberegister in deiner Statemachine gedacht?)

Tipp: seit etlichen LabVIEW-Versionen kann man Tunnel "connecten" und danach automatisch verdrahten lassen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2020, 13:31
Beitrag #6

mikadm Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: May 2020

LV 2015
2019
DE



RE: Ausgelesener Wert als konstante in SubVi
Ich hab mich falsch ausgedrückt...sorry!
Vor jeder Messung wird gefragt ( mit Eingabeaufforderung für Benutzer) ob die Kalibration durchgeführt werden soll. Wenn nicht, dann sollen die Werte von der vorherigen Kalibration genommen werden. Wie kann ich das realisieren?

Zur Statemachine: Wenn ich das oben gezeigte SubVI als Statemachine programmiere, dann habe ich ja in der zweiten und dritten Sequenz keine Tunnel.
Bei der Statemachine werden da aber die Tunnel aus der ersten Sequenz angezeigt und LabVIEW fordert, dass diese belegt werden. Wie soll ich die dann verbinden ?

LG mikadm
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.08.2020, 17:52
Beitrag #7

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 171
Registriert seit: Oct 2013

2020 SP1
2013
EN


Deutschland
RE: Ausgelesener Wert als konstante in SubVi
(26.08.2020 13:31 )mikadm schrieb:  Vor jeder Messung wird gefragt ( mit Eingabeaufforderung für Benutzer) ob die Kalibration durchgeführt werden soll. Wenn nicht, dann sollen die Werte von der vorherigen Kalibration genommen werden.
Und was wenn das Programm beendet und neugestartet wird?
a) Nach Neustart muss vor der ersten Messung immer eine Kalibrierung durchgeführt werden. Dann brauchst du dir die Kalibrierwerte nur im Programm merken.
b) Auch nach Neustart sollen die zu letzt ermittelten Kalibrierwerte benutzt werden. Dann bleibt nur die Speicherung in einer Datei.

(26.08.2020 13:31 )mikadm schrieb:  Wenn ich das oben gezeigte SubVI als Statemachine programmiere, dann habe ich ja in der zweiten und dritten Sequenz keine Tunnel.
Tunnel = Wert in jeder Iteration gleich, entspricht dem Wert vor der Schleife
Schieberegister = Wert aus der vorherigen Iteration
   
Das ist eine einfache StateMachine mit einem Enum für die Zustände. Das Enum sollte ein TypDef sein, habe ich hier der Einfachheit halber weggelassen. Das Bild ist übrigens ein Snippet, das kannst du herunterladen und in LabVIEW als Code einfügen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.08.2020, 09:35
Beitrag #8

mikadm Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: May 2020

LV 2015
2019
DE



RE: Ausgelesener Wert als konstante in SubVi
danke th13 für deine Antwort.
So wie du bei a) beschrieben hast soll es sein.
Wie setzte ich das um ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.08.2020, 10:33
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ausgelesener Wert als konstante in SubVi
Hallo mikadm,

Zitat:So wie du bei a) beschrieben hast soll es sein. Wie setzte ich das um ?
Erst die Kalibriermessung durchführen, dann die Kalibrierwerte in einem Schieberegister merken.
(Und alles natürlich in einer Statemachine abarbeiten.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.08.2020, 10:53
Beitrag #10

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 171
Registriert seit: Oct 2013

2020 SP1
2013
EN


Deutschland
RE: Ausgelesener Wert als konstante in SubVi
(27.08.2020 09:35 )mikadm schrieb:  Wie setzte ich das um ?
Überleg dir eine Oberfläche für dein Programm: Hast du ein Hauptfenster, aus dem heraus man Messung und Kalibrierung starten kann, oder soll immer das Messfenster angezeigt werden und bei Bedarf die Kalibrierung, sollen Messung und Kalibrierung in der selben Oberfläche erfolgen. Einfach mit ein paar Skizzen auf nem leeren Blatt anfangen.
Überlege dir eine Struktur, mit der du das umsetzt: StateMachine ist da schon ein richtiger Ansatz. Mal dir die Zustände auf und von welchem du wohin kommst.
Überlege dir Speicherstrukturen für die Messwerte, die Kalibrierwerte - wer darf was ändern.

In deinem StartVI werkelt die StateMachine als Zentrale und ruft je nach State SubVIs auf, die Messung und Kalibrierung übernehmen. Wenn du ein Hauptfenster haben willst, zeigst du das FrontPanel des Start-VIs an, sonst nicht.

Die Daten kannst du in einer oder mehreren funktionalen globalen Variablen (FGV) oder wie in meinem StateMachine-Bsp als Cluster in einem Schieberegister verwalten.


Wenn du ein für den produktiven Einsatz gedachtes Messprogramm mit Kalibriermodus schreiben willst, kommst du nicht umhin, dich mit LabVIEW zu beschäftigen.
Edit: Hm, Gerd war schneller und kompakter...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Negative Werte - Zeitstempel Konstante im XML-String BlackEagle 2 5.104 18.12.2019 15:30
Letzter Beitrag: BlackEagle
  Objektname einer Enum Konstante ändern mprocket 7 5.696 30.01.2018 12:23
Letzter Beitrag: mprocket
  Speicher-Allokation vs. Konstante Trinitatis 3 3.718 19.12.2016 14:24
Letzter Beitrag: GerdW
  Wert Zwischenspeichern in Subvi Labview User 6 4.162 03.08.2016 15:03
Letzter Beitrag: Lucki
  Wert an naheliegensten Wert aus Array anpassen TSC 17 9.588 26.07.2016 06:59
Letzter Beitrag: TSC
  Aktueller Wert von vorherigem Wert abziehen Semicon 6 6.197 18.06.2014 16:34
Letzter Beitrag: jg

Gehe zu: