DT-Signalmapping
Beschreibung
Das Tool ist in mehrere Teilmodelle unterteilt Vertikal, Quer -und Längsdynamik, die einzelnen Modelle haben viele Signale und Parameter. Um eine benutzerfreundliche Bedienung zu gewährleisten, habe ich beschlossen ein Mappingtool zuschreiben, um die einzelnen Signale und Parameter aus einer CSV Datei zuladen. Diese beinhaltet gleichzeitig auch noch die Initialisierungs- und Defaultwerte.
Signalarchitektur
Mapping
Das Tool sollte so unkompliziert wie möglich sein, gleichzeitig aber auch etwas dynamisch, diesen Kompromiss habe ich versucht wie folgt umzusetzen
Aufgaben an das Mappingverfahren:
- Vorhandene Ordnerstruktur soll berücksichtig werden
- Datenfestlegung aus CSV-Tabelle –> Einfache Bearbeitung und Anpassungen.
- Metadaten der Signale sollen mitaufgenommen werden.
- Einheit
- Beschreibung
- Anmerkungen
- etc.
Quellcode
Abschnitt 1: Lesen der Datenfestlegung
Was passiert hier?
- Workspace wird gelöscht und das Command Windows gereinigt
- Navigation ins Verzeichnis
_mapping
da dort die CSV-Tabelle liegt. - Laden der Datenfestlegung in die Variable
datenmatrix
- Navigation ins Verzeichnis
_scripts
%% Workspace
clear all
clc
%% Laden der Datenmatrix
% Navigations ins "_mapping" Verzeichnis
cd ..
cd _mapping/_init-values
% Einlesen der Datenmatrix
datenmatrix = readtable("datenfestlegung_dyn_tool.csv");
% Navigations ins "_scripts" Verzeichnis
cd ..
cd ..
cd _scripts
Abschnitt 2: Aufbereiten der Datenmatrix
simData
Array (Struct) wird erstellt, dieser beinhaltet später alle Busse, Signale und Metadaten- Spaltenname aus der Tabelle extrahieren
- Ermitteln der Größe der Datenmatrix, so bleibt die Größe als dynamischer Wert und wird immer wieder neu berechnet. –> Bei Änderung der Datenfestlegung wird dies direkt mitberücksichtig.
%% Aufbereiten der Datenmatrix
% Erstellen des simData structs
simData = struct();
% Lesen der Spaltenname aus der Tabelle
columnName = datenmatrix.Properties.VariableNames';
columnCounter = size(columnName);
columnCounter = columnCounter(1);
% Ermitteln der Größe der Datenmatrix
size_Datamatrix = size(datenmatrix{:,columnName{1}});
size_Datamatrix = size_Datamatrix(1);
dataMessage = table2cell(datenmatrix);
Abschnitt 3: Erzeugung der Datenstruktur
Im letzten Schritt wird die Datenstruktur mithilfe einer for
Schleife erzeugt.
for h = 1:size_Datamatrix
simData.(dataMessage{h,1}).(dataMessage{h,2}).value = dataMessage{h,3};
simData.(dataMessage{h,1}).(dataMessage{h,2}).unit = dataMessage{h,4};
simData.(dataMessage{h,1}).(dataMessage{h,2}).description = dataMessage{h,5};
simData.(dataMessage{h,1}).(dataMessage{h,2}).notes = dataMessage{h,6};
simData.(dataMessage{h,1}).(dataMessage{h,2}).relations = dataMessage{h,7};
end
Optimierungspunkte
- Spalten werden direkt angesprochen, ggf. auch dynamischer Umsetzen, da bei einer kompletten Umstrukturierung der Datenfestlegung das Skript nicht mehr funktionieren würde.