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 

Mehrere Tests parallel laufen lassen



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!

09.08.2024, 13:11
Beitrag #1

Minako Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
Mehrere Tests parallel laufen lassen
Huhu,
ich habe mich eben einem neuen Programm angenommen, weil dort etwas nicht ganz funktioniert und etwas fehlt.
Zu allererst muss ich das Programm neu schreiben, weil es unübersichtlich ist.

Es sind 10 While-Schleifen mit einer Menge Localer Variablen und Filmsequenzen.

Alle kein Problem.
Mir fällt nur keine Lösung für die 10 Schleifen ein.

Im Endeffekt funktioniert das folgender Maßen:

1. Einstellungen vornehmen
2. Messung starten
3. Warten bis fertig

Das Ganze soll 10 Mal möglich sein, sodass 10 Tests zeitgleich ablaufen können. Diese Tests müssen aber zu unterschiedlichen Zeitpunkten startbar sein.
Desshalb wurden bisher 10 Whileschleifen verwendet.
Im Frontpanel sind es 10 Tabs, welche man anwählen kann.

Gibt es andere Möglichkeit für eine parallele Verarbeitung oder geht es nur mit so vielen While-Schleifen?

Danke für alle Tips und Tricks. Big Grin

Schauen kann ich leider erst übernächste Woche. Ich ziehe um und habe mir nächste Woche frei genommen.

Ein schönes Wochenende wünsche ich Euch.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.08.2024, 15:50
Beitrag #2

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 424
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Mehrere Tests parallel laufen lassen
Hallo Minako,

es ist anscheinend Urlaubszeit ...

Wenn du das Programm neu schreibst, dann kannst z.B.

Ein VI für die Messung schreiben (alle 10 sind ja weitgehend identisch). Die zugehörige Benutzeroberfläche entweder inclusive oder als separates VI.
Das Ganze muss ein reentrantes VI sein. Dann kannst du es 10 mal starten.
Diejenige Messung die der Benutzer deiner Software sehen will, die wird dann in einem Subpanel angezeigt.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2024, 12:32
Beitrag #3

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 210
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Mehrere Tests parallel laufen lassen
Mahlzeit Minako,

es kommt ganz drauf an was in den 10 Schleifen denn passiert, ob man diese zusammenfassen kann in zB eine Datenerfassung und eine Auswertung, so kannst du immer alle Channel aufnehmen wenn diese an einer Messkarte hängen und nur die benötigten auswerten.
Oder ob die Schleifen komplett unabhängig voneinander sind und jede sein eigenes Timing braucht oder gar ganz andere Funktionen hat (scheint bei dir aber nicht so).

Ich bin Fan von dem Delacor QMH geworden, dort gibt es auch ein Modul für mehrere Instanzen, falls du in den 10 Schleifen programmtechnisch das Gleiche machst. Das geht auch in die Richtung von Martin und mit dem Tool muss man sich nicht um jede Kleinigkeit kümmern.
Hier kannst du die Datenerfassung entweder im jeweiligen Modul machen, oder ein Erfassungsmodul, das die Daten dann verteilt.

Viel Erfolg
Timo

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2024, 11:23
Beitrag #4

Minako Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
RE: Mehrere Tests parallel laufen lassen
Hi ihr Beiden,
war leider kein schöner Urlaub. Wir sind am umziehen.... Waren leider so doof und haben uns kein Unternehmen gebucht. Smile

Aber egal. Zurück zum Thema.
Diese 10 Messungen sind unabhängig voneinander. Wie ich geschrieben hatte werden diese nicht zeitgleich gestartet und somit auch nicht zeitgleich ausgewertet.
Es wird bei jeder Messung ein neues Gerät angesprochen, welches von Hand angegeben werden muss.
Auch alle anderen Einstellungen werden von Hand angegeben und können zueinander verschieden sein.

Natürlich könnte ich ein subvi erstellen damit ich alle 10 Schleifen auf dem Bildschirm betrachten kann aber das ändert nichts an den 10 Schleifen.

@Martin.Henz
Reentrantes VI höre ich zum ersten mal. Ich hab mir mal eine Erklärung durchgelesen und bin nicht ganz sicher, ob ich das richtig verstanden habe...
Ich schreibe ein Sub VI welches die Grundfunktion der Messung durchführen kann.
Mein Main VI kann dann über eine Event case alle start und stop Buttons für alle 10 Messungen in 2*10 Fällen verwalten, welche auf das Sub vi zugreifen und das kann mit der Einstellung auf reentrantes VI vollständig parallel ablaufen?

Das könnte eine Lösung sein, wenn das so funktioniert.

@Timo
Es muss unabhängig voneinander sein. Zumindest verstehe ich das Ganze als unabhängig, wenn jede Messung zu einem anderen Zeitpunkt gestartet werden soll und auch beendet wird. Im Notfall auch mal abgebrochen wird. Dabei sollen nicht alle Messungen, sondern nur die eine Abgebrochen werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2024, 11:58
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.455
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Mehrere Tests parallel laufen lassen
Hallo Minako,

Zitat:Reentrantes VI höre ich zum ersten mal. Ich hab mir mal eine Erklärung durchgelesen und bin nicht ganz sicher, ob ich das richtig verstanden habe...
Ein VI ist dann "reentrant", wenn es mehrfach parallel abgearbeitet werden kann, ohne dass sich die Instanzen gegenseitig beeinflussen.
Bedeutet:
- Du kannst darin nicht mit (einer) globalen Variablen (oder anderen globalen Speichern/Resourcen) arbeiten, wenn diese von den Instanzen verändert wird -> das würde die anderen Instanzen beeinflussen.
- Jede Instanz muss ihre "Variablen" intern selbst verwalten, also z.B. Shiftregister verwenden.
- LabVIEW kann dann diese Instanzen parallel im Speicher halten und passt dafür den VI-Namen (im Speicher an) -> es wird etwas schwieriger, an eine VI-Referenz für die jeweilige Instanz zu kommen.

Das Gegenteil ist dann: Wenn ein VI "nicht reentrant" ist, dann kannst du sie zwar parallel aufrufen, aber LabVIEW wird intern nur eine VI-Instanz verwenden, die die Aufrufe nacheinander abarbeitet. (Parallele Aufrufe nicht-reentranter VIs blockieren sich gegenseitig.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.08.2024, 08:05
Beitrag #6

Kiesch Offline
LVF-Stammgast
***


Beiträge: 408
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Mehrere Tests parallel laufen lassen
(19.08.2024 11:23 )Minako schrieb:  Hi ihr Beiden,
war leider kein schöner Urlaub. Wir sind am umziehen.... Waren leider so doof und haben uns kein Unternehmen gebucht. Smile

Aber egal. Zurück zum Thema.
Diese 10 Messungen sind unabhängig voneinander. Wie ich geschrieben hatte werden diese nicht zeitgleich gestartet und somit auch nicht zeitgleich ausgewertet.
Es wird bei jeder Messung ein neues Gerät angesprochen, welches von Hand angegeben werden muss.
Auch alle anderen Einstellungen werden von Hand angegeben und können zueinander verschieden sein.

Natürlich könnte ich ein subvi erstellen damit ich alle 10 Schleifen auf dem Bildschirm betrachten kann aber das ändert nichts an den 10 Schleifen.

@Martin.Henz
Reentrantes VI höre ich zum ersten mal. Ich hab mir mal eine Erklärung durchgelesen und bin nicht ganz sicher, ob ich das richtig verstanden habe...
Ich schreibe ein Sub VI welches die Grundfunktion der Messung durchführen kann.
Mein Main VI kann dann über eine Event case alle start und stop Buttons für alle 10 Messungen in 2*10 Fällen verwalten, welche auf das Sub vi zugreifen und das kann mit der Einstellung auf reentrantes VI vollständig parallel ablaufen?

Das könnte eine Lösung sein, wenn das so funktioniert.

@Timo
Es muss unabhängig voneinander sein. Zumindest verstehe ich das Ganze als unabhängig, wenn jede Messung zu einem anderen Zeitpunkt gestartet werden soll und auch beendet wird. Im Notfall auch mal abgebrochen wird. Dabei sollen nicht alle Messungen, sondern nur die eine Abgebrochen werden.

Also - so wie ich den letzten Satz verstehe - laufen potentiell mehrere Messungen auch mal parallel. Falls nein - SubVI und in eine Schleife und alles ist gut (lediglich ne Auswahl welches Gerät grade gestartet werden soll).
Falls ich richtig verstanden habe:
Worauf Martin eventuell hinaus wollte ist, den Asynchronen Call zu nutzen. Sprich: Du startest das SubVI, wartest aber nicht auf das Ende der Ausführung. Daher: Deine Schleife muss die Messung nur starten, aber nicht stoppen. Das ganze Reentrant (bei den Einstellungen des VIs) damit mehrere Instanzen des SubVI gleichzeitig laufen dürfen. Du musst dir dann lediglich überlegen wie du mit dem gestarteten VI "kommunizierst" (zumindest sollte man das wenn man im HauptVI auch die Möglichkeit haben will die SubVIs zu beenden). Hierzu kannst du Queues oder ähnliches verwenden. Prinzipiell kannst du dir damit vom SubVI auch Daten an deine Oberfläche zurücksenden lassen (so gewünscht) und auch den "Ende" status damit abfragen. Der "Ende"-Baustein für asynchrone Calls hilft dir wahrscheinlich weniger, da der eigentlich nur auf das Ausführungsende wartet (mit Timeout (hat der den?) müsste man pollen können welche der VIs schon beendet sind). Dann kannst du die "normalen" Datenflussausgänge des VIs zum VI Ende noch auslesen. Ich hatte dafür bisher allerdings noch keine Use Case - wenn ich sowieso zwischendurch über Queue mit dem VI reden muss / will, dann muss ich das eh handeln, dann kann ich da auch meine Daten rüber schieben.

Wichtig: Machst du's über Queues musst du dir überlegen wie du die antwortenden VIs auseinanderhälst, bzw. das VI was du "kontaktieren willst" eindeutig identifizierst. Eine Queue pro VI start erlaubt eine eindeutige identifikation (ohne Name erzeugen und eindeutige ID nutzen), für den Rücklauf kannst du eine gemeinsame Queue nutzen, dann musst du im HauptVI nur einen Kanal auswerten und dann zuordnen von wem der kam (das SubVI sollte eine eindeutige ID zurücksenden, z.B. die Queue referenznummer - irgendwas was du leicht vergleichen kannst).

Hoffe das war nicht zu wirr und die Idee ist verstanden.

Ich nutze so ein ähnliches Konzept aktuell um in einer Klasse quasi "Listener" zu erstellen, die dann Daten aus Hardwareschnittstellen an ein GUI streamen.

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2 Motoren Synchron laufen lassen 911tom 5 9.218 22.12.2017 08:50
Letzter Beitrag: kpa
  Stop während Eventstruktur am laufen ist haydenfan 5 5.866 05.11.2013 09:50
Letzter Beitrag: haydenfan
  Mehrere Schleifen parallel ausführen! houss 7 12.774 06.08.2013 14:41
Letzter Beitrag: houss
  vi 1 sek. laufen und speichern wen 9 6.009 14.01.2013 10:20
Letzter Beitrag: GerdW
  SubVi Parallel laufen und schliessen Dom0503 8 8.868 01.08.2011 14:24
Letzter Beitrag: Dom0503
  Sub-VI parallel und unabhängig laufen lassen viperjumper 2 5.933 21.07.2011 09:42
Letzter Beitrag: viperjumper

Gehe zu: