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 

Messung und Ausgabe 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!

03.08.2009, 13:45
Beitrag #1

H_S Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 131
Registriert seit: May 2009

2010
2009
DE

49085
Deutschland
Messung und Ausgabe parallel laufen lassen
Hey,
wollt einmal allgemein, ohne dass ich mein "großes" vi hier hochlade ein Sache zum parallelen ablauf von Messung und Ausgabe fragen.

Welche Struktur kann man da am besten verwenden(Melder,Queues, Master/Slave....) ?? Dazu erklär ich einmal worum es geht:
Ziel ist es, alle 45sekunden eine neue Datenausgabe zu starten(ca 10mal). Bei start der Ausgabe, startet gleichzeitig die Messung. Bei dieser Messung ist die Besonderheit, dass sie einmal kontinuirlich am laufen ist UND außerdem alle 50sekunden einen Messwert in ein Array speichert.
Wie ist diese Situation möglich, ohne sich da wild in etwas zu verfangen?

Danke für eure TippsSmile
H_S
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.08.2009, 15:17
Beitrag #2

H_S Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 131
Registriert seit: May 2009

2010
2009
DE

49085
Deutschland
Messung und Ausgabe parallel laufen lassen
So habe grade mal einen Versuch gestartet mit Queues (Erzeuger/Verbraucher)

Ist dies so möglich oder gibts da noch bessere Möglichkeiten?
Fragen zu dem vi:
Der Stopp button lässt sich nicht betätigen.....wieso?

Bei dem Abschnitt "Messung" wird ja ein Element in der Erzeugerschleife in die Funktion "Elelment einfügen" eingefügt. Leider geht das ja nur mit "einem" Element oder? Wenn man z.B. 10 Analog Eingänge hat muss man ja auch 10 Elemente in diese Funktion einfügen können oder muss man diesen ganzen Abschnitt "Messung" dann 10 mal machen???

schöne Grüße
Lv86_img


Angehängte Datei(en)
Sonstige .vi  EIN_und_AUSGABE_parallel.vi (Größe: 19,09 KB / Downloads: 296)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2009, 11:50
Beitrag #3

H_S Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 131
Registriert seit: May 2009

2010
2009
DE

49085
Deutschland
Messung und Ausgabe parallel laufen lassen
hey,
hat sich das mal jemand angeschaut oder ist die Frage unklar?
Wäre Dankbar für Tipps ob das so ok ist mit den Queues...

H_S
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2009, 17:32
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Messung und Ausgabe parallel laufen lassen
' schrieb:Ist dies so möglich oder gibts da noch bessere Möglichkeiten?
Prinzipiell mach ich das auch immer so: Sample-Werte in Queue/Melder schreiben. Wer sie haben will, soll sie aus Queue/Melder auslesen.

Erstens:
Das mit den While-Schleifen im Event-case ist bestimmt nur ein Muster, oder? Event-Case ist für Events da, nicht für dauernd laufende Aufgaben.

Zweitens:
Die "Ausgabe alle 2 Sekunden" ist prinzipiell so machbar. Ob es hier bessere Möglichkeiten gibt, hängt von der Applikation ab.

Drittens:
Bei Messung wird ein Problem auftreten: In Queue können zwar viele reinschreiben, aber immer nur einer auslesen (alles andere ist sinnlos). Wenn also zwei While-Schleifen Daten aus Queue verarbeiten sollen, müssen auch zwei Queues/Melder vorhanden sein. Eine Online-Anzeige (= alle 4 Sekunden messen ...) mach ich immer so: Die sampelnde Schleife (Schleifenraster 50ms) schreibt die gesampelten Daten (Sample-Raster z.B. 1kHz, also 50 Stück Daten) in eine Queue. Der 50te Wert kommt in einem Melder und gilt als Augenblickswert.


Zitat:Der Stopp button lässt sich nicht betätigen.....wieso?
Lässt der doch. Du musst nur 2 Sekunden warten. Tongue
Willst du die Sache mit dem Stopp-Button so beibehalten oder ist das jetzt nur wegen dem Versuchs-VI?

Zitat:Bei dem Abschnitt "Messung" wird ja ein Element in der Erzeugerschleife in die Funktion "Elelment einfügen" eingefügt. Leider geht das ja nur mit "einem" Element oder? Wenn man z.B. 10 Analog Eingänge hat muss man ja auch 10 Elemente in diese Funktion einfügen können oder muss man diesen ganzen Abschnitt "Messung" dann 10 mal machen???
Du hast in allen Punkten Recht. Mach halt. Tongue
Wenn du 10 analoge Eingänge hast, dann fasst du diese Eingange in eine einzige Analog-Task zusammen. Ein Daq-Read-Element kannst du nun so einstellen, dass es dir ein 2D-Array ausgibt. Dieses Array kannst du dann in eine Queue schreiben. Also: 10 Kanäle - ein Queue-Element.

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
04.08.2009, 17:43
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Messung und Ausgabe parallel laufen lassen
' schrieb:Ziel ist es, alle 45sekunden eine neue Datenausgabe zu starten(ca 10mal). Bei start der Ausgabe, startet gleichzeitig die Messung. Bei dieser Messung ist die Besonderheit, dass sie einmal kontinuirlich am laufen ist UND außerdem alle 50sekunden einen Messwert in ein Array speichert.
Ich könnte mir auch folgende Lösungsmöglichkeit vorstellen.

Pack beides (Datenausgabe und Samplen) in ein SubVI. Mach in dieses SubVI eine Statemachine rein, die genau den beschriebenen Ablauf hat. Mach die Statemachine mit einer Schrittdauer von 50ms. Alle 50ms liest du per DaqRd alle Kanäle ein. Die kommen in eine Queue (oder werden in einem Array aufaddiert und das kommt in eine Queue). Den ersten Wert aus dem Daqrd schreibst du in einen Melder. Ist das Lesen 20*45 mal gemacht worden, kommt zwischendrinn mal ein anderer Schritt dran: der zum Datenausgeben.

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
05.08.2009, 08:28
Beitrag #6

H_S Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 131
Registriert seit: May 2009

2010
2009
DE

49085
Deutschland
Messung und Ausgabe parallel laufen lassen
Hey,
danke für die TippsSmile

Zitat:Pack beides (Datenausgabe und Samplen) in ein SubVI. Mach in dieses SubVI eine Statemachine rein, die genau den beschriebenen Ablauf hat. Mach die Statemachine mit einer Schrittdauer von 50ms. Alle 50ms liest du per DaqRd alle Kanäle ein. Die kommen in eine Queue (oder werden in einem Array aufaddiert und das kommt in eine Queue). Den ersten Wert aus dem Daqrd schreibst du in einen Melder. Ist das Lesen 20*45 mal gemacht worden, kommt zwischendrinn mal ein anderer Schritt dran: der zum Datenausgeben.

kannst du mir da ein Beispiel zeigen? komme da irgendwie nicht zurecht mit dem zusammenmischen von queues und meldern.

Zitat:Das mit den While-Schleifen im Event-case ist bestimmt nur ein Muster, oder? Event-Case ist für Events da, nicht für dauernd laufende Aufgaben.

Wieso denn nicht? sieht man doch immer wieder, das die verbraucherschleife in eine while schleife eingebettet ist.

Zitat:Bei Messung wird ein Problem auftreten: In Queue können zwar viele reinschreiben, aber immer nur einer auslesen (alles andere ist sinnlos). Wenn also zwei While-Schleifen Daten aus Queue verarbeiten sollen, müssen auch zwei Queues/Melder vorhanden sein. Eine Online-Anzeige (= alle 4 Sekunden messen ...) mach ich immer so: Die sampelnde Schleife (Schleifenraster 50ms) schreibt die gesampelten Daten (Sample-Raster z.B. 1kHz, also 50 Stück Daten) in eine Queue. Der 50te Wert kommt in einem Melder und gilt als Augenblickswert.

Auch hier wärs cool wenn du das mal an einem Beispiel zeigen könntest. Dann kann man sich das immer besser vorstellen wie du das genau meinst.


Zitat:Willst du die Sache mit dem Stopp-Button so beibehalten oder ist das jetzt nur wegen dem Versuchs-VI?
Ne, das muss ich noch überdenken, das stop schneller ausführt.

Nochmals danke für die BemühungenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.08.2009, 10:13
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Messung und Ausgabe parallel laufen lassen
' schrieb:kannst du mir da ein Beispiel zeigen?
Hier hab ich mal was gepostet. Das "HauptVI" heißt AIn-Klasse. Da kannst du das mit der Queue und dem Melder sehen.

Zitat:komme da irgendwie nicht zurecht mit dem zusammenmischen von queues und meldern.
Einfach alles parallel machen: Queue und Melder erzeugen, Queue mit Daten beschreiben, Melder mit Daten beschreiben ... Guckst du auch Muster.

Zitat:Wieso denn nicht? sieht man doch immer wieder, das die verbraucherschleife in eine while schleife eingebettet ist.
Es gibt keine Verbraucherschleife (zumindest kenn ich keine).
Es gibt die Einbettung eines Queue-Leseelementes in eine While-Schleife. Das ist auch richtig so und sollte auch so gemacht werden. Dieser Punkt ist aber gar nicht mein Anliegen gewesen. Mir kommt es darauf an, dass in einem Case einer Event-Struktur nichts lange Dauerndes gemacht wird. Außerdem ist eine Event-Struktur nicht als Schleife zu verstehen, sondern als Element innerhalb einer Schleife. Eine Event-Struktur hält die Task, in der sie steht, solange an, bis ein Event eingetreten ist.

Zitat:Auch hier wärs cool wenn du das mal an einem Beispiel zeigen könntest. Dann kann man sich das immer besser vorstellen wie du das genau meinst.
Hmm, da muss ich erst kucken.

Zitat:Ne, das muss ich noch überdenken, das stop schneller ausführt.
1. Möglichkeit: Die 2 Sekunden in 40*50ms quanteln und die Stopp-Taste alle 50ms abfragen.
2. Möglichkeit: Die Stopp-Taste in einen richtigen Event-Case legen und dort dann die Queues löschen ...

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 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2 Motoren Synchron laufen lassen 911tom 5 8.306 22.12.2017 08:50
Letzter Beitrag: kpa
  Stop während Eventstruktur am laufen ist haydenfan 5 5.477 05.11.2013 09:50
Letzter Beitrag: haydenfan
  vi 1 sek. laufen und speichern wen 9 5.461 14.01.2013 10:20
Letzter Beitrag: GerdW
  SubVi Parallel laufen und schliessen Dom0503 8 8.279 01.08.2011 14:24
Letzter Beitrag: Dom0503
  Sub-VI parallel und unabhängig laufen lassen viperjumper 2 5.607 21.07.2011 09:42
Letzter Beitrag: viperjumper
  VI im Hintergrund laufen lassen uecontitech 11 12.945 07.10.2010 12:22
Letzter Beitrag: GerdW

Gehe zu: