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 

Parallele pausierte For-Schleife



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!

14.02.2013, 18:08
Beitrag #1

Chillkroete1206 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2013

9
2013
kA



Parallele pausierte For-Schleife
Hallo liebe Community,

ich habe ein Programm erstellt, welches unter Eingabe bestimmter Koordinaten (X und Y) einen Punkt anfährt, die Messdaten von diesem bekommt und diese in ein Array schreibt. Soweit klappt das auch gut. Um diesen Abschnitt habe ich eine Whileschleife mit „Wait for pront panel Activity“ gelegt, um das kontinuierlich auszuführen.

Allerdings möchte ich nun nicht manuell die Koordinaten eingeben, sondern sollen diese nacheinander automatisch abgefahren werden. Allerdings dauert die Messung ca. 1sek. Die also bei jedem Umstellen gewartet werden muss. Ich habe versucht die Koordinaten durch 2 verschachtelte For-Schleifen zu verstellen und mit dem Wait-Befehl die Schleifen zu verzögern.

Wenn ich das allerdings mache, scheint der Wait-Befehl das komplette Programm zu pausieren sodass auch keine Messungen mehr stattfinden. Ergo: Das Wait darf nur auf die Schleifen wirken – nicht auf den Rest des Programms.

Kann mir hier jemand helfen??

Schönen Dank im Vorraus!
Chillkroete

PS: Da das komplette Programm eher schwierig zu verstehen ist, habe ich das jetzt mal nicht hochgeladen, sondern nur den Screenshot meines Schleifenversuchs. Wenn gewünscht, kann ich das auch gerne noch hochladen.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.02.2013, 19:00 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2013 19:03 von Trinitatis.)
Beitrag #2

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Parallele pausierte For-Schleife
Hallo Chillkröte,

die Wait-Funktion wartet genau an der Stelle, an der sie eingebaut ist. Alle datenflussrelevanten Schritte müssen dann natürlich auch warten. Was aber parallel läuft ist davon unberührt.

Deine Hauptschleife "steht" dann natürlich auch!

Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2013, 09:37
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele pausierte For-Schleife
Hallo Chilkroete,

auch der kleine Ausschnitt deines VIs hat ausgereicht: "Heavy overload due to massive overuse of local variables"... Aaaahhhh....

Dazu kann man nur sagen: Mach aus dem Wirrwarr paralleler Case-Strukturen eine ordentliche Statemachine. Alles weitere ist dann super einfach!!!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2013, 10:59 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2013 11:11 von Chillkroete1206.)
Beitrag #4

Chillkroete1206 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2013

9
2013
kA



RE: Parallele pausierte For-Schleife
erstmal danke für eure Antworten!

Zunächst mal zum Wait-Befehl, Trinitatis:

Für mich hört sich das so an, als ob du dir in deiner Erklärung wiedersprechen würdest. Du meinst, dass die parallelen Operationen vom Wait-Befehl unberührt sind. Aber der Rest meines Programms läuft ja parallel, also sollte demnach unberührt sein (oder tut er das nich?!). Auf der anderen Seite meinst du die Hauptschleife steht - und damit scheinst du ja leider Recht zu haben!

Hast du vielleicht auch eine Lösung, wie ich den anderen Teil des Programms parallel laufen lassen kann?


Und nun zu den Case Strukturen, Gerd:
Deine Fehlermeldung verstehe ich nicht, aber ich schätze du willst mir damit sagen, dass das alles andere als ressourcen schonend programmiert ist.
Abgesehen davon, dass das vielleicht ein unsauberer Programmierstil ist: Kann man damit das Problem lösen? Ich würde gerne erstmal das Programm zum laufen kriegen, bevor wir über "eleganz" reden =).

Schönen Gruß!
Chillkroete
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2013, 11:04
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele pausierte For-Schleife
Hallo Chillkroete,

Zitat:Abgesehen davon, dass das vielleicht ein unsauberer Programmierstil ist: Kann man damit das Problem lösen? Ich würde gerne erstmal das Programm zum laufen kriegen, bevor wir über "eleganz" regen =).
Unsauber ist fast noch untertrieben...

Wenn du dein Programm gleich auf eine Statemachine umstellst, wirst du es schneller (!) zum Laufen kriegen und nebenbei gleich noch "Eleganz" (d.h. Struktur) hineinbekommen. Das Einfügen von Wartezeiten ist dann ein Kinderspiel, da nur Einfügen eines weiteren States.
Wenn man etwas programmiert, sollte man sich vorher Gedanken um den Funktionsumfang machen - und nicht erst zum Ende der Programmierung hin!

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

Chillkroete1206 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2013

9
2013
kA



RE: Parallele pausierte For-Schleife
Alles klar, das leuchtet ein, allerdings sehe ich immer noch keinen Zusammenhang zwischen den Case-Structures und meinem Problem. Die Case-Structures sind nur zum Reseten der Messwerte oder zum springen zu positionen.

Ich hänge jetzt einfach mal das Programm dran, damit verständlich ist, was ich meine.

Wenn das Programm läuft, kann man mit "Relative Coordinates" den Messpunkt (current measurement spot) verstellen. Wenn man jetzt die Schleife unten aktiviert, werden die "Relative Coordinates" automatisch verstellt. Der Messpunkt ändert sich aber nicht.

Ich führe das darauf zurück, dass er zwar den Indicator ändert, von daaus aber nicht weiterrechnet. Wie wenn ich mit der Tastatur den Wert ändere, aber nicht auf Enter drücke. Gibt es eine Möglichkeit eine erneute Berechnung mit den aktuell eingegebenen Werten auszulösen?


Angehängte Datei(en)
10.0 .vi  Kalibrierung_schleife.vi (Größe: 174,29 KB / Downloads: 189)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.02.2013, 12:50 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2013 12:51 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele pausierte For-Schleife
Hallo Chillkroete,

Zitat:Wenn das Programm läuft, kann man mit "Relative Coordinates" den Messpunkt (current measurement spot) verstellen. Wenn man jetzt die Schleife unten aktiviert, werden die "Relative Coordinates" automatisch verstellt. Der Messpunkt ändert sich aber nicht.

Ich führe das darauf zurück, dass er zwar den Indicator ändert, von daaus aber nicht weiterrechnet. Wie wenn ich mit der Tastatur den Wert ändere, aber nicht auf Enter drücke. Gibt es eine Möglichkeit eine erneute Berechnung mit den aktuell eingegebenen Werten auszulösen?
Was soll man dazu sagen?
THINK DATAFLOW! THINK DATAFLOW! THINK DATAFLOW!

LabVIEW arbeitet datenfluss-basiert. Eine Struktur ist abgearbeitet, wenn alle enthaltenen Elemente abgearbeitet sind. THINK DATAFLOW!

Wenn deine Schleife aktiviert wird, wird sie abgearbeitet und blockiert währenddessen die äußere While-Loop. Think DATAFLOW!

Wenn du Dinge parallel abarbeiten willst, musst du sie auch parallel programmieren. Eine Struktur innerhalb der anderen ist nicht "parallel". THINK DATAFLOW!

- Etwas mehr Struktur wäre trotzdem nicht schlecht.
- Warum zwei Intensitycharts, die beide das gleiche selbe anzeigen? Reicht dir einer nicht?
- Warum haben FP-Element identische Namen? Warum gibt es FP-Elemente ohne Namen? Würdest du so etwas bei textbasierter Programmierung auch machen?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2013, 17:59
Beitrag #8

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Parallele pausierte For-Schleife
(15.02.2013 10:59 )Chillkroete1206 schrieb:  Zunächst mal zum Wait-Befehl, Trinitatis:

Für mich hört sich das so an, als ob du dir in deiner Erklärung wiedersprechen würdest. Du meinst, dass die parallelen Operationen vom Wait-Befehl unberührt sind. Aber der Rest meines Programms läuft ja parallel, also sollte demnach unberührt sein (oder tut er das nich?!). Auf der anderen Seite meinst du die Hauptschleife steht - und damit scheinst du ja leider Recht zu haben!

Hallo Chillkroete,

Deine parallele Abarbeitung besteht darin, dass die beiden inneren For-Schleifen parallel zum Rest in der Hauptschleife abgearbeitet werden. Das heißt aber, dass die inneren Schleifen erstmal n mal durchlaufen werden müssen, bevor die gesamte Hauptschleife abgearbeitet ist.
Insofern ist der Widerspruch nur scheinbar.


Gruß, Marko
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
  Parallele Frequenz-Datenerfassung mit NI-9401 ArneS 5 3.966 18.02.2021 09:41
Letzter Beitrag: GerdW
  parallele Ausführung von for-loops stsc 5 4.979 24.07.2019 15:12
Letzter Beitrag: stsc
Question Parallele FOR-Schleife: Parallel in gleiches Array schreiben..? wassersebastian 4 5.569 04.10.2016 11:18
Letzter Beitrag: wassersebastian
  Parallele Ausführung mehrerer Sub-Vis Anna1988 21 13.670 20.07.2015 11:51
Letzter Beitrag: Anna1988
  Parallele Sub-VI dbuckl 1 4.589 07.10.2013 15:09
Letzter Beitrag: GerdW
  Parallele Queue Struktur eurostar 14 11.951 29.01.2013 09:26
Letzter Beitrag: Y-P

Gehe zu: