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 

Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen



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!

19.01.2018, 09:22
Beitrag #1

ElBerto Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2018

2016
-
DE_EN



Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen
Hallo zusammen!

Ich muss für meine Diplomarbeit ein Programm für das Ni-USB 6002 programmieren. Dieses Programm steuert ein Messgerät und sollte folgendes können:
Es soll kontinuierlich ein analoges Spannungssignal ausgegeben werden, welches im Laufe der Messung linear ansteigt. Zusätzlich sollen die Signale am analogen Eingang aufgezeichnet werden. Dazu sollen jeweils etwa 100-1000 Werte gemittelt werden. Es soll in ein Wert pro Sekunde gespeichert werden. Wichtig ist, dass das Messintervall sehr genau ist, also nur um max. 0,1% von der Sekunde abweicht. Im Optimalfall sollte man das Messintervall noch verändern können.

Natürlich habe ich mich schon selbst daran versucht, und meine mich schön langsam auch mit der Programmierung zurecht zu finden. Ich habe auch schon einen ersten Entwurf, der aber leider noch weit davon entfernt ist, das zu machen was ich will. Zum Üben habe ich erstmal den Ausgang mit dem Eingang der USB Karte verbunden. Zuerst habe ich mich damit beschäftigt, die Daten sekundlich auszulesen, zu mitteln und in ein Messfile zu schreiben.
Das funktioniert anscheinend auch, allerdings kann ich die Messzeit pro Wert nicht variieren. Ich kann lediglich "Samples to read" bzw. die "Rate" verändern, dann verändert sich auch die Messrate meines Programms. Aber das kann ja nicht die saubere Lösung für das Problem sein...

Langer Rede kurzer Sinn: Hat jemand von euch eine Idee wie ich mein Problem gut und sauber lösen kann? Ich erwarte von euch keinen Code, ich bin sehr wohl gewillt das selber zu machen. Ein paar Tipps zur Bewerkstelligung wären allerdings schon sehr hilfreich.

Liebe Grüße,
Michael


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2018, 09:40 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2018 09:41 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen
Hallo Michael,

herzlich willkommen im Forum!

Zitat:Ich muss für meine Diplomarbeit ein Programm für das Ni-USB 6002 programmieren. Dieses Programm steuert ein Messgerät und sollte folgendes können:
Es soll kontinuierlich ein analoges Spannungssignal ausgegeben werden, welches im Laufe der Messung linear ansteigt. Zusätzlich sollen die Signale am analogen Eingang aufgezeichnet werden. Dazu sollen jeweils etwa 100-1000 Werte gemittelt werden. Es soll in ein Wert pro Sekunde gespeichert werden. Wichtig ist, dass das Messintervall sehr genau ist, also nur um max. 0,1% von der Sekunde abweicht. Im Optimalfall sollte man das Messintervall noch verändern können.
- Deine NI6002 erlaubt hardware-timing sowohl beim AI als auch beim AO, was schon mal sehr gut ist…
- LabVIEW bringt jede Menge BeispielVIs mit, sehr viele davon auch zum Thema DAQmx…
- Um ein "genaues Messintervall" zu erreichen, solltest du (wie in deinem DAQAssi) eine Samplerate verwenden: damit bestimmt die Messhardware die Taktrate - und die ist ziemlich genau…

Vorschlag:
- schau dir die BeispielVIs zum Ausgeben von Waveforms an
- schau dir die BeispielVIs zum Einlesen von AI-Werten an
- schau dir die Beispiele zum Synchronisieren von AI und AO an (ist das bei deiner Aufgabe wichtig?)
- versuche die ExpressVIs zu meiden, sie bringen dir später nur Ärger ein…
- wenn du einen Wert pro Sekunde speichern willst, solltest du so viele Sample einesen, wie deine Samplerate eingestellt ist und diese dann mitteln…

Zitat:Ich kann lediglich "Samples to read" bzw. die "Rate" verändern, dann verändert sich auch die Messrate meines Programms. Aber das kann ja nicht die saubere Lösung für das Problem sein...
Doch, das ist es: wenn die Hardware das Timing bestimmt, bist du wesentlich genauer als mit Wartezeiten unter WindowsOS!
Zeit := Samplerate*Sampleanzahl…

Tipp:
- ab und zu mal AutoCleanup benutzen
- auf korrekte Datentypen achten: am einfachsten Konstanten/Controls/Anzeigen per Rechtsklick auf den jeweiligen In/Out einer Funktion erzeugen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2018, 12:14
Beitrag #3

ElBerto Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2018

2016
-
DE_EN



RE: Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen
Hallo!

Sorry für die verspätete Rückmeldung und danke für die schnelle Antwort!
Ich hab das Programm jetzt hinbekommen, es scheitert nur an einer kleinen Sache, die ich bei Gott nicht verstehen kann. Wenn ich beim angefügten Programm die Messung mit "Start Measurement" starte, funktioniert alles wie es soll. Allerdings sieht man beim Öffnen des Datenfiles, dass das Programm in die erste Spalte des Datenfiles auch zusätzliche Daten aus alter Messung anfügt.

Damit ihr den Fehler auch reproduzieren könnt:
1. start voltage 0, emd voltage 30, step time 100, step size 1
2. Start Measurement
3. Nach Ende der Messung das Programm mit rotem Knopf beenden
4. Programm erneut starten und Messung starten
--> Nach Ende der zweiten Messung merkt man beim Betrachten des Datenfiles den Fehler.

Seltsamerweise tritt das Problem nicht auf, wenn man vor dem Start der 2. Messung bei Merge Signals kurz auf 3 Channels und gleich wieder zurück auf 2 zieht.

Bitte entschuldigt den schrecklichen Programmierstil. ich will das Programm nur zum Laufen bringen, dann wird es nicht mehr verändert.

Bei Fragen stehe ich jederzeit zur Verfügung!

Lg
Michael


Angehängte Datei(en)
16.0 .vi  Daten_ausgeben_lesen_v15.vi (Größe: 281,39 KB / Downloads: 291)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2018, 12:45 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2018 12:53 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen
Hallo ElBerto,

Zitat:Bitte entschuldigt den schrecklichen Programmierstil.
Nein.

Zitat:ich will das Programm nur zum Laufen bringen, dann wird es nicht mehr verändert.
Du solltest das VI aber DRINGEND überarbeiten! Wirklich!

Es ist voller RaceConditions - die eben auch zu den von dir beschriebenen Problemen führen können!

Also bitte:
- möglichst ALLE "value"-Propertynodes durch Drähte ersetzen
- ungenutzte Terminals benutzen!
- AutoCleanup benmühen
- NIE das Label von Controls/Indicators löschen (im FP verstecken ist i.O.)
- Schieberegister nutzen, um Werte in Schleifen zu speichern

Nur mal als Anregung ein kleiner Ausschnitt deines VIs nach ein paar simplen Anpassungen (ohne Anspruch auf Vollständigkeit!):
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2018, 14:36
Beitrag #5

ElBerto Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2018

2016
-
DE_EN



RE: Anfänger braucht Hilfe: Analoge Werte schreiben und auslesen
Danke für die Antwort!
ich werde mal anfangen soweit ich kann mein Programm zu bereinigen. Wenn ich fertig bin werde ich es erneut posten, um vll noch den ein oder anderen Verbesserungsvorschlag zu bekommen.

Lg
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
  simuliertes DAQ-Gerät, Anfänger Heiko19 2 4.362 19.10.2015 06:14
Letzter Beitrag: Heiko19
  Quadratur Encoder: Counter Werte einzeln auslesen? Daniel_S 6 8.051 23.03.2015 10:26
Letzter Beitrag: Daniel_S
  Analogausgang ansprechen, Anfänger talljohn 2 4.210 27.09.2013 08:11
Letzter Beitrag: GerdW
  Falsche Werte durch paralleles Einlesen digitaler und analoger Werte daxel 13 13.178 20.08.2013 12:03
Letzter Beitrag: daxel
  Analoge Ausgabe: Werte im Puffer erhöhen? Löffje 5 8.131 11.04.2013 08:25
Letzter Beitrag: GerdW
  2 Analoge Signale einlesen und in Chart schreiben Snowball 6 7.098 17.10.2011 08:30
Letzter Beitrag: Schwand

Gehe zu: