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 

Bearbeitungsreihenfolge



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!

12.11.2007, 11:55
Beitrag #1

jeffrey Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Aug 2007

8.0 zuhause, 8.2 Uni
2007
kA


Deutschland
Bearbeitungsreihenfolge
Hallo,
LabVIEW ist ja flußgetseuert, d.h. wenn an einem VI alle nötigen Eingänge zur Verfügung stehen wird es (irgendwann) ausgeführt.
Wie ist es nun, wenn ich in meiner Haupt While-Schilefe mehrere True/False-Cases habe, die über Schalter an und aus geschaltet werden können. Wird auch zwischen den Cases hin und her gesprungen, oder wird zuerst einer abgearbeitet?
Der Hintergrund ist, dass in den einzelnen Cases verschieden Befehlssequenzen über die serielle Schnittstelle gesendet werden. Dabei ist es egal, in welcher Reihenfolge die Sequenzen gesendet werde. Aber die einzelnen Sequenzen sollen nicht miteinander vermischt werden. Also immer zuerst die Sequenz aus dem einen Case komplett gesendet werden.
Funktioniert das so? Oder Soll ich das ganze mit Semaphore schützen?
MfG Jeffrey
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.11.2007, 12:12
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Bearbeitungsreihenfolge
Richtig erkannt: LV ist Datenfluss-gesteuert. D.h. ein Vorgang wird KOMPLETT abgearbeitet, dann wird in den nächsten gesprungen. Wenn die Reihenfolge nicht durch eine Datenleitung spezifiziert ist, kannst du nicht voraussagen, welcher als nächstes kommt. Du kannst aber absolut sicher sein, dass während er Abarbeitung nicht in einen anderen Vorgang gesprungen wird!

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 13:33
Beitrag #3

jeffrey Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Aug 2007

8.0 zuhause, 8.2 Uni
2007
kA


Deutschland
Bearbeitungsreihenfolge
' schrieb:Richtig erkannt: LV ist Datenfluss-gesteuert. D.h. ein Vorgang wird KOMPLETT abgearbeitet, dann wird in den nächsten gesprungen. Wenn die Reihenfolge nicht durch eine Datenleitung spezifiziert ist, kannst du nicht voraussagen, welcher als nächstes kommt. Du kannst aber absolut sicher sein, dass während er Abarbeitung nicht in einen anderen Vorgang gesprungen wird!

A.

Hallo,
ja aber die Befehlsfolge in jedem Case besteht aus mehreren einzelnen Befehlen, diese werden nacheinander in einer For-Schleife an die Schnittstelle geschickt. Ich habe mal eine solch Casestruktur angehängt. Wird diese bis zum Schluß abgearbeitet, oder kann es passieren, dass zwischendrin in eine andere, gleich aufgebaute Casestruktur gesprungen wird? Weil dann würden die Befehle miteinander vermischt werden.
MfG Jeffrey


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 13:50 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2007 13:50 von Achim.)
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Bearbeitungsreihenfolge
Hi,

ich versteh' nicht so recht, wo du da ein Verständnisproblem hast. Ein Vorgang (egal ob VI, Case, Schleife, Formelknoten, etc.) wird KOMPLETT abgearbeitet, erst danach kommt der nächste übergeordnete/nachgelagerte Vorgang. In deinem konkreten Fall wird der komplette Case TRUE abgearbeitet und zwar in der Reihenfolge deiner Verdrahtung. Dann kommt die nächste Schleifeniteration, die diese Case-Struktur umgibt. Wenn sich bis zu dieser neuen Iteration die Eingangsbedingung nicht geändert hat, wird der Case wieder abgearbeitet, hat sich die Bedingung geändert wird der FALSE-Fall bearbeitet.

Für parallel zu deiner Case-Struktur angeordnete Strukturen/VI's etc. gilt das gleiche! Wenn du sicherstellen willst, dass hier eine gewisse Reihenfolge eingehalten wird, musst du das durch eine Verdrahtung ordnen!

Vielleicht versteh' ich dich falsch...du könntest ja mal einen Screenshot deines kompletten Blockdiagramms posten, oder dein VI...

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 14:04
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Bearbeitungsreihenfolge
' schrieb:Für parallel zu deiner Case-Struktur angeordnete Strukturen/VI's etc. gilt das gleiche! Wenn du sicherstellen willst, dass hier eine gewisse Reihenfolge eingehalten wird, musst du das durch eine Verdrahtung ordnen!
Ich glaube er meint das.

Parallele Ablauf-Stränge auf einer logischen Ebene werden parallel abgearbeitet. Hast du also in deinem BD den gezeigten True/False-Case mehrere Male parallel dastehen, dann werden die auch parallel abgearbeitet - d.h. es kommt zu Datensalat. Soll dies nicht geschehen, so müssen die parallelen Ablaufstränge sequenziert werden.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 14:11
Beitrag #6

jeffrey Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Aug 2007

8.0 zuhause, 8.2 Uni
2007
kA


Deutschland
Bearbeitungsreihenfolge
' schrieb:Ich glaube er meint das.

Parallele Ablauf-Stränge auf einer logischen Ebene werden parallel abgearbeitet. Hast du also in deinem BD den gezeigten True/False-Case mehrere Male parallel dastehen, dann werden die auch parallel abgearbeitet - d.h. es kommt zu Datensalat. Soll dies nicht geschehen, so müssen die parallelen Ablaufstränge sequenziert werden.

Hallo,
genau so ist es, ich habe mehrere dieser Casestrukturen innerhalb einer übergeordneten Schleife. Ich werde das ganze dann durch ein Semaphor absichern, damit nicht zwischen den einzelnen Casestrukturen hin und her gesprungen wird.
MfG Jeffrey
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 14:16
Beitrag #7

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Bearbeitungsreihenfolge
' schrieb:Ich werde das ganze dann durch ein Semaphor absichern, damit nicht zwischen den einzelnen Casestrukturen hin und her gesprungen wird.

Das ist völlig übertrieben...es reicht doch aus, wenn du einen Draht (z.B. Errorcluster) durch die Cases durchziehst, ähnlich deiner Vorgehendsweise in den Cases...also einfach die Case-Strukturen als VI betrachten (was anderes sind sie ja letztendlich nicht)...dann siehts "von weitem" genauso aus wie in deinen Cases selbst.

Lass den Semaphore-Quark weg...WENIGER IST MEHR!

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2007, 15:05
Beitrag #8

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Bearbeitungsreihenfolge
Anmerkung:

' schrieb:damit nicht zwischen den einzelnen Casestrukturen hin und her gesprungen wird.
Stell dir das nicht als Hin- und Herspringen vor, sondern als zwei unabhängige, parallel und kontinuierlich laufende Abläufe vor. Es wird da zwar hin- und hergesprungen - aber nur wegen der Thread-Umschaltung quasi auf Prozessor-Ebene. Auf Applikationsebene wird nicht gesprungen, da gibt es nur Datenfluß-Fließen. Aber eben - theoretisch unendlich - viele Flüsse parallel. Als Programmierer muss du nun selbst dafür sorgen, dass parallele Abläufe, die gegenseitig abhängig sind, sich nicht in die Quere kommen. Und das geht mit nichts einfacher als mit SubVIs und Errorcluster-Sequenzierung.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: