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!
Hallo i2dx,
habe letzte Woche leider nicht so viel Zeit für mein LabVIEW-Projekt gehabt, da ich einige Klausuren schreiben mußte.
Jedenfalls ist es mir gelungen die State Machine, die Du mir vorbereitet hast so zu konfigurieren das sie die gewünschten Durchgänge macht.
Zur Erinnerung:
nunja, es ist eine state machine. in dem enum sind schon alle states drin. du musst das vi entsprechend deiner anforderungen anpassen und um die nötigen states erweitern. dass es bereits nach 10 mal umschalten stoppt ist beabsichtigt. das nun auf 30 mal oder 140 mal zu erweitern sollte nicht so schwer sein.
kleiner tip: wenn du mit rechts auf den "case selector" klickst gibt es einen menüpunkt "case duplizieren"
Jetzt möchte ich zur gleichen Zeit Analoge-Signale Erfassen.
Es ist eine Spannung die von Drucksensoren ausgegeben wird.
Habe es auch schon hinbekommen, daß der Druckanstieg im Graphen dargestellt wird.
Mein Problem ist nun: wie schafe ich es jetzt, das die Digitalen- Signale Synchron mit der X-Ache im Graphen laufen. Der Graph soll nicht die Zeit in der X-Achse auslesen sondern die Digitalen Signale (aber nur den ein).
Ich möchte ein Druck/Hübe-Diagramm erzeugen. Oder anderst gesagt um wieviel steigt der Druck pro "Digital-Kanal ein" an.
Ich hoffe Dich nicht zu sehr mit meinen Sachen zu Stressen, aber ohne Deine Hilfe, wäre ich noch lange nicht so weit gekommen, Danke!
das ist nicht weiter kompliziert. Es gibt im Example finder 2-3 Beispiele zu dem Thema. Such mal unter der Rubrik "Signalerfassung und -erzeugung mittels Hardware" nach Beispielen, die ein "Sync" im Stichwort haben.
Am besten, du nimmst dieses "$§%&§ Express-VI wieder raus und bastelst die Analoge Erfassung paralell zum Digital Out mit in die While Schleife.
Das AI baust du genauso auf wie das DO, sprich: task erzeugen, Kanal hinzufügen, Timing einstellen (kontinuierliche erfassung), Task starten, in der While-Schleife auslesen, task nach der While schleife stoppen und löschen ...
Ein Hardware-Timing erreichst du, wenn du z.B. die DO mit den AI Start-Trigger verknüpfst (Example-Finder...)
Hallo,
die Sache mit dem invertieren hat funktioniert.
Was die analoge Datenerfassung angeht, habe ich wie du es gemeint hast den DAQ-Assistent herausgenommen und alles neu aufgebaut.
Dazu habe ich in den Beispielen ein "Multi-Function-Synch AI-Read Dig Chan.vi" gefunden das ich auch dazu benutzt habe (ganz allein )
Doch leider bekomme ich immer diese Fehlermeldung:
Habe auch schon versucht einen anderen DAQmx Read.vi zu verwenden, doch dann ging gar nichts mehr. Was könnte ich vergessen oder vieleicht falsch erstellt haben?
Wichtig ist nur das die sechs analogen signale 0-10Volt erfast werden.
Und in dem Graphen die Hübe (digital ein signal) in der X-Achse dargestellt werden und nicht die Zeit.
Ich hoffe Du kannst mir helfen.
Gruß, Gregorx
P.S.: Habe die Datei als Attachment angehängt, falls es zu groß sein sollte kann ich natürlich auch ein jpg posten
Habe wieder dazu gelernt, und die Fehlermeldung beseitigen können.
Es ist mir trotzdem noch nicht gelungen das mein digitales Signal im Graphen dargestellt wird.
Das mit dem Hardwaretiming will auch nicht so recht funktionieren.
Ich müsste doch die Digitalen Impulse die jede Sek. erzeugt werden, irgendwie in der X-Achse des Graphen darstellen. Aber nur wie?
P.S.:habe die Überarbeitete Version, zum besseren Verständnis im Attachment hinterlegt
O.K. die analogen Signale werden dargestellt.
Jetzt fehlt mir nur noch das Hardwaretiming, konnte bisher noch keine wirklich guten Beispiele finden, bei denen ich vestehen kann wie sie funktionieren.
Was mir auch noch fehlt ist eine Kalibrierung des analogen Signals.
Von Volt in Bar, werde das mal posten vieleicht kann mir ja jemand einen Tipp geben.
stimmt, bei den Beispielen kommt das nicht wirklich gut raus, weil es nur ein kleines Detail ist.
Beim Software-Timing ist in der While-Schleife IMMER ein "Wait for next ms multiple" (das Metronom) zu finden. Der Eingang, wieviele Werte aus dem Puffer gelesen werden sollen steht auf -1, das heisst soviel: gib soviele zurück, wie gerade vorhanden sind. Wenn man nun z.B. die SampleRate auf 1000 Hz einstellt und alle 100 ms Werte (getimed durch das Metronom) aus dem Puffer ausliest, dann wird man immer ein Array mit ca. 100 Werten erhalten (es kann tatsächlich schwanken! mal 99, mal 100, mal 101 ...)
Beim Hardware-Timing gibt man an dem Eingang "Samples to read" einen festen Wert vor. Das "Read-VI" gibt immer ein Array fester Größe zurück (eben die festgelegte Länge), aber erst dann, wenn die gewünschte Anzahl an Messdaten auch tatsächlich erfasst worden ist. Wenn man nun bei einer Sample Rate von 1000 Hz immer einen Block von 100 Werten lesen will, dann läuft die Schleife mit einem Takt von 100 ms, weil alle 100 ms ein Bock von 100 Messwerten gesampled wurde. In diesem Fall sollte man das "Metronom" weglassen! Die Schleife wird durch den Hardware-Takt gesteuert.
Jetz kommt der Trick bei der Hardware-getimeten (saublödes Wort - scheiss denglisch)Erfassung: Das "Read VI" wartet nur so lange bis die gewünschte Anzahl an Werten im Puffer vorhanden ist. Ob beim Start des "Read-VI" bereits 2 oder 50 Werte im Puffer liegen, ist dem VI egal. Theoretisch kann man das Hardware-Timing so ausreizen, dass man bei 99 gesampleten werten das "Read VI" startet und die restliche (Rechen)-Zeit für was anderes verwendet. (Besonders interessant unter RT auf nem PXI ...
Hallo i2dx,
du hast mir mal folgenden Ratschlag gegeben:
Das AI baust du genauso auf wie das DO, sprich: task erzeugen, Kanal hinzufügen, Timing einstellen (kontinuierliche erfassung), Task starten, in der While-Schleife auslesen, task nach der While schleife stoppen und löschen ...
Habe ich das richtig verstanden, die analoge Erfassung in die gleiche While-Schleife legen in der auch die digitalen verarbeitet werden? (siehe .jpg)
Doch die Darstellung der analogen Werte im Graphen ruckelt ganz schön ,
als wenn es sich nur nach den Intervalen der digitalen Inpulse darstellen würde. Für den Fall das ich doch eine eigene Schleife für analog benötige, wie kann ich beide Schleifen gleichzeitig anhalten?
sicher ruckelt das, und mich wundert, dass du keine buffer overflow fehlermeldung bekommst. lies dir mal mein letztes Post in diesem Thread durch, da steckt die Antwort auf die Frage nach dem richtigen Timing eigentlich schon drin. Ich würde an deiner Stelle die Schleife per Hardware timen, und mir ausrechen bei jedem wievielten Schleifendurchlauf die DIOs mit geändert werden müssen. z.Beispiel: AI Sample-Rate = 1000 S/sec --> wenn du jeweils 100 Werte ausliest dauert ein Schleifendurchlauf genau 0,1 sek = 100 ms ...
Um etwas konkreter zu werden: du Taktest die DOs mit 500 ms, deine Analoge Erfassung sampled in dieser Zeit 500 Werte ... du holst aber nu 10 Werte ab ...
Du kannst das auch in 2 parallelen Schleifen laufen lassen. Allerdings musst dir dann darüber Gedanken machen, wie du die Daten aus beiden Schleifen synchronisiert in einen Graphen bekommst.
2 parallele Schleifen beendet man am besten über eine Occurrence ...
Anhang: Sync DO/AI mit Hardware-Timing für jeweils einen Kanal ...
Entschuldige, aber ich bin gerage etwas überfordert was das Hardware timing betrift. Ich kann mir nicht richtig vorstellen wie es richtig funktionieren und ausehen soll. Deine Erklärungen sind wirklich gut geschrieben aber mir fehen doch zuviele Vorkentnisse.
Ich weiß das Du mit sicherheit wichtigeres zu tun hast, aber könntest Du mir nicht ein kleines Beispiel basteln? :roll: