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 

1 Sample (HW-getaktet)



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!

01.12.2009, 19:36
Beitrag #1

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
1 Sample (HW-getaktet)
Ich komm irgendwie nicht weiter. Entweder geht's nicht oder ich finde nichts. Und zwar folgendes:

Ich will eine analoge Ausgabe machen - und zwar Einzelwertausgabe, HW-getaktet, 10Hz (zehn Hertz = 100ms). Ich hab also im MAX eine Task angelegt PCI-6731 (eine reale Karte), 2 Kanäle, 1 Sample (HW-getataktet), 10Hz, interner Takt. Wenn ich diese Task im MAX ausführen lasse, geht alles wie ich will. Nachweis: Stelle ich 10Hz ein, läuft alles problemlos. Stelle ich 1kHz ein, kommt die Meldung "Anwendersoftware zu langsam". So täte ich das haben wollen.
Jetzt hab ich genau diese Task inLv86_img1 geladen, gestartet, schreibe in While-Schleife Daten drauf, usw. Nur: Da werden die Daten nicht mit dem in der Task angegebenen Raster 10Hz ausgegeben, sondern in der Geschwindigkeit der While-Schleife. Siehe Bild.

In der While-Schleife befindet sich eine 25ms-Wartezeit und eine Berechnung für die Schleifenlaufzeit (Ergebnis X-Y). Ich will haben, dass X-Y 100ms anzeigt, obwohl die Wartezeit mit 25ms angegeben ist. Da der DAQmx-Write auf 10Hz eingestellt ist, sollte dieses Element solange warten, bis die 100ms um sind => Anzeige 100ms. Angezeigt wird aber 25ms. Weiteres Problem: Stelle ich die Schleifenzeit auf 200ms, so kommt nicht wie im MAX die Meldung "Anwendersoftware zu langsam". Nächstes Problem: verwende ich als Karte keine reale PCI-6731 sondern eine simulierte PCI-6731 - dann geht auch in LV alles so wie im MAX und so wie ich mir das vorstelle.

Meine Frage:
Wie bringe ich das Element DAQmx-Write dazu, sich erst dann zu beenden, wenn die Rasterzeit, die im MAX angegeben ist, um ist? Geht das überhaupt so wie ich mir das vorstelle? Warum geht's im MAX anders als in LV?

Was ich eben nicht machen will, ist ein Array (oder Signalverlauf) für eine halbe Stunde zu berechnen, und das dann ausgeben. Ich will eben Einzelwertausgabe machen.

Im Examplefinder hab ich eben keine Einzelwertausgabe mit 1 Sample (HW-getaktet) gefunden.


Angehängte Datei(en) Thumbnail(s)
   

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
02.12.2009, 14:59
Beitrag #2

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
1 Sample (HW-getaktet)
Ich will hier nicht einer Koryphäe was erzählen, aber prinzipiell würde mich folgendes interessieren:

' schrieb:..., sich erst dann zu beenden, wenn die Rasterzeit, die im MAX angegeben ist, um ist?

Warum erstellst du den Task im Max und nicht im VI? Gibt's da überhaupt einen Unterschied?



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
02.12.2009, 15:56 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2009 16:01 von IchSelbst.)
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
1 Sample (HW-getaktet)
' schrieb:Ich will hier nicht einer Koryphäe was erzählen
Ja. Aber: Nur durch gegenseitiges Erzählen fällt mir, wenn nicht dir, ein, was anders ist oder ich noch probieren könnte.

' schrieb:Warum erstellst du den Task im Max und nicht im VI?
Ganz einfach: Weil's schneller geht. Zumal für Testzwecke wie diesen. Außerdem sagt dir der MAX auch gleich, ob was falsch eingestellt ist. LV sagt das nicht direkt.

Im wahren Leben geht es dann so: Erst im MAX eine Task erstellen mit allem was dazu gehört. Dann diese Task in LV per Kontextmenü in ein Konfigurations-SubVI umwandeln. Dann macht auch LV genau das selbe, was der MAX auch gemacht hat. Jetzt muss es in LV gehen wie im MAX: Geht's im MAX, muss es auch in LV gehen.

Zitat:Gibt's da überhaupt einen Unterschied?
Eigentlich möchte ich - und wohl auch NI - es so haben, dass es in beiden Systemen gleichmäßig läuft.


Apropos NI-Hotline: Naja, schau mer mal ... (spricht: die einzig guten verlassen regelmäßig den Hotlineposten)

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.12.2009, 08:14
Beitrag #4

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
1 Sample (HW-getaktet)
Hallo IchSelbst,
von SignalExpress weiß ich, das bei Anwahl HW-getaktet die Task bei jeder Iteration getartet und gestoppt wird. Deshalb die Variante1 im Anhang mit der Vermutung das der MAX dies ebenfalls macht..
Mir ist noch etwas aufgefallen und zwar wenn man den
DAQ-Assi einrichtet - Rechtsclick - in NI-DAQmx-Task umwandeln - DAQ-Assi wieder mit OK bestätigen –Rechtsclick auf die Task-Konstante – Code erzeugen – Screenshot 2 wird ein
DAQmx Wait For Next Sample Clock Vi in der While erzeugt.

Vielleicht hilft es Dir.

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2009, 11:16
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
1 Sample (HW-getaktet)
' schrieb:Von SignalExpress weiß ich, das bei Anwahl HW-getaktet die Task bei jeder Iteration getartet und gestoppt wird.
Eigentlich müsste es da zu Synchronitätsproblemen kommen. Das macht aber nichts, weil:

Zitat:Mir ist noch etwas aufgefallen und zwar wenn man den DAQ-Assi einrichtet - Rechtsclick - in NI-DAQmx-Task umwandeln - DAQ-Assi wieder mit OK bestätigen –Rechtsclick auf die Task-Konstante – Code erzeugen – Screenshot 2 wird ein DAQmx Wait For Next Sample Clock Vi in der While erzeugt.
"Wait For Next Sample Clock " - das klingt doch recht vielversprechend. Werd ich mal suchen und ausprobieren.

[*grübel*]

Obwohl sich dann die Frage stellt, warum es mit einer simuliertes Karte geht, mit einer realen nicht. Außerdem: Wenn sich der DAQmx-Wr nicht an den Sampleclock hält, warum dann dieses Element?


Hinweis:
Der Experte bei NI ist auch noch am Problem lösen.

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.12.2009, 18:05
Beitrag #6

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
1 Sample (HW-getaktet)
Wait for next Sample clock funktioniert (sofern du nicht noch einen wait timer einbaust in die schleife!). die schoenere loesung waere jedoch, wenn du dir von deinem daq task eine timing source erzeugst und diese an eine timed loop legst (dt = 1)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.12.2009, 19:31
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
1 Sample (HW-getaktet)
' schrieb:wenn du dir von deinem daq task eine timing source erzeugst und diese an eine timed loop legst (dt = 1)
Das ist natürlich auch eine Lösung. Ich probier's.

Es sieht also so aus, als ob ein DAQmx-Wr nicht selbst warten würde. Schade. Die NI-CAN-Wr-VIs jedenfalls können das.

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
06.12.2009, 12:03
Beitrag #8

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
1 Sample (HW-getaktet)
' schrieb:die schoenere loesung waere jedoch, wenn du dir von deinem daq task eine timing source erzeugst und diese an eine timed loop legst (dt = 1)

Zum Verständnis: wie im Screenshot ?

Außerdem interessieren mich Deine Erfahrungen mit TimedLoops weil einige hier im Forum diese strikt verweigern..
Wenn man den Task direkt an die Timing Source anschließen kann, somit wäre auch eine Synchronisation von mehreren Geräten bzw. Tasks (mittels Synchronize Timed Structure Starts.vi) möglich.
Gibt es da Erfahrungswerte ?

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2009, 22:46
Beitrag #9

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
1 Sample (HW-getaktet)
Du hast die falsche timing source function genommen. Diese verwendest du eigentlich nur, wenn du mehrere unterschiedliche TLs synchronisiert starten, takten oder unter der gleichen timing source betreiben willst.
im fall von daqmx verwende daqmx create timing source.

die synchronisation im fall von TLs ist ausschliesslich in software realisiert. wenn du mehrere DAQ karten synchronisieren willst, solltest du eine HW synchronisation ueber PXITRIG or RTSI implementieren.

Ich kann aus meiner Zeit in deutschland sagen, dass ich bei richtiger verwendung noch keine probleme gesehen habe.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2009, 19:12 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2009 19:13 von IchSelbst.)
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
1 Sample (HW-getaktet)
' schrieb:DAQmx Wait For Next Sample Clock Vi in der While
Damit kann ich gut leben.

' schrieb:die schoenere loesung waere jedoch, wenn du dir von deinem daq task eine timing source erzeugst und diese an eine timed loop legst (dt = 1)
Laut Fehlermeldung kann meine Karte das nicht. Macht aber mix. Hab mich schon für das DAQmxWaitForNextSampleClock entschieden.

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
  Analog Output: hardware getaktet Output gleichzeitig mit on demand output kwakz 5 3.754 05.03.2021 10:04
Letzter Beitrag: jg
  Sample-Modus und Interface Christoph1993 1 2.231 13.11.2019 11:01
Letzter Beitrag: jg
Sad Frequenz und analoge Signale mit der gleichen Sample Anzahl messen DM_94 7 5.007 13.09.2018 14:52
Letzter Beitrag: Lucki
  Sample Clock Management Florian Sim 2 4.454 23.03.2015 17:18
Letzter Beitrag: Florian Sim
  DAQ-Assistent - Rate, Sample-ANzahl, etc = Verwirrung zig 17 13.960 08.07.2014 13:14
Letzter Beitrag: zig
Question Gating von DAQ Hardware (hier: Sample Trigger) Novgorod 4 4.364 28.05.2014 23:48
Letzter Beitrag: Novgorod

Gehe zu: