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 

Analogmessung auf einem Kanal im Hintergrund



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!

25.02.2010, 17:48
Beitrag #31

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Analogmessung auf einem Kanal im Hintergrund
' schrieb:Ich muss aber trotzdem an der "deutschen" Benennung der Anschlüsse rumnörgeln:
Da bist du nicht der erste und wirst auch nicht der letzte sein. Ich bin ja der Meinung, so manche Sachen gehören einfach nicht übersetzt. Und von denen gibt es in LabVIEW viele.

Zitat:aber man muss meiner Meinung nach bei LabVIEW schon viele Konzepte kennen, und alle kombinieren.
Das siehst du richtig.
Deswegen tun sich Anfänger, die von den Verkäufern hören "ach, geht alles mit Klick, Klick", plötzlich extrem schwer, wenn's ans Eingemachte geht.

Zitat:(sehe ich als C-Programmierer wie einen Interrupt an)
Genau so sollten die Events auch funktionieren. Die Frage ist nur, ob LabVIEW respektive seine Entwickler das so wollen (und können). Ich hätte auch gerne, dass manche Sachen so mit "asynchronen Interrupts" gehen würden. Aber ist halt nicht.

Zitat:Events hingegen ( vorausgesetzt gut in LV implementiert, was ich aber stark annehme) verbrauchen nur dann CPU-Zeit, wenn Sie auftreten.
Zu Events gemäß einer Event-Sequenz musst man auch noch folgendes beachten: Auch eine Event-Seqeunz ist immer in einen Datenfluss eingebunden. Außerdem, was viel schlimmer ist: Ein VI hat zwei "Main-Threads": einen "BD-Thraed" und einen "FP-Thread" (UI-Thread). Wenn also bei einem VI das FP aktiviert ist, geht auch ein Teil der Rechenzeit an den UI-Thread - und ob der sich durch einen Event beenden lässt, bezweifle ich. Es wäre also besser, den DAQmx-Event in einem parallelen SubVI ohne FP zu betreiben.

Mal zwei gute Aspekte zu LabVIEW: Multitasking ohne Ende, ohne das der Anwender davon was merkt oder sich darum kümmern müsste. Außerdem wird das System von Version zu Version besser. Und da fällt bestimmt auch das Handlen von Events drunter. Events können nämlich auch in einer Datenflusssteuerung manche Sachen erheblich vereinfachen.

Zitat:Würde man das selber machen müssen, dann, ja dann: wären meine Events viel besser.Big Grin
Klar. Ich hab das mit Delphi und der DAQ-Library nicht anders gemacht. Cool


Wenn du erkannt, verstanden und akzeptiert hast, dass LabVIEW ein Datenfluss-orientiertes System ist und das ganze prinzipiell alleine mit einem in einen Datenfluss eingebundenen DAQmx-Read geht - dann darfst du auch alles in Events machen - sollen die LabVIEW-Spezis in Austin doch sagen was sie wollen. Yahoo

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
25.02.2010, 17:52
Beitrag #32

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
Analogmessung auf einem Kanal im Hintergrund
' schrieb:Ich mach das so.

Könnte ich das Beispiel von dir, auch dazu bringen, per Button zu starten, und dann eine Sekunde lang zu messen und sich dann wieder zu idle wechseln. Ich tu mich schwer, diese Ablaufzeit in die State-machine zu integrieren...

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.02.2010, 19:19 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2010 22:35 von dimitri84.)
Beitrag #33

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Analogmessung auf einem Kanal im Hintergrund
Aus dem Init Frame schickst du den Timer-Wert (ms) (Timing Palette) in ein Schieberegister. Im Record Frame vergleichst du diesen Timer-Wert aus dem SR mit dem aktuellen Wert. In einer zusätzlichen Case-Struktur im Record Frame kannst du dann per lokaler Variable den Record-Button wieder auf false setzen, wenn (Timer_Wert_aktuell - Timer_Wert_Schieberegister) > 1000 ist. Allerdings hängt so die Auflösung dieser Sekunde von deiner Iterationszeit ab.

Edit: Wie gesagt unterliegen deine Sekunden auf diese Weise (wahrscheinlich) einer gewissen Varianz. Deswegen ist mir da eine andere Methode eingefallen.

Die genaue Länge deiner Signalblöcke ist ja bekannt. Du wählst einfach eine geeignete Blockgröße, die du pro Iteration abspeicherst, und zählst die Iterationen seit dem Init-Frame. Fertig. Ab z.B. der 10., 100., oder 1000. Iteration (seit dem Init-Frame) setzt du den Recordbutton via lokaler Variable auf false.


Gruß dimitri

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.03.2010, 12:12
Beitrag #34

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
Analogmessung auf einem Kanal im Hintergrund
Hallo und danke an alle,
ich danke ich habe alle euren guten Vorschläge verarbeitet, und das Programmgerüst macht alles was ich brauche. Das Blockdiagramm ist aber für meine Begriffe etwas groß geworden, darf ich mal um euren Rat
Sonstige .pdf  Labview_Document.pdf (Größe: 176,71 KB / Downloads: 288)
bitten, ob das so noch durchgeht, oder um Vorschläge, wie ich es eleganter und schöner machen kann...

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.03.2010, 13:30
Beitrag #35

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Analogmessung auf einem Kanal im Hintergrund
Ich sag mir immer: Wenn ich einen abgeschlossenen Block am Bildschirm komplett sehe, soll's mir recht sein. Ich komm damit zurecht. Jede deiner While-Schleifen stellt so einen abgeschlossenen Block dar. Und auch die beiden Strukturen rechts und links der While-Schleifen.

Irgendwo hat aber auch diese meine Einstellung eine Grenze. Die Frage ist halt, ob bei fünfzig oder fünf While-Schleifen. Hast du denn mal versucht, die While-Schleifen in SubVIs auszulagern? Zumindest mit der für's Datenspeichern sollte das gar kein Problem sein.

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.03.2010, 14:08
Beitrag #36

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
Analogmessung auf einem Kanal im Hintergrund
' schrieb:Hast du denn mal versucht, die While-Schleifen in SubVIs auszulagern? Zumindest mit der für's Datenspeichern sollte das gar kein Problem sein.

Ja, hab ich versucht, aber bin da nicht weitergekommen, weil ich zig lokale variablen verwende, und die tun es (oder lieg ich da falsch?) nur in dem VI, wo auch das Frontpanel ist. Beispielsweise bei der Datenspeicherung verriegle ich den Button zum Anzeigen der TDMS-Datei bis die Datendatei geschlossen ist, usw.

Ein SUB-VI, in das 30 Kabel reinlaufen, ist auch nicht wirklich schöner anzusehen.

Es ist nur so, ich hab ein relativ kleines Frontpanel
Sonstige .pdf  Labview_Document.pdf (Größe: 57,02 KB / Downloads: 260)
, aber dazu halt ein schon recht großes Blockdiagramm.

Von Bierdeckel kann also gar keine Rede mehr sein.

Ich habe 2 Bildschirme, aber für das Blockdiagramm bräuchte ich alleine 2 Bildschirme übereinander. Natürlich kann ichs noch was zusammenschieben, aber wenn ichs dann erweitere, fehlt mir vermutlich wieder Platz...

Von der Struktur her bin ich total zufrieden, es ist wunderbar modular erweiterbar durch Erzeuger-Verbraucher und State-Maschines und läuft total performant (wegen der Queues und Events).

Ich wollte hier nur mal die Rückmeldung hören: Ja, so machen wirs auch, oder: NEIN, das geht viel besser.

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.03.2010, 15:22
Beitrag #37

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Analogmessung auf einem Kanal im Hintergrund
' schrieb:weil ich zig lokale variablen verwende
Achja. Isagnix_2(<= mal was neues).
Zitat:und die tun es (oder lieg ich da falsch?) nur in dem VI, wo auch das Frontpanel ist.
Ja, du liegst nicht falsch.
Zitat:Beispielsweise bei der Datenspeicherung verriegle ich den Button zum Anzeigen der TDMS-Datei bis die Datendatei geschlossen ist, usw.
Das Problem, was ganz allgemein auftritt, ist, dass parallele Abläufen ggf. synchronisiert werden müssen. In einem VI kann man das sehr leicht und einfach mit Lokalen Variablen machen. VI-übergreifend ist das jetzt nicht mehr so einfach. - Naja, eigenlich doch: Dafür gibt es die Synchronisations-Palette (in deinem Falle: Semaphoren?).
Eine weitere Möglichkeit, ohne den Algorithmus ändern zu müssen, wären Referenzen. Du übergibst also eine Referenz auf TDMS-View in das SubVI und kannst dann im SubVI per Referenz auf TDMS-View zugreifen. (Sowas z.B. mach ich.)

Zitat:Ein SUB-VI, in das 30 Kabel reinlaufen, ist auch nicht wirklich schöner anzusehen.
Auch hier hast du wieder recht: Pack die 30 Elemente in einen Cluster (den es nur im BD gibt: bundlen ohne Name) und gib den an das SubVI. Oder leg die 30 Elemente in einen Cluster am FP und übergib diesen Cluster.

Zitat:Es ist nur so, ich hab ein relativ kleines Frontpanel, aber dazu halt ein schon recht großes Blockdiagramm.
Ja, auch hier muss ich dir wieder Recht geben: Finde ich auch. Unsure

Zitat:aber wenn ichs dann erweitere, fehlt mir vermutlich wieder Platz...
Top1

Zitat:Ja, so machen wirs auch, oder: NEIN, das geht viel besser.
Eigenlich hab ich nie so viele parallele Schleifen. Eigenlich immer drei Stück: Eine mit einer Event-Struktur. Eine, in der nur Anzeigeelemente zyklisch refresht werden (z.B. aus Meldern). Und eine, in der die Statemachine für die Steuerung läuft. Dieser Aufbau ist applikationsunabhängig. Alles, was applikationsbedingt keinen direkten Zugang zum Frontpanel hat/braucht, ist in einem ggf. parallelen SubVI ausgelagert. Das würde jetzt bedeutet: Kleines FP - kleines BD.

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
08.03.2010, 09:05
Beitrag #38

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
Analogmessung auf einem Kanal im Hintergrund
' schrieb:Beispiel:

Je länger die auslesende Schleife wartet, desto mehr muss sie aus der Queue lesen.

[attachment=53118:BD.png]

Gruß SeBa

Nochmal danke für dein Beispiel, funktioniert wunderbar. Ein Detail tuts sogar besser als erwartet, ich versteh nur nicht ganz warum es so "gut" funktioniert, und zwar: Die untere while-Schleife holt ja alle Daten aus der Queue und zeigt diese auch absolut korrekt an. Was aber, wenn die Queue leer ist und gar keine Daten drinn sind ? Es ist tatsächlich so, das dann auch nichts passiert, was völlig super ist, ich frage mich nur warum ? Ich hätte eher vermutet, man müsste in einem True/false auswerten, ob Daten drinn sind. Selbst wenn die for-Schleife hinter dem , Queue leeren VI fehlt und das warte_n_ms-vi , funktioniert das ganze immer noch wunderbar. Ich nehme an, wenn man einen leeren Signalverlauf einfach in ein Signalverlaufsdiagramm reinlaufen lassen kann, und es passiert dann einfach nichts, oder was ist die Erklärung, die eben kein Error-Case für eine leere Queue nötig ist ?

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2010, 11:02
Beitrag #39

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Analogmessung auf einem Kanal im Hintergrund
Die Queue wartet solange bis Daten anliegen. Das kann ein Wert sein oder Mehrere, jenachdem wie schnell du die Queue ausliest.

Du musst die Dequeue-Schleife aber nicht timen. Lässt du nur das Queue-Leeren VI ohne ein Wait arbeiten, wird die Schleife angehalten bis entweder Daten anliegen oder der Timeout überschritten wird.

Wenn du dir mal die Schleifencounter anschaust, wirst du es sehen.

Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Analogmessung und Lichtschranke Herri 4 3.990 09.12.2019 14:48
Letzter Beitrag: MarcoN
  DAQ Kanal erzeugen jodh14 11 8.706 21.03.2018 15:37
Letzter Beitrag: jodh14
Question DAQ - Task und Kanal Synchronisierung pandamir 20 23.472 04.09.2013 18:40
Letzter Beitrag: Spoony
  DAQmx - Kanal 2 Abtastrate abhängig von Kanal 1 DerJohannes 6 7.081 29.08.2013 17:50
Letzter Beitrag: DerJohannes
  Kanal in Task auswählen Sundypha 10 11.108 15.01.2013 11:07
Letzter Beitrag: Sundypha
  Samples pro Kanal und Zeiterfassung Mimo_LV002 6 8.025 15.12.2012 20:02
Letzter Beitrag: GerdW

Gehe zu: