10.11.2015, 10:47
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015 10:52 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Schieberegler Wertänderung
Zitat:... Eventstruktur kann immer noch bis zu einer Sekunde lang blockiert sein
Die ganze Struktur ist immer noch Krampf zum Quadrat.
Eine Queue-Struktur kann mehre Erzeuger haben haben, aber immer nur einen Verbraucher. Das wäre hier der Fall: Die obere und untere Schleife sind Erzeuger, die mittlere ist Verbraucher. Was läge also näher, als eine Queue zu verwenden - und nicht deren zwei??
Habe das VI mal geändert:
Queue4 Ordner.zip (Größe: 35,36 KB / Downloads: 133)
|
|
|
10.11.2015, 18:03
|
Hydrogencarbonat
LVF-User
Beiträge: 187
Registriert seit: Apr 2014
2013,2014
2014
DE
XXXXX
Deutschland
|
RE: Schieberegler Wertänderung
Hi Lucki,
dein Kommentar macht Sinn .
Ist so nun auch viel einfacher gelöst und man braucht das Time Out nicht mehr.
Danke für die Hilfe
Habe es nun mit meinem Hauptprogram verheiratet und es funktioniert nun alles bis auf den " Programm beenden" Button.
Der ist komischerweise ohne Funktion, obwohl ich alles genau so habe wie in dem TestVI. (viele Ursachen können es ja nicht sein, ist ja nur ein Button 0.o)
Gruß HCO
|
|
|
10.11.2015, 18:40
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Schieberegler Wertänderung
(10.11.2015 10:47 )Lucki schrieb: Zitat:... Eventstruktur kann immer noch bis zu einer Sekunde lang blockiert sein
Die ganze Struktur ist immer noch Krampf zum Quadrat.
Eine Queue-Struktur kann mehre Erzeuger haben haben, aber immer nur einen Verbraucher. Das wäre hier der Fall: Die obere und untere Schleife sind Erzeuger, die mittlere ist Verbraucher. Was läge also näher, als eine Queue zu verwenden - und nicht deren zwei??
Habe das VI mal geändert:
Was ich genauso in Beitrag #6 vorgeschlagen habe!!!
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
10.11.2015, 18:45
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Schieberegler Wertänderung
(10.11.2015 18:03 )Hydrogencarbonat schrieb: ... und es funktioniert nun alles bis auf den " Programm beenden" Button.
Der ist komischerweise ohne Funktion, obwohl ich alles genau so habe wie in dem TestVI. (viele Ursachen können es ja nicht sein, ist ja nur ein Button 0.o)
Meinst Du "Programm stoppen"?. Hast Du die Änderungen gesehen, die ich gemacht hatte?
1. Wegfall der lokalen Variablen. In der oberen Schleife kann "Neuer Wert" benutzt werden. Die Variable kann dann in der mittleren Schleife direkt zum Stoppen verwendet werden.
2. Da keine lokalen Variablen mehr verwendet werden, kann die Funktion auf "Latch" umgestellt werden. Das erspart die zweite lokale Variable zum Rücksetzen das Stopp-Knopfes.
Das Quadrat in meinem Kramp-Ausdruck nehme ich zurück. So ganz schlecht ist die Struktur doch nicht, aber ich übertreibe eben gern
|
|
|
10.11.2015, 18:46
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Schieberegler Wertänderung
(10.11.2015 18:03 )Hydrogencarbonat schrieb: Habe es nun mit meinem Hauptprogram verheiratet und es funktioniert nun alles bis auf den " Programm beenden" Button.
Der ist komischerweise ohne Funktion, obwohl ich alles genau so habe wie in dem TestVI. (viele Ursachen können es ja nicht sein, ist ja nur ein Button 0.o)
Da liegt auch eine schöne Race-Condition vor! In der Erfassungsschleife wird "Messung starten" ausgelesen, dann wird bei "True" in den 1 Sekunde dauernden True-Case gesprungen. Wenn zu diesem Zeitpunkt "Messung beenden" betätigt wird, dann wird zwar "Messung starten" in der Eventstruktur auf False gesetzt, aber dann in der Erfassungsschleife wieder durch "True" überschreiben.
Eine saubere Lösung wäre auch hier die Steuerung der Erfassungs-Loop per Queue oder Notifier (in diesem Fall eine neue Queue!).
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
10.11.2015, 20:21
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015 20:22 von Hydrogencarbonat.)
|
Hydrogencarbonat
LVF-User
Beiträge: 187
Registriert seit: Apr 2014
2013,2014
2014
DE
XXXXX
Deutschland
|
RE: Schieberegler Wertänderung
Hi Lucki,
ja. hab das mit den lokalen Variablen mitbekommen;P.
Je weniger im Prog sind desto besser . Danke
Aber ob man sie drin hat oder nicht ist nicht Ursache des Problems.
Hi Jens,
verstehe das Problem.
Vielen Dank.
Ich werde mich nun mit den Melderfunktionen auseinander setzen.
Hatte bis jetzt noch nicht mit diesen Funktionen gear[/quote]beitet und den Horizont zu erweitern ist immer gut
Gruß HCO
*gearbeitet
|
|
|
11.11.2015, 12:42
|
Hydrogencarbonat
LVF-User
Beiträge: 187
Registriert seit: Apr 2014
2013,2014
2014
DE
XXXXX
Deutschland
|
RE: Schieberegler Wertänderung
Hi,
fast meine Lösung nur mit Queues. Ja das mit dem Queue Leeren macht Sinn
Vielen Dank
Im angehängten VI funktioniert es auch alles wunderbar, aber habe es jetzt mit meinem Hauptprog verheiratet.
Der Stopp Button geht immer noch nicht.
Jedoch habe ich nur die 3 Schleifen und die Grunstruktur bzw. Ablauf ist der gleiche wie im TESTVI.
Irgendwo ist komischer Weise immer noch eine Race-Condition.
Gruß HCO
PS: Ich weiss ohne eine Blick auf das HauptVI zu werfen kann man schlecht den Fehler abschätzen, aber ich streube mich dagegeben es hochzuladen ;P
|
|
|
11.11.2015, 14:08
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2015 14:08 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Schieberegler Wertänderung
(11.11.2015 12:42 )Hydrogencarbonat schrieb: fast meine Lösung nur mit Queues. Ja das mit dem Queue Leeren macht Sinn
Das Leeren der Queue ist aber nicht das Eigentliche, das ist nur eine zusätzliche Sicherheit. Entscheidend ist, dass, solange die Messung laufen soll, mit jeder Messwerterfassung wieder der Status "Messen ausführen" in die Queue gegeben wird, so daß sich die Messung so lange wiederholt, bis von der Ereignisschleife "Messung beenden" in die Queue gegeben wird.
Das sieht nach einer Notlösung aus, ist es aber nicht. Ich habe das in einem hochprofessionellem Beispielprogramm so gesehen - allein wäre ich vielleicht nicht darauf gekommen.
Zitat:Ich weiss ohne eine Blick auf das HauptVI zu werfen kann man schlecht den Fehler abschätzen, aber ich streube mich dagegeben es hochzuladen
Warum nicht? Es gibt hier laufend berechtigte Klagen über fehlende VIs. Dass sich jemand beschwert, dass ein VI zu groß ist, habe ich noch nicht gehört.
Ideal wäre aber, wenn das VI auch ohne echte Datenerfassung lauffähig ist, d.h. dass die Messwerte weiterhin durch simulierte Werte ersetzt werden - so wie Du das in deinen geposteten VIs schon mustergültig gemacht hattest.
|
|
|
| |