Verfasst am: 02.06.2016, 07:51
Titel: DAQ-System - Messdaten live Visualisieren und Speichern
Hallo goMatlab-Community,
erstmals möchte ich ein großes Lob an euch richten, Ihr habt ein super Forum aufgebaut, dass eine tolle Hilfestellung bietet um sich Matlab selbst anzueignen.
Trotz dessen bin ich als Matlab-Anfänger nun auf ein denkbar simples-Problem gestoßen welches ich noch nicht bewerkstelligen konnte.
Schilderung meiner Aufgabe:
Ich habe verschiedene Sensoren um Kräfte, Drehmomente und Wege bei der Metallverabeitung (Zerspanungsprozesse) zu messen. Alle Sensoren und Aufnehmer sind an ein DAQ-System angeschlossen. Nun soll beim Ausführen des Skriptes ein Plot (Figur) aufgehen in dem "live" die aktuellen Kräfte angezeigt werden. Nach Ablauf der vorgegebenen Messzeit oder durch manuelles Stoppen der Aufzeichnung sollen die Daten im Workspace abgelegt werden um diese hinterher weiterverarbeiten zu können.
Problem:
Mit meinem aktuellen Skript werden alle Funktion bereits erfüllt, nur die Ablage der Daten im Workspace, will mir nicht gelingen. Ich habe bereits mit diversen Befehlen wie " t = event.TimeStamps; data = event.Data; " versucht die Daten zu entnehmen, jedoch ohne Erfolg.
Code:
Code:
function runSessionDAQ
%% Einlesen DAQ-Hardware
daq.getDevices;
%% Speichern der Daten >>> ohne Funktion >>> Fehlermeldung: "Undefined variable "event" or class "event.TimeStamps". Error in Forum_Frage (line 21)"
t = event.TimeStamps; data = event.Data;
save('C:\Users\raumj\Documents\MATLAB\Drehmaschine\data.mat','t','data');
%% Messung im Hintergrund starten
s.startBackground();
Verfasst am: 02.06.2016, 09:19
Titel: Re: DAQ-System - Messdaten live Visualisieren und Speichern
Hallo raumj,
Vielen Dank für das Lob an das Forum!
Die Schilderung der Aufgabe hat mit dem eigentlichen problem nichts zu tun, oder? Die Daten könnten also genauso gut per
rand
erzeugt worden sein. In dem Fall könnte man diesen Absatz einfach weglassen.
Zitat:
Ich habe bereits mit diversen Befehlen wie " t = event.TimeStamps; data = event.Data; " versucht die Daten zu entnehmen, jedoch ohne Erfolg.
Bitte poste den Code, mit dem Du es versucht hast und erkläre, wo du ihn ausgeführt hast: innerhalb der Funktion oder im Base-Worksapce? In einer anderen Funktion oder in einem Script?
Was genau bedeutet "ohne Erfolg"? Gibt es eine Fehlermeldung oder weicht das Ergebnis von Deinen Erwartungen ab?
ok zukünfitig werde ich solche Informationen weglassen. Ich war der Meinung das durch die Schilderung der Aufgabenstellung vieleicht mein Problem bzw. meine Aufgabe klarer wird.
Die Daten werden kontunierlich und fortlaufenden erzeugt und kommen über die DAQ-Schnittstelle. Ob dies mit "rand" vergleichbar ist, kann ich leider mit meinen momentanen Kenntnissen nicht beurteilen. Den von mir verwendeteten Code habe ich bereits oben gepostet. Diesen habe ich im Format "MATLAB-Code files (*.m) " gespeichert und über den Editor ausgeführt. Die Fehlermeldung die ich beim Ausführen des Codes erhalte lautet:
[color=green]"Undefined variable "event" or class "event.TimeStamps". Error in Forum_Frage (line 21)"[/color]
Ich hoffe ich konnte die offenen Fragen klären und Ihr könnt mir damit weiterhelfen.
Jetzt besteht der Callback aus einer eigenen Funktion und "event" ist darin definiert.
Es sieht allerdings seltsam aus, dass bei jedem "DataAvailable"-Event die Daten per
save
gespeichert wird. Files dauernd zu überschreiben ist enorm zeitfressend und nicht sinnvoll.
vielen Dank für deine Hilfe. Die Fehlermeldung bezüglich der Definition konnte ich damit beheben. Aber die Variablen "t = event.TimeStamps; data = event.Data; " werden mir immernoch nicht im Workspace angezeigt. Ist das für dich nachvollziehbar?
Hier nochmals der gesamte Code:
Code:
function runSessionDAQ
%% Einlesen DAQ-Hardware
daq.getDevices;
Die Variablen t und data werden ja nur innerhalb des Callbacks erzeugt. Also existieren sie auch nur im Workspace der Callback-Funktion. In welchem Workspace möchtest Du sie denn haben? Im Base-Workspace? Dann hilft nur ein
assignin
.
Leider wieder ohne Erfolg. Hier wird mir solange die Abarbeitung des Skriptes läuft (zb.5sek.-Messzeit) eine Endlosschleife von Warnungen ausgegeben:
Warning: Error occurred while executing the listener callback for event DataAvailable defined for class
daq.ni.Session:
Undefined function or variable 'ws'.
Error in Kraftaufzeichnung_KMP/myCallback ( line 25)
assignin(ws, 'data', data);....................................................
Wenn ich asignin außerhalb meiner Funktion setzte. Erhalte ich die Fehlermeldung:
Undefined function or variable 'ws'.
Error in Kraftaufzeichnung_KMP (line 1
assignin(ws, 'data', data);
Ich war der Meinung das die Variable "ws" für Workspace steht. So habe ich dies zumindest aus der Matlab-Hilfe unter assignin interpretiert.
Alles nicht so einfach als vorerst gedacht. Ich hoffe Ihr könnt mir eine weitere Hilfestellung geben.
Die Messdaten (data) und dazugehörige Messzeit (t) werden nun im Basis-Workspace übertragen. Seltsamerweise wird jedoch nur das letzte Zehntel (0,1sek.) der Messdaten übertragen. Habt Ihr auch dafür eine Erklärung?
Vielen Dank!
Gruß Julian
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
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.