WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Aufnahme von mehreren Signalen mit einer DAQ Karte

 

Student01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2012, 10:21     Titel: Aufnahme von mehreren Signalen mit einer DAQ Karte
  Antworten mit Zitat      
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

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2012, 15:02     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Student01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2012, 09:52     Titel:
  Antworten mit Zitat      
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

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2012, 14:04     Titel:
  Antworten mit Zitat      
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:
Code:

lh = s.addlistener('DataAvailable', @plotData);
 

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');
Private Nachricht senden Benutzer-Profile anzeigen
 
Student01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2012, 14:11     Titel:
  Antworten mit Zitat      
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.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.