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!
ich habe bisher ein VI geschrieben das ganz gut zur Datenerfassung funktioniert. Nun möchte ich auch 2 Analogsignale ausgeben. Diese brauche ich um 2 Hydraulikzylinder anzusteuern, d.h.
mit Sinus, Rechteck usw.
Da ich von den 2 Zylindern Weg und Kraft wieder erfasse habe ich mir die LV-Beispiele zur Synchronisation wie Multi-Function-Synch AI-AO.vi als Vorlage genommen.
Da meine Kenntnisse noch begrenzt sind, kann ich aber nicht abwägen welche Beispiele die richtigen
für meine Anforderungen sind. Könnte mir da jemand weiterhelfen? Bin ich bei der Synchronisation im richtigen Teilgebiet oder auf dem Holzweg?
Meine Anforderungen zur AO sind:
-Frequenz und Amplitude sollten während der Messung veränderbar sein
-Amlitude <2V und Frequenz<2,5 Hz
Ich habe schon bißchen was zusammenprogrammiert, wobei einige Fehler und Probleme aufgetaucht sind:
Was soll ich für den AO erstellen? Ich kann ja nicht mit 2 Tasks auf die Karte zugreifen, meines Wissens. Globale virtuelle Kanäle stattdessen?
Warum kann ich in meinem VI den Funktionsgenerator nicht mit der DAQmx Read verbinden, so wie im Beispiel?
Danke schonmal für Antworten.
Gruß Martin
LV 8.2
25.01.2008, 09:20 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2008 09:25 von Lucki.)
' schrieb:Was soll ich für den AO erstellen? Ich kann ja nicht mit 2 Tasks auf die Karte zugreifen, meines Wissens.
Warum kann ich in meinem VI den Funktionsgenerator nicht mit der DAQmx Read verbinden, so wie im Beispiel?
Was Dein Problem betrifft, so hast Du recht, oder vorsichtiger gesagt: das ist auch mein Erfahrungsstand. Man kann zwar zwei AO Tasks haben, aber nur wenn mindestens eine Einzelwert-Ausgabe dabei ist. Aber eine Task kann natürlich mehrere physikalisch Kanäle enthalten, so wie Du es ja auch gemacht hast.
Und natürlich muß man dann in DAQmx Write (Read ist Schreibfehler) bei zwei physikalischen Kanälen auch zwei Waveforms eingeben:
Bei veränderlicher Frequenz/Amplitude gibt es zwei Möglichkeiten:
1) Bei jeder Änderung die Datenerfassung beenden und neu konfigurieren
2) Für Fortgeschrittene: Bei DAQmx write immer die aktuellen Daten nachschieben (Streaming).
Beispiel siehe:
vielen Dank für deine Antworten.
Ich habe noch einige Fragen zum Verständnis:
Ich habe bei meinem- DAQmx-Kanal erzeugen- zwar die physikalischen Kanäle angegeben aber keinen Task. Auf was greift das Programm jetzt zu? Ich habe im MAX nämlich globale virtuelle Kanäle und einen Task konfiguriert.
Dann habe ich aus dem Beispiel-Vi die Fkt. Get Terminal Name With Device Prefix.vi einfach mal
mitübernommen, dessen Sinn mir aber auch mit Kontexthilfe nicht erschließlich ist. Brauche ich so
etwas überhaupt?
Da ich Einstellungen während der Datenerfassung vornehmen möchte, ist dein Vorschlag 2 das Richtige. Allerdings habe ich in einer Diskussion von Achim und Abrissbirne gelesen, dass das Beispiel bei niederen Frequenzen (1 Hz) wie bei mir, nicht richtig funktioniert.
Mein Oszi zeigt auch nur kurzzeitig einen Sinus an, wenn ich an der Level-Fkt. rumspiele.
Ich werds aber trotzdem mal versuchen.
Warum ich mit meinem Aktuellen Programm trotz eingebauter Schleife nicht die Frequenz und Amplitude verändern kann, verstehe ich auch nicht.
Na ja.
Gruß Martin
25.01.2008, 12:17 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2008 12:31 von Lucki.)
Ich kann mich nicht so gründlich mit Deinen Frage beschäftigen, wie das eigentlich notwendig wäre. Entschuldige also die fragmentarische Antworten
Zitat:Ich habe bei meinem- DAQmx-Kanal erzeugen- zwar die physikalischen Kanäle angegeben aber keinen Task. Auf was greift das Programm jetzt zu? Ich habe im MAX nämlich globale virtuelle Kanäle und einen Task konfiguriert.
Wenn Du das "Daqmx create virtual Kanal" verwendest, wird immer ein Task konfiguriert. Es ist der Ausgang rechts oben. Man kann einen Task entweder im M&E-Explorer konfigurieren (In Deinem Fall heißt der Task hier "Alles erfassen"), oder direkt mit diesem VI. Man macht normalerweise entweder das Eine oder das Andere. Wie dieser MIX, den Du hier machts, funktioniert, und wenn ja, was dann die Priorität hat (also z.B ob die hier im VI erstellten physikalischen Kanäle oder die physikalischen Kanäle, Du im M&A-Explorer unter der virtuellen Task "Alles erfassen" erstellt hast), das weiß ich nicht, damit mußt Du selbst klar kommen. Ich würde so einen Mix nicht machen und habe deshalb keine Lust das zu erforschen.
Zitat:Warum ich mit meinem Aktuellen Programm trotz eingebauter Schleife nicht die Frequenz und Amplitude Also verändern kann, verstehe ich auch nicht.
Welche Schleife meinst Du denn? Die kleine Schleife wird nur ein Mal - und dann nie wieder - durchlaufen und ist überflüssig wie ein Kropf.
Und in der Großen Schleife gibt es kein DAQmx Write, welches die Ausgangsdaten aktualisieren könnte.
Zitat:Da ich Einstellungen während der Datenerfassung vornehmen möchte, ist dein Vorschlag 2 das Richtige. Allerdings habe ich in einer Diskussion von Achim und Abrissbirne gelesen, dass das Beispiel bei niederen Frequenzen (1 Hz) wie bei mir, nicht richtig funktioniert.
Mein Oszi zeigt auch nur kurzzeitig einen Sinus an, wenn ich an der Level-Fkt. rumspiele.
Ich werds aber trotzdem mal versuchen.
Das weiß ich nicht, aber das kann schon so sein. Wenn Du aber tatsächlich nur so niedrige Frequenzen verwendest, dann wird ja alles um eine Zehnerpotenz einfacher. Dann machst Du in die Erfassungsschleife einfach einen Metronom rein mit z.B. 1 sec (1Hz) und gibst Einzelwerte aus und ein.
Zitat:Dann habe ich aus dem Beispiel-Vi die Fkt. Get Terminal Name With Device Prefix.vi einfach mal
mitübernommen, dessen Sinn mir aber auch mit Kontexthilfe nicht erschließlich ist. Brauche ich so
etwas überhaupt?
Dies Ding macht aus "ai/StartTrigger" "/Dev1/ai/StartTrigger", oder, wenn Du Dev2 hast, eben "/Dev2/ai/StartTrigger". Du kannst das Trigger-VI ebenso mit einer Konstanten beschalten. Der Nachteil ist dann lediglich, wenn Du mal statt DEV1 DEV2 verwendest, daß Du dann auch diese Konstante ändern mußt.
Also Sinn macht das Ding nur, wenn die Karten-Nr keine Konstante ist (DEV1), sondern ein Control auf dem FP.
ich muss doch nochmal zu dem Thema Tasks nachfragen.
Ich sehe eigentlich keinen Möglichkeit meinen erwähnten Mix zu umgehen. Mit dem VI Create Virtual Channel erzeuge ich zwar einen Task, der aber nicht im MAX auftaucht. Daher habe ich im
MAX den Task "Alles erfassen" erstellt, den ich an das VI zusätzlich angeschlossen habe damit ich auf Skalierungen zurückgreifen kann.
Bei meinem AI klappt dieser Mix beim AO bekommen ich Probleme. Ich habe schon alle möglichen
Kombinationen ausprobiert mit Task im VI, im MAX usw.
Deshalb meine Bitte, ob mir jemand sagen könnte wie ich meine Task am besten aufbaue damit meine Skalierungen auch funktionieren.
Ich habe meinen AO nach Vorschlag von Lucki mal als Einzelwertausgabe aufgebaut. Kann das so
funktionieren wenn ich AO und AI in eine Schleife packe? Ich sehe keinen andere Möglichkeit zur Synchronisation, damit meine Erfassung erst nach der Datenerzeugung startet.
Ist die Erfassung im Kontinuierlich-Modus mit der Einzelwertausgabe des AO zu vereinen?
Momentan habe ich ein Task-Fehler der wahrscheinlich mit meinem 1.genannten Problem zu tun hat.
ich muss doch nochmal zu dem Thema Tasks nachfragen.
Ich sehe eigentlich keinen Möglichkeit meinen erwähnten Mix zu umgehen. Mit dem VI Create Virtual Channel erzeuge ich zwar einen Task, der aber nicht im MAX auftaucht. Daher habe ich im
MAX den Task "Alles erfassen" erstellt, den ich an das VI zusätzlich angeschlossen habe damit ich auf Skalierungen zurückgreifen kann.
Den Mix kannst Du immer umgehen:
a) Mit Deinem Virtual Channel "Alles erfassen" kannst Du im M&A-Explorer praktisch alle Parameter, also auch physikalische Kanäle, min/max Value, Kanalnamen, rate usw. festlegen. Du brauchst dann in Deinem VI weder "DAQmx create virtuell Channel" nach "DAQmx Timing" - ausgenommen Du willst im VI noch etwas verändern (z.B die Rate - dann wird DAQmx Timing oder ersatzweise ein Egenschaftsknoten im VI gebraucht). Du könntes also im Extremfall alles was vor der Schleife liegt weglassen und die Task-Konstante "Alles erfassen" direkt an das Start-VI in der Schleife anschließen.
b) Umgekehrt kannst Du den Virtuellen Channel mit allen Parametern vollständig im im VI erzeugen, und selbstverständlich wird dann im M&A keine Kopie hinterlegt. Wenn Du eine Skalierung brauchst, dann würde ich nur die im M&A erzeugen. Das VI "Create virtuell Cannel" hat einen Eingang für den Skalierungsnamen. Die Skalierung ist dann das Einzige, die aus dem M&A kommt.
Danke für deine Antwort, jetzt verstehe ich einiges besser.
Ich habe noch eine Frage zur der Angabe zur Skalierung im Create Virtual Channel VI.
In meinem Task befinden sich 8 Kanäle denen ich 4 Skalierungen zuweisen möchte.
Kann ich diese spezifischen Skalierungen für die Kanäle innerhalb einer Konstanten zuweisen?
Vielleicht mit Doppelpunkten oder so ...., oder brauche ich für jede Zuweisung dann ein komplettes Create Virtual Channel VI?
' schrieb:Ich habe noch eine Frage zur der Angabe zur Skalierung im Create Virtual Channel VI.
In meinem Task befinden sich 8 Kanäle denen ich 4 Skalierungen zuweisen möchte.
Kann ich diese spezifischen Skalierungen für die Kanäle innerhalb einer Konstanten zuweisen?
Vielleicht mit Doppelpunkten oder so ...., oder brauche ich für jede Zuweisung dann ein komplettes Create Virtual Channel VI?
Nein denn wenn das ginge, dann ginge das auch mit der rechten Maustaste, so wie das bei der Konstante für die physikalischen Kanäle funktioniert ("Durchsuchen", in der Anzeige Shift oder Steuerungstaste verwenden, um mehrere Kanäle zu selektieren).
Was aber geht: Zur Erstellung von einem Task mit mehreren physikalischen Kanälen "DAQmx create virtuell Channel" mehrere Male hintereinander verwenden. Und damit erreichst Du auch was Du willst
ich bin gerade unfähig in meinem TDMS-Dateimonitor das "Unbenannt" zu beschriften.
Steht hier eigentlich der Task-Name? Ich konfiguriere meinen gesamten Task im VI, also ohne
MAX und kann deshalb keinen Namen zuweisen.
Oder muss ich irgendwo anders beschriften?
Danke schonmal für Hilfe
ich bräuchte mal wieder euren Rat.
Ich habe um mein VI eine Ereignisstruktur gezogen um mein VI mit einem Stop-button beenden zu können. Leider funktioniert er aber nicht.
Ich habe in der Hilfe was über die Beachtung von booleschen Elementen in Ereignisstrukturen gelesen, was mich aber auch nicht weitergebracht hat.
Könnte jemand über mein VI drüberschauen? Danke.