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 

Schleifen gegenseitig "verriegeln"



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!

21.05.2011, 18:59
Beitrag #1

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
Schleifen gegenseitig "verriegeln"
Hallo und guten Abend zusammen,

ich probiere seit einigen Tagen die Störungsfreie Kommunikation zwischen dem PC und dreier elektronischer Lasten hinzubekommen.
Ich habe zwei parallele Schleifen eingerichtet, die erste sendet Leistungsvorgaben an die Lasten und wartet dann eine einstellbare Dauer, die zweite Schleife misst in einem einstellbaren Intervall (also z.B. jede Sekunde) Spannung, Strom, Leistung, etc.
Allerdings behindern sich die Datensätze gegenseitig: Wenn die Messschleife Daten abruft, während Daten an die Lasten gesendet werden, spielen die Lasten verrückt und nehmen nicht die Werte, die jeder von ihnen zugeschickt wird, an, sondern halt irgendwas.
Ich müsste es einrichten, dass die erste Schleife die Werte an die Lasten übergibt und die zweite Schleife nur dann und nur solange misst, wie die erste Schleife nichts sendet, also dann auch von der ersten Schleife eine Meldung bekommt, dass es jetzt weitergeht mit der Datenübermittlung und sie mit messen aufhören soll, bis die erste fertig ist.

Hat jemand einen Hinweis wie ich das am geschicktesten anstelle? Ich habs schon mit gegenseitiger "Verriegelung" über True/False Cases und Meldern probiert, habs aber nicht hinbekommen. Bahn
Meine aktuelle Idee ist die, dass ich die Messschleife als For statt While-Schleife einrichte und die Anzahl der Schleifendurchläufe in Abhängigkeit von den einstellbaren Verweilzeiten/Messintervallen realisiere, bin mir aber nicht sicher, da muss es doch was einfacheres geben?

Vielen Dank schon einmal,
Jonas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.05.2011, 20:20
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 740
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Schleifen gegenseitig "verriegeln"
Hi
Sieh mal in der Helfe und dem Beispielen unter dem Stichwort Semaphore nach.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.05.2011, 20:39
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Schleifen gegenseitig "verriegeln"
Ich bin nicht ganz überzeugt, daß Dein Problem wirklich so kompliziert ist, wie es sich anhört. Wenn ja, dann liegt Holger mit seinem Vorschlag richtig.

Normalerweise sind aber die meisten Synchronisationsprobleme bei parallel arbeitenden Erzeuger- und Verbraucher-Schleifen durch Verwendung von Meldern oder Queues zum Datenaustausch perfekt zu lösen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 09:06
Beitrag #4

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
RE: Schleifen gegenseitig "verriegeln"
Na ja, das Problem ist ja, dass die Messschleife, egal in welchem Prozess sie sich befindet, sofort abbrechen muss, sobald die Wertübergabe, also die primäre Schleife wieder anfängt, Werte an die Lasten zu senden, da es sonst zu Kollisionen kommt. Wäre denn die Realisierung von Timimg-Schleifen mit Prioritäten sinnvoll? Ich habe das eben in den LV Beispielen gefunden und es scheint mir genau das Richtige zu sein.
Wie ich die Queues da einbauen soll, verstehe ich nicht ganz. Semaphore wären auch denkbar.

Das Blöde ist einfach, dass die gemessenen Werte durch meine Programmierung unter Umständen einfach "Aussetzer" haben, also wenn zum Beispiel jede Sekunde ein Wert aufgeschrieben werden soll, ich die Schleife dann aber genau in einem Messvorgang abbreche, um neue Werte an die Lasten zu senden, werden mir ja logischerweise ab und an einfach Werte fehlen.

Eine andere Überlegung wäre auch, gar nicht zwei Schleifen zu programmieren, sondern alles in eine zu packen und mittel Statemachine zu verfahren. Dann würde ich die vorgegebene Wartezeit einfach als dem Messvorgang zur Verfügung stehende Zeit zuschreiben und durch die fest definierte Reihenfolge wären Kollisionen ausgeschlossen?

Ich verzweifel hier an den einfachsten Überlegungen. Zu meiner Verteidigung: Ich bin (fast absolvierter) Energieingenieur und kein Programmierer Angel_not
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 09:07
Beitrag #5

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: Schleifen gegenseitig "verriegeln"
Kannst Du mal Dein Bsp. (am Besten vereinfacht) hochladen?
Ansonsten auch mein Tip: Semaphoren oder Queues verwenden (je nach Anwendung)

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2011 09:27 von gm-axion.)
Beitrag #6

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
RE: Schleifen gegenseitig "verriegeln"
So anbei das Programm.
Da man extra die Gerätetreiber braucht, dürften einige VIs nicht angezeigt werden.
Das Problem liegt übrigens im Zustand "Messvorgang" Big Grin


Angehängte Datei(en)
2010 .vi  Lastprogramm11_einfach.vi (Größe: 35,9 KB / Downloads: 174)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 10:22 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2011 10:29 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Schleifen gegenseitig "verriegeln"
In 2 Schleifen hast Du wegen fehlendem Wait 100% CPU-Last - wenn das mal gut geht. Daß die beiden Schleifen selbst unterbrechbare Wartezeit erzeugen, ändert nichts daran, daß ein Wait heineingehört.

Zitat:Ich bin (fast absolvierter) Energieingenieur und kein Programmierer

Gute Wahl: Ein Ingenieur wird, wenn es sich um ingenieurnahe Projekte handelt, als diletantischer Programmierer vermutlich besser sein, als ein Profi- Programmierer ohne technischen Background.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 14:17
Beitrag #8

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
RE: Schleifen gegenseitig "verriegeln"
Zitat:In 2 Schleifen hast Du wegen fehlendem Wait 100% CPU-Last - wenn das mal gut geht. Daß die beiden Schleifen selbst unterbrechbare Wartezeit erzeugen, ändert nichts daran, daß ein Wait heineingehört.

Wie "wait" ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 17:56
Beitrag #9

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
RE: Schleifen gegenseitig "verriegeln"
Okay, ich denke ich habe das jetzt verstanden (nach eigener Recherche).
Du spielst sicher auf die Zustandsautomaten mit Queues und Ereignisstruktur an, wodurch ein "Anhalten" und sparen von CPU Leistung realisiert wird?
Das werde ich dann wohl noch einbauen müssen.
Die Synchronisation der "Dateneinbahnstraße" werde ich mal mit Semaphoren ausprobieren.
Wünscht mir Glück Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.05.2011, 03:33 (Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2011 03:34 von gm-axion.)
Beitrag #10

gm-axion Offline
LVF-Grünschnabel
*


Beiträge: 45
Registriert seit: Aug 2010

2010
2010
DE


Deutschland
RE: Schleifen gegenseitig "verriegeln"
Hi,
ich habe mich nochmal gefragt, wieso es überhaupt zu den Konflikten mit den Lasten kommt? Im Prinzip wird doch nur einmal gesendet jede Minute, ansonsten nur empfangen. Das sollte über GPIB doch parallel ablaufen können?
Ich bin der Meinung, mein altes Programm hätte die Fehler nicht gehabt. Ich habs zum Vergleich mal mit rangehängt, vielleicht sieht jemand einen entscheidenden Unterschied?
Mfg,
Jonas


Angehängte Datei(en)
0 .vi  Lastprogramm.vi (Größe: 95,75 KB / Downloads: 158)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: