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 

Dieses Thema hat akzeptierte Lösungen:

Sinus Sweep



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!

15.10.2020, 18:34
Beitrag #6

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 417
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Sinus Sweep
Vielleicht funktioniert mein VI - vielleicht aber auch nicht. Dazu später mehr.

Im Prinzip hast du recht, LabVIEW wird die 800ms warten bevor der nächste Frame ausgeführt wird. So beschreibt es NI und so sollte es ja eigentlich auch sein. Ähm - ich zweifle manchmal, ob das auch wirklich ganz exakt so ist. In deinem Fall solltest du diesbezüglich jedoch keinerlei Bedenken haben. Es gibt in dem Zusammenhang einen anderen Punkt. GenStart braucht etwas Zeit (du weist nicht, was diese API Funktion wirklich macht und wann der Funktionsgenerator wirklich startet. Auch die anderen beiden VIs könnten das ein klein wenig verzögern. Du brauchst eine Funktion mit der du prüfen kannst, ob die Daten alle ausgegeben wurden bevor du GenStop ausführst. Ich habe die Doku nur kurz überflogen - eventuell bekommst du diese Information über GenIsControllable(). Diese, bzw. eine dafür geeignete Funktion der API, fragst du in einer while schleife zyklisch ab (mit kurzen delays dazwischen und mit einem Timeout versehen) bis die Ausgabe vollständig erfolgt ist (oder der Timeout abgelaufen ist). Dann erst führst du GenStop() aus.

Jetzt noch etwas allgemeines:
Mein GenSetData ist genauso hingeklatscht, wie deine VIs. Das kann/darf/sollte nicht so bleiben. Alle VIs und Funktionen die Geräte oder irgendwelche Schnittstellen ansprechen haben am Eingang eine Referenz (bei dir das hDevice) links oben und einen Error Cluster links unten. Am Ausgang genauso (siehe VISA, TCP/IP, DAQmx usw.). Liegt am Eingang bereits ein Fehler an, dann macht das VI nichts weiter außer den Error Cluster durchzureichen. Genauso sollten auch deine VIs funktionieren. Wenn du das konsequent so machst und auch so verwendest, dann brauchst du keine Sequenz mehr. Außerdem wird ein brauchbares Fehlerhandling benötigt. Das wird in die einzelnen VIs fest integriert. Ich habe mein VI (ohne hübsches Icon und noch etwas unvollständig) mal entsprechend angepasst, damit etwas klarer wird, was ich gerade beschrieben habe.


17.0 .vi  GenSetData.vi (Größe: 11,22 KB / Downloads: 211)


Zum Schluss eine Anmerkung zu meinem ersten Satz.
Ich weis nicht genau, was GenSetData tatsächlich macht und die Doku gibt dazu auch nicht viel her oder ich habe es nicht gelesen.
Wenn GenSetData() die Daten sofort zum Gerät überträgt dann ist alles i.O.
Wenn GenSetData() die Daten in seinen eigenen Zwischenspeicher kopiert, dann ist auch alles i.O.

Falls GenSetData() den Pointer pBuffer und damit auch die Daten dazu verwendet um sie später nach und nach in kleineren Blöcken zum Gerät zu übertragen, dann merkst du jetzt noch gar nicht, dass es so nicht funktioniert. Wenn die Funktion GenSetData() beendet ist, dann ist der Pointer (und damit die Daten) nicht mehr gültig. LabVIEW wird bei dem derzeit noch einfachen Programm die Daten nicht sofort löschen und auch nicht überschreiben. Du würdest derzeit gar nicht merken, dass es so nicht funktioniert. Bei einem umfangreicheren Programm würde dir das ganz heftig um die Ohren fliegen - und du weist nicht wo und warum und kannst es auch nicht debuggen. Sollte GenSetData() so funktionieren, was ich nicht hoffe, dann wird es etwas komplizierter mit der Übergabe der Daten. Da musst du dann die Funktionen des LabVIEW Speichermanagers nutzen. Dies wollte ich dir noch mit auf den Weg geben. Es könnte ja sein, dass sich LabVIEW irgendwann häufig aber unregelmäßig mit oder auch ohne vorherige Meldung immer wieder verabschiedet. Das muss dann zwar nicht zwangsweise an GenSetData() liegen, aber es wäre denkbar.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
Sinus Sweep - janso - 15.10.2020, 13:28
RE: Sinus Sweep - Martin.Henz - 15.10.2020, 14:20
RE: Sinus Sweep - janso - 15.10.2020, 14:32
RE: Sinus Sweep - Martin.Henz - 15.10.2020, 15:45
RE: Sinus Sweep - janso - 15.10.2020, 16:09
RE: Sinus Sweep - Martin.Henz - 15.10.2020 18:34

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Werten einen Sinus überlagern sarah_gru 1 2.949 09.09.2019 12:34
Letzter Beitrag: HVo
  Sinus als Grundschwingung + 3. Harmonische digitus 2 5.383 18.05.2015 18:34
Letzter Beitrag: digitus
  analoger Sinus Sweep Output tg_1909 6 7.460 15.05.2015 09:54
Letzter Beitrag: tg_1909
  Sinus-Signal in Array duckVader 3 6.769 08.11.2014 19:42
Letzter Beitrag: Lucki
  Sinus/Cosinus Werte kontinuierlich in Graph darstellen TDO 19 16.691 13.12.2013 11:33
Letzter Beitrag: Lucki
  Sinus mit Rauschen überlagern Pral 2 6.134 17.11.2012 12:01
Letzter Beitrag: Pral

Gehe zu: