|
|
Aufnahme von mehreren Signalen mit einer DAQ Karte |
|
Student01 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.11.2012, 10:21
Titel: Aufnahme von mehreren Signalen mit einer DAQ Karte
|
|
|
|
|
Hallo liebe Forum-Mitglieder,
im Rahmen meiner Bachelorarbeit muss ich unter Anderem ein Programm schreiben, dass bestimmte Messwerte aufzeichnet. Hierzu verwende ich Matlab und eine NI DAQ Karte.
Das Programm läuft soweit, zeichnet ein Eingangssignal auf (mit externem Trigger und externer Clock) und speichert die Daten ins gewünschte Format.
Nun soll allerdings noch ein weiteres Signal aufgenommen werden. Und hier finde ich einfach keine Lösung. Ich habe einen zweiten Kanal hinzugefügt (addAnanlogInput) und ging eigentlich davon aus, dass beim Aufruf der Callbackfunktion die Signale beider Kanäle in event.Data vorhanden wäre. Dies ist aber nicht der Fall.
Nun frage ich mich, ob es überhaupt möglich ist mehrere Signale auf einmal aufzuzeichnen. Ich habe hierzu keinerlei Infos gefunden, weshalb ich mich an dieses Forum wende.
Vielleicht hat sich ja schonmal jemand mit diesem Problem auseinandergesetzt und eine Lösung gefunden? Kann man wirklich mit einer DAQ Karte nur ein Eingangssignal aufnehmen? Könnte ich eventuell eine zweite DAQ Karte verwenden um das zweite Signal aufzunehmen?
Ich bedanke mich schonmal für eure Hilfe!
|
|
|
Verschoben: 12.11.2012, 11:21 Uhr von Jan S Von Programmierung nach Simulink |
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.11.2012, 15:02
Titel:
|
|
Da man nicht deine Callback Funktion kennt, kann man nicht sagen, wieso das zweite/weitere Signal nicht auftaucht. Jedoch kann man schon sagen, dass du so viele Signal aufnehmen kannst wie die NIDAQ Karte an Analogen Eingängen hat. Schau mal auf der Webseite wie viel es sind.
|
|
|
Student01 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.11.2012, 09:52
Titel:
|
|
|
|
|
Ok, also sollte die Möglichkeit auf jeden Fall bestehen. Die Karte hat mehrere Eingänge, ich brauche nur 2.
So sieht das ganze ungefähr aus:
s = daq.createSession('ni');
ch1=s.addAnalogInputChannel('Dev1','ai0', 'Voltage');
ch2=s.addAnalogInputChannel('Dev1','ai1', 'Voltage');
tr=s.addTriggerConnection('external','Dev1/PFI0','StartTrigger');
s.Connections(1).TriggerCondition='FallingEdge';
cc=s.addClockConnection('external','Dev1/PFI2','Scanclock');
ch1.InputType ='SingleEnded';
ch2.InputType ='SingleEnded';
s.IsContinuous=1;
s.NotifyWhenDataAvailableExceeds=21569;
lh = s.addlistener('DataAvailable', @plotData);
s.startBackground();
pause on;
plotData ist die zugehörige Callbackfunktion. In dieser verwende ich die Eingangssignale mittels Data=event.Data. Was genau damit gemacht wird ist ja eigentlich irrelevant. Aber wenn ich mir event.Data einfach anzeigen lasse habe ich nur die Daten aus Channel 1.
Vielleicht seht ihr ja, was ich dabei falsch mache? Ich weiß einfach nicht, wie ich auf die Daten des zweiten Channels zugreifen kann.
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.11.2012, 14:04
Titel:
|
|
Hast du den Code selbst erstellt?
Ich hatte mit Simulink + External Mode (andere Hardware aber) gearbeitet und mir in der Matlab GUI die aufgezeichneten Daten angezeigt. In meinem Fall musste ich jeden Ausgang im Model den ich aufzeichnen/beobachten wollte ein Listner geben, d.h. vielleicht musst du bei dir dem neuen Kanal
auch den Befehl:
geben. Also angepasst natürlich, dass ist ja vom ersten Kanal.
Das ist das einzige was mir so auf die Schnelle ersichtlich ist.
PS: Was ist Dev1 bei ch2=s.addAnalogInputChannel('Dev1','ai1', 'Voltage');
|
|
|
Student01 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.11.2012, 14:11
Titel:
|
|
Danke für die Antwort. Ja der Code ist selbst erstellt. Das Problem hat sich eventuell schon erledigt. Es liegt wahrscheinlich daran, dass ich momentan Daten mit einer Sampelrate von ca. 6MS/s auslese, die DAQ Karte aber nur 1MS/s schafft.
Ich habe ein kleines Testprogramm geschrieben und keinen externen Trigger verwendet, sondern einfach den Matlab Standard 1kHz Trigger. Hier bekommt man mit event.Data alle Daten aus den beiden Kanälen ganz problemlos.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|