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.