Exportieren von Messungen
Im Folgenden wird beschrieben, wie man Exportierte Messungen in MatLab laden kann. Dieses How To basiert auf der Anleitung aus Durchführen von Messungen. Getestet mit MatLab 2013b (Notation kann sich ändern, bei anderen Versionen!).
Laden der Messung in MatLab
Nach dem Start von MatLab sollte man zu der *.idf-Datei der Messung, welche man anzeigen möchte, navigieren. In dem entsprechenden Ordner gibt man folgenden Befehl in der Befehlszeile ein (Anstelle von "v" sollte man seinen Dateinamen schreiben. Wenn die Datei nicht im gleichen Ordner wie der aktuelle Pfad liegt, so empfiehlt sich ein relatives Linking oder einfach den ganzen Link zu der Datei anstelle von "MESSNAME" eintragen):
data = load('MESSNAME.mat');
Auswählen von Daten aus der Messung
Um einzelne Daten aus der Messung zu laden empfiehlt es sich folgende Notation zu benutzen:
TIME = data.MESSNAME.X.Data';
DATA1= data.MESSNAME.Y(1).Data';
An dieser Stelle ist darauf zu achten, dass die Daten innerhalb der Messung immer unter der Notation "VarName"."Messungsname" zu finden ist. Die Zeit in einer Messung wird als "X"-Achse dargestellt. Da die Zeit für den Import in einem Modell wichtig ist, sollte diese immer extrahiert werden. Alle weiteren Daten lassen sich unter "Y" finden. An dieser Stelle kann man entweder über die Position an die Daten kommen oder wenn man dies nicht kennt, aber den Namen des Signals empfiehlt sich folgende Notation:
TIME = data.MESSNAME.X.Data';
for k=1:size(data.CD_Messung_V.Y,2)
if strcmp(data.CD_Messung_V.Y(k).Name , 'GESUCHTES_SIGNAL1')
SIGNAL1= [TIME data.CD_Messung_V.Y(k).Data'];
elseif strcmp(data.CD_Messung_V.Y(k).Name , 'GESUCHTES_SIGNAL2')
SIGNAL2= [TIME data.CD_Messung_V.Y(k).Data'];
%% An dieser Stelle können noch weitere Signale abgefragt werden
end
end
Dieser SourceCode durchsucht die gesamte Messung nach dem gesuchten Signal und speichert dieses in eine Variable zusammen mit der Zeit. Die Form des gespeicherten Signales entspricht hierbei der Form Mx2 und ist jeweils eine Verbindung zwischen dem Datenwert und der dazugehörigen Zeit. Dadurch kann Simulink diese Daten "in Echt" darstellen.
Beispiel eines Scriptes zum Extrahieren von Daten
Das Beispiel soll verdeutlichen, wie man die Daten aus der Messung extrahiert. An dieser Stelle sei bemerkt, dass man die Signalnamen und Dateinamen für den eigenen Fall anpassen muss. Gleichfalls muss der Output an die Anzahl der Signale abgepasst werden.
function [TIME, SIGNAL1, SIGNAL2, SIGNAL3, SIGNAL4, SIGNAL5] = extract()
data = load('MESSNAME.mat');
TIME = data.MESSNAME.X.Data';
for k=1:size(data.MESSNAME.Y,2)
if strcmp(data.MESSNAME.Y(k).Name , 'SIGNAL1')
SIGNAL1= [TIME data.MESSNAME.Y(k).Data'];
elseif strcmp(data.MESSNAME.Y(k).Name , 'SIGNAL2')
SIGNAL2= [TIME data.MESSNAME.Y(k).Data'];
elseif strcmp(data.MESSNAME.Y(k).Name , 'SIGNAL3')
SIGNAL3= [TIME data.MESSNAME.Y(k).Data'];
elseif strcmp(data.MESSNAME.Y(k).Name , 'SIGNAL4')
SIGNAL4= [TIME data.MESSNAME.Y(k).Data'];
elseif strcmp(data.MESSNAME.Y(k).Name , 'SIGNAL5')
SIGNAL5= [TIME data.MESSNAME.Y(k).Data'];
end
end
if ~exist('TIME','var')
TIME = 0;
fprintf('\nFehler im Export: TIME konnte nicht gefunden werden!');
err = 1;
end
if ~exist('SIGNAL1','var')
SIGNAL1= 0;
fprintf('\nFehler im Export: SIGNAL1 konnte nicht gefunden werden!');
err = 1;
end
if ~exist('SIGNAL2','var')
SIGNAL2= 0;
fprintf('\nFehler im Export: SIGNAL2 konnte nicht gefunden werden!');
err = 1;
end
if ~exist('SIGNAL3','var')
SIGNAL3= 0;
fprintf('\nFehler im Export: SIGNAL3 konnte nicht gefunden werden!');
err = 1;
end
if ~exist('SIGNAL4','var')
SIGNAL4= 0;
fprintf('\nFehler im Export: SIGNAL4 konnte nicht gefunden werden!');
err = 1;
end
if ~exist('SIGNAL5','var')
SIGNAL5= 0;
fprintf('\nFehler im Export: SIGNAL5 konnte nicht gefunden werden!');
err = 1;
end
if ~exist('err','var')
fprintf('Fehlerfrei geladen!\n');
else
fprintf('\n');
end
end