LabVIEWForum.de - Mehrer Wertebereiche (0.02-0.01;0.01-0.9;..) und jeweils andere Inkrementation

LabVIEWForum.de

Normale Version: Mehrer Wertebereiche (0.02-0.01;0.01-0.9;..) und jeweils andere Inkrementation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi

Ich hab mir jetzt mein Messprogramm zusammengestellt bräuchte da einen kleinen Tipp für die elegante Lösung des Problems.

In einer Schleife(mit Schieberegister) wird einen Wert(nennen wir die Variable halt VAR_FUNC) auf einen Funktionsgenerator ausgebe, dann von 2 anderen Messgeräten meine Daten geholt, und danach der Wert (VAR_FUNC) um 0.001 erhöht.
Das Problem ist, ich beginne mit meinem Wert bei 0.002, erhöhe dann immer um 0.001 und beende das ganze wenn ich bei 12.0 bin.
Wär ja alles nicht so schlimm... wenn meine Messung nicht 0.5s dauern würde ;-).. Also würd die gesamte Messung in meinem Fall so ca. 100min dauern.... und dass ist zu viel.. und ausserdem ist es zu genau.

Nunja... ich würd jetzt gern folgendes machen:

Im Bereich von 0.002 bis 0.020 würd ich gern immer um 0.001 erhöhen.
Von 0.020 bis 0.050 um 0.005
Von 0.050 bis 0.100 um 0.010
von 0.010 bis 0.500 um 0.050
von 0.500 bis 1.000 um 0.100
von 1.000 bis 5.000 um 0.500
und von 5.000 bis 12.00 um 1.000.

In C würd ich das ganze bei mir so aussehen:

if (VAR_FUNC>= 0.002 && VAR_FUNC<0.020)
VAR_FUNC = VAR_FUNC + 0.001;
if (VAR_FUNC>=0.02 && VAR_FUNC<0.05)
VAR_FUNC = VAR_FUNC + 0. 005;
........

Wie kann ich nun das gleiche elegant in LabVIEW programmieren?
Ich hab mir schon gedacht, die ganzen Bereiche über Vergleichsfunktionen und mit Gater aufzubauen... und danach über eine Case-Struktur die Abfrage zu machen und halt in dem jeweiligen Bereich die gewünschte Zahl addieren. Da tritt nur das problem auf, dass ich nicht weis wie ich von der boolschen ausgabe, zu einer Dezimalzahl komme,die ich dann für die Case-Struktur verwenden kann.
Wie löse ich das?

Ich glaub, dass müsste ja über die Funktion "Boolean Array to number" funktionieren... nur wie komme ich zu meinem Boolean Array?


mfg Schoasch

PS.: Ich werd mal meine gedanken zu einem Programm formen und danach posten.
Hilft Dir das.....?

[attachment=10498]Lv80_img
[attachment=10499]

Gruß Markus
Besten Dank.

So ähnlich hab ich es auch programmiert. Funktioniert jetzt einwandfrei.

mfg SChoasch
' schrieb:In C würd ich das ganze bei mir so aussehen:

if (VAR_FUNC>= 0.002 && VAR_FUNC<0.020)
VAR_FUNC = VAR_FUNC + 0.001;
if (VAR_FUNC>=0.02 && VAR_FUNC<0.05)
VAR_FUNC = VAR_FUNC + 0. 005;

Und warum machst du es nicht? Du kannst diesen Code im Formelknoten einfügen und evtl. noch ein bisschen anpassen...und dann brauchst du die relativ aufwendige Programmierung in "G" (LabVIEW) mit der Case-Struktur nicht...

Das wär m. E. mal ne sinnvolle Anwendung des Formelknotens...wenn man den Code eh schon "hat"

Gruß
Achim
Also wenn ihr mich fragt: ich würde hier überhaupt nichts programmieren. Insgesamt handelt es sich hier um lächerliche 36 Werte, und die kann man alle in eine Arraykonstante schreiben (deren Werte ich vorher mit einem kleinen Hilfsprogramm erzeugt habe)

Lv71_img
Kann man nicht in die Case-Struktur die Wertebereiche direkt reinschreiben?
Ja steinigt mich, ich weiß selber dass ich planlos bin Flop
Ich hab glaub ich nen Fehler drin im Bereich oder irgendein Komma ist falsch,
aber so als Grundgedanke mein ich nur..
' schrieb:Kann man nicht in die Case-Struktur die Wertebereiche direkt reinschreiben?
Ja steinigt mich, ich weiß selber dass ich planlos bin Flop
Das ist doch wohl nur Rethorik, insgeheim weiß Du doch selbst, daß Dein eigener Ansatz das beste Programm in diesem Threat ist! Ich habs mal so gemacht, daß es funktioniert. Allerdings, wie ich schon sagte, würde ich diese Programm nur als einmalig zu verwendendes Hilfsprogramm verwenden, um alle Werte in ein Array reinzuschreiben. Das wird dann im Hauptprogramm als Array-Konstante benutzt, durch Indexierung steht Dir dann jeder Wert zur Verfügung.

Lv71_img
Referenz-URLs