10.11.2009, 09:47
Beitrag #1
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Parallelverarbeitungsproblem
Hallo,
habe zwar ähnlich schon gepostet, aber es ist einen eigenen Threads würdig und ich kann das Problem jetzt auch genauer spezifizieren, also bitte nicht böse sein!
Folgendes Problem:
1 Hauptvi, das aus einer Whileschleife besteht, in der 1 Mal pro Sekunde Messdaten von einem OPC-Server geholt, dargestellt und demnächst auch gespeichert werden. Dieses VI hat ein Menü. Jedes Mal, wenn ich das Programm ausführe und einen Menüpunkt aktiviere bzw. mir das Untermenü (zum Beispiel Datei, Hilfe usw.) anzeigen lasse, stoppt die Datenerfassung. Abgesehen davon, dass ich ein Timingproblem bei der OPC-Abfrage bekomme, bleibt die Datenerfassung stehen, solange ich mich im Menü aufhalte. Wie kann ich dieses Verhalten abstellen?
Gruß Thomas
|
|
|
10.11.2009, 10:08
Beitrag #2
|
|
|
10.11.2009, 10:17
Beitrag #3
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Parallelverarbeitungsproblem
Hi,
du meinst also quasi einfach zwei whileschleifen, die miteinander nicht in Verbindung stehen und somit automatisch parallel ablaufen? Werd das mal probieren, aber mich wundert dieses Verhalten einfach, weil die Prozesse in der Schleife ja eigentlich parallel laufen sollten und demnach dann ja auch wieder die subvi's in der einen Schleife usw...
Werds gleich mal probieren und melde mich dann wieder :-D
Gruß Thomas
|
|
|
10.11.2009, 10:27
Beitrag #5
|
|
|
10.11.2009, 10:48
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2009 10:48 von IchSelbst.)
Beitrag #6
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Parallelverarbeitungsproblem
' schrieb:Das bedeutet nicht, das zwei VI's in einer Schleife parallel ausgeführt werden. Insbesondere nicht, da LV (korrigiert mich falls ich falsch liege) in ein Sub-Vi hineinspringt und dann die Code-Ausführung im übergeordnenten VI solange anhält, bis das Sub-Vi fertig ist.
Das stimmt so nicht unbedingt.
Parallele Datenflüsse, also auch parellel platzierte SubVIs, laufen immer quasi-gleichzeitig ab. Das funktioniert auf jeden Fall. Für Schleifen bedeuten parallele SubVIs aber, dass der nächste Schleifendurchgang nur dann gemacht werden kann, wenn alle SubVIs beendet wurden. Hängt eines dieser SubVIs z.B. mit einem Menü, so hängt demzufolge die Schleife im MainVI, nicht aber die anderen SubVIs selbst.
Das Anhalten der Code-Ausführung im aufrufenden VI bezieht sich nur auf den Datenfluß, in dem sich das aufgerufene SubVI befindet.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
10.11.2009, 10:49
Beitrag #7
|
|
|
10.11.2009, 11:03
Beitrag #8
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Parallelverarbeitungsproblem
Hallo!
Ich habe es gerade ausprobiert. Die Ursprüngliche Idee mit den beiden Whileschleifen funktioniert tatsächlich nicht. Die gerade eingetroffene Erklärung trifft zu. Ich werde mal das mit der Eventstruktur ausprobieren, ich habe allerdings noch nicht so viel Erfahrung damit, daher wird das eine Weile dauern. Bisher habe ich damit nur die F12 Taste (Siehe EasterEgg-Thread) abgefragt, aber das sollte ja nicht das Problem darstellen.
Gruß Thomas
|
|
|
10.11.2009, 11:28
Beitrag #9
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Parallelverarbeitungsproblem
Mhmmmm....
Also ich habe es jetzt so gemacht:
men_.vi (Größe: 12,03 KB / Downloads: 209)
So funktioniert es aber nicht, das Programm steht immer noch. Daher habe ich diesen Teil aus der separaten Schleife in die Hauptschleife eingefügt. Weil ich den Timeout auf -1 gelassen hatte, stand die Ausführung dauerhaft. Mit einem Timeout von 200ms läuft wieder alles. Problem aber nach wie vor: sobald ich im Menü etwas auswähle steht der Rest der Anwendung!
Gruß Thomas
|
|
|
| |